From ef390f836750f46816f1c83c80261e769922541f Mon Sep 17 00:00:00 2001 From: roberto Date: Sat, 1 Dec 2007 12:37:54 +0000 Subject: [PATCH] git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES2/trunk@21 f4e31baf-9722-1c47-927c-6f952f962d4b --- .../Controller/View/uIEditorEjercicio.pas | 26 ++ .../Controller/View/uIEditorEjercicios.pas | 23 ++ .../Controller/uEjerciciosController.pas | 318 ++++++++++++++++++ 3 files changed, 367 insertions(+) create mode 100644 Source/ApplicationBase/Ejercicios/Controller/View/uIEditorEjercicio.pas create mode 100644 Source/ApplicationBase/Ejercicios/Controller/View/uIEditorEjercicios.pas create mode 100644 Source/ApplicationBase/Ejercicios/Controller/uEjerciciosController.pas diff --git a/Source/ApplicationBase/Ejercicios/Controller/View/uIEditorEjercicio.pas b/Source/ApplicationBase/Ejercicios/Controller/View/uIEditorEjercicio.pas new file mode 100644 index 00000000..8c932e82 --- /dev/null +++ b/Source/ApplicationBase/Ejercicios/Controller/View/uIEditorEjercicio.pas @@ -0,0 +1,26 @@ +unit uIEditorEjercicio; + +interface + +uses + uBizEjercicios, uEjerciciosController; + +type + IEditorEjercicio = interface + ['{3CDABEA1-F952-4F35-8A31-279FFB7C31E4}'] + function GetController : IEjerciciosController; + procedure SetController (const Value : IEjerciciosController); + property Controller : IEjerciciosController read GetController write SetController; + + function GetEjercicio: IBizEjercicio; + procedure SetEjercicio(const Value: IBizEjercicio); + property Ejercicio: IBizEjercicio read GetEjercicio write SetEjercicio; + + function ShowModal : Integer; + procedure Release; + end; + + +implementation + +end. diff --git a/Source/ApplicationBase/Ejercicios/Controller/View/uIEditorEjercicios.pas b/Source/ApplicationBase/Ejercicios/Controller/View/uIEditorEjercicios.pas new file mode 100644 index 00000000..cdcbac83 --- /dev/null +++ b/Source/ApplicationBase/Ejercicios/Controller/View/uIEditorEjercicios.pas @@ -0,0 +1,23 @@ +unit uIEditorEjercicios; + +interface + +uses + uEditorGridBase, uBizEjercicios, uEjerciciosController; + +type + IEditorEjercicios = interface(IEditorGridBase) + ['{2E178477-B814-4A53-9360-B19DB26AFD4C}'] + function GetEjercicios: IBizEjercicio; + procedure SetEjercicios(const Value: IBizEjercicio); + property Ejercicios: IBizEjercicio read GetEjercicios write SetEjercicios; + + function GetController : IEjerciciosController; + procedure SetController (const Value : IEjerciciosController); + property Controller : IEjerciciosController read GetController write SetController; + end; + + +implementation + +end. diff --git a/Source/ApplicationBase/Ejercicios/Controller/uEjerciciosController.pas b/Source/ApplicationBase/Ejercicios/Controller/uEjerciciosController.pas new file mode 100644 index 00000000..a68ae403 --- /dev/null +++ b/Source/ApplicationBase/Ejercicios/Controller/uEjerciciosController.pas @@ -0,0 +1,318 @@ +unit uEjerciciosController; + +interface + + +uses + Classes, SysUtils, uDADataTable, uControllerBase, + uBizEjercicios, uIDataModuleEjercicios; +type + IEjerciciosController = interface(IObservador) + ['{94E5F2B6-64C8-4331-B9CB-3ED730478529}'] + function BuscarTodos: IBizEjercicio; + function Buscar(ID: Integer): IBizEjercicio; + procedure VerTodos(AEjercicios: IBizEjercicio); + procedure Ver(AEjercicio: IBizEjercicio); + procedure Anadir(AEjercicio : IBizEjercicio); + function Eliminar(AEjercicio : IBizEjercicio): Boolean; + function Guardar(AEjercicio : IBizEjercicio): Boolean; + function GenerarPCG(IdEjercicioCopia, IdEjercicio: Integer): Boolean; + procedure DescartarCambios(AEjercicio : IBizEjercicio); + function Localizar(AEjercicios: IBizEjercicio; ADescripcion:String): Boolean; + function DarListaEjercicios: TStringList; + end; + + TEjerciciosController = class(TObservador, IEjerciciosController) + private + procedure FiltrarEmpresa(AEjercicio: IBizEjercicio); + + protected + FDataModule : IDataModuleEjercicios; + + procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; + function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; + + function ValidarEjercicio(AEjercicio: IBizEjercicio): Boolean; + procedure AsignarDataModule; + + public + constructor Create; override; + destructor Destroy; override; + + function Eliminar(AEjercicio : IBizEjercicio): Boolean; + function Guardar(AEjercicio : IBizEjercicio): Boolean; virtual; + procedure DescartarCambios(AEjercicio : IBizEjercicio); virtual; + procedure Anadir(AEjercicio : IBizEjercicio); + function BuscarTodos: IBizEjercicio; + function Buscar(ID: Integer): IBizEjercicio; + procedure VerTodos(AEjercicios: IBizEjercicio); + procedure Ver(AEjercicio: IBizEjercicio); + function GenerarPCG(IdEjercicioCopia, IdEjercicio: Integer): Boolean; + function Localizar(AEjercicios: IBizEjercicio; ADescripcion:String): Boolean; + function DarListaEjercicios: TStringList; + end; + +implementation + +uses + cxControls, DB, uEditorRegistryUtils, schEjerciciosClient_Intf, + uIEditorEjercicios, uIEditorEjercicio, uDataModuleEjercicios, + uDAInterfaces, uDataTableUtils, uDialogUtils, uFactuGES_App, + uDateUtils, uROTypes, DateUtils, Controls, Windows, Dialogs; + + + +{ TEjerciciosController } + +procedure TEjerciciosController.Anadir(AEjercicio: IBizEjercicio); +begin + AEjercicio.Insert; +end; + +procedure TEjerciciosController.AsignarDataModule; +begin + FDataModule := TDataModuleEjercicios.Create(Nil); +end; + +function TEjerciciosController.Buscar(ID: Integer): IBizEjercicio; +var + Condicion: TDAWhereExpression; +begin + ShowHourglassCursor; + try + Result := BuscarTodos; + + with Result.DataTable.DynamicWhere do + begin + // (ID = :ID) + Condicion := NewBinaryExpression(NewField('', fld_EjerciciosID), NewConstant(ID, datInteger), dboEqual); + + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; + + finally + HideHourglassCursor; + end; +end; + +function TEjerciciosController.BuscarTodos: IBizEjercicio; +begin + Result := FDataModule.GetItems; + FiltrarEmpresa(Result); +end; + +constructor TEjerciciosController.Create; +begin + inherited; + AsignarDataModule; +end; + +function TEjerciciosController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + +function TEjerciciosController.DarListaEjercicios: TStringList; +var + AEjercicios: IBizEjercicio; +begin + AEjercicios := BuscarTodos; + AEjercicios.DataTable.Active := True; + Result := TStringList.Create; + try + with Result do + begin + AEjercicios.DataTable.First; + while not AEjercicios.DataTable.EOF do + begin + Add(AEjercicios.NOMBRE); + AEjercicios.DataTable.Next; + end; + end; + finally + AEjercicios := NIL; + end; +end; + +procedure TEjerciciosController.DescartarCambios(AEjercicio: IBizEjercicio); +begin + if not Assigned(AEjercicio) then + raise Exception.Create ('Ejercicio no asignado'); + + ShowHourglassCursor; + try + if (AEjercicio.State in dsEditModes) then + AEjercicio.Cancel; + + AEjercicio.DataTable.CancelUpdates; + finally + HideHourglassCursor; + end; +end; + +destructor TEjerciciosController.Destroy; +begin + FDataModule:= NIL; + inherited; +end; + +function TEjerciciosController.ValidarEjercicio(AEjercicio: IBizEjercicio): Boolean; +begin + Result := False; + + if not Assigned(AEjercicio) then + raise Exception.Create ('Ejercicio no asignado'); + + if (AEjercicio.DataTable.State in dsEditModes) then + AEjercicio.DataTable.Post; + + if (AEjercicio.DataTable.RecordCount = 1) + and (AEjercicio.ACTIVO = 0) then + raise Exception.Create('Debe existir un ejercicio activo.'); + + if Length(AEjercicio.NOMBRE) = 0 then + raise Exception.Create('Debe indicar un nombre para este ejercicio.'); + + Result := True; +end; + +procedure TEjerciciosController.Ver(AEjercicio: IBizEjercicio); +var + AEditor : IEditorEjercicio; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorEjercicio', IEditorEjercicio, AEditor); + if Assigned(AEditor) then + with (AEditor as IEditorEjercicio) do + begin + Controller := Self; //OJO ORDEN MUY IMPORTANTE + Ejercicio := AEjercicio; + ShowModal; + Release; + end; + finally + AEditor := NIL; + HideHourglassCursor; + end; +end; + +procedure TEjerciciosController.VerTodos(AEjercicios: IBizEjercicio); +var + AEditor : IEditorEjercicios; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorEjercicios', IEditorEjercicios, AEditor); + if Assigned(AEditor) then + with AEditor do + begin + Controller := Self; //OJO ORDEN MUY IMPORTANTE + Ejercicios := AEjercicios; + ShowEmbedded; + end; + finally + AEditor := NIL; + HideHourglassCursor; + end; +end; + +function TEjerciciosController.Eliminar(AEjercicio: IBizEjercicio): Boolean; +begin + Result := False; + + if not Assigned(AEjercicio) then + raise Exception.Create ('Ejercicio no asignado'); + + ShowHourglassCursor; + try + if (AEjercicio.State in dsEditModes) then + AEjercicio.Cancel; + + //ATENCIÓN!! Debe haber claves foraneas en las tablas de CONT_EPIGRAFES, CONT_CUENTAS, CONT_SUBCUENTAS + //con el fin de que al borrar un ejercicio se borren todos sus datos correspondientes + AEjercicio.Delete; + AEjercicio.DataTable.ApplyUpdates; + HideHourglassCursor; + Result := True; + finally + HideHourglassCursor; + end; +end; + +procedure TEjerciciosController.FiltrarEmpresa(AEjercicio: IBizEjercicio); +var + Condicion: TDAWhereExpression; +begin + if AEjercicio.DataTable.Active then + AEjercicio.DataTable.Active := False; + + // Filtrar las facturas actuales por empresa + with AEjercicio.DataTable.DynamicWhere do + begin + // (ID_EMPRESA >= ID) + Condicion := NewBinaryExpression(NewField('', fld_EjerciciosID_EMPRESA), NewConstant(AppFactuGES.EmpresaActiva.ID, datInteger), dboEqual); + + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; +end; + +procedure TEjerciciosController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); +begin + inherited; +// +end; + +function TEjerciciosController.GenerarPCG(IdEjercicioCopia, IdEjercicio: Integer): Boolean; +begin + ShowHourglassCursor; + try + Result := FDataModule.GenerarPGC(IdEjercicioCopia, IdEjercicio); + finally + HideHourglassCursor; + end; +end; + +function TEjerciciosController.Guardar(AEjercicio: IBizEjercicio): Boolean; +begin + Result := False; + + if ValidarEjercicio(AEjercicio) then + begin + ShowHourglassCursor; + try + AEjercicio.DataTable.ApplyUpdates; + Result := True; + finally + HideHourglassCursor; + end; + end; +end; + +function TEjerciciosController.Localizar(AEjercicios: IBizEjercicio; ADescripcion: String): Boolean; +begin + Result := True; + ShowHourglassCursor; + try + with AEjercicios.DataTable do + begin + DisableControls; + First; + if not Locate(fld_EjerciciosNOMBRE, ADescripcion, []) then + Result := False; + EnableControls; + end; + finally + HideHourglassCursor; + end; +end; + +end.