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');
|
|||
|
|
|
|||
|
|
{ <EFBFBD><EFBFBD><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<EFBFBD>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.
|