unit uHistoricoMovimientosController; interface uses Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem, uIDataModuleHistoricoMovimientos, uBizHistoricoMovimientos, uAlmacenesController; type IHistoricoMovimientosController = interface(IControllerBase) ['{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(TControllerBase, 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; override; 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, uFactuGES_App, 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 inherited; 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; {function THistoricoMovimientosController.ExtraerSeleccionados(AArticulos: IBizHistoricoMovimientos): IBizHistoricoMovimientos; var ASeleccionados : IBizHistoricoMovimientos; begin ASeleccionados := (Self.Buscar(ID_NULO) as IBizHistoricoMovimientos); CopyDataTableDA5(AArticulos.DataTable, ASeleccionados.DataTable, True); Result := ASeleccionados; end;} {function THistoricoMovimientosController.Ver(AArticulos: IBizHistoricoMovimientos; AHistoricoMovimientos: IBizHistoricoMovimientos): Boolean; var AEditor : IEditorEntradaSalidaArticulos; begin Result := False; AEditor := NIL; CreateEditor('EditorEntradaSalidaArticulos', IEditorEntradaSalidaArticulos, AEditor); if Assigned(AEditor) then try AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE AEditor.Articulos := AArticulos; AEditor.HistoricoMovimientos := AHistoricoMovimientos; AEditor.ShowModal; Result := AEditor.ResultadoModalOK; finally AEditor.Release; AEditor := NIL; end; end;} procedure THistoricoMovimientosController.VerTodos(AHistoricoMovimientos: IBizHistoricoMovimientos); var AEditor : IEditorHistoricoMovimientos; begin AEditor := NIL; CreateEditor('EditorHistoricoMovimientos', IEditorHistoricoMovimientos, AEditor); if Assigned(AEditor) then with AEditor do begin Controller := Self; //OJO ORDEN MUY IMPORTANTE HistoricoMovimientos := AHistoricoMovimientos; MultiSelect := False; ShowEmbedded; end; 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); var Condicion: TDAWhereExpression; begin if AHistoricoMovimientos.DataTable.Active then AHistoricoMovimientos.DataTable.Active := False; // Filtrar los HistoricoMovimientos actuales por empresa with AHistoricoMovimientos.DataTable.DynamicWhere do begin // (ID_EMPRESA >= ID) Condicion := NewBinaryExpression(NewField('', fld_HistoricoMovimientosID_EMPRESA), NewConstant(AppFactuGES.EmpresaActiva.ID, datInteger), dboEqual); if IsEmpty then Expression := Condicion else Expression := NewBinaryExpression(Expression, Condicion, dboAnd); end; end; function THistoricoMovimientosController.GetAlmacenesController: IAlmacenesController; begin Result := FAlmacenesController; end; end.