diff --git a/Source/Informes/1/InformeListadoRecibosCliPendientes.fr3 b/Source/Informes/1/InformeListadoRecibosCliPendientes.fr3 index 3bae0054..08c555fa 100644 --- a/Source/Informes/1/InformeListadoRecibosCliPendientes.fr3 +++ b/Source/Informes/1/InformeListadoRecibosCliPendientes.fr3 @@ -1,41 +1,57 @@ - + - - + + - - - + + + - + - - + + - - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + + - - - + + + + + + + + + + + + + + + + + diff --git a/Source/Informes/1/InformeListadoRecibosCliPendientesDesglosado.fr3 b/Source/Informes/1/InformeListadoRecibosCliPendientesDesglosado.fr3 index 4b9971af..e3de14c6 100644 --- a/Source/Informes/1/InformeListadoRecibosCliPendientesDesglosado.fr3 +++ b/Source/Informes/1/InformeListadoRecibosCliPendientesDesglosado.fr3 @@ -1,45 +1,61 @@ - + - - + + - - - + + + - + - - + + - - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + + - - - + + + + - - + + + + - + + + + + + + + + + + + diff --git a/Source/Informes/1/InformeListadoRecibosCliente.fr3 b/Source/Informes/1/InformeListadoRecibosCliente.fr3 index fc5cf8d0..73002c12 100644 --- a/Source/Informes/1/InformeListadoRecibosCliente.fr3 +++ b/Source/Informes/1/InformeListadoRecibosCliente.fr3 @@ -1,41 +1,54 @@ - + - - + + - - - + + + - + - - + + - + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - + + + + + + + + + + + + + + + + diff --git a/Source/Informes/1/InformeListadoRecibosClienteDesglosado.fr3 b/Source/Informes/1/InformeListadoRecibosClienteDesglosado.fr3 index 5ec873a0..c1cd568e 100644 --- a/Source/Informes/1/InformeListadoRecibosClienteDesglosado.fr3 +++ b/Source/Informes/1/InformeListadoRecibosClienteDesglosado.fr3 @@ -1,45 +1,58 @@ - + - - + + - - - + + + - + - - + + + - + - - - - - - + + + + + + - - - - - - - + + + + + + + - - - + + + - - - + + + + + + + + + + + + + + + - + diff --git a/Source/Informes/2/InformeListadoRecibosCliPendientes.fr3 b/Source/Informes/2/InformeListadoRecibosCliPendientes.fr3 index a0291386..40a3c1fb 100644 --- a/Source/Informes/2/InformeListadoRecibosCliPendientes.fr3 +++ b/Source/Informes/2/InformeListadoRecibosCliPendientes.fr3 @@ -1,41 +1,57 @@ - + - - + + - - - + + + - + - - + + - - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + + - - - + + + + + + + + + + + + + + + + + diff --git a/Source/Informes/2/InformeListadoRecibosCliPendientesDesglosado.fr3 b/Source/Informes/2/InformeListadoRecibosCliPendientesDesglosado.fr3 index 914df0d5..768bdbd1 100644 --- a/Source/Informes/2/InformeListadoRecibosCliPendientesDesglosado.fr3 +++ b/Source/Informes/2/InformeListadoRecibosCliPendientesDesglosado.fr3 @@ -1,45 +1,61 @@ - + - - + + - - - + + + - + - - + + - - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + + - - - + + + + - - + + + + - + + + + + + + + + + + + diff --git a/Source/Informes/2/InformeListadoRecibosCliente.fr3 b/Source/Informes/2/InformeListadoRecibosCliente.fr3 index 9e42288b..a9de0e78 100644 --- a/Source/Informes/2/InformeListadoRecibosCliente.fr3 +++ b/Source/Informes/2/InformeListadoRecibosCliente.fr3 @@ -1,41 +1,54 @@ - + - - + + - - - + + + - + - - + + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - - - + + + + + + + + + + + + + + + + diff --git a/Source/Informes/2/InformeListadoRecibosClienteDesglosado.fr3 b/Source/Informes/2/InformeListadoRecibosClienteDesglosado.fr3 index 36c47069..f6615c38 100644 --- a/Source/Informes/2/InformeListadoRecibosClienteDesglosado.fr3 +++ b/Source/Informes/2/InformeListadoRecibosClienteDesglosado.fr3 @@ -1,45 +1,58 @@ - + - - + + - - - + + + - + - - + + + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + - - - + + + - - - + + + + + + + + + + + + + + + - + diff --git a/Source/Modulos/Recibos de cliente/Reports/uRptRecibosCliente_Server.dfm b/Source/Modulos/Recibos de cliente/Reports/uRptRecibosCliente_Server.dfm index acf3308c..7576477d 100644 --- a/Source/Modulos/Recibos de cliente/Reports/uRptRecibosCliente_Server.dfm +++ b/Source/Modulos/Recibos de cliente/Reports/uRptRecibosCliente_Server.dfm @@ -2,7 +2,7 @@ object RptRecibosCliente: TRptRecibosCliente OldCreateOrder = True OnCreate = DataModuleCreate Height = 405 - Width = 654 + Width = 892 object DADataCabecera: TDADataSource DataSet = tbl_Cabecera.Dataset DataTable = tbl_Cabecera @@ -206,7 +206,7 @@ object RptRecibosCliente: TRptRecibosCliente StreamingOptions = [soDisableEventsWhileStreaming] RemoteFetchEnabled = False LocalSchema = schReport - LocalDataStreamer = DABINAdapter + LocalDataStreamer = Bin2DataStreamer DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] LogicalName = 'Informe_Cabecera' @@ -214,10 +214,6 @@ object RptRecibosCliente: TRptRecibosCliente Left = 264 Top = 128 end - object DABINAdapter: TDABINAdapter - Left = 48 - Top = 80 - end object frxRichObject1: TfrxRichObject Left = 48 Top = 296 @@ -283,9 +279,11 @@ object RptRecibosCliente: TRptRecibosCliente 'iento)'#10'when extract (month from fecha_vencimiento) = 12 then '#39'DI' + 'CIEMBRE - '#39' || extract (year from fecha_vencimiento)'#10'end as TITU' + 'LO,'#10'REFERENCIA, ID_CLIENTE, NOMBRE_CLIENTE, SITUACION, NIF_CIF_' + - 'CLIENTE, fecha_vencimiento, FECHA_EMISION,'#10'IMPORTE_TOTAL'#10#10'from V' + - '_recibos_cliente'#10'where {where}'#10'order by ANO, MES, FECHA_VENCIMIE' + - 'NTO, NOMBRE_CLIENTE'#10#10 + 'CLIENTE, fecha_vencimiento, FECHA_EMISION,'#10'IMPORTE_TOTAL,'#10'case'#10'w' + + 'hen strlen(DATOS_BANCARIOS) = 0 then '#39'Sin cuenta bancaria'#39#10'else ' + + 'DATOS_BANCARIOS'#10'end as DATOS_BANCARIOS'#10#10'from V_recibos_cliente'#10'w' + + 'here {where}'#10'order by ANO, MES, FECHA_VENCIMIENTO, NOMBRE_CLIENT' + + 'E'#10#10 StatementType = stSQL ColumnMappings = < item @@ -335,9 +333,13 @@ object RptRecibosCliente: TRptRecibosCliente item DatasetField = 'ANO' TableField = 'ANO' + end + item + DatasetField = 'DATOS_BANCARIOS' + TableField = 'DATOS_BANCARIOS' end> end> - Name = 'InformeListadoRecibos' + Name = 'InformeListadoRecibosPendientes' Fields = < item Name = 'ID_EMPRESA' @@ -391,6 +393,11 @@ object RptRecibosCliente: TRptRecibosCliente item Name = 'IMPORTE_TOTAL' DataType = datCurrency + end + item + Name = 'DATOS_BANCARIOS' + DataType = datString + Size = 255 end> end item @@ -853,6 +860,309 @@ object RptRecibosCliente: TRptRecibosCliente Name = 'LOGOTIPO' DataType = datBlob end> + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_recibos_cliente' + SQL = + 'select ID_EMPRESA,'#10'extract (year from fecha_vencimiento) as ANO,' + + #10'extract (month from fecha_vencimiento) as MES,'#10'case'#10'when extrac' + + 't (month from fecha_vencimiento) = 1 then '#39'ENERO - '#39' || extract ' + + '(year from fecha_vencimiento)'#10'when extract (month from fecha_ven' + + 'cimiento) = 2 then '#39'FEBRERO - '#39' || extract (year from fecha_venc' + + 'imiento)'#10'when extract (month from fecha_vencimiento) = 3 then '#39'M' + + 'ARZO - '#39' || extract (year from fecha_vencimiento)'#10'when extract (' + + 'month from fecha_vencimiento) = 4 then '#39'ABRIL - '#39' || extract (ye' + + 'ar from fecha_vencimiento)'#10'when extract (month from fecha_vencim' + + 'iento) = 5 then '#39'MAYO - '#39' || extract (year from fecha_vencimient' + + 'o)'#10'when extract (month from fecha_vencimiento) = 6 then '#39'JUNIO -' + + ' '#39' || extract (year from fecha_vencimiento)'#10'when extract (month ' + + 'from fecha_vencimiento) = 7 then '#39'JULIO - '#39' || extract (year fro' + + 'm fecha_vencimiento)'#10'when extract (month from fecha_vencimiento)' + + ' = 8 then '#39'AGOSTO - '#39' || extract (year from fecha_vencimiento)'#10'w' + + 'hen extract (month from fecha_vencimiento) = 9 then '#39'SEPTIEMBRE ' + + '- '#39' || extract (year from fecha_vencimiento)'#10'when extract (month' + + ' from fecha_vencimiento) = 10 then '#39'OCTUBRE - '#39' || extract (year' + + ' from fecha_vencimiento)'#10'when extract (month from fecha_vencimie' + + 'nto) = 11 then '#39'NOVIEMBRE - '#39' || extract (year from fecha_vencim' + + 'iento)'#10'when extract (month from fecha_vencimiento) = 12 then '#39'DI' + + 'CIEMBRE - '#39' || extract (year from fecha_vencimiento)'#10'end as TITU' + + 'LO,'#10'case'#10'when strlen(DATOS_BANCARIOS) = 0 then '#39'Sin cuenta banca' + + 'ria'#39#10'else DATOS_BANCARIOS'#10'end as DATOS_BANCARIOS,'#10'sum(IMPORTE_TO' + + 'TAL) as Importe_total'#10#10'from V_recibos_cliente'#10'group by 1,2,3,4,5' + + #10'order by 1,2,3,4,5'#10#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end + item + DatasetField = 'ANO' + TableField = 'ANO' + end + item + DatasetField = 'MES' + TableField = 'MES' + end + item + DatasetField = 'TITULO' + TableField = 'TITULO' + end + item + DatasetField = 'IMPORTE_TOTAL' + TableField = 'IMPORTE_TOTAL' + end + item + DatasetField = 'DATOS_BANCARIOS' + TableField = 'DATOS_BANCARIOS' + end> + end> + Name = 'InformeListadoRecibosPendientesResumen' + Fields = < + item + Name = 'ID_EMPRESA' + DataType = datInteger + end + item + Name = 'ANO' + DataType = datSmallInt + end + item + Name = 'MES' + DataType = datSmallInt + end + item + Name = 'TITULO' + DataType = datString + Size = 19 + end + item + Name = 'DATOS_BANCARIOS' + DataType = datString + Size = 255 + end + item + Name = 'IMPORTE_TOTAL' + DataType = datCurrency + end> + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_recibos_cliente' + SQL = + 'select ID_EMPRESA,'#10'extract (year from fecha_emision) as ANO,'#10'ext' + + 'ract (month from fecha_emision) as MES,'#10'case'#10'when extract (month' + + ' from fecha_emision) = 1 then '#39'ENERO - '#39' || extract (year from f' + + 'echa_emision)'#10'when extract (month from fecha_emision) = 2 then '#39 + + 'FEBRERO - '#39' || extract (year from fecha_emision)'#10'when extract (m' + + 'onth from fecha_emision) = 3 then '#39'MARZO - '#39' || extract (year fr' + + 'om fecha_emision)'#10'when extract (month from fecha_emision) = 4 th' + + 'en '#39'ABRIL - '#39' || extract (year from fecha_emision)'#10'when extract ' + + '(month from fecha_emision) = 5 then '#39'MAYO - '#39' || extract (year f' + + 'rom fecha_emision)'#10'when extract (month from fecha_emision) = 6 t' + + 'hen '#39'JUNIO - '#39' || extract (year from fecha_emision)'#10'when extract' + + ' (month from fecha_emision) = 7 then '#39'JULIO - '#39' || extract (year' + + ' from fecha_emision)'#10'when extract (month from fecha_emision) = 8' + + ' then '#39'AGOSTO - '#39' || extract (year from fecha_emision)'#10'when extr' + + 'act (month from fecha_emision) = 9 then '#39'SEPTIEMBRE - '#39' || extra' + + 'ct (year from fecha_emision)'#10'when extract (month from fecha_emis' + + 'ion) = 10 then '#39'OCTUBRE - '#39' || extract (year from fecha_emision)' + + #10'when extract (month from fecha_emision) = 11 then '#39'NOVIEMBRE - ' + + #39' || extract (year from fecha_emision)'#10'when extract (month from ' + + 'fecha_emision) = 12 then '#39'DICIEMBRE - '#39' || extract (year from fe' + + 'cha_emision)'#10'end as TITULO,'#10'REFERENCIA, ID_CLIENTE, NOMBRE_CLIE' + + 'NTE, SITUACION, NIF_CIF_CLIENTE, fecha_emision, FECHA_VENCIMIENT' + + 'O,'#10'IMPORTE_TOTAL'#10#10'from V_recibos_cliente'#10'where {where}'#10'order by ' + + 'ANO, MES, fecha_emision, NOMBRE_CLIENTE'#10#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end + item + DatasetField = 'ANO' + TableField = 'ANO' + end + item + DatasetField = 'MES' + TableField = 'MES' + end + item + DatasetField = 'TITULO' + TableField = 'TITULO' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'ID_CLIENTE' + TableField = 'ID_CLIENTE' + end + item + DatasetField = 'NOMBRE_CLIENTE' + TableField = 'NOMBRE_CLIENTE' + end + item + DatasetField = 'SITUACION' + TableField = 'SITUACION' + end + item + DatasetField = 'NIF_CIF_CLIENTE' + TableField = 'NIF_CIF_CLIENTE' + end + item + DatasetField = 'FECHA_EMISION' + TableField = 'FECHA_EMISION' + end + item + DatasetField = 'FECHA_VENCIMIENTO' + TableField = 'FECHA_VENCIMIENTO' + end + item + DatasetField = 'IMPORTE_TOTAL' + TableField = 'IMPORTE_TOTAL' + end> + end> + Name = 'InformeListadoRecibos' + Fields = < + item + Name = 'ID_EMPRESA' + DataType = datInteger + end + item + Name = 'ANO' + DataType = datSmallInt + end + item + Name = 'MES' + DataType = datSmallInt + end + item + Name = 'TITULO' + DataType = datString + Size = 19 + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + end + item + Name = 'ID_CLIENTE' + DataType = datInteger + end + item + Name = 'NOMBRE_CLIENTE' + DataType = datString + Size = 255 + end + item + Name = 'SITUACION' + DataType = datString + Size = 9 + end + item + Name = 'NIF_CIF_CLIENTE' + DataType = datString + Size = 15 + end + item + Name = 'FECHA_EMISION' + DataType = datDateTime + end + item + Name = 'FECHA_VENCIMIENTO' + DataType = datDateTime + end + item + Name = 'IMPORTE_TOTAL' + DataType = datCurrency + end> + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_recibos_cliente' + SQL = + 'select ID_EMPRESA,'#10'extract (year from fecha_emision) as ANO,'#10'ext' + + 'ract (month from fecha_emision) as MES,'#10'case'#10'when extract (month' + + ' from fecha_emision) = 1 then '#39'ENERO - '#39' || extract (year from f' + + 'echa_emision)'#10'when extract (month from fecha_emision) = 2 then '#39 + + 'FEBRERO - '#39' || extract (year from fecha_emision)'#10'when extract (m' + + 'onth from fecha_emision) = 3 then '#39'MARZO - '#39' || extract (year fr' + + 'om fecha_emision)'#10'when extract (month from fecha_emision) = 4 th' + + 'en '#39'ABRIL - '#39' || extract (year from fecha_emision)'#10'when extract ' + + '(month from fecha_emision) = 5 then '#39'MAYO - '#39' || extract (year f' + + 'rom fecha_emision)'#10'when extract (month from fecha_emision) = 6 t' + + 'hen '#39'JUNIO - '#39' || extract (year from fecha_emision)'#10'when extract' + + ' (month from fecha_emision) = 7 then '#39'JULIO - '#39' || extract (year' + + ' from fecha_emision)'#10'when extract (month from fecha_emision) = 8' + + ' then '#39'AGOSTO - '#39' || extract (year from fecha_emision)'#10'when extr' + + 'act (month from fecha_emision) = 9 then '#39'SEPTIEMBRE - '#39' || extra' + + 'ct (year from fecha_emision)'#10'when extract (month from fecha_emis' + + 'ion) = 10 then '#39'OCTUBRE - '#39' || extract (year from fecha_emision)' + + #10'when extract (month from fecha_emision) = 11 then '#39'NOVIEMBRE - ' + + #39' || extract (year from fecha_emision)'#10'when extract (month from ' + + 'fecha_emision) = 12 then '#39'DICIEMBRE - '#39' || extract (year from fe' + + 'cha_emision)'#10'end as TITULO,'#10'sum(IMPORTE_TOTAL) as importe_total'#10 + + #10'from V_recibos_cliente'#10'group by 1,2,3,4'#10'order by 1,2,3,4'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end + item + DatasetField = 'ANO' + TableField = 'ANO' + end + item + DatasetField = 'MES' + TableField = 'MES' + end + item + DatasetField = 'TITULO' + TableField = 'TITULO' + end + item + DatasetField = 'IMPORTE_TOTAL' + TableField = 'IMPORTE_TOTAL' + end> + end> + Name = 'InformeListadoRecibosResumen' + Fields = < + item + Name = 'ID_EMPRESA' + DataType = datInteger + end + item + Name = 'ANO' + DataType = datSmallInt + end + item + Name = 'MES' + DataType = datSmallInt + end + item + Name = 'TITULO' + DataType = datString + Size = 19 + end + item + Name = 'IMPORTE_TOTAL' + DataType = datCurrency + end> end> JoinDataTables = <> UnionDataTables = <> @@ -878,7 +1188,7 @@ object RptRecibosCliente: TRptRecibosCliente PrintOptions.Printer = 'Por defecto' PrintOptions.PrintOnSheet = 0 ReportOptions.CreateDate = 37800.807714351900000000 - ReportOptions.LastChange = 39741.852018379630000000 + ReportOptions.LastChange = 39840.717636527780000000 ScriptLanguage = 'PascalScript' ScriptText.Strings = ( 'procedure frxReportOnStartReport(Sender: TfrxComponent);' @@ -975,7 +1285,7 @@ object RptRecibosCliente: TRptRecibosCliente StreamingOptions = [soDisableEventsWhileStreaming] RemoteFetchEnabled = False LocalSchema = schReport - LocalDataStreamer = DABINAdapter + LocalDataStreamer = Bin2DataStreamer DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] LogicalName = 'Informe_Compensados' @@ -1040,7 +1350,7 @@ object RptRecibosCliente: TRptRecibosCliente StreamingOptions = [soDisableEventsWhileStreaming] RemoteFetchEnabled = False LocalSchema = schReport - LocalDataStreamer = DABINAdapter + LocalDataStreamer = Bin2DataStreamer DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] LogicalName = 'InformeListadoRecibos' @@ -1061,4 +1371,149 @@ object RptRecibosCliente: TRptRecibosCliente Left = 496 Top = 16 end + object Bin2DataStreamer: TDABin2DataStreamer + Left = 48 + Top = 88 + end + object frxDBInformeListadoRecibosResumen: TfrxDBDataset + UserName = 'frxDBInformeListadoRecibosResumen' + CloseDataSource = True + DataSource = DADSInformeListadoRecibosResumen + Left = 504 + Top = 192 + end + object DADSInformeListadoRecibosResumen: TDADataSource + DataSet = tbl_InformeListadoRecibosResumen.Dataset + DataTable = tbl_InformeListadoRecibosResumen + Left = 504 + Top = 248 + end + object tbl_InformeListadoRecibosResumen: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + LogChanges = False + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 504 + Top = 304 + end + object frxDBInformeListadoRecibosPendientes: TfrxDBDataset + UserName = 'frxDBInformeListadoRecibosPendientes' + CloseDataSource = True + DataSource = DADSInformeListadoRecibosPendientes + Left = 704 + Top = 16 + end + object DADSInformeListadoRecibosPendientes: TDADataSource + DataSet = tbl_InformeListadoRecibosPendientes.Dataset + DataTable = tbl_InformeListadoRecibosPendientes + Left = 704 + Top = 72 + end + object tbl_InformeListadoRecibosPendientes: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID_EMPRESA' + DataType = datInteger + end + item + Name = 'ANO' + DataType = datSmallInt + end + item + Name = 'MES' + DataType = datSmallInt + end + item + Name = 'TITULO' + DataType = datString + Size = 19 + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + end + item + Name = 'ID_CLIENTE' + DataType = datInteger + end + item + Name = 'NOMBRE_CLIENTE' + DataType = datString + Size = 255 + end + item + Name = 'SITUACION' + DataType = datString + Size = 9 + end + item + Name = 'NIF_CIF_CLIENTE' + DataType = datString + Size = 15 + end + item + Name = 'FECHA_VENCIMIENTO' + DataType = datDateTime + end + item + Name = 'FECHA_EMISION' + DataType = datDateTime + end + item + Name = 'IMPORTE_TOTAL' + DataType = datCurrency + end + item + Name = 'DATOS_BANCARIOS' + DataType = datString + Size = 255 + end> + Params = <> + LogChanges = False + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + LocalSchema = schReport + LocalDataStreamer = Bin2DataStreamer + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'InformeListadoRecibosPendientes' + IndexDefs = <> + Left = 704 + Top = 128 + end + object frxDBInformeListadoRecibosPendResumen: TfrxDBDataset + UserName = 'frxDBInformeListadoRecibosPendResumen' + CloseDataSource = True + DataSource = DADSInformeListadoRecibosPendResumen + Left = 704 + Top = 192 + end + object DADSInformeListadoRecibosPendResumen: TDADataSource + DataSet = tbl_InformeListadoRecibosPendResumen.Dataset + DataTable = tbl_InformeListadoRecibosPendResumen + Left = 704 + Top = 248 + end + object tbl_InformeListadoRecibosPendResumen: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + LogChanges = False + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 704 + Top = 304 + end end diff --git a/Source/Modulos/Recibos de cliente/Reports/uRptRecibosCliente_Server.pas b/Source/Modulos/Recibos de cliente/Reports/uRptRecibosCliente_Server.pas index 42bfbf95..b15e1867 100644 --- a/Source/Modulos/Recibos de cliente/Reports/uRptRecibosCliente_Server.pas +++ b/Source/Modulos/Recibos de cliente/Reports/uRptRecibosCliente_Server.pas @@ -7,13 +7,12 @@ uses Dialogs, frxClass, frxDBSet, uDAScriptingProvider, uDADataTable, uDAMemDataTable, DB, uDAClasses, frxChart, frxGradient, frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes, - uDAInterfaces, uDADataStreamer, FactuGES_Intf; + uDAInterfaces, uDADataStreamer, FactuGES_Intf, uDABin2DataStreamer; type TRptRecibosCliente = class(TDataModule) DADataCabecera: TDADataSource; tbl_Cabecera: TDAMemDataTable; - DABINAdapter: TDABINAdapter; frxRichObject1: TfrxRichObject; frxBarCodeObject1: TfrxBarCodeObject; frxOLEObject1: TfrxOLEObject; @@ -29,13 +28,34 @@ type tbl_InformeListadoRecibos: TDAMemDataTable; DADSInformeListadoRecibos: TDADataSource; frxDBInformeListadoRecibos: TfrxDBDataset; + Bin2DataStreamer: TDABin2DataStreamer; + frxDBInformeListadoRecibosResumen: TfrxDBDataset; + DADSInformeListadoRecibosResumen: TDADataSource; + tbl_InformeListadoRecibosResumen: TDAMemDataTable; + frxDBInformeListadoRecibosPendientes: TfrxDBDataset; + DADSInformeListadoRecibosPendientes: TDADataSource; + tbl_InformeListadoRecibosPendientes: TDAMemDataTable; + frxDBInformeListadoRecibosPendResumen: TfrxDBDataset; + DADSInformeListadoRecibosPendResumen: TDADataSource; + tbl_InformeListadoRecibosPendResumen: TDAMemDataTable; schReport: TDASchema; DataDictionary: TDADataDictionary; procedure DataModuleCreate(Sender: TObject); private FConnection: IDAConnection; + FIdEmpresa: Integer; + FFechaInicio: Variant; + FFechaFin: Variant; + FFechaVenInicio: Variant; + FFechaVenFin: Variant; + FListaIDClientes: TIntegerArray; + FImporteMinimo: Currency; + procedure _GenerarRecibo(const ID : Integer); - function _GenerarInforme(const TipoInforme: String; const IdEmpresa: Integer; const FechaInicio, FechaFin: Variant; const FechaVenInicio: Variant; FechaVenFin: Variant; const ListaIDClientes: TIntegerArray; const ImporteMinimo: Currency): Binary; + + procedure PrepararTablaInforme(ATabla: TDAMemDataTable); + procedure PrepararTablaResumenInforme(ATabla: IDADataset); + function _GenerarInforme(const TipoInforme: String): Binary; public function GenerarRecibo(const ListaID : TIntegerArray): Binary; @@ -49,7 +69,7 @@ implementation {$R *.dfm} uses - uSistemaFunc, uDataModuleServer, schRecibosClienteClient_Intf; + uSistemaFunc, StrUtils, uDataModuleServer, schRecibosClienteClient_Intf; const rptInforme = 'InfReciboCliente.fr3'; @@ -61,6 +81,9 @@ const { Dataset names for schReport } ds_InformeCabecera = 'Informe_Cabecera'; ds_InformeCompensados = 'Informe_Compensados'; + ds_InformeListadoRecibosResumen = 'InformeListadoRecibosResumen'; + ds_InformeListadoRecibosPendientesResumen = 'InformeListadoRecibosPendientesResumen'; + { TRptReciboCliente } @@ -89,6 +112,137 @@ begin end; end; +procedure TRptRecibosCliente.PrepararTablaInforme(ATabla: TDAMemDataTable); +var + Condicion: TDAWhereExpression; + i: Integer; + +begin + // Filtrar el informe por empresa + with ATabla.DynamicWhere do + begin + // (ID_EMPRESA >= ID) + Condicion := NewBinaryExpression(NewField('', fld_RecibosClienteID_EMPRESA), NewConstant(FIdEmpresa, datInteger), dboEqual); + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; + + // Filtrar el informe por fechas + if not VarIsNull(FFechaInicio) + and not VarIsNull(FFechaFin) then + begin + with ATabla.DynamicWhere do + begin + // (FECHA_INICIO between FECHA_FIN) + Condicion := NewBinaryExpression(NewField('', fld_RecibosClienteFECHA_EMISION), NewConstant(FFechaInicio, datDateTime), dboGreaterOrEqual); + Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_RecibosClienteFECHA_EMISION), NewConstant(FFechaFin, datDateTime), dboLessOrEqual), Condicion, dboAnd); + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; + end; + + // Filtrar el informe por fechas de vencimiento + if not VarIsNull(FFechaVenInicio) + and not VarIsNull(FFechaVenFin) then + begin + with ATabla.DynamicWhere do + begin + // (FECHA_VENCIMIENTO_INICIO between FECHA_VENCIMIENTO_FIN) + Condicion := NewBinaryExpression(NewField('', fld_RecibosClienteFECHA_VENCIMIENTO), NewConstant(FFechaVenInicio, datDateTime), dboGreaterOrEqual); + Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_RecibosClienteFECHA_VENCIMIENTO), NewConstant(FFechaVenFin, datDateTime), dboLessOrEqual), Condicion, dboAnd); + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; + end; + + // Filtrar el informe por proveedor + if Assigned(FListaIDClientes) then + begin + with ATabla.DynamicWhere do + begin + for i := 0 to FListaIDClientes.Count - 1 do + begin + + // (ID_PROVEEDOR = ID) + Condicion := NewBinaryExpression(NewField('', fld_RecibosClienteID_CLIENTE), NewConstant(FListaIDClientes.Items[i], datInteger), dboEqual); + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; + end; + end; + + // Filtrar el informe por importe minimo + if (FImporteMinimo > 0) then + begin + with ATabla.DynamicWhere do + begin + // (IMPORTE_TOTAL > ImporteMinimo) + Condicion := NewBinaryExpression(NewField('', fld_RecibosClienteIMPORTE_TOTAL), NewConstant(FImporteMinimo, datCurrency), dboGreaterOrEqual); + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; + end; +end; + +procedure TRptRecibosCliente.PrepararTablaResumenInforme(ATabla: IDADataset); +var + i: Integer; + AWhereStr : String; + +begin + // Filtrar el informe por empresa + AWhereStr := ' (' + fld_RecibosClienteID_EMPRESA + ' = ' + IntToStr(FIdEmpresa) + ') '; + + // Filtrar el informe por fechas + if not VarIsNull(FFechaInicio) + and not VarIsNull(FFechaFin) then + begin + if Length(AWhereStr) > 0 then + AWhereStr := AWhereStr + 'AND'; + AWhereStr := AWhereStr + ' (' + fld_RecibosClienteFECHA_EMISION + ' between ''' + ReplaceStr(VarToStr(FFechaInicio),'/','.') + ''' and ''' + ReplaceStr(VarToStr(FFechaFin),'/','.') + ''') '; + end; + + // Filtrar el informe por fechas de vencimiento + if not VarIsNull(FFechaVenInicio) + and not VarIsNull(FFechaVenFin) then + begin + if Length(AWhereStr) > 0 then + AWhereStr := AWhereStr + 'AND'; + AWhereStr := AWhereStr + ' (' + fld_RecibosClienteFECHA_VENCIMIENTO + ' between ''' + ReplaceStr(VarToStr(FFechaVenInicio),'/','.') + ''' and ''' + ReplaceStr(VarToStr(FFechaVenFin),'/','.') + ''') '; + end; + + // Filtrar el informe por proveedor + if Assigned(FListaIDClientes) then + begin + for i := 0 to FListaIDClientes.Count - 1 do + begin + if Length(AWhereStr) > 0 then + AWhereStr := AWhereStr + 'AND'; + AWhereStr := AWhereStr + ' (' + fld_RecibosClienteID_CLIENTE + ' = ' + IntToStr(FListaIDClientes.Items[i]) + ') '; + end; + end; + + // Filtrar el informe por importe minimo + if (FImporteMinimo > 0) then + begin + if Length(AWhereStr) > 0 then + AWhereStr := AWhereStr + 'AND'; + AWhereStr := AWhereStr + ' (' + fld_RecibosClienteIMPORTE_TOTAL + ' >= ' + CurrToStr(FImporteMinimo) + ') '; + end; + + ATabla.Where.AddText(AWhereStr); +end; + function TRptRecibosCliente.GenerarInformeListadoRecibos( const IdEmpresa: Integer; const FechaInicio, FechaFin: Variant; const FechaVenInicio: Variant; FechaVenFin: Variant; @@ -96,15 +250,60 @@ function TRptRecibosCliente.GenerarInformeListadoRecibos( const ImporteMinimo: Currency): Binary; var ATipoInforme: String; -begin + AStream: TMemoryStream; + dsMaster: IDADataset; -//DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE +begin + FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO" + + AStream := TMemoryStream.Create; + try + //Inicializamos parametros + FIdEmpresa := IdEmpresa; + FFechaInicio := FechaInicio; + FFechaFin := FechaFin; + FFechaVenInicio := FechaVenInicio; + FFechaVenFin := FechaVenFin; + FImporteMinimo := ImporteMinimo; + + if Assigned(FListaIDClientes) then + FListaIDClientes.Free; + FListaIDClientes := ListaIDClientes; + + //Se prepara la tabla del listado general del informe + if tbl_InformeListadoRecibos.Active then + tbl_InformeListadoRecibos.Active := False; + PrepararTablaInforme(tbl_InformeListadoRecibos); + + //Se prepara la tabla del listado resumen del informe + if tbl_InformeListadoRecibosResumen.Active then + tbl_InformeListadoRecibosResumen.Active := False; + + dsMaster := schReport.NewDataset(FConnection, ds_InformeListadoRecibosResumen, [], [], False); + PrepararTablaResumenInforme(dsMaster); + // Filtrar el informe por situacion + //Esto se hace para rellenar la tabla del datamodule que usa el informe. + dsMaster.Open; + AStream.Clear; + Bin2DataStreamer.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + Bin2DataStreamer.ReadDataset(AStream, tbl_InformeListadoRecibosResumen, TRUE, '', TRUE, TRUE); + + //DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE if Desglosado then ATipoInforme := rptInformeListadoRecibosClienteDesglosado else ATipoInforme := rptInformeListadoRecibosCliente; - Result := _GenerarInforme(ATipoInforme, IdEmpresa, FechaInicio, FechaFin, FechaVenInicio, FechaVenFin, ListaIDClientes, ImporteMinimo); + //Finalmente se abren las tablas del informe + tbl_InformeListadoRecibos.Active := True; + tbl_InformeListadoRecibosResumen.Active := True; + + Result := _GenerarInforme(ATipoInforme); + finally + AStream.Free; + dsMaster := Nil; + FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO" + end; end; function TRptRecibosCliente.GenerarInformeListadoRecibosPendientes( @@ -115,13 +314,33 @@ function TRptRecibosCliente.GenerarInformeListadoRecibosPendientes( var Condicion: TDAWhereExpression; ATipoInforme: String; + AStream: TMemoryStream; + dsMaster: IDADataset; begin - if tbl_InformeListadoRecibos.Active then - tbl_InformeListadoRecibos.Active := False; + FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO" + + AStream := TMemoryStream.Create; + try + //Inicializamos parametros + FIdEmpresa := IdEmpresa; + FFechaInicio := FechaInicio; + FFechaFin := FechaFin; + FFechaVenInicio := FechaVenInicio; + FFechaVenFin := FechaVenFin; + FImporteMinimo := ImporteMinimo; + + if Assigned(FListaIDClientes) then + FListaIDClientes.Free; + FListaIDClientes := ListaIDClientes; + + //Se prepara la tabla del listado general del informe + if tbl_InformeListadoRecibosPendientes.Active then + tbl_InformeListadoRecibosPendientes.Active := False; + PrepararTablaInforme(tbl_InformeListadoRecibosPendientes); // Filtrar el informe por situacion - with tbl_InformeListadoRecibos.DynamicWhere do + with tbl_InformeListadoRecibosPendientes.DynamicWhere do begin // (ID_EMPRESA >= ID) Condicion := NewBinaryExpression(NewField('', fld_RecibosClienteSITUACION), NewConstant('COBRADO', datString), dboNotEqual); @@ -131,126 +350,54 @@ begin Expression := NewBinaryExpression(Expression, Condicion, dboAnd); end; + //Se prepara la tabla del listado resumen del informe + if tbl_InformeListadoRecibosPendResumen.Active then + tbl_InformeListadoRecibosPendResumen.Active := False; -//DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE + dsMaster := schReport.NewDataset(FConnection, ds_InformeListadoRecibosPendientesResumen, [], [], False); + PrepararTablaResumenInforme(dsMaster); + // Filtrar el informe por situacion + dsMaster.Where.AddText(' AND (SITUACION <> ''COBRADO'')'); + //Esto se hace para rellenar la tabla del datamodule que usa el informe. + dsMaster.Open; + AStream.Clear; + Bin2DataStreamer.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + Bin2DataStreamer.ReadDataset(AStream, tbl_InformeListadoRecibosPendResumen, TRUE, '', TRUE, TRUE); + + //DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE if Desglosado then ATipoInforme := rptInformeListadoRecibosCliPendientesDesglosado else ATipoInforme := rptInformeListadoRecibosCliPendientes; + //Finalmente se abren las tablas del informe + tbl_InformeListadoRecibosPendientes.Active := True; + tbl_InformeListadoRecibosPendResumen.Active := True; - Result := _GenerarInforme(ATipoInforme, IdEmpresa, FechaInicio, FechaFin, FechaVenInicio, FechaVenFin, ListaIDClientes, ImporteMinimo); + Result := _GenerarInforme(ATipoInforme); + finally + AStream.Free; + dsMaster := Nil; + FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO" + end; end; -function TRptRecibosCliente._GenerarInforme(const TipoInforme: String; - const IdEmpresa: Integer; const FechaInicio, FechaFin: Variant; - const FechaVenInicio: Variant; FechaVenFin: Variant; - const ListaIDClientes: TIntegerArray; const ImporteMinimo: Currency): Binary; +function TRptRecibosCliente._GenerarInforme(const TipoInforme: String): Binary; var - Condicion: TDAWhereExpression; - i: Integer; AInforme: Variant; begin Result := Binary.Create; - FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO" + AInforme := DarRutaFichero(DarRutaInformes, TipoInforme, IntToStr(FIDEmpresa)); + if VarIsNull(AInforme) then + raise Exception.Create (('Error Servidor: _GenerarInforme, no encuentra informe ' + TipoInforme)); - try + frxReport.LoadFromFile(AInforme, True); + frxReport.Variables.Variables['FechaInicio'] := FFechaInicio; + frxReport.Variables.Variables['FechaFin'] := FFechaFin; - if tbl_InformeListadoRecibos.Active then - tbl_InformeListadoRecibos.Active := False; - - // Filtrar el informe por empresa - with tbl_InformeListadoRecibos.DynamicWhere do - begin - // (ID_EMPRESA >= ID) - Condicion := NewBinaryExpression(NewField('', fld_RecibosClienteID_EMPRESA), NewConstant(IdEmpresa, datInteger), dboEqual); - if IsEmpty then - Expression := Condicion - else - Expression := NewBinaryExpression(Expression, Condicion, dboAnd); - end; - - // Filtrar el informe por fechas - if not VarIsNull(FechaInicio) - and not VarIsNull(FechaFin) then - begin - with tbl_InformeListadoRecibos.DynamicWhere do - begin - // (FECHA_INICIO between FECHA_FIN) - Condicion := NewBinaryExpression(NewField('', fld_RecibosClienteFECHA_EMISION), NewConstant(FechaInicio, datDateTime), dboGreaterOrEqual); - Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_RecibosClienteFECHA_EMISION), NewConstant(FechaFin, datDateTime), dboLessOrEqual), Condicion, dboAnd); - if IsEmpty then - Expression := Condicion - else - Expression := NewBinaryExpression(Expression, Condicion, dboAnd); - end; - end; - - // Filtrar el informe por fechas de vencimiento - if not VarIsNull(FechaVenInicio) - and not VarIsNull(FechaVenFin) then - begin - with tbl_InformeListadoRecibos.DynamicWhere do - begin - // (FECHA_VENCIMIENTO_INICIO between FECHA_VENCIMIENTO_FIN) - Condicion := NewBinaryExpression(NewField('', fld_RecibosClienteFECHA_VENCIMIENTO), NewConstant(FechaVenInicio, datDateTime), dboGreaterOrEqual); - Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_RecibosClienteFECHA_VENCIMIENTO), NewConstant(FechaVenFin, datDateTime), dboLessOrEqual), Condicion, dboAnd); - if IsEmpty then - Expression := Condicion - else - Expression := NewBinaryExpression(Expression, Condicion, dboAnd); - end; - end; - - // Filtrar el informe por cliente - if Assigned(ListaIDClientes) then - begin - with tbl_InformeListadoRecibos.DynamicWhere do - begin - for i := 0 to ListaIDClientes.Count - 1 do - begin - - // (ID_CLIENTE = ID) - Condicion := NewBinaryExpression(NewField('', fld_RecibosClienteID_CLIENTE), NewConstant(ListaIDClientes.Items[i], datInteger), dboEqual); - if IsEmpty then - Expression := Condicion - else - Expression := NewBinaryExpression(Expression, Condicion, dboAnd); - end; - end; - end; - - // Filtrar el informe por importe minimo - if (ImporteMinimo > 0) then - begin - with tbl_InformeListadoRecibos.DynamicWhere do - begin - // (IMPORTE_TOTAL > ImporteMinimo) - Condicion := NewBinaryExpression(NewField('', fld_RecibosClienteIMPORTE_TOTAL), NewConstant(ImporteMinimo, datCurrency), dboGreaterOrEqual); - if IsEmpty then - Expression := Condicion - else - Expression := NewBinaryExpression(Expression, Condicion, dboAnd); - end; - end; - - tbl_InformeListadoRecibos.Active := True; - - AInforme := DarRutaFichero(DarRutaInformes, TipoInforme, IntToStr(IDEmpresa)); - if VarIsNull(AInforme) then - raise Exception.Create (('Error Servidor: _GenerarInforme, no encuentra informe ' + TipoInforme)); - - frxReport.LoadFromFile(AInforme, True); - frxReport.Variables.Variables['FechaInicio'] := FechaInicio; - frxReport.Variables.Variables['FechaFin'] := FechaFin; - - frxReport.PrepareReport(False); - frxReport.PreviewPages.SaveToStream(Result); - - finally - FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO" - end; + frxReport.PrepareReport(False); + frxReport.PreviewPages.SaveToStream(Result); end; procedure TRptRecibosCliente._GenerarRecibo(const ID: Integer);