From 04a9086456be7613af41aeb1528b8962057224cf Mon Sep 17 00:00:00 2001 From: david Date: Mon, 25 Jan 2010 11:48:44 +0000 Subject: [PATCH] Remesas de cliente git-svn-id: https://192.168.0.254/svn/Proyectos.Noviseda_FactuGES2/trunk@56 f33bb606-9f5c-448d-9c99-757f00063c96 --- .../Reports/uRptRemesasCliente_Server.dfm | 459 +++++++++++++----- .../Reports/uRptRemesasCliente_Server.pas | 68 ++- .../Servidor/srvRemesasCliente_Impl.pas | 27 +- 3 files changed, 404 insertions(+), 150 deletions(-) diff --git a/Source/Modulos/Remesas de cliente/Reports/uRptRemesasCliente_Server.dfm b/Source/Modulos/Remesas de cliente/Reports/uRptRemesasCliente_Server.dfm index 8f55673..41fac74 100644 --- a/Source/Modulos/Remesas de cliente/Reports/uRptRemesasCliente_Server.dfm +++ b/Source/Modulos/Remesas de cliente/Reports/uRptRemesasCliente_Server.dfm @@ -16,38 +16,263 @@ object RptRemesasCliente: TRptRemesasCliente Left = 344 Top = 72 end - object tbl_Cabecera: TDACDSDataTable + object tbl_Cabecera: TDAMemDataTable RemoteUpdatesOptions = [] - Fields = <> - Params = <> + Fields = < + item + Name = 'ID' + DataType = datInteger + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + end + item + Name = 'FECHA_REMESA' + DataType = datDateTime + end + item + Name = 'IMPORTE_TOTAL' + DataType = datFloat + end + item + Name = 'TITULAR' + DataType = datString + Size = 255 + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + end + item + Name = 'DC' + DataType = datString + Size = 15 + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + end + item + Name = 'NIF_CIF_EMPRESA' + DataType = datString + Size = 15 + end + item + Name = 'RAZON_SOCIAL' + DataType = datString + Size = 255 + end + item + Name = 'CALLE_EMPRESA' + DataType = datString + Size = 255 + end + item + Name = 'POBLACION_EMPRESA' + DataType = datString + Size = 255 + end + item + Name = 'PROVINCIA_EMPRESA' + DataType = datString + Size = 255 + end + item + Name = 'CODIGO_POSTAL_EMPRESA' + DataType = datString + Size = 10 + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + end + item + Name = 'FAX' + DataType = datString + Size = 25 + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + end + item + Name = 'REGISTRO_MERCANTIL' + DataType = datString + Size = 255 + end + item + Name = 'LOGOTIPO' + DataType = datBlob + end> + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> MasterMappingMode = mmDataRequest LogChanges = False StreamingOptions = [soDisableEventsWhileStreaming] RemoteFetchEnabled = False - DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] - MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LocalSchema = schReport + LocalDataStreamer = Bin2DataStreamer + LogicalName = 'Informe_Cabecera' IndexDefs = <> Left = 264 Top = 128 end - object tbl_Detalles: TDACDSDataTable + object tbl_Detalles: TDAMemDataTable RemoteUpdatesOptions = [] - Fields = <> - Params = <> + Fields = < + item + Name = 'ID' + DataType = datInteger + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + end + item + Name = 'SITUACION' + DataType = datString + Size = 9 + end + item + Name = 'ID_FACTURA' + DataType = datInteger + end + item + Name = 'ID_REMESA' + DataType = datInteger + end + item + Name = 'REFERENCIA_REMESA' + DataType = datString + Size = 255 + end + item + Name = 'FECHA_VENCIMIENTO' + DataType = datDateTime + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + end + item + Name = 'OBSERVACIONES' + DataType = datString + Size = 255 + end + item + Name = 'IMPORTE' + DataType = datCurrency + end + item + Name = 'OTROS_GASTOS' + DataType = datCurrency + end + item + Name = 'IMPORTE_TOTAL' + DataType = datCurrency + end + item + Name = 'FECHA_FACTURA' + DataType = datDateTime + end + item + Name = 'FORMA_PAGO_FACTURA' + DataType = datString + Size = 255 + end + item + Name = 'IMPORTE_FACTURA' + DataType = datCurrency + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + end + item + Name = 'NOMBRE_CLIENTE' + DataType = datString + Size = 255 + end + item + Name = 'NIF_CIF_CLIENTE' + DataType = datString + Size = 15 + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 254 + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 254 + end + item + Name = 'DC' + DataType = datString + Size = 254 + end + item + Name = 'CUENTA' + DataType = datString + Size = 254 + end> + Params = < + item + Name = 'ID_REMESA' + DataType = datInteger + Value = '1' + ParamType = daptInput + end> MasterMappingMode = mmDataRequest LogChanges = False StreamingOptions = [soDisableEventsWhileStreaming] RemoteFetchEnabled = False - DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] - MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LocalSchema = schReport + LocalDataStreamer = Bin2DataStreamer + LogicalName = 'Informe_Detalles' IndexDefs = <> Left = 344 Top = 128 end - object DABINAdapter: TDABINAdapter - Left = 48 - Top = 80 - end object frxRichObject1: TfrxRichObject Left = 48 Top = 296 @@ -331,7 +556,7 @@ object RptRemesasCliente: TRptRemesasCliente item Name = 'ID_REMESA' DataType = datInteger - Value = '' + Value = '1' ParamType = daptInput end> Statements = < @@ -349,10 +574,12 @@ object RptRemesasCliente: TRptRemesasCliente 'ECHA_FACTURA,'#10' V_RECIBOS_CLIENTE.FORMA_PAGO_FACTURA,'#10' V_RE' + 'CIBOS_CLIENTE.IMPORTE_FACTURA,'#10' V_RECIBOS_CLIENTE.ID_EMPRESA,' + #10' V_RECIBOS_CLIENTE.NOMBRE_CLIENTE,'#10' V_RECIBOS_CLIENTE.NIF' + - '_CIF_CLIENTE,'#10' V_RECIBOS_CLIENTE.ENTIDAD_CLIENTE,'#10' V_RECIB' + - 'OS_CLIENTE.SUCURSAL_CLIENTE,'#10' V_RECIBOS_CLIENTE.DC_CLIENTE,'#10' ' + - ' V_RECIBOS_CLIENTE.CUENTA_CLIENTE'#10#10#10'FROM V_RECIBOS_CLIENTE'#10'WHE' + - 'RE ID_REMESA = :ID_REMESA'#10'ORDER BY FECHA_VENCIMIENTO' + '_CIF_CLIENTE,'#10' V_RECIBOS_CLIENTE.POBLACION_CLIENTE,'#10' V_REC' + + 'IBOS_CLIENTE.CODIGO_POSTAL_CLIENTE,'#10' substr(DATOS_BANCARIOS, ' + + '1,4) as ENTIDAD,'#10' substr(DATOS_BANCARIOS, 6,9) as SUCURSAL,'#10' ' + + ' substr(DATOS_BANCARIOS, 11,13) as DC,'#10' substr(DATOS_BANCAR' + + 'IOS, 14,23) as CUENTA'#10#10#10#10'FROM V_RECIBOS_CLIENTE'#10'WHERE ID_REMESA ' + + '= :ID_REMESA'#10'ORDER BY REFERENCIA, FECHA_VENCIMIENTO'#10 StatementType = stSQL ColumnMappings = < item @@ -365,7 +592,8 @@ object RptRemesasCliente: TRptRemesasCliente end item DatasetField = 'SITUACION' - TableField = 'SITUACION' + TableField = '' + SQLOrigin = 'SITUACION' end item DatasetField = 'ID_FACTURA' @@ -377,7 +605,8 @@ object RptRemesasCliente: TRptRemesasCliente end item DatasetField = 'REFERENCIA_REMESA' - TableField = 'REFERENCIA_REMESA' + TableField = '' + SQLOrigin = 'REFERENCIA_REMESA' end item DatasetField = 'FECHA_VENCIMIENTO' @@ -395,53 +624,74 @@ object RptRemesasCliente: TRptRemesasCliente DatasetField = 'IMPORTE' TableField = 'IMPORTE' end - item - DatasetField = 'FECHA_FACTURA' - TableField = 'FECHA_FACTURA' - end - item - DatasetField = 'FORMA_PAGO_FACTURA' - TableField = 'FORMA_PAGO_FACTURA' - end - item - DatasetField = 'IMPORTE_FACTURA' - TableField = 'IMPORTE_FACTURA' - end - item - DatasetField = 'ID_EMPRESA' - TableField = 'ID_EMPRESA' - end - item - DatasetField = 'NOMBRE_CLIENTE' - TableField = 'NOMBRE_CLIENTE' - end - item - DatasetField = 'NIF_CIF_CLIENTE' - TableField = 'NIF_CIF_CLIENTE' - end - item - DatasetField = 'ENTIDAD_CLIENTE' - TableField = 'ENTIDAD_CLIENTE' - end - item - DatasetField = 'SUCURSAL_CLIENTE' - TableField = 'SUCURSAL_CLIENTE' - end - item - DatasetField = 'DC_CLIENTE' - TableField = 'DC_CLIENTE' - end - item - DatasetField = 'CUENTA_CLIENTE' - TableField = 'CUENTA_CLIENTE' - end item DatasetField = 'OTROS_GASTOS' TableField = 'OTROS_GASTOS' end item DatasetField = 'IMPORTE_TOTAL' - TableField = 'IMPORTE_TOTAL' + TableField = '' + SQLOrigin = 'IMPORTE_TOTAL' + end + item + DatasetField = 'FECHA_FACTURA' + TableField = '' + SQLOrigin = 'FECHA_FACTURA' + end + item + DatasetField = 'FORMA_PAGO_FACTURA' + TableField = '' + SQLOrigin = 'FORMA_PAGO_FACTURA' + end + item + DatasetField = 'IMPORTE_FACTURA' + TableField = '' + SQLOrigin = 'IMPORTE_FACTURA' + end + item + DatasetField = 'ID_EMPRESA' + TableField = '' + SQLOrigin = 'ID_EMPRESA' + end + item + DatasetField = 'NOMBRE_CLIENTE' + TableField = '' + SQLOrigin = 'NOMBRE_CLIENTE' + end + item + DatasetField = 'NIF_CIF_CLIENTE' + TableField = '' + SQLOrigin = 'NIF_CIF_CLIENTE' + end + item + DatasetField = 'ENTIDAD' + TableField = '' + SQLOrigin = 'ENTIDAD' + end + item + DatasetField = 'SUCURSAL' + TableField = '' + SQLOrigin = 'SUCURSAL' + end + item + DatasetField = 'DC' + TableField = '' + SQLOrigin = 'DC' + end + item + DatasetField = 'CUENTA' + TableField = '' + SQLOrigin = 'CUENTA' + end + item + DatasetField = 'POBLACION_CLIENTE' + TableField = '' + SQLOrigin = 'POBLACION_CLIENTE' + end + item + DatasetField = 'CODIGO_POSTAL_CLIENTE' + TableField = '' + SQLOrigin = 'CODIGO_POSTAL_CLIENTE' end> end> Name = 'Informe_Detalles' @@ -489,15 +739,15 @@ object RptRemesasCliente: TRptRemesasCliente end item Name = 'IMPORTE' - DataType = datFloat + DataType = datCurrency end item Name = 'OTROS_GASTOS' - DataType = datFloat + DataType = datCurrency end item Name = 'IMPORTE_TOTAL' - DataType = datFloat + DataType = datCurrency end item Name = 'FECHA_FACTURA' @@ -510,7 +760,7 @@ object RptRemesasCliente: TRptRemesasCliente end item Name = 'IMPORTE_FACTURA' - DataType = datFloat + DataType = datCurrency end item Name = 'ID_EMPRESA' @@ -527,24 +777,34 @@ object RptRemesasCliente: TRptRemesasCliente Size = 15 end item - Name = 'ENTIDAD_CLIENTE' + Name = 'POBLACION_CLIENTE' DataType = datString - Size = 15 + Size = 255 end item - Name = 'SUCURSAL_CLIENTE' + Name = 'CODIGO_POSTAL_CLIENTE' DataType = datString - Size = 15 + Size = 10 end item - Name = 'DC_CLIENTE' + Name = 'ENTIDAD' DataType = datString - Size = 15 + Size = 254 end item - Name = 'CUENTA_CLIENTE' + Name = 'SUCURSAL' DataType = datString - Size = 15 + Size = 254 + end + item + Name = 'DC' + DataType = datString + Size = 254 + end + item + Name = 'CUENTA' + DataType = datString + Size = 254 end> end> JoinDataTables = <> @@ -562,7 +822,7 @@ object RptRemesasCliente: TRptRemesasCliente Top = 158 end object frxReport: TfrxReport - Version = '4.3' + Version = '4.8.11' DotMatrixReport = False EngineOptions.DoublePass = True IniFile = '\Software\Fast Reports' @@ -572,54 +832,15 @@ object RptRemesasCliente: TRptRemesasCliente PrintOptions.Printer = 'Default' PrintOptions.PrintOnSheet = 0 ReportOptions.CreateDate = 37871.995398692100000000 - ReportOptions.LastChange = 39258.760263842600000000 + ReportOptions.LastChange = 40199.771052685190000000 ReportOptions.VersionBuild = '1' ReportOptions.VersionMajor = '12' ReportOptions.VersionMinor = '13' ReportOptions.VersionRelease = '1' ScriptLanguage = 'PascalScript' - ScriptText.Strings = ( - 'procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);' - 'begin' - - ' Engine.CurY := Engine.CurY + Engine.FreeSpace - ReportSummary1' + - '.Height - 1;' - 'end;' - '' - 'procedure DatosEmpresaOnBeforePrint(Sender: TfrxComponent);' - 'var' - ' Cadena: String;' - 'begin' - ' DatosEmpresa.Lines.Clear;' - ' DatosEmpresa.Lines.Add();' - ' DatosEmpresa.Lines.Add();' - '' - ' Cadena := '#39#39';' - ' if ( <> '#39#39') then' - ' Cadena := '#39'TLF: '#39' + ;' - ' if ( <> '#39#39') then' - ' Cadena := Cadena + '#39' FAX: '#39' + ;' - ' DatosEmpresa.Lines.Add(Cadena);' - '' - ' Cadena := '#39#39';' - ' if ( <> '#39#39') then' - ' Cadena := ;' - ' if ( <> '#39#39') then' - - ' Cadena := Cadena + '#39' '#39' + ;' - ' if ( <> '#39#39') then' - - ' Cadena := Cadena + '#39' - '#39' + ;' - ' DatosEmpresa.Lines.Add(Cadena);' - 'end;' - '' - 'begin' - '' - 'end.') ShowProgress = False StoreInDFM = False + OnStartReport = 'frxReportOnStartReport' Left = 169 Top = 16 end @@ -627,6 +848,7 @@ object RptRemesasCliente: TRptRemesasCliente UserName = 'frxDBCabecera' CloseDataSource = False DataSource = DADataCabecera + BCDToCurrency = False Left = 264 Top = 16 end @@ -634,7 +856,12 @@ object RptRemesasCliente: TRptRemesasCliente UserName = 'frxDBDetalles' CloseDataSource = False DataSource = DADataDetalles + BCDToCurrency = False Left = 344 Top = 16 end + object Bin2DataStreamer: TDABin2DataStreamer + Left = 48 + Top = 96 + end end diff --git a/Source/Modulos/Remesas de cliente/Reports/uRptRemesasCliente_Server.pas b/Source/Modulos/Remesas de cliente/Reports/uRptRemesasCliente_Server.pas index 80facb9..12082a5 100644 --- a/Source/Modulos/Remesas de cliente/Reports/uRptRemesasCliente_Server.pas +++ b/Source/Modulos/Remesas de cliente/Reports/uRptRemesasCliente_Server.pas @@ -5,17 +5,16 @@ interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, frxClass, frxDBSet, uDAScriptingProvider, - uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient, + uDADataTable, uDAMemDataTable, DB, uDAClasses, frxChart, frxGradient, frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes, - uDAInterfaces, uDADataStreamer; + uDAInterfaces, uDADataStreamer, uDABin2DataStreamer, FactuGES_Intf, uROClient; type TRptRemesasCliente = class(TDataModule) DADataCabecera: TDADataSource; DADataDetalles: TDADataSource; - tbl_Cabecera: TDACDSDataTable; - tbl_Detalles: TDACDSDataTable; - DABINAdapter: TDABINAdapter; + tbl_Cabecera: TDAMemDataTable; + tbl_Detalles: TDAMemDataTable; frxRichObject1: TfrxRichObject; frxBarCodeObject1: TfrxBarCodeObject; frxOLEObject1: TfrxOLEObject; @@ -26,15 +25,18 @@ type frxDBCabecera: TfrxDBDataset; frxDBDetalles: TfrxDBDataset; frxReport: TfrxReport; + Bin2DataStreamer: TDABin2DataStreamer; schReport: TDASchema; DataDictionary: TDADataDictionary; procedure DataModuleCreate(Sender: TObject); procedure DataModuleDestroy(Sender: TObject); private FConnection: IDAConnection; - procedure GenerarRemesa(const ID : Integer); overload; + procedure _GenerarRemesa(const ID : Integer); + public - function GenerarRemesa(const ID : String): Binary; overload; + function GenerarRemesa(const ListaID : TIntegerArray): Binary; + end; implementation @@ -42,7 +44,7 @@ implementation {$R *.dfm} uses - uDataModuleServer; + uSistemaFunc, uDataModuleServer; const rptInforme = 'InfRemesaCliente.fr3'; @@ -64,31 +66,22 @@ begin frxDBCabecera.DataSource := DADataCabecera; frxDBCabecera.CloseDataSource := False; - frxDBCompensados.DataSource := DADataCompensados; - frxDBCompensados.CloseDataSource := False; + frxDBDetalles.DataSource := DADataDetalles; + frxDBDetalles.CloseDataSource := False; end; -function TRptRemesasCliente.GenerarRemesa(const ID: String): Binary; +function TRptRemesasCliente.GenerarRemesa(const ListaID: TIntegerArray): Binary; var - ID_Remesas: TStringList; i: Integer; begin Result := Binary.Create; - FConnection.BeginTransaction; - try - ID_Remesas := TStringList.Create; - ID_Remesas.CommaText := ID; - //Vamos generando todos y cada uno de los albaranes recibidos - for i := 0 to ID_Remesas.Count - 1 do - GenerarRemesa(StrToInt(ID_Remesas.Strings[i])); - + for i := 0 to ListaID.Count - 1 do + _GenerarRemesa(ListaID.Items[i]); frxReport.PreviewPages.SaveToStream(Result); - finally - FConnection.RollbackTransaction; end; end; @@ -98,13 +91,35 @@ begin tbl_Detalles.Active := False; end; -procedure TRptRemesasCliente.GenerarRemesa(const ID: Integer); +procedure TRptRemesasCliente._GenerarRemesa(const ID: Integer); var - AStream: TMemoryStream; - dsMaster: IDADataset; - dsDetail: IDADataset; AInforme: Variant; + begin + FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO" + try + tbl_Cabecera.Active := False; + tbl_Detalles.Active := False; + + tbl_Cabecera.ParamByName('ID').AsInteger := ID; + tbl_Detalles.ParamByName('ID_REMESA').AsInteger := ID; + + tbl_Cabecera.Active := True; + tbl_Detalles.Active := True; + + AInforme := DarRutaFichero(DarRutaInformes, rptInforme, tbl_Cabecera.FieldByName('ID_EMPRESA').AsString); + if VarIsNull(AInforme) then + raise Exception.Create (('Error Servidor: _GenerarRecibo, no encuentra informe ' + rptInforme)); + + frxReport.LoadFromFile(AInforme, True); + frxReport.PrepareReport(False); + finally + FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO" + end; + + + +{ AStream := TMemoryStream.Create; try @@ -131,6 +146,7 @@ begin dsMaster := Nil; dsDetail := Nil; end; +} end; end. diff --git a/Source/Modulos/Remesas de cliente/Servidor/srvRemesasCliente_Impl.pas b/Source/Modulos/Remesas de cliente/Servidor/srvRemesasCliente_Impl.pas index ae32061..7a288ca 100644 --- a/Source/Modulos/Remesas de cliente/Servidor/srvRemesasCliente_Impl.pas +++ b/Source/Modulos/Remesas de cliente/Servidor/srvRemesasCliente_Impl.pas @@ -29,8 +29,11 @@ type procedure DARemoteServiceCreate(Sender: TObject); procedure DARemoteServiceBeforeGetDatasetData(const Dataset: IDADataset; const IncludeSchema: Boolean; const MaxRecords: Integer); - procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; - var aConnectionName: string); + procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; var aConnectionName: string); + + protected + function GenerarInforme(const ListaID: TIntegerArray): Binary; + end; implementation @@ -39,9 +42,7 @@ implementation uses {Generated:} FactuGES_Invk, uDataModuleServer, uDatabaseUtils, schRemesasClienteClient_Intf, uRestriccionesUsuarioUtils, - uBizRemesasClienteServer, -// uRptRemesasCliente_Server, - Dialogs; + uBizRemesasClienteServer, uRptRemesasCliente_Server, Dialogs; procedure Create_srvRemesasCliente(out anInstance : IUnknown); begin @@ -54,15 +55,13 @@ procedure TsrvRemesasCliente.DARemoteServiceBeforeGetDatasetData( const Dataset: IDADataset; const IncludeSchema: Boolean; const MaxRecords: Integer); begin -{ if DataSet.Name = nme_RemesasCliente then begin { Aquí se asegura que el usuario sólo accede a los RemesasCliente de las empresas a las que tiene permiso para acceder filtrando DataSet por ID_EMPRESA. } -{ FiltrarAccesoUsuario(Session, Connection, schRemesasCliente, DataSet, fld_RemesasClienteID_EMPRESA); + FiltrarAccesoUsuario(Session, Connection, schRemesasCliente, DataSet, fld_RemesasClienteID_EMPRESA); end; -} end; procedure TsrvRemesasCliente.DARemoteServiceCreate(Sender: TObject); @@ -77,6 +76,18 @@ begin ConnectionName := dmServer.ConnectionName; end; +function TsrvRemesasCliente.GenerarInforme(const ListaID: TIntegerArray): Binary; +var + AReportGenerator : TRptRemesasCliente; +begin + AReportGenerator := TRptRemesasCliente.Create(nil); + try + Result := AReportGenerator.GenerarRemesa(ListaID); + finally + FreeAndNIL(AReportGenerator); + end; +end; + initialization TROClassFactory.Create('srvRemesasCliente', Create_srvRemesasCliente, TsrvRemesasCliente_Invoker);