ConstruccionesCNJ_FactuGES/Modulos/Pedidos con montaje/Controller/uPedidosMontajeController.pas
2007-06-21 15:50:59 +00:00

100 lines
3.3 KiB
ObjectPascal

unit uPedidosMontajeController;
interface
uses
uEditorDBItem,
uPedidosProveedorController, uMontajesDetallesController, uBizPedidosProveedor,
uBizPedidosMontaje;
type
IPedidosMontajeController = interface(IPedidosProveedorController)
['{2E5321A9-03DC-4E81-A97B-C4D2D1C2ADB9}']
function GetMontajeController: IMontajesDetallesController;
procedure SetMontajeController(const Value: IMontajesDetallesController);
property MontajeController: IMontajesDetallesController read GetMontajeController write SetMontajeController;
function BuscarPedidosMontaje(const ID: Integer): IBizPedidoMontaje;
end;
TPedidosMontajeController = class(TPedidosProveedorController, IPedidosMontajeController)
protected
FMontajeController : IMontajesDetallesController;
function GetMontajeController: IMontajesDetallesController;
procedure SetMontajeController(const Value: IMontajesDetallesController);
procedure RecuperarMontaje(APedido : IBizPedidoMontaje);
//Estos son los tres métodos a sobre escribir si se desea heredar toda la logica de
//este controller
procedure AsignarDataModule; override;
procedure RecuperarObjetos(APedido: IBizPedidoProveedor); override;
procedure AsignarEditor(out AEditor: IEditorDBItem); override;
public
property MontajeController: IMontajesDetallesController read GetMontajeController write SetMontajeController;
function BuscarPedidosMontaje(const ID: Integer): IBizPedidoMontaje;
constructor Create;
destructor Destroy; override;
end;
implementation
uses
uIEditorPedidoMontaje, uDataModulePedidosMontaje, uBizMontajesDetalles,
uIDataModulePedidosMontaje;
{ TPedidosMontajeController }
procedure TPedidosMontajeController.AsignarDataModule;
begin
FDataModule := TDataModulePedidosMontaje.Create(Nil);
end;
procedure TPedidosMontajeController.AsignarEditor(out AEditor: IEditorDBItem);
begin
// inherited; No descomentar así crea solo el editor hijo
CreateEditor('EditorPedidoMontaje', IEditorPedidoMontaje, AEditor);
end;
function TPedidosMontajeController.BuscarPedidosMontaje(const ID: Integer): IBizPedidoMontaje;
begin
Result := (FDataModule as IDataModulePedidosMontaje).GetItemsMontaje(ID);
FiltrarEmpresa(Result);
end;
constructor TPedidosMontajeController.Create;
begin
inherited;
FMontajeController := TMontajesDetallesController.Create;
end;
destructor TPedidosMontajeController.Destroy;
begin
FMontajeController := Nil;
inherited;
end;
procedure TPedidosMontajeController.RecuperarMontaje(APedido: IBizPedidoMontaje);
begin
APedido.Montaje := (FMontajeController.Buscar(APedido.ID_MONTAJE) as IBizMontajeDetalles);
end;
procedure TPedidosMontajeController.RecuperarObjetos(APedido: IBizPedidoProveedor);
begin
inherited;
if not Assigned((APedido as IBizPedidoMontaje).Montaje)
or ((APedido as IBizPedidoMontaje).ID_MONTAJE <> (APedido as IBizPedidoMontaje).Montaje.ID) then
RecuperarMontaje((APedido as IBizPedidoMontaje))
end;
procedure TPedidosMontajeController.SetMontajeController(const Value: IMontajesDetallesController);
begin
FMontajeController := Value;
end;
function TPedidosMontajeController.GetMontajeController: IMontajesDetallesController;
begin
Result := FMontajeController;
end;
end.