unit srvAlbaranesCliente_Impl; {----------------------------------------------------------------------------} { This unit was automatically generated by the RemObjects SDK after reading } { the RODL file associated with this project . } { } { This is where you are supposed to code the implementation of your objects. } {----------------------------------------------------------------------------} interface uses {vcl:} Classes, SysUtils, {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, {Ancestor Implementation:} DARemoteService_Impl, {Used RODLs:} DataAbstract_Intf, {Generated:} FactuGES_Intf, uDAClasses, uDAScriptingProvider, uDABusinessProcessor, uDADataTable, uDAInterfaces, frxClass, DB, frxDBSet, uDACDSDataTable, uDABINAdapter; type { TsrvAlbaranesCliente } TsrvAlbaranesCliente = class(TDARemoteService, IsrvAlbaranesCliente) bpAlbaranes: TDABusinessProcessor; frxDBDetalles: TfrxDBDataset; frxDBCabecera: TfrxDBDataset; DADataCabecera: TDADataSource; DADataDetalles: TDADataSource; tbl_AlbaranPago: TDACDSDataTable; tbl_DetallesAlbaranPago: TDACDSDataTable; DABINAdapter: TDABINAdapter; frxReport1: TfrxReport; schAlbaranesCliente: TDASchema; private protected function GetNextAutoinc: Integer; function ExisteAlbaranDePresupuesto(const CodigoPresupuesto: Integer; out CodigoAlbaran: Integer): Boolean; function GenerateReport(const Codigo: Integer): Binary; function DarNuevaReferencia: String; function PuedoEliminarAlbaran(const CodigoAlbaran: Integer): Boolean; function DarSumaImportes(const FechaIni: DateTime; const FechaFin: DateTime): TstImportes; end; implementation {$R *.dfm} uses {Generated:} FactuGES_Invk, uDataModuleServer, Forms, Dialogs, schAlbaranesClienteClient_Intf; procedure Create_srvAlbaranesCliente(out anInstance : IUnknown); begin anInstance := TsrvAlbaranesCliente.Create(NIL); end; { TsrvAlbaranesCliente } function TsrvAlbaranesCliente.DarSumaImportes(const FechaIni, FechaFin: DateTime): TstImportes; var dsSuma: IDADataset; AImportes : TstImportes; begin Connection.BeginTransaction; AImportes := TstImportes.Create; dsSuma := schAlbaranesCliente.NewDataset(Connection, nme_DarSumaImportes, ['FECHAINI', 'FECHAFIN'], [FechaIni, FechaFin]); try dsSuma.Open; if dsSuma.RecordCount > 0 then with AImportes do begin BaseImponible := dsSuma.FieldByName(fld_DarSumaImportesBASEIMPONIBLE).AsCurrency; ImporteIVA := dsSuma.FieldByName(fld_DarSumaImportesIMPORTEIVA).AsCurrency; ImporteTotal := dsSuma.FieldByName(fld_DarSumaImportesIMPORTETOTAL).AsCurrency; end; Result := AImportes; finally dsSuma.Close; end; Connection.RollbackTransaction; end; function TsrvAlbaranesCliente.DarNuevaReferencia: String; var dsReferencia: IDADataset; begin dsReferencia := schAlbaranesCliente.NewDataset(Connection, 'DarReferenciaAlbaran'); dsReferencia.Active := True; Result := dsReferencia.FieldByName('REFERENCIA').AsString; end; function TsrvAlbaranesCliente.ExisteAlbaranDePresupuesto( const CodigoPresupuesto: Integer; out CodigoAlbaran: Integer): Boolean; var ADataSet : IDADataset; begin Result := False; ADataSet := schAlbaranesCliente.NewDataset(Connection, nme_AlbaranDePresupuesto); ADataSet.ParamByName('CODIGOPRESUPUESTO').AsInteger := CodigoPresupuesto; ADataSet.Open; if ADataSet.RecordCount > 0 then begin CodigoAlbaran := ADataSet.FieldByName(fld_AlbaranDePresupuestoCODIGO).AsInteger; Result := True; end; ADataSet.Close; end; function TsrvAlbaranesCliente.GenerateReport(const Codigo: Integer): Binary; var dsMaster: IDADataset; dsDetail: IDADataset; AStream: TMemoryStream; begin AStream := TMemoryStream.Create; Result := Binary.Create; try dsMaster := schAlbaranesCliente.NewDataset(Connection, 'InformeCabeceraAlbaranPago', ['CODIGO'], [Codigo]); dsDetail := schAlbaranesCliente.NewDataset(Connection, 'InformeDetallesAlbaranPago', ['CODIGOALBARAN'], [Codigo]); AStream.Clear; ServiceAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); ServiceAdapter.ReadDataset(AStream, tbl_AlbaranPago, TRUE, '', TRUE, TRUE); AStream.Clear; ServiceAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1); ServiceAdapter.ReadDataset(AStream, tbl_DetallesAlbaranPago, TRUE, '', TRUE, TRUE); frxReport1.LoadFromFile(DarRutaInformes + 'InfAlbaran.fr3', True); frxReport1.PrepareReport; frxReport1.PreviewPages.SaveToStream(Result); finally AStream.Free; end; end; function TsrvAlbaranesCliente.GetNextAutoinc: Integer; begin Result := uDataModuleServer.GetNextAutoinc(Connection, 'GEN_ALBARANESCLIENTE'); end; function TsrvAlbaranesCliente.PuedoEliminarAlbaran( const CodigoAlbaran: Integer): Boolean; var dsAlbaran: IDASQLCommand; begin Result := True; Connection.BeginTransaction; try dsAlbaran := schAlbaranesCliente.NewCommand(Connection, 'Delete_AlbaranCliente', ['OLD_CODIGO'], [CodigoAlbaran]); except on E: Exception do Result := False; end; Connection.RollbackTransaction; end; initialization TROClassFactory.Create('srvAlbaranesCliente', Create_srvAlbaranesCliente, TsrvAlbaranesCliente_Invoker); finalization end.