git-svn-id: https://192.168.0.254/svn/Proyectos.ConstruccionesCNJ_FactuGES/trunk@4 6cb6b671-b4a0-dd4c-8bdc-3006503d97e9
188 lines
6.6 KiB
ObjectPascal
188 lines
6.6 KiB
ObjectPascal
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.
|