unit uInfVentasArticuloController; interface uses Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem, uBizInfVentasArticulo, uIDataModuleInfVentasArticulo, uInformeBaseController, uBizInformes; type IInfVentasArticuloController = interface(IInformeBaseController) ['{29069391-E477-41E2-9843-DE09DAE5B2EE}'] // procedure VerTodos(AInfVentasArticulo: IBizInfVentasArticulo); // function BuscarTodos: IBizInfVentasArticulo; // function Buscar(const ID_ALMACEN: Integer): IBizInfVentasArticulo; // function ExtraerSeleccionados(AArticulos: IBizInfVentasArticulo) : IBizInfVentasArticulo; // procedure Anadir(AArticulos, AInfVentasArticulo : IBizInfVentasArticulo); // procedure Ver; //(AInfVentasArticulo : IBizInfVentasArticulo); // function Guardar(AArticulos : IBizInfVentasArticulo; const FechaMovimiento: TDateTime; const CausaMovimiento: String): Boolean; end; TInfVentasArticuloController = class(TObservador, IInfVentasArticuloController, IInformeBaseController) private function BuscarTodos: IBizInfVentasArticulo; protected FDataModule : IDataModuleInfVentasArticulo; procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; function _Vacio : IBizInfVentasArticulo; procedure FiltrarEmpresa(AInfVentasArticulo: IBizInfVentasArticulo); //Estos son los tres métodos a sobre escribir si se desea heredar toda la logica de //este controller procedure AsignarDataModule; virtual; public constructor Create; virtual; destructor Destroy; override; // function Buscar(const ID_ALMACEN: Integer): IBizInfVentasArticulo; // function ExtraerSeleccionados(AArticulos: IBizInfVentasArticulo) : IBizInfVentasArticulo; // function Ver(AArticulos: IBizInfVentasArticulo; AInfVentasArticulo : IBizInfVentasArticulo): Boolean; procedure Nuevo(AInforme : IBizInforme); procedure Ver(AInforme : IBizInforme); // procedure VerTodos(AInfVentasArticulo: IBizInfVentasArticulo); end; implementation uses Forms, cxControls, DB, uEditorRegistryUtils, uIEditorInfVentasArticulo, uDataModuleUsuarios, uDataModuleInfVentasArticulo, uDAInterfaces, uDataTableUtils, uDateUtils, uROTypes, DateUtils, Controls, Windows, dialogs, Variants, uControllerDetallesBase, uDialogUtils, schInfVentasArticuloClient_Intf; { TInfVentasArticuloController } procedure TInfVentasArticuloController.AsignarDataModule; begin FDataModule := TdmInfVentasArticulo.Create(Nil); end; { function TInfVentasArticuloController.Buscar(const ID_ALMACEN: Integer): IBizInfVentasArticulo; begin Result := (FDataModule as IDataModuleInfVentasArticulo).GetItems(ID_ALMACEN); FiltrarEmpresa(Result); end; } function TInfVentasArticuloController.BuscarTodos: IBizInfVentasArticulo; begin Result := FDataModule.GetItems; FiltrarEmpresa(Result); end; constructor TInfVentasArticuloController.Create; begin AsignarDataModule; end; function TInfVentasArticuloController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; begin Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); end; destructor TInfVentasArticuloController.Destroy; begin FDataModule := Nil; inherited; end; {function TInfVentasArticuloController.ExtraerSeleccionados(AArticulos: IBizInfVentasArticulo): IBizInfVentasArticulo; var ASeleccionados : IBizInfVentasArticulo; begin ASeleccionados := (Self.Buscar(ID_NULO) as IBizInfVentasArticulo); CopyDataTable(AArticulos.DataTable, ASeleccionados.DataTable, True); Result := ASeleccionados; end;} {function TInfVentasArticuloController.Ver(AArticulos: IBizInfVentasArticulo; AInfVentasArticulo: IBizInfVentasArticulo): Boolean; var AEditor : IEditorEntradaSalidaArticulos; begin Result := False; AEditor := NIL; ShowHourglassCursor; try CreateEditor('EditorEntradaSalidaArticulos', IEditorEntradaSalidaArticulos, AEditor); with AEditor do begin Controller := Self; //OJO ORDEN MUY IMPORTANTE Articulos := AArticulos; InfVentasArticulo := AInfVentasArticulo; end; finally HideHourglassCursor; end; if Assigned(AEditor) then try AEditor.ShowModal; Result := AEditor.ResultadoModalOK; AEditor.Release; finally AEditor := NIL; end; end;} procedure TInfVentasArticuloController.Ver(AInforme: IBizInforme); var AEditor : IEditorInfVentasArticulo; begin AEditor := NIL; ShowHourglassCursor; try CreateEditor('EditorInfVentasArticulo', IEditorInfVentasArticulo, AEditor); with (AEditor as IEditorInfVentasArticulo) do begin if not Assigned(FDataModule) then AsignarDataModule; Controller := Self; //OJO ORDEN MUY IMPORTANTE Datos := BuscarTodos; Informe := AInforme; // Datos.VisibleColumns := FDataModule.GetNameColumns; end; finally HideHourglassCursor; end; if Assigned(AEditor) then try AEditor.ShowModal; AEditor.Release; finally AEditor := NIL; end; end; {procedure TInfVentasArticuloController.VerTodos(AInfVentasArticulo: IBizInfVentasArticulo); //var // AEditor : IEditorInfVentasArticulo; begin { AEditor := NIL; ShowHourglassCursor; try CreateEditor('EditorInfVentasArticulo', IEditorInfVentasArticulo, AEditor); with AEditor do begin Controller := Self; //OJO ORDEN MUY IMPORTANTE InfVentasArticulo := AInfVentasArticulo; MultiSelect := False; end; finally HideHourglassCursor; end; if Assigned(AEditor) then AEditor.ShowEmbedded; end;} function TInfVentasArticuloController._Vacio: IBizInfVentasArticulo; begin // Result := Buscar(ID_NULO); end; procedure TInfVentasArticuloController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); begin inherited; // end; procedure TInfVentasArticuloController.FiltrarEmpresa(AInfVentasArticulo: IBizInfVentasArticulo); begin if AInfVentasArticulo.DataTable.Active then AInfVentasArticulo.DataTable.Active := False; // Filtrar los InfVentasArticulo actuales por empresa with AInfVentasArticulo.DataTable.Where do begin if NotEmpty then AddOperator(opAND); OpenBraket; AddText(fld_InfVentasArticuloID_EMPRESA + ' = ' + IntToStr(dmUsuarios.IDEmpresaActual)); CloseBraket; end; end; procedure TInfVentasArticuloController.Nuevo(AInforme: IBizInforme); begin AInforme.Insert; AInforme.CATEGORIA := 'VENTAS ARTICULOS'; AInforme.CONTROLLER := 'InfVentasArticuloController'; AInforme.ID_EMPRESA := dmUsuarios.EmpresaActual.ID; end; end.