unit uReferenciasController; interface uses Classes, SysUtils, uDADataTable, uControllerBase, uIDataModuleReferencias, uBizReferencias; type IReferenciasController = interface(IObservador) ['{832E33B0-3228-4519-A740-F551DF3004DD}'] function BuscarTodos: IBizReferencia; procedure VerTodos(AReferencias: IBizReferencia); function Guardar(AReferencia : IBizReferencia): Boolean; procedure DescartarCambios(AReferencia : IBizReferencia); // function Localizar(AReferencias: IBizReferencia; ADescripcion:String): Boolean; end; TReferenciasController = class(TObservador, IReferenciasController) protected FDataModule : IDataModuleReferencias; procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; function ValidarReferencia(AReferencia: IBizReferencia): Boolean; procedure AsignarDataModule; procedure AsignarID(AReferencia: IBizReferencia; const IDNuevo: Integer); public constructor Create; destructor Destroy; override; function Guardar(AReferencia : IBizReferencia): Boolean; virtual; procedure DescartarCambios(AReferencia : IBizReferencia); virtual; function BuscarTodos: IBizReferencia; procedure VerTodos(AReferencias: IBizReferencia); // function Localizar(AReferencias: IBizReferencia; ADescripcion:String): Boolean; end; implementation uses cxControls, DB, uEditorRegistryUtils, schReferenciasClient_Intf, uIEditorReferencias, uDataModuleReferencias, uDAInterfaces, uDataTableUtils, uDialogUtils, uDateUtils, uROTypes, DateUtils, Controls, Windows; { TReferenciasController } procedure TReferenciasController.AsignarDataModule; begin FDataModule := TDataModuleReferencias.Create(Nil); end; procedure TReferenciasController.AsignarID(AReferencia: IBizReferencia; const IDNuevo: Integer); begin // end; function TReferenciasController.BuscarTodos: IBizReferencia; begin Result := FDataModule.GetItems; end; constructor TReferenciasController.Create; begin AsignarDataModule; end; function TReferenciasController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; begin Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); end; procedure TReferenciasController.DescartarCambios(AReferencia: IBizReferencia); begin if not Assigned(AReferencia) then raise Exception.Create ('Forma de pago no asignada'); ShowHourglassCursor; try if (AReferencia.State in dsEditModes) then AReferencia.Cancel; AReferencia.DataTable.CancelUpdates; finally HideHourglassCursor; end; end; destructor TReferenciasController.Destroy; begin FDataModule := NIL; inherited; end; function TReferenciasController.ValidarReferencia(AReferencia: IBizReferencia): Boolean; begin Result := False; if not Assigned(AReferencia) then raise Exception.Create ('Referencia no asignada'); if (AReferencia.DataTable.State in dsEditModes) then AReferencia.DataTable.Post; // if Length(AReferencia.VALOR) = 0 then // raise Exception.Create('Debe indicar un código para esta referencia.'); Result := True; end; procedure TReferenciasController.VerTodos(AReferencias: IBizReferencia); var AEditor : IEditorReferencias; begin AEditor := NIL; ShowHourglassCursor; try CreateEditor('EditorReferencias', IEditorReferencias, AEditor); with AEditor do Referencias := AReferencias; finally HideHourglassCursor; end; if Assigned(AEditor) then try AEditor.ShowModal; AEditor.Release; finally AEditor := NIL; end; end; procedure TReferenciasController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); begin inherited; // end; function TReferenciasController.Guardar(AReferencia: IBizReferencia): Boolean; var NuevoID : Integer; begin Result := False; if ValidarReferencia(AReferencia) then begin ShowHourglassCursor; try // if AReferencia.EsNuevo then // NuevoID := FDataModule.GetNextID(AReferencia.DataTable.LogicalName) // else // NuevoID := AReferencia.ID; // AsignarID(AReferencia, NuevoID); AReferencia.DataTable.ApplyUpdates; Result := True; finally HideHourglassCursor; end; end; end; { function TReferenciasController.Localizar(AReferencias: IBizReferencia; ADescripcion: String): Boolean; begin Result := True; ShowHourglassCursor; try with AReferencias.DataTable do begin DisableControls; First; if not Locate(fld_ReferenciasDESCRIPCION, ADescripcion, []) then Result := False; EnableControls; end; finally HideHourglassCursor; end; end; } end.