unit uBizMontajesCompleto; interface uses uDADataTable, uBizMontajesDetalles, uBizPedidosMontaje, uBizCobrosMontaje, schMontajesClient_Intf, uBizDocumentosAsociados; const BIZ_CLIENT_GASTOS_MONTAJE = 'Client.GastosMontaje'; BIZ_CLIENT_MONTAJE_COMPLETO = 'Client.Montaje.Completo'; type IBizGastosMontaje = interface(IMontajes_Gastos) ['{B740859C-7326-437E-ACB4-2035DF9743BA}'] function EsNuevo: Boolean; end; IBizMontajeCompleto = interface(IBizMontajeDetalles) ['{6D72F72F-010D-4727-8002-239EDE0774F7}'] function GetGastos: IBizGastosMontaje; procedure SetGastos(Value: IBizGastosMontaje); property Gastos: IBizGastosMontaje read GetGastos write SetGastos; procedure SetPedidos(AValue : IBizPedidoMontaje); function GetPedidos : IBizPedidoMontaje; property Pedidos : IBizPedidoMontaje read GetPedidos write SetPedidos; procedure SetCobros(AValue : IBizCobroMontaje); function GetCobros : IBizCobroMontaje; property Cobros : IBizCobroMontaje read GetCobros write SetCobros; //DOCUMENTOS ASOCIADOS function GetGestorDocumentos: TGestorDocumentos; procedure SetGestorDocumentos(Value: TGestorDocumentos); property GestorDocumentos: TGestorDocumentos read GetGestorDocumentos write SetGestorDocumentos; end; //Clase de negocio de los gastos del montaje TBizGastosMontaje = class(TMontajes_GastosDataTableRules, IBizGastosMontaje) private FContadorID: Integer; protected procedure OnNewRecord(Sender: TDADataTable); override; public function EsNuevo: Boolean; constructor Create(aDataTable: TDADataTable); override; end; //Clase de negocio de montajes a los que le aņadimos pedidos y cobros TBizMontajeCompleto = class(TBizMontajeDetalles, IBizMontajeCompleto, IBizDocumentosAsociados) protected FGastos : IBizGastosMontaje; FGastosLink : TDADataSource; FPedidos : IBizPedidoMontaje; FCobros : IBizCobroMontaje; //DOCUMENTOS ASOCIADOS FGestorDocumentos: TGestorDocumentos; function GetGestorDocumentos: TGestorDocumentos; procedure SetGestorDocumentos(Value: TGestorDocumentos); function GetGastos: IBizGastosMontaje; procedure SetGastos(Value: IBizGastosMontaje); procedure SetPedidos(AValue : IBizPedidoMontaje); function GetPedidos : IBizPedidoMontaje; procedure SetCobros(AValue : IBizCobroMontaje); function GetCobros : IBizCobroMontaje; procedure BeforeDelete(Sender: TDADataTable); override; procedure BeforeCancel(Sender: TDADataTable); override; procedure SetIDValue(const aValue: Integer); override; public property Gastos: IBizGastosMontaje read GetGastos write SetGastos; property Pedidos : IBizPedidoMontaje read GetPedidos write SetPedidos; property Cobros : IBizCobroMontaje read GetCobros write SetCobros; //DOCUMENTOS ASOCIADOS property GestorDocumentos: TGestorDocumentos read GetGestorDocumentos write SetGestorDocumentos; constructor Create(aDataTable: TDADataTable); override; destructor Destroy; override; end; implementation uses SysUtils, Variants, uDataModuleConfiguracion, uDataTableUtils; { TBizMontajeCompleto } procedure TBizMontajeCompleto.BeforeCancel(Sender: TDADataTable); begin if Assigned(GestorDocumentos) then GestorDocumentos.procesarCancelTable; end; procedure TBizMontajeCompleto.BeforeDelete(Sender: TDADataTable); begin if Assigned(GestorDocumentos) then GestorDocumentos.procesarDeleteTable; end; constructor TBizMontajeCompleto.Create(aDataTable: TDADataTable); var Ruta: Variant; begin inherited; FGastosLink := TDADataSource.Create(NIL); FGastosLink.DataTable := aDataTable; FPedidos := Nil; FCobros := Nil; //DOCUMENTOS ASOCIADOS //En caso de no poder acceder a la ruta de red (Caso de dos tiendas conectadas por internet) //deshabilitamos el gestor de documentos // showmessage(ExtractFilePath(Application.ExeName) + 'Documentos' + PathDelim); Ruta := dmConfiguracion.darValor(CTE_DOCUMENTOS); if (not VarIsNull(Ruta)) and (DirectoryExists(Ruta)) then begin FGestorDocumentos := TGestorDocumentos.Create(Nil); FGestorDocumentos.RootDocumentos := dmConfiguracion.darValor(CTE_DOCUMENTOS); aDataTable.BeforeCancel := BeforeCancel; // aDataTable.AfterCancel := AfterCancel; end else FGestorDocumentos := Nil end; destructor TBizMontajeCompleto.Destroy; begin FPedidos := Nil; FCobros := Nil; FGastos := NIL; FGastosLink.Free; FreeAndNil(FGestorDocumentos); inherited; end; function TBizMontajeCompleto.GetCobros: IBizCobroMontaje; begin Result := FCobros; end; function TBizMontajeCompleto.GetGastos: IBizGastosMontaje; begin Result := FGastos; end; function TBizMontajeCompleto.GetGestorDocumentos: TGestorDocumentos; begin if Assigned(FGestorDocumentos) then FGestorDocumentos.Directorio := ID; Result := FGestorDocumentos; end; function TBizMontajeCompleto.GetPedidos: IBizPedidoMontaje; begin Result := FPedidos; end; procedure TBizMontajeCompleto.SetCobros(AValue: IBizCobroMontaje); begin FCobros := AValue; if Assigned(FCobros) then begin if not FCobros.DataTable.Active then FCobros.DataTable.Active := True; end; end; procedure TBizMontajeCompleto.SetGastos(Value: IBizGastosMontaje); begin FGastos := Value; EnlazarMaestroDetalle(FGastosLink, FGastos); end; procedure TBizMontajeCompleto.SetGestorDocumentos(Value: TGestorDocumentos); begin FGestorDocumentos := Value; end; procedure TBizMontajeCompleto.SetIDValue(const aValue: Integer); begin // frViewDocumentosAsociados.DeshabilitarDocumentos; try if Assigned(GestorDocumentos) then GestorDocumentos.Directorio := aValue; except on E: Exception do begin // Error := True; // ErrorText := E.Message; // DisplayValue := frViewObra.frViewDatosObra.edtNombre.EditValue; end; end; // frViewDocumentosAsociados.HabilitarDocumentos; inherited; end; procedure TBizMontajeCompleto.SetPedidos(AValue: IBizPedidoMontaje); begin FPedidos := AValue; if Assigned(FPedidos) then begin if not FPedidos.DataTable.Active then FPedidos.DataTable.Active := True; end; end; { TBizGastosMontaje } constructor TBizGastosMontaje.Create(aDataTable: TDADataTable); begin inherited Create(aDataTable); FContadorID := -1; end; function TBizGastosMontaje.EsNuevo: Boolean; begin Result := (ID < 0); end; procedure TBizGastosMontaje.OnNewRecord(Sender: TDADataTable); begin inherited; ID := FContadorID; // -1, -2, -3... FECHA_GASTO := Date; Dec(FContadorID); end; initialization RegisterDataTableRules(BIZ_CLIENT_GASTOS_MONTAJE, TBizGastosMontaje); RegisterDataTableRules(BIZ_CLIENT_MONTAJE_COMPLETO, TBizMontajeCompleto); finalization end.