unit uHistoricoMovimientosController; interface uses Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem, uIDataModuleHistoricoMovimientos, uBizHistoricoMovimientos, uAlmacenesController; type IHistoricoMovimientosController = interface(IObservador) ['{F60D83E3-DDAA-497F-8193-62F9D693B4B0}'] procedure VerTodos(AHistoricoMovimientos: IBizHistoricoMovimientos); function BuscarTodos: IBizHistoricoMovimientos; function Buscar(const ID_ALMACEN: Integer): IBizHistoricoMovimientos; // function ExtraerSeleccionados(AArticulos: IBizHistoricoMovimientos) : IBizHistoricoMovimientos; // procedure Anadir(AArticulos, AHistoricoMovimientos : IBizHistoricoMovimientos); // function Ver(AArticulos: IBizHistoricoMovimientos; AHistoricoMovimientos : IBizHistoricoMovimientos): Boolean; // function Guardar(AArticulos : IBizHistoricoMovimientos; const FechaMovimiento: TDateTime; const CausaMovimiento: String): Boolean; function GetAlmacenesController: IAlmacenesController; procedure SetAlmacenesController(const Value: IAlmacenesController); property AlmacenesController: IAlmacenesController read GetAlmacenesController write SetAlmacenesController; end; THistoricoMovimientosController = class(TObservador, IHistoricoMovimientosController) private FAlmacenesController: IAlmacenesController; function GetAlmacenesController: IAlmacenesController; procedure SetAlmacenesController(const Value: IAlmacenesController); protected FDataModule : IDataModuleHistoricoMovimientos; procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; function _Vacio : IBizHistoricoMovimientos; procedure FiltrarEmpresa(AHistoricoMovimientos: IBizHistoricoMovimientos); //Estos son los tres métodos a sobre escribir si se desea heredar toda la logica de //este controller procedure AsignarDataModule; virtual; public property AlmacenesController: IAlmacenesController read GetAlmacenesController write SetAlmacenesController; constructor Create; virtual; destructor Destroy; override; function Buscar(const ID_ALMACEN: Integer): IBizHistoricoMovimientos; function BuscarTodos: IBizHistoricoMovimientos; // function ExtraerSeleccionados(AArticulos: IBizHistoricoMovimientos) : IBizHistoricoMovimientos; // function Ver(AArticulos: IBizHistoricoMovimientos; AHistoricoMovimientos : IBizHistoricoMovimientos): Boolean; procedure VerTodos(AHistoricoMovimientos: IBizHistoricoMovimientos); end; implementation uses Forms, cxControls, DB, schHistoricoMovimientosClient_Intf, uEditorRegistryUtils, uIEditorHistoricoMovimientos, uDataModuleHistoricoMovimientos, uDataModuleUsuarios, uDAInterfaces, uDataTableUtils, uDateUtils, uROTypes, DateUtils, Controls, Windows, dialogs, Variants, uBizAlmacenes, uControllerDetallesBase, uDialogUtils, schArticulosClient_Intf; { THistoricoMovimientosController } procedure THistoricoMovimientosController.AsignarDataModule; begin FDataModule := TDataModuleHistoricoMovimientos.Create(Nil); end; function THistoricoMovimientosController.Buscar(const ID_ALMACEN: Integer): IBizHistoricoMovimientos; begin Result := (FDataModule as IDataModuleHistoricoMovimientos).GetItems(ID_ALMACEN); FiltrarEmpresa(Result); end; function THistoricoMovimientosController.BuscarTodos: IBizHistoricoMovimientos; begin Result := FDataModule.GetItems; FiltrarEmpresa(Result); end; constructor THistoricoMovimientosController.Create; begin AsignarDataModule; FAlmacenesController := TAlmacenesController.Create; end; function THistoricoMovimientosController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; begin Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); end; destructor THistoricoMovimientosController.Destroy; begin FDataModule := Nil; FAlmacenesController := Nil; inherited; end; procedure THistoricoMovimientosController.VerTodos(AHistoricoMovimientos: IBizHistoricoMovimientos); var AEditor : IEditorHistoricoMovimientos; begin AEditor := NIL; ShowHourglassCursor; try CreateEditor('EditorHistoricoMovimientos', IEditorHistoricoMovimientos, AEditor); with AEditor do begin Controller := Self; //OJO ORDEN MUY IMPORTANTE HistoricoMovimientos := AHistoricoMovimientos; MultiSelect := False; end; finally HideHourglassCursor; end; if Assigned(AEditor) then AEditor.ShowEmbedded; end; function THistoricoMovimientosController._Vacio: IBizHistoricoMovimientos; begin Result := Buscar(ID_NULO); end; procedure THistoricoMovimientosController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); begin inherited; // end; procedure THistoricoMovimientosController.SetAlmacenesController(const Value: IAlmacenesController); begin FAlmacenesController := Value; end; procedure THistoricoMovimientosController.FiltrarEmpresa(AHistoricoMovimientos: IBizHistoricoMovimientos); begin if AHistoricoMovimientos.DataTable.Active then AHistoricoMovimientos.DataTable.Active := False; // Filtrar los HistoricoMovimientos actuales por empresa with AHistoricoMovimientos.DataTable.Where do begin if NotEmpty then AddOperator(opAND); OpenBraket; AddText(fld_Historico_MovimientosID_EMPRESA + ' = ' + IntToStr(dmUsuarios.IDEmpresaActual)); CloseBraket; end; end; function THistoricoMovimientosController.GetAlmacenesController: IAlmacenesController; begin Result := FAlmacenesController; end; end.