unit uCobrosMontajeController; interface uses // Classes, SysUtils, uDADataTable, uControllerBase, uIDataModuleCobrosCliente, // uClientesController, uBizCobrosCliente; uEditorDBItem, uCobrosClienteController, uMontajesDetallesController, uBizCobrosCliente, uBizCobrosMontaje; type ICobrosMontajeController = interface(ICobrosClienteController) ['{573BEBB7-C4ED-4041-8373-0FEF3B201E83}'] function GetMontajeController: IMontajesDetallesController; procedure SetMontajeController(const Value: IMontajesDetallesController); property MontajeController: IMontajesDetallesController read GetMontajeController write SetMontajeController; function BuscarCobrosMontaje(const ID: Integer): IBizCobroMontaje; end; TCobrosMontajeController = class(TCobrosClienteController, ICobrosMontajeController) protected FMontajeController : IMontajesDetallesController; function GetMontajeController: IMontajesDetallesController; procedure SetMontajeController(const Value: IMontajesDetallesController); procedure RecuperarMontaje(ACobro : IBizCobroMontaje); //Estos son los tres métodos a sobre escribir si se desea heredar toda la logica de //este controller procedure AsignarDataModule; override; procedure RecuperarObjetos(ACobro: IBizCobroCliente); override; procedure AsignarEditor(out AEditor: IEditorDBItem); override; public property MontajeController: IMontajesDetallesController read GetMontajeController write SetMontajeController; function BuscarCobrosMontaje(const ID: Integer): IBizCobroMontaje; constructor Create; destructor Destroy; override; procedure Preview(ACobro : IBizCobroCliente); override; procedure Print(ACobro : IBizCobroCliente); override; end; implementation uses uIEditorCobroMontaje, uDataModuleCobrosMontaje, uBizMontajesDetalles, uIDataModuleCobrosMontaje, uCobrosMontajeReportController; { TCobrosMontajeController } procedure TCobrosMontajeController.AsignarDataModule; begin inherited; FDataModule := TDataModuleCobrosMontaje.Create(Nil); end; procedure TCobrosMontajeController.AsignarEditor(out AEditor: IEditorDBItem); begin // inherited; No descomentar así crea solo el editor hijo CreateEditor('EditorCobroMontaje', IEditorCobroMontaje, AEditor); end; function TCobrosMontajeController.BuscarCobrosMontaje(const ID: Integer): IBizCobroMontaje; begin Result := (FDataModule as IDataModuleCobrosMontaje).GetItemsMontaje(ID); FiltrarEmpresa(Result); end; constructor TCobrosMontajeController.Create; begin inherited; FMontajeController := TMontajesDetallesController.Create; end; destructor TCobrosMontajeController.Destroy; begin FMontajeController := Nil; inherited; end; function TCobrosMontajeController.GetMontajeController: IMontajesDetallesController; begin Result := FMontajeController; end; procedure TCobrosMontajeController.Preview(ACobro: IBizCobroCliente); var AReportController : ICobrosMontajeReportController; begin inherited; AReportController := TCobrosMontajeReportController.Create; try AReportController.Preview(ACobro.ID); finally AReportController := NIL; end; end; procedure TCobrosMontajeController.Print(ACobro: IBizCobroCliente); var AReportController : ICobrosMontajeReportController; begin inherited; AReportController := TCobrosMontajeReportController.Create; try AReportController.Print(ACobro.ID); finally AReportController := NIL; end; end; procedure TCobrosMontajeController.RecuperarMontaje(ACobro: IBizCobroMontaje); begin ACobro.Montaje := (FMontajeController.Buscar(ACobro.ID_MONTAJE) as IBizMontajeDetalles); end; procedure TCobrosMontajeController.RecuperarObjetos(ACobro: IBizCobroCliente); begin inherited; if not Assigned((ACobro as IBizCobroMontaje).Montaje) or ((ACobro as IBizCobroMontaje).ID_MONTAJE <> (ACobro as IBizCobroMontaje).Montaje.ID) then RecuperarMontaje((ACobro as IBizCobroMontaje)); end; procedure TCobrosMontajeController.SetMontajeController(const Value: IMontajesDetallesController); begin FMontajeController := Value; end; end.