unit uEditorEjercicios; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorBase, ToolWin, ComCtrls, JvExControls, JvComponent, JvNavigationPane, uViewEjercicios, uBizEjercicios, ActnList, DBActns, uViewGrid, Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX, TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable, JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase, uViewBarraSeleccion, pngimage, uIEditorEjercicios, uEditorGridBase, JvComponentBase, uViewGridBase, uEjerciciosController, JvExComCtrls, JvStatusBar, uDAInterfaces, dxGDIPlusClasses; type TfEditorEjercicios = class(TfEditorGridBase, IEditorEjercicios) frViewEjercicios1: TfrViewEjercicios; actCerrarEjercicio: TAction; TBXItem38: TTBXItem; procedure FormShow(Sender: TObject); procedure actCerrarEjercicioExecute(Sender: TObject); procedure actCerrarEjercicioUpdate(Sender: TObject); private FEjercicios: IBizEjercicio; FController : IEjerciciosController; protected function GetEjercicios: IBizEjercicio; procedure SetEjercicios(const Value: IBizEjercicio); function GetController : IEjerciciosController; virtual; procedure SetController (const Value : IEjerciciosController); virtual; procedure NuevoInterno; override; procedure EliminarInterno; override; procedure ModificarInterno; override; public procedure PonerTitulos(const ATitulo: string = ''); override; property Ejercicios: IBizEjercicio read GetEjercicios write SetEjercicios; property Controller : IEjerciciosController read GetController write SetController; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation uses uCustomEditor, uDataModuleEjercicios, uDataModuleUsuarios, uDialogUtils, uEditorEjercicio, uEditorDBBase, uFactuGES_App, cxGrid, cxGridCustomTableView, DateUtils; {$R *.dfm} { ****************************** TfEditorEjercicios ******************************* } procedure TfEditorEjercicios.FormShow(Sender: TObject); begin inherited; if not Assigned(ViewGrid) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(Ejercicios) then raise Exception.Create('No hay ningún Ejercicio asignado'); Ejercicios.DataTable.Active := True; ViewGrid.GotoFirst; end; function TfEditorEjercicios.GetEjercicios: IBizEjercicio; begin Result := FEjercicios; end; function TfEditorEjercicios.GetController: IEjerciciosController; begin Result := FController; end; procedure TfEditorEjercicios.ModificarInterno; begin inherited; FController.Ver(Ejercicios); end; procedure TfEditorEjercicios.NuevoInterno; begin inherited; FController.Anadir(Ejercicios); FController.Ver(Ejercicios); end; procedure TfEditorEjercicios.PonerTitulos(const ATitulo: string); var FTitulo : String; begin FTitulo := 'Lista de ejercicios - ' + AppFactuGES.EmpresaActiva.NOMBRE; inherited PonerTitulos(FTitulo); end; procedure TfEditorEjercicios.SetEjercicios(const Value: IBizEjercicio); begin FEjercicios := Value; dsDataTable.DataTable := FEjercicios.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewEjercicios).Ejercicios := Ejercicios; end; procedure TfEditorEjercicios.SetController(const Value: IEjerciciosController); begin FController := Value; end; destructor TfEditorEjercicios.Destroy; begin FEjercicios := NIL; inherited; end; procedure TfEditorEjercicios.EliminarInterno; begin if (ShowConfirmMessage('Eliminar un ejercicio', Format('¿Desea borrar el ejercicio ''%s''?' + #10#13 + 'Tenga en cuenta que se eliminará también todo el plan general contable asociado al ejercicio.', [Ejercicios.NOMBRE])) = IDYES) then begin inherited; //Para que en el caso de no poderse realizar la operación se refresquen //los datos y no nos permita eliminar un registro a la segunda if not FController.Eliminar(Ejercicios) then actRefrescar.Execute; end; end; procedure TfEditorEjercicios.actCerrarEjercicioExecute(Sender: TObject); var Cadena: String; Ano: Integer; begin inherited; Ano := YearOf(Ejercicios.FECHA_INICIO); Cadena := 'Se creará un nuevo ejercicio ( Ejercicio ' + InttoStr(Ano + 1) + ' ) con los asientos de apertura correspondientes a los asientos de cierre del ejercicio seleccionado. ¿Desea continuar?'; if (Application.MessageBox(PChar(Cadena), 'Atención', MB_YESNO) = IDYES) then if Controller.CerrarEjercicio(Ejercicios) then begin Ejercicios.DataTable.Refresh; Cadena := 'Se ha cerrado correctamente el ejercicio ' + IntToStr(Ano) + '. El ejercicio ' + IntToStr(Ano + 1) + ' será el nuevo ejercicio activo'; Application.MessageBox(PChar(Cadena), 'FactuGES', MB_OK); end; end; procedure TfEditorEjercicios.actCerrarEjercicioUpdate(Sender: TObject); begin inherited; (Sender as TAction).Enabled := HayDatos and (FEjercicios.ESTADO = CTE_ABIERTO); end; constructor TfEditorEjercicios.Create(AOwner: TComponent); begin inherited; ViewGrid := frViewEjercicios1; //CreateView(TfrViewEjercicios) as IViewEjercicios; end; end.