ConstruccionesCNJ_FactuGES/Modulos/Montaje completo/Controller/uMontajesCompletoController.pas
2007-06-21 15:50:59 +00:00

188 lines
6.6 KiB
ObjectPascal
Raw Permalink Blame History

unit uMontajesCompletoController;
interface
uses
Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem,
// uIDataModuleMontajes,
// uMontajesController, uPresupuestosController, uDetallesMontajeController,
uBizMontajes, uIDataModuleMontajes,
uBizMontajesCompleto, uMontajesDetallesController, uPedidosMontajeController,
uCobrosMontajeController, uGastosMontajeController;
type
IMontajesCompletoController = interface(IMontajesDetallesController)
['{6429BDB3-3685-4A77-89CA-7454C8C96C24}']
function GetGastosController: IGastosMontajeController;
procedure SetGastosController(const Value: IGastosMontajeController);
property GastosController: IGastosMontajeController read GetGastosController write SetGastosController;
function GetPedidosController: IPedidosMontajeController;
procedure SetPedidosController(const Value: IPedidosMontajeController);
property PedidosController: IPedidosMontajeController read GetPedidosController write SetPedidosController;
function GetCobrosController: ICobrosMontajeController;
procedure SetCobrosController(const Value: ICobrosMontajeController);
property CobrosController: ICobrosMontajeController read GetCobrosController write SetCobrosController;
end;
TMontajesCompletoController = class(TMontajesDetallesController, IMontajesCompletoController)
protected
FGastosController : IGastosMontajeController;
FPedidosController: IPedidosMontajeController;
FCobrosController: ICobrosMontajeController;
function GetGastosController: IGastosMontajeController;
procedure SetGastosController(const Value: IGastosMontajeController);
function GetPedidosController: IPedidosMontajeController;
procedure SetPedidosController(const Value: IPedidosMontajeController);
procedure RecuperarPedidos(AMontaje : IBizMontajeCompleto);
function GetCobrosController: ICobrosMontajeController;
procedure SetCobrosController(const Value: ICobrosMontajeController);
procedure RecuperarCobros(AMontaje : IBizMontajeCompleto);
//Estos son los tres m<>todos a sobre escribir si se desea heredar toda la logica de
//este controller
procedure AsignarDataModule; override;
procedure RecuperarObjetos(AMontaje: IBizMontaje); override;
procedure AsignarEditor(out AEditor: IEditorDBItem); override;
function ValidarMontaje(AMontaje: IBizMontaje): Boolean; override;
procedure AsignarID(AMontaje: IBizMontaje; NuevoID:Integer); override;
public
property GastosController: IGastosMontajeController read GetGastosController write SetGastosController;
property PedidosController: IPedidosMontajeController read GetPedidosController write SetPedidosController;
property CobrosController: ICobrosMontajeController read GetCobrosController write SetCobrosController;
constructor Create;
destructor Destroy; override;
end;
implementation
uses
cxControls, DB, uEditorRegistryUtils, //schMontajesClient_Intf,
// uBizContactos, uIEditorMontajes, uIEditorMontaje, ,
// uIEditorElegirMontajes, uDataModuleUsuarios, uDAInterfaces, uDataTableUtils,
// uDateUtils, uROTypes, DateUtils, Controls,
// uIDataModuleMontajesDetalle;
uIEditorMontajeCompleto,
uDataModuleMontajesCompleto, uIDataModuleMontajesCompleto;
{ TMontajesDetallesController }
procedure TMontajesCompletoController.AsignarDataModule;
begin
FDataModule := TDataModuleMontajesCompleto.Create(Nil);
end;
procedure TMontajesCompletoController.AsignarEditor(out AEditor: IEditorDBItem);
begin
CreateEditor('EditorMontajeCompleto', IEditorMontajeCompleto, AEditor);
end;
procedure TMontajesCompletoController.AsignarID(AMontaje: IBizMontaje; NuevoID: Integer);
begin
if not Assigned(FGastosController) then
raise Exception.Create ('Controller gastos no asignado');
{ <20><><EFBFBD> OJO !!!
Primero cambiamos el ID de las tablas detalles
porque si cambiamos antes el ID de la cabecera
deja de funcionar la relacion M/D y no
encontrar<61>amos las filas detalle.
--> MASTER.ID = DETAIL.ID_MONTAJE <--
}
FGastosController.AsignarID((AMontaje as IBizMontajeCompleto).Gastos, NuevoID, AMontaje.EsNuevo);
inherited;
end;
constructor TMontajesCompletoController.Create;
begin
inherited;
FGastosController := TGastosMontajeController.Create;
FPedidosController := TPedidosMontajeController.Create;
FCobrosController := TCobrosMontajeController.Create;
end;
destructor TMontajesCompletoController.Destroy;
begin
FGastosController := Nil;
FPedidosController := Nil;
FCobrosController := Nil;
inherited;
end;
procedure TMontajesCompletoController.RecuperarCobros(AMontaje: IBizMontajeCompleto);
begin
AMontaje.Cobros := FCobrosController.BuscarCobrosMontaje(AMontaje.ID);
end;
procedure TMontajesCompletoController.RecuperarObjetos(AMontaje: IBizMontaje);
begin
inherited;
if not Assigned((AMontaje as IBizMontajeCompleto).Pedidos) then
RecuperarPedidos((AMontaje as IBizMontajeCompleto));
if not Assigned((AMontaje as IBizMontajeCompleto).Cobros) then
RecuperarCobros((AMontaje as IBizMontajeCompleto));
end;
procedure TMontajesCompletoController.RecuperarPedidos(AMontaje: IBizMontajeCompleto);
begin
AMontaje.Pedidos := FPedidosController.BuscarPedidosMontaje(AMontaje.ID);
end;
procedure TMontajesCompletoController.SetCobrosController(const Value: ICobrosMontajeController);
begin
FCobrosController := Value;
end;
procedure TMontajesCompletoController.SetGastosController(const Value: IGastosMontajeController);
begin
FGastosController := Value;
end;
procedure TMontajesCompletoController.SetPedidosController(const Value: IPedidosMontajeController);
begin
FPedidosController := Value;
end;
function TMontajesCompletoController.ValidarMontaje(AMontaje: IBizMontaje): Boolean;
begin
Result := inherited ValidarMontaje(AMontaje);
if not Result then exit;
Result := False;
if not Assigned(FGastosController) then
raise Exception.Create ('Controller gastos no asignado');
//Tambien hacemos post de sus tablas hija
if ((AMontaje as IBizMontajeCompleto).Gastos.DataTable.State in dsEditModes) then
(AMontaje as IBizMontajeCompleto).Gastos.DataTable.Post;
Result := True;
end;
function TMontajesCompletoController.GetCobrosController: ICobrosMontajeController;
begin
Result := FCobrosController;
end;
function TMontajesCompletoController.GetGastosController: IGastosMontajeController;
begin
Result := FGastosController;
end;
function TMontajesCompletoController.GetPedidosController: IPedidosMontajeController;
begin
Result := FPedidosController;
end;
end.