unit uDataModulePresupuestosCliente; interface uses DB, Classes, SysUtils, uDADesigntimeCall, uRORemoteService, uROClient, uROBinMessage, uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, uDADataTable, uDABINAdapter, uROTypes, uIDataModulePresupuestosCliente, uBizPresupuestosCliente, uBizDetallesPresupuestoCliente, uIDataModulePresupuestosClienteReport, uDataModuleBase, uDAInterfaces, uRODynamicRequest, uDADataStreamer, uDARemoteDataAdapter, uDABin2DataStreamer, uDAMemDataTable; type TDataModulePresupuestosCliente = class(TDataModuleBase, IDataModulePresupuestosCliente, IDataModulePresupuestosClienteReport) RORemoteService: TRORemoteService; Bin2DataStreamer: TDABin2DataStreamer; rda_PresupuestosCliente: TDARemoteDataAdapter; tbl_PresupuestosCliente: TDAMemDataTable; ds_PresupuestosCliente: TDADataSource; tbl_PresupuestosCliente_Detalles: TDAMemDataTable; ds_PresupuestosCliente_Detalles: TDADataSource; procedure DAClientDataModuleCreate(Sender: TObject); private function _GetDetalles : IBizDetallesPresupuestoCliente; protected procedure AsignarClaseNegocio(APresupuesto: TDADataTable); virtual; public function GetItems : IBizPresupuestoCliente; virtual; function GetItem(const ID : Integer) : IBizPresupuestoCliente; function NewItem : IBizPresupuestoCliente; // Report function GetRptPresupuestos(const AListaID: String): Binary; function GetRptWordPresupuesto(const AID: Integer): Binary; function GetRptWordCertificadoTrabajos(const AID: Integer): Binary; end; implementation {$R *.DFM} uses cxControls, FactuGES_Intf, uDataModuleConexion, Dialogs, uDataTableUtils, schPresupuestosClienteClient_Intf, uBizContactos; { TdmPresupuestosCliente } procedure TDataModulePresupuestosCliente.AsignarClaseNegocio(APresupuesto: TDADataTable); begin APresupuesto.BusinessRulesID := BIZ_CLIENT_PRESUPUESTO_CLIENTE; end; procedure TDataModulePresupuestosCliente.DAClientDataModuleCreate(Sender: TObject); begin RORemoteService.Channel := dmConexion.Channel; RORemoteService.Message := dmConexion.Message; end; function TDataModulePresupuestosCliente.GetRptPresupuestos(const AListaID: String): Binary; begin Result := (RORemoteService as IsrvPresupuestosCliente).GenerateReport(AListaID) end; function TDataModulePresupuestosCliente.GetRptWordCertificadoTrabajos( const AID: Integer): Binary; begin Result := (RORemoteService as IsrvPresupuestosCliente).GenerarCertificadoTrabajosEnWord(AID) end; function TDataModulePresupuestosCliente.GetRptWordPresupuesto( const AID: Integer): Binary; begin Result := (RORemoteService as IsrvPresupuestosCliente).GenerateReportEnWord(AID) end; function TDataModulePresupuestosCliente.NewItem: IBizPresupuestoCliente; begin Result := GetItem(ID_NULO) end; function TDataModulePresupuestosCliente._GetDetalles: IBizDetallesPresupuestoCliente; var ADetalles : TDAMemDataTable; begin ShowHourglassCursor; try ADetalles := CloneDataTable(tbl_PresupuestosCliente_Detalles); with ADetalles do begin BusinessRulesID := BIZ_CLIENT_DETALLES_PRESUPUESTO_CLIENTE; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; end; Result := (ADetalles as IBizDetallesPresupuestoCliente); finally HideHourglassCursor; end; end; function TDataModulePresupuestosCliente.GetItem(const ID: Integer): IBizPresupuestoCliente; var Condicion: TDAWhereExpression; begin ShowHourglassCursor; try Result := Self.GetItems; with Result.DataTable.DynamicWhere do begin // (ID = :ID) Condicion := NewBinaryExpression(NewField('', fld_PresupuestosClienteID), NewConstant(ID, datInteger), dboEqual); if IsEmpty then Expression := Condicion else Expression := NewBinaryExpression(Expression, Condicion, dboAnd); end; finally HideHourglassCursor; end; end; function TDataModulePresupuestosCliente.GetItems: IBizPresupuestoCliente; var APresupuesto: TDAMemDataTable; begin ShowHourglassCursor; try APresupuesto := CloneDataTable(tbl_PresupuestosCliente); AsignarClaseNegocio(APresupuesto); // EL CAMPO REFERENCIA TIENEN QUE SER AUTOREFRESH!!!!! APresupuesto.FieldByName(fld_PresupuestosClienteREFERENCIA).ServerAutoRefresh := TRUE; with TBizPresupuestoCliente(APresupuesto.BusinessEventsObj) do Detalles := _GetDetalles; Result := (APresupuesto as IBizPresupuestoCliente); finally HideHourglassCursor; end; end; end.