diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj
index 3c533dc7..d2d4c897 100644
--- a/Source/Base/Base.dproj
+++ b/Source/Base/Base.dproj
@@ -45,10 +45,6 @@
Package
FalseTrueFalseLibreria base de FactuGESFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0
-
-
-
-
Microsoft Office 2000 Sample Automation Server Wrapper Components
Microsoft Office XP Sample Automation Server Wrapper Components
Base.dpk
@@ -58,57 +54,57 @@
MainSource
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Base/Base.res b/Source/Base/Base.res
index 8b251f31..1641339f 100644
Binary files a/Source/Base/Base.res and b/Source/Base/Base.res differ
diff --git a/Source/Cliente/FactuGES.rc b/Source/Cliente/FactuGES.rc
index 3ceddb61..e9a315ed 100644
--- a/Source/Cliente/FactuGES.rc
+++ b/Source/Cliente/FactuGES.rc
@@ -1,7 +1,7 @@
MAINICON ICON "C:\Codigo tecsitel\Resources\Iconos\Factuges.ico"
1 VERSIONINFO
-FILEVERSION 1,8,6,0
-PRODUCTVERSION 1,8,6,0
+FILEVERSION 1,8,7,0
+PRODUCTVERSION 1,8,7,0
FILEFLAGSMASK 0x3FL
FILEFLAGS 0x00L
FILEOS 0x40004L
@@ -13,10 +13,10 @@ BEGIN
BLOCK "0C0A04E4"
BEGIN
VALUE "CompanyName", "Rodax Software S.L.\0"
- VALUE "FileVersion", "1.8.6.0\0"
+ VALUE "FileVersion", "1.8.7.0\0"
VALUE "InternalName", "FactuGES\0"
VALUE "ProductName", "FactuGES\0"
- VALUE "ProductVersion", "1.8.6.0\0"
+ VALUE "ProductVersion", "1.8.7.0\0"
END
END
BLOCK "VarFileInfo"
diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res
index ad15c932..254f842c 100644
Binary files a/Source/Cliente/FactuGES.res and b/Source/Cliente/FactuGES.res differ
diff --git a/Source/GUIBase/uEditorPreview.dfm b/Source/GUIBase/uEditorPreview.dfm
index e0f99664..576ff9fe 100644
--- a/Source/GUIBase/uEditorPreview.dfm
+++ b/Source/GUIBase/uEditorPreview.dfm
@@ -2478,7 +2478,7 @@ inherited fEditorPreview: TfEditorPreview
Bitmap = {}
end
object frxReport1: TfrxReport
- Version = '4.3'
+ Version = '4.7.71'
DotMatrixReport = False
EngineOptions.DoublePass = True
IniFile = '\Software\Fast Reports'
@@ -2529,6 +2529,7 @@ inherited fEditorPreview: TfEditorPreview
ShowDialog = False
UseFileCache = True
ShowProgress = True
+ OverwritePrompt = False
Monochrome = True
Left = 120
Top = 384
@@ -2536,13 +2537,21 @@ inherited fEditorPreview: TfEditorPreview
object frxPDFExport1: TfrxPDFExport
UseFileCache = True
ShowProgress = True
+ OverwritePrompt = False
PrintOptimized = True
Outline = False
+ Background = False
+ HTMLTags = False
Author = 'FastReport'#174
Subject = 'FastReport PDF export'
- Background = False
Creator = 'FastReport (http://www.fast-report.com)'
- HTMLTags = False
+ ProtectionFlags = [ePrint, eModify, eCopy, eAnnot]
+ HideToolbar = False
+ HideMenubar = False
+ HideWindowUI = False
+ FitWindow = False
+ CenterWindow = False
+ PrintScaling = False
Left = 160
Top = 384
end
@@ -2550,6 +2559,7 @@ inherited fEditorPreview: TfEditorPreview
ShowDialog = False
UseFileCache = True
ShowProgress = True
+ OverwritePrompt = False
Monochrome = True
Left = 192
Top = 384
@@ -2557,6 +2567,8 @@ inherited fEditorPreview: TfEditorPreview
object frxXLSExport1: TfrxXLSExport
UseFileCache = True
ShowProgress = True
+ OverwritePrompt = False
+ ExportEMF = True
AsText = False
Background = True
FastExport = True
@@ -2569,25 +2581,32 @@ inherited fEditorPreview: TfEditorPreview
object frxMailExport1: TfrxMailExport
UseFileCache = True
ShowProgress = True
+ OverwritePrompt = False
ShowExportDialog = True
SmtpPort = 25
UseIniFile = True
+ TimeOut = 60
+ ConfurmReading = False
Left = 80
Top = 384
end
object frxRTFExport: TfrxRTFExport
UseFileCache = True
ShowProgress = True
+ OverwritePrompt = False
+ ExportEMF = True
Wysiwyg = True
Creator = 'FastReport http://www.fast-report.com'
SuppressPageHeadersFooters = False
HeaderFooterMode = hfText
+ AutoSize = False
Left = 232
Top = 384
end
object frxSimpleTextExport1: TfrxSimpleTextExport
UseFileCache = True
ShowProgress = True
+ OverwritePrompt = False
Frames = False
EmptyLines = False
OEMCodepage = False
diff --git a/Source/GUIBase/uEditorPreview.pas b/Source/GUIBase/uEditorPreview.pas
index 61f4067b..853e14a6 100644
--- a/Source/GUIBase/uEditorPreview.pas
+++ b/Source/GUIBase/uEditorPreview.pas
@@ -154,7 +154,7 @@ type
function GetTitle: string;
procedure PonerTitulos(const ATitulo: String = ''); override;
function GetController : IControllerBase;
- procedure SetController (const Value : IControllerBase);
+ procedure SetController (const Value : IControllerBase); Virtual;
procedure SetListaID (const Value : TIntegerList);
function GetListaID : TIntegerList;
public
diff --git a/Source/Informes/1/InformeListadoFacturasClienteGrafComp.fr3 b/Source/Informes/1/InformeListadoFacturasClienteGrafComp.fr3
new file mode 100644
index 00000000..18b1e3b3
--- /dev/null
+++ b/Source/Informes/1/InformeListadoFacturasClienteGrafComp.fr3
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/1/InformeListadoFacturasProveedorGrafComp.fr3 b/Source/Informes/1/InformeListadoFacturasProveedorGrafComp.fr3
new file mode 100644
index 00000000..b0dfbc19
--- /dev/null
+++ b/Source/Informes/1/InformeListadoFacturasProveedorGrafComp.fr3
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm
index 9ed60d82..dd5fbb98 100644
--- a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm
+++ b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm
@@ -2,11 +2,218 @@ object RptFacturasCliente: TRptFacturasCliente
OldCreateOrder = True
OnCreate = DataModuleCreate
OnDestroy = DataModuleDestroy
- Height = 513
- Width = 933
+ Height = 657
+ Width = 974
object schReport: TDASchema
ConnectionManager = dmServer.ConnectionManager
Datasets = <
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ Name = 'IBX'
+ SQL =
+ 'select VALOR, DESCRIPCION, periodo1.ANO as Ano1, periodo1.IMPORT' +
+ 'E_TOTAL, periodo2.ANO as Ano2, periodo2.IMPORTE_TOTAL,'#10#10'(periodo' +
+ '1.IMPORTE_TOTAL - periodo2.IMPORTE_TOTAL) as Diferencia,'#10'/*SOLO ' +
+ 'COMPARAREMOS CUANDO EL SEGUNDO A'#209'O SEA DIFERENTE DE 0, comparati' +
+ 'va de A'#241'o1 respecto A'#241'o2*/'#10'case'#10'when (periodo1.IMPORTE_TOTAL = 0' +
+ ') then (100 - (periodo2.IMPORTE_TOTAL*100))'#10'else (100 - ((period' +
+ 'o2.IMPORTE_TOTAL*100)/periodo1.IMPORTE_TOTAL))'#10'end as Porcentaje' +
+ #10#10'FROM'#10'periodos_aux'#10'left join'#10'(select comp1.ID_EMPRESA, comp1.AN' +
+ 'O, MES as NFILA, SUM(comp1.IMPORTE_TOTAL) as IMPORTE_TOTAL'#10'from ' +
+ 'V_INF_FAC_CLIENTE comp1'#10'where ID_EMPRESA = :ID_EMPRESA1'#10'and (ANO' +
+ ' = :ANO1)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo1 on (VAL' +
+ 'OR = periodo1.NFILA)'#10#10'left join'#10'(select comp2.ID_EMPRESA, comp2.' +
+ 'ANO, MES as NFILA, SUM(comp2.IMPORTE_TOTAL) as IMPORTE_TOTAL'#10'fro' +
+ 'm V_INF_FAC_CLIENTE comp2'#10'where ID_EMPRESA = :ID_EMPRESA2'#10'and (A' +
+ 'NO = :ANO2)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo2 on (V' +
+ 'ALOR = periodo2.NFILA)'#10#10'where periodo= '#39'MENSUAL'#39#10'order by valor ' +
+ 'asc'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'VALOR'
+ TableField = 'VALOR'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL1'
+ TableField = 'IMPORTE_TOTAL1'
+ end
+ item
+ DatasetField = 'DIFERENCIA'
+ TableField = 'DIFERENCIA'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end>
+ end>
+ Name = 'InformeListadoFacturasGrafCompMensual'
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA'
+ Value = ''
+ end
+ item
+ Name = 'ANO'
+ Value = ''
+ end
+ item
+ Name = 'NTOP'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ Name = 'IBX'
+ SQL =
+ 'select P.ANO, C.REFERENCIA, COALESCE(C.NOMBRE, P.NOMBRE) as NOMB' +
+ 'RE,'#10'SUM(P.IMPORTE_DESCUENTO) as IMPORTE_DESCUENTO, SUM(P.IMPORTE' +
+ '_TOTAL) as IMPORTE_TOTAL,'#10'(SUM(P.IMPORTE_TOTAL) - SUM(P.IMPORTE_' +
+ 'DESCUENTO)) as IMPORTE_COBRADO,'#10'case when SUM(P.IMPORTE_TOTAL) =' +
+ ' 0 then 0'#10'else ((SUM(P.IMPORTE_DESCUENTO) * 100) / SUM(P.IMPORTE' +
+ '_TOTAL)) end as PORCENTAJE'#10#10'from V_INF_FAC_CLIENTE P'#10'left join C' +
+ 'ONTACTOS C on P.ID_CLIENTE = C.ID'#10#10'where p.ID_EMPRESA = :ID_EMPR' +
+ 'ESA'#10'and P.ANO = :ANO'#10'group by 1,2,3'#10'order by 1,5 desc'#10'rows 1 to ' +
+ ':NTOP'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ANO'
+ TableField = 'ANO'
+ end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'NOMBRE'
+ TableField = 'NOMBRE'
+ end
+ item
+ DatasetField = 'IMPORTE_DESCUENTO'
+ TableField = 'IMPORTE_DESCUENTO'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'IMPORTE_COBRADO'
+ TableField = 'IMPORTE_COBRADO'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end>
+ end>
+ Name = 'InformeListadoClientesMayorDescuentoResumen'
+ Fields = <
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMPORTE_DESCUENTO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_COBRADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ end
item
Params = <
item
@@ -899,6 +1106,321 @@ object RptFacturasCliente: TRptFacturasCliente
Name = 'IMPORTE_TOTAL'
DataType = datCurrency
end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ SQL =
+ 'select VALOR, DESCRIPCION, periodo1.ANO as Ano1, periodo1.IMPORT' +
+ 'E_TOTAL, periodo2.ANO as Ano2, periodo2.IMPORTE_TOTAL,'#10#10'(periodo' +
+ '1.IMPORTE_TOTAL - periodo2.IMPORTE_TOTAL) as Diferencia,'#10'/*SOLO ' +
+ 'COMPARAREMOS CUANDO EL SEGUNDO A'#209'O SEA DIFERENTE DE 0, comparati' +
+ 'va de A'#241'o1 respecto A'#241'o2*/'#10'case'#10'when (periodo1.IMPORTE_TOTAL = 0' +
+ ') then (100 - (periodo2.IMPORTE_TOTAL*100))'#10'else (100 - ((period' +
+ 'o2.IMPORTE_TOTAL*100)/periodo1.IMPORTE_TOTAL))'#10'end as Porcentaje' +
+ #10#10'FROM'#10'periodos_aux'#10'left join'#10'(select comp1.ID_EMPRESA, comp1.AN' +
+ 'O, TRIMESTRE as NFILA, SUM(comp1.IMPORTE_TOTAL) as IMPORTE_TOTAL' +
+ #10'from V_INF_FAC_CLIENTE comp1'#10'where ID_EMPRESA = :ID_EMPRESA1'#10'an' +
+ 'd (ANO = :ANO1)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo1 o' +
+ 'n (VALOR = periodo1.NFILA)'#10#10'left join'#10'(select comp2.ID_EMPRESA, ' +
+ 'comp2.ANO, TRIMESTRE as NFILA, SUM(comp2.IMPORTE_TOTAL) as IMPOR' +
+ 'TE_TOTAL'#10'from V_INF_FAC_CLIENTE comp2'#10'where ID_EMPRESA = :ID_EMP' +
+ 'RESA2'#10'and (ANO = :ANO2)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) pe' +
+ 'riodo2 on (VALOR = periodo2.NFILA)'#10#10'where periodo= '#39'TRIMESTRAL'#39#10 +
+ 'order by valor asc'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'VALOR'
+ TableField = 'VALOR'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL1'
+ TableField = 'IMPORTE_TOTAL1'
+ end
+ item
+ DatasetField = 'DIFERENCIA'
+ TableField = 'DIFERENCIA'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end>
+ end>
+ Name = 'InformeListadoFacturasGrafCompTrimestral'
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ SQL =
+ 'select VALOR, DESCRIPCION, periodo1.ANO as Ano1, periodo1.IMPORT' +
+ 'E_TOTAL, periodo2.ANO as Ano2, periodo2.IMPORTE_TOTAL,'#10#10'(periodo' +
+ '1.IMPORTE_TOTAL - periodo2.IMPORTE_TOTAL) as Diferencia,'#10'/*SOLO ' +
+ 'COMPARAREMOS CUANDO EL SEGUNDO A'#209'O SEA DIFERENTE DE 0, comparati' +
+ 'va de A'#241'o1 respecto A'#241'o2*/'#10'case'#10'when (periodo1.IMPORTE_TOTAL = 0' +
+ ') then (100 - (periodo2.IMPORTE_TOTAL*100))'#10'else (100 - ((period' +
+ 'o2.IMPORTE_TOTAL*100)/periodo1.IMPORTE_TOTAL))'#10'end as Porcentaje' +
+ #10#10'FROM'#10'periodos_aux'#10'left join'#10'(select comp1.ID_EMPRESA, comp1.AN' +
+ 'O, SEMESTRE as NFILA, SUM(comp1.IMPORTE_TOTAL) as IMPORTE_TOTAL'#10 +
+ 'from V_INF_FAC_CLIENTE comp1'#10'where ID_EMPRESA = :ID_EMPRESA1'#10'and' +
+ ' (ANO = :ANO1)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo1 on' +
+ ' (VALOR = periodo1.NFILA)'#10#10'left join'#10'(select comp2.ID_EMPRESA, c' +
+ 'omp2.ANO, SEMESTRE as NFILA, SUM(comp2.IMPORTE_TOTAL) as IMPORTE' +
+ '_TOTAL'#10'from V_INF_FAC_CLIENTE comp2'#10'where ID_EMPRESA = :ID_EMPRE' +
+ 'SA2'#10'and (ANO = :ANO2)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) peri' +
+ 'odo2 on (VALOR = periodo2.NFILA)'#10#10'where periodo= '#39'SEMESTRAL'#39#10'ord' +
+ 'er by valor asc'#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'VALOR'
+ TableField = 'VALOR'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL1'
+ TableField = 'IMPORTE_TOTAL1'
+ end
+ item
+ DatasetField = 'DIFERENCIA'
+ TableField = 'DIFERENCIA'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end>
+ end>
+ Name = 'InformeListadoFacturasGrafCompSemestral'
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA'
+ Value = ''
+ end
+ item
+ Name = 'ANO'
+ Value = ''
+ end
+ item
+ Name = 'NTOP'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ SQL =
+ 'select P.ANO, C.REFERENCIA, COALESCE(C.NOMBRE, P.NOMBRE) as NOMB' +
+ 'RE, p.Importe_TOTAL_ANO,'#10'COUNT(P.FECHA_FACTURA) as NUMFAC, SUM(P' +
+ '.IMPORTE_TOTAL) as IMPORTE_TOTAL,'#10'((SUM(P.IMPORTE_TOTAL)*100)/p.' +
+ 'Importe_TOTAL_ANO) as PORCENTAJE'#10#10'from V_INF_FAC_CLIENTE P'#10'left ' +
+ 'join CONTACTOS C on P.ID_CLIENTE = C.ID'#10#10'where p.ID_EMPRESA = :I' +
+ 'D_EMPRESA'#10'and P.ANO = :ANO'#10'group by 1,2,3,4'#10'order by 1,5 desc'#10'ro' +
+ 'ws 1 to :NTOP'#10#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ANO'
+ TableField = 'ANO'
+ end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'NOMBRE'
+ TableField = 'NOMBRE'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL_ANO'
+ TableField = 'IMPORTE_TOTAL_ANO'
+ end
+ item
+ DatasetField = 'NUMFAC'
+ TableField = 'NUMFAC'
+ end>
+ end>
+ Name = 'InformeListadoClientesMayorFacturacionResumen'
+ Fields = <
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMPORTE_TOTAL_ANO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'NUMFAC'
+ DataType = datInteger
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
end>
JoinDataTables = <>
UnionDataTables = <>
@@ -1127,22 +1649,22 @@ object RptFacturasCliente: TRptFacturasCliente
'lc_ctype=ISO8859_1')
LoginPrompt = False
DefaultTransaction = IBTransaction1
- Left = 48
- Top = 296
+ Left = 32
+ Top = 256
end
object IBTransaction1: TIBTransaction
- Left = 48
- Top = 352
+ Left = 32
+ Top = 312
end
object DataSource1: TDataSource
DataSet = cabecera
- Left = 216
- Top = 296
+ Left = 200
+ Top = 256
end
object DataSource2: TDataSource
DataSet = detalles
- Left = 216
- Top = 352
+ Left = 200
+ Top = 312
end
object cabecera: TIBQuery
Database = IBDatabase1
@@ -1178,8 +1700,8 @@ object RptFacturasCliente: TRptFacturasCliente
' left outer join formas_pago on (formas_pago.id = v_facturas_c' +
'liente.id_forma_pago)'
'WHERE V_FACTURAS_CLIENTE.ID = 2')
- Left = 136
- Top = 296
+ Left = 120
+ Top = 256
object cabeceraID: TIntegerField
FieldName = 'ID'
Origin = '"V_FACTURAS_CLIENTE"."ID"'
@@ -1341,8 +1863,8 @@ object RptFacturasCliente: TRptFacturasCliente
'LEFT OUTER JOIN ARTICULOS ON (ARTICULOS.ID = DET.ID_ARTICULO)'
'WHERE DET.ID_FACTURA = 2 AND DET.VISIBLE = 1 '
'ORDER BY DET.ID_FACTURA, DET.POSICION;')
- Left = 136
- Top = 352
+ Left = 120
+ Top = 312
object detallesID: TIntegerField
FieldName = 'ID'
Origin = '"FACTURAS_CLIENTE_DETALLES"."ID"'
@@ -1656,32 +2178,32 @@ object RptFacturasCliente: TRptFacturasCliente
Top = 128
end
object frxCheckBoxObject1: TfrxCheckBoxObject
- Left = 296
- Top = 288
+ Left = 280
+ Top = 248
end
object frxChartObject1: TfrxChartObject
- Left = 296
- Top = 336
+ Left = 280
+ Top = 296
end
object frxGradientObject1: TfrxGradientObject
- Left = 360
- Top = 288
+ Left = 344
+ Top = 248
end
object frxCrossObject1: TfrxCrossObject
- Left = 360
- Top = 440
+ Left = 344
+ Top = 400
end
object frxOLEObject1: TfrxOLEObject
- Left = 296
- Top = 440
+ Left = 280
+ Top = 400
end
object frxBarCodeObject1: TfrxBarCodeObject
- Left = 360
- Top = 392
+ Left = 344
+ Top = 352
end
object frxRichObject1: TfrxRichObject
- Left = 296
- Top = 392
+ Left = 280
+ Top = 352
end
object frxReport: TfrxReport
Version = '4.7.71'
@@ -1932,8 +2454,8 @@ object RptFacturasCliente: TRptFacturasCliente
'FROM V_RECIBOS_CLIENTE'
'WHERE V_RECIBOS_CLIENTE.ID_FACTURA = 2'
'ORDER BY V_RECIBOS_CLIENTE.FECHA_VENCIMIENTO')
- Left = 136
- Top = 408
+ Left = 120
+ Top = 368
object vencimientosFECHA_VENCIMIENTO: TDateField
FieldName = 'FECHA_VENCIMIENTO'
Origin = '"V_RECIBOS_CLIENTE"."FECHA_VENCIMIENTO"'
@@ -1950,8 +2472,8 @@ object RptFacturasCliente: TRptFacturasCliente
end
object DataSource3: TDataSource
DataSet = vencimientos
- Left = 216
- Top = 408
+ Left = 200
+ Top = 368
end
object frxPDFExport1: TfrxPDFExport
ShowDialog = False
@@ -1972,8 +2494,8 @@ object RptFacturasCliente: TRptFacturasCliente
FitWindow = False
CenterWindow = False
PrintScaling = False
- Left = 424
- Top = 288
+ Left = 408
+ Top = 248
end
object tbl_InformeListadoFacturas: TDAMemDataTable
RemoteUpdatesOptions = []
@@ -2183,4 +2705,347 @@ object RptFacturasCliente: TRptFacturasCliente
Left = 48
Top = 88
end
+ object frxDBInformeListadoFacturasGrafComp: TfrxDBDataset
+ UserName = 'frxDBInformeListadoFacturasGrafComp'
+ CloseDataSource = False
+ DataSource = DASInformeListadoFacturasGrafComp
+ BCDToCurrency = False
+ Left = 824
+ Top = 224
+ end
+ object DASInformeListadoFacturasGrafComp: TDADataSource
+ Left = 824
+ Top = 272
+ end
+ object tbl_InformeListadoFacturasGrafCompMensual: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeListadoFacturasGrafCompMensual'
+ IndexDefs = <>
+ Left = 824
+ Top = 328
+ end
+ object tbl_InformeListadoFacturasGrafCompTrimestral: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeListadoFacturasGrafCompTrimestral'
+ IndexDefs = <>
+ Left = 824
+ Top = 384
+ end
+ object tbl_InformeListadoFacturasGrafCompSemestral: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeListadoFacturasGrafCompSemestral'
+ IndexDefs = <>
+ Left = 824
+ Top = 440
+ end
+ object frxDBInformeListadoClientesMayorFacturacionResumen: TfrxDBDataset
+ UserName = 'frxDBInformeListadoClientesMayorFacturacionResumen'
+ CloseDataSource = False
+ DataSource = DADSInformeListadoClientesMayorFacturacionResumen
+ BCDToCurrency = False
+ Left = 320
+ Top = 488
+ end
+ object DADSInformeListadoClientesMayorFacturacionResumen: TDADataSource
+ DataSet = tbl_InformeListadoClientesMayorFacturacionResumen.Dataset
+ DataTable = tbl_InformeListadoClientesMayorFacturacionResumen
+ Left = 320
+ Top = 544
+ end
+ object tbl_InformeListadoClientesMayorFacturacionResumen: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMPORTE_TOTAL_ANO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'NUMFAC'
+ DataType = datInteger
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ID_EMPRESA'
+ Value = ''
+ end
+ item
+ Name = 'ANO'
+ Value = ''
+ end
+ item
+ Name = 'NTOP'
+ Value = ''
+ end>
+ MasterMappingMode = mmDataRequest
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeListadoClientesMayorFacturacionResumen'
+ IndexDefs = <>
+ Left = 320
+ Top = 600
+ end
+ object frxDBInformeListadoClientesMayorDescuentoResumen: TfrxDBDataset
+ UserName = 'frxDBInformeListadoClientesMayorDescuentoResumen'
+ CloseDataSource = False
+ DataSource = DADSInformeListadoClientesMayorDescuentoResumen
+ BCDToCurrency = False
+ Left = 624
+ Top = 488
+ end
+ object DADSInformeListadoClientesMayorDescuentoResumen: TDADataSource
+ DataSet = tbl_InformeListadoClientesMayorDescuentoResumen.Dataset
+ DataTable = tbl_InformeListadoClientesMayorDescuentoResumen
+ Left = 624
+ Top = 544
+ end
+ object tbl_InformeListadoClientesMayorDescuentoResumen: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMPORTE_DESCUENTO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_COBRADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ID_EMPRESA'
+ Value = ''
+ end
+ item
+ Name = 'ANO'
+ Value = ''
+ end
+ item
+ Name = 'NTOP'
+ Value = ''
+ end>
+ MasterMappingMode = mmDataRequest
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeListadoClientesMayorDescuentoResumen'
+ IndexDefs = <>
+ Left = 624
+ Top = 600
+ end
end
diff --git a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas
index c14469cf..43a054b7 100644
--- a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas
+++ b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas
@@ -89,7 +89,18 @@ type
DADSInformeListadoFacturasResumen: TDADataSource;
tbl_InformeListadoFacturasResumen: TDAMemDataTable;
Bin2DataStreamer: TDABin2DataStreamer;
+ frxDBInformeListadoFacturasGrafComp: TfrxDBDataset;
+ DASInformeListadoFacturasGrafComp: TDADataSource;
+ tbl_InformeListadoFacturasGrafCompMensual: TDAMemDataTable;
+ tbl_InformeListadoFacturasGrafCompTrimestral: TDAMemDataTable;
+ tbl_InformeListadoFacturasGrafCompSemestral: TDAMemDataTable;
schReport: TDASchema;
+ frxDBInformeListadoClientesMayorFacturacionResumen: TfrxDBDataset;
+ DADSInformeListadoClientesMayorFacturacionResumen: TDADataSource;
+ tbl_InformeListadoClientesMayorFacturacionResumen: TDAMemDataTable;
+ frxDBInformeListadoClientesMayorDescuentoResumen: TfrxDBDataset;
+ DADSInformeListadoClientesMayorDescuentoResumen: TDADataSource;
+ tbl_InformeListadoClientesMayorDescuentoResumen: TDAMemDataTable;
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
private
@@ -99,16 +110,22 @@ type
FFechaFin: Variant;
FFechaVenInicio: Variant;
FFechaVenFin: Variant;
+ FAno1: Variant;
+ FAno2: Variant;
+ FIntervalo: Variant;
FListaIDClientes: TIntegerArray;
FListaNombresClientes : TStringList;
FImporteMinimo: Currency;
FDesglosado : Boolean;
-
+ FTopN: Integer;
+
//Genera cada una de las facturas a imprimir
procedure _GenerarFactura(const ID: Integer; const VerSello: Boolean = True; const VerCopia: Boolean = True);
procedure PrepararTablaInforme(ATabla: TDAMemDataTable);
procedure PrepararTablaResumenInforme(ATabla: IDADataset);
+ procedure PrepararTablaInformeGrafComp(ATabla: TDAMemDataTable);
+ procedure PrepararTablaResumenInformeGrafComp(ATabla: TDAMemDataTable);
function _GenerarInforme(const TipoInforme: String): Binary;
procedure IniciarParametrosInforme;
procedure RecuperarNombresClientes;
@@ -118,6 +135,7 @@ type
function GenerarInformeIVA(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoFacturas(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoFacturasPendientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
+ function GenerarInformeFacturasGrafComp(const IdEmpresa: Integer; const Intervalo: Variant; const Ano1: Variant; const Ano2: Variant; const ListaIDClientes: TIntegerArray; const TopN: Integer): Binary;
end;
implementation
@@ -126,7 +144,7 @@ implementation
uses
uSistemaFunc, StrUtils, uDataModuleServer, schFacturasClienteClient_Intf,
- uROServer, DataAbstract4_Intf;
+ uROServer, DataAbstract4_Intf, srvGestorInformes_Impl;
const
rptFacturaCliente = 'InfFacturaCliente.fr3';
@@ -136,6 +154,7 @@ const
rptInformeListadoFacturasClienteDesglosado = 'InformeListadoFacturasClienteDesglosado.fr3';
rptInformeListadoFactuasClientePendiente = 'InformeListadoFacturasClientePendientes.fr3';
rptInformeListadoFactuasClientePendienteDesglosado = 'InformeListadoFacturasClientePendientesDesglosado.fr3';
+ rptInformeListadoFacturasClienteGrafComp = 'InformeListadoFacturasClienteGrafComp.fr3';
{ Dataset names for schReport }
ds_InformeListadoFacturasResumen = 'InformeListadoFacturasResumen';
@@ -202,6 +221,59 @@ begin
end;
end;
+function TRptFacturasCliente.GenerarInformeFacturasGrafComp(
+ const IdEmpresa: Integer; const Intervalo, Ano1, Ano2: Variant;
+ const ListaIDClientes: TIntegerArray; const TopN: Integer): Binary;
+var
+ AStream: TMemoryStream;
+ AInforme: Variant;
+
+begin
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FAno1 := Ano1;
+ FAno2 := Ano2;
+ FIntervalo := Intervalo;
+ FTopN := TopN;
+
+ if Assigned(FListaIDClientes) then
+ FListaIDClientes.Free;
+ FListaIDClientes := ListaIDClientes;
+
+ //Preparamos la tabla correspondiente y la abrimos para el informe
+ if (FIntervalo = CTE_MENSUAL) then
+ PrepararTablaInformeGrafComp(tbl_InformeListadoFacturasGrafCompMensual)
+ else if (FIntervalo = CTE_TRIMESTRAL) then
+ PrepararTablaInformeGrafComp(tbl_InformeListadoFacturasGrafCompTrimestral)
+ else
+ PrepararTablaInformeGrafComp(tbl_InformeListadoFacturasGrafCompSemestral);
+
+ //Se preparan las tablas del listado resumen del informe
+// PrepararTablaResumenInformeGrafComp(tbl_InformeListadoProveedoresMayorFacturacionResumen);
+// PrepararTablaResumenInformeGrafComp(tbl_InformeListadoProveedoresMayorDescuentoResumen);
+
+ Result := Binary.Create;
+
+ AInforme := DarRutaFichero(DarRutaInformes, rptInformeListadoFacturasClienteGrafComp, IntTostr(FIdEmpresa));
+ if VarIsNull(AInforme) then
+ raise Exception.Create (('Error Servidor: GenerarInformeFacturasGrafComp, no encuentra informe ' + rptInformeListadoFacturasClienteGrafComp));
+
+ frxReport.LoadFromFile(AInforme, True);
+// IniciarParametrosInforme;
+
+ frxReport.PrepareReport(False);
+ frxReport.PreviewPages.SaveToStream(Result);
+
+ finally
+ AStream.Free;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
+end;
+
function TRptFacturasCliente.GenerarInformeIVA(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
var
ATipoInforme: String;
@@ -512,6 +584,19 @@ begin
end;
end;
+procedure TRptFacturasCliente.PrepararTablaInformeGrafComp(ATabla: TDAMemDataTable);
+begin
+ if ATabla.Active then
+ ATabla.Active := False;
+
+ DASInformeListadoFacturasGrafComp.DataTable := ATabla;
+ ATabla.ParamByName('ID_EMPRESA1').AsInteger := FIdEmpresa;
+ ATabla.ParamByName('ID_EMPRESA2').AsInteger := FIdEmpresa;
+ ATabla.ParamByName('ANO1').AsVariant := FAno1;
+ ATabla.ParamByName('ANO2').AsVariant := FAno2;
+ ATabla.Active := True;
+end;
+
procedure TRptFacturasCliente.PrepararTablaResumenInforme(ATabla: IDADataset);
var
i: Integer;
@@ -561,6 +646,17 @@ begin
ATabla.Where.AddText(AWhereStr);
end;
+procedure TRptFacturasCliente.PrepararTablaResumenInformeGrafComp(ATabla: TDAMemDataTable);
+begin
+ if ATabla.Active then
+ ATabla.Active := False;
+
+ ATabla.ParamByName('ID_EMPRESA').AsInteger := FIdEmpresa;
+ ATabla.ParamByName('ANO').AsVariant := FAno1;
+ ATabla.ParamByName('NTOP').AsInteger := FTopN;
+ ATabla.Active := True;
+end;
+
procedure TRptFacturasCliente.RecuperarNombresClientes;
var
AContactosService : IsrvContactos;
diff --git a/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.pas b/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.pas
index 680db595..c2e164f6 100644
--- a/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.pas
+++ b/Source/Modulos/Facturas de cliente/Servidor/srvFacturasCliente_Impl.pas
@@ -31,12 +31,16 @@ type
const IncludeSchema: Boolean; const MaxRecords: Integer);
procedure DARemoteServiceCreate(Sender: TObject);
procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; var aConnectionName: string);
- private
+
protected
{ IsrvFacturasCliente methods }
function GenerarInforme(const ListaID: TIntegerArray; const VerSello: Boolean = True; const VerCopia: Boolean = True): Binary;
function GenerarInformeEnWord(const ID: Integer; const VerSello: Boolean = True): Binary;
function GenerarInformeEnPDF(const ListaID: TIntegerArray; const VerSello: Boolean = True): Binary;
+
+ public
+ function DarListaAnos: StringArray;
+
end;
implementation
@@ -77,6 +81,24 @@ begin
bpFacturasCliente.BusinessRulesID := BIZ_SERVER_FACTURAS_CLIENTE;
end;
+function TsrvFacturasCliente.DarListaAnos: StringArray;
+var
+ dsAnos : IDADataset;
+begin
+ Result := StringArray.Create();
+ try
+ dsAnos := schFacturasCliente.NewDataset(Connection, 'ListaAnosFacturas', '', True);
+ while not dsAnos.EOF do
+ begin
+ Result.Add(dsAnos.Fields[0].AsString);
+ dsAnos.Next;
+ end;
+ finally
+ dsAnos.Close;
+ dsAnos := NIL;
+ end;
+end;
+
procedure TsrvFacturasCliente.DataAbstractServiceBeforeAcquireConnection(
aSender: TObject; var aConnectionName: string);
begin
diff --git a/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm b/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm
index cc41b218..1989e0c3 100644
--- a/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm
+++ b/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm
@@ -2,7 +2,7 @@ object RptFacturasProveedor: TRptFacturasProveedor
OldCreateOrder = True
OnCreate = DataModuleCreate
OnDestroy = DataModuleDestroy
- Height = 513
+ Height = 647
Width = 933
object schReport: TDASchema
ConnectionManager = dmServer.ConnectionManager
@@ -927,6 +927,525 @@ object RptFacturasProveedor: TRptFacturasProveedor
Name = 'IMPORTE_TOTAL'
DataType = datCurrency
end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ SQL =
+ 'select VALOR, DESCRIPCION, periodo1.ANO as Ano1, periodo1.IMPORT' +
+ 'E_TOTAL, periodo2.ANO as Ano2, periodo2.IMPORTE_TOTAL,'#10#10'(periodo' +
+ '1.IMPORTE_TOTAL - periodo2.IMPORTE_TOTAL) as Diferencia,'#10'/*SOLO ' +
+ 'COMPARAREMOS CUANDO EL SEGUNDO A'#209'O SEA DIFERENTE DE 0, comparati' +
+ 'va de A'#241'o1 respecto A'#241'o2*/'#10'case'#10'when (periodo1.IMPORTE_TOTAL = 0' +
+ ') then (100 - (periodo2.IMPORTE_TOTAL*100))'#10'else (100 - ((period' +
+ 'o2.IMPORTE_TOTAL*100)/periodo1.IMPORTE_TOTAL))'#10'end as Porcentaje' +
+ #10#10'FROM'#10'periodos_aux'#10'left join'#10'(select comp1.ID_EMPRESA, comp1.AN' +
+ 'O, MES as NFILA, SUM(comp1.IMPORTE_TOTAL) as IMPORTE_TOTAL'#10'from ' +
+ 'V_INF_FAC_PROVEEDOR comp1'#10'where ID_EMPRESA = :ID_EMPRESA1'#10'and (A' +
+ 'NO = :ANO1)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo1 on (V' +
+ 'ALOR = periodo1.NFILA)'#10#10'left join'#10'(select comp2.ID_EMPRESA, comp' +
+ '2.ANO, MES as NFILA, SUM(comp2.IMPORTE_TOTAL) as IMPORTE_TOTAL'#10'f' +
+ 'rom V_INF_FAC_PROVEEDOR comp2'#10'where ID_EMPRESA = :ID_EMPRESA2'#10'an' +
+ 'd (ANO = :ANO2)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo2 o' +
+ 'n (VALOR = periodo2.NFILA)'#10#10'where periodo= '#39'MENSUAL'#39#10'order by va' +
+ 'lor asc'#10#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'VALOR'
+ TableField = 'VALOR'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL1'
+ TableField = 'IMPORTE_TOTAL1'
+ end
+ item
+ DatasetField = 'DIFERENCIA'
+ TableField = 'DIFERENCIA'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end>
+ end>
+ Name = 'InformeListadoFacturasGrafCompMensual'
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ SQL =
+ 'select VALOR, DESCRIPCION, periodo1.ANO as Ano1, periodo1.IMPORT' +
+ 'E_TOTAL, periodo2.ANO as Ano2, periodo2.IMPORTE_TOTAL,'#10#10'(periodo' +
+ '1.IMPORTE_TOTAL - periodo2.IMPORTE_TOTAL) as Diferencia,'#10'/*SOLO ' +
+ 'COMPARAREMOS CUANDO EL SEGUNDO A'#209'O SEA DIFERENTE DE 0, comparati' +
+ 'va de A'#241'o1 respecto A'#241'o2*/'#10'case'#10'when (periodo1.IMPORTE_TOTAL = 0' +
+ ') then (100 - (periodo2.IMPORTE_TOTAL*100))'#10'else (100 - ((period' +
+ 'o2.IMPORTE_TOTAL*100)/periodo1.IMPORTE_TOTAL))'#10'end as Porcentaje' +
+ #10#10'FROM'#10'periodos_aux'#10'left join'#10'(select comp1.ID_EMPRESA, comp1.AN' +
+ 'O, TRIMESTRE as NFILA, SUM(comp1.IMPORTE_TOTAL) as IMPORTE_TOTAL' +
+ #10'from V_INF_FAC_PROVEEDOR comp1'#10'where ID_EMPRESA = :ID_EMPRESA1'#10 +
+ 'and (ANO = :ANO1)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo1' +
+ ' on (VALOR = periodo1.NFILA)'#10#10'left join'#10'(select comp2.ID_EMPRESA' +
+ ', comp2.ANO, TRIMESTRE as NFILA, SUM(comp2.IMPORTE_TOTAL) as IMP' +
+ 'ORTE_TOTAL'#10'from V_INF_FAC_PROVEEDOR comp2'#10'where ID_EMPRESA = :ID' +
+ '_EMPRESA2'#10'and (ANO = :ANO2)'#10'group by 1,2,3'#10'order by 1 desc,2 asc' +
+ ') periodo2 on (VALOR = periodo2.NFILA)'#10#10'where periodo= '#39'TRIMESTR' +
+ 'AL'#39#10'order by valor asc'#10#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'VALOR'
+ TableField = 'VALOR'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL1'
+ TableField = 'IMPORTE_TOTAL1'
+ end
+ item
+ DatasetField = 'DIFERENCIA'
+ TableField = 'DIFERENCIA'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end>
+ end>
+ Name = 'InformeListadoFacturasGrafCompTrimestral'
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ SQL =
+ 'select VALOR, DESCRIPCION, periodo1.ANO as Ano1, periodo1.IMPORT' +
+ 'E_TOTAL, periodo2.ANO as Ano2, periodo2.IMPORTE_TOTAL,'#10#10'(periodo' +
+ '1.IMPORTE_TOTAL - periodo2.IMPORTE_TOTAL) as Diferencia,'#10'/*SOLO ' +
+ 'COMPARAREMOS CUANDO EL SEGUNDO A'#209'O SEA DIFERENTE DE 0, comparati' +
+ 'va de A'#241'o1 respecto A'#241'o2*/'#10'case'#10'when (periodo1.IMPORTE_TOTAL = 0' +
+ ') then (100 - (periodo2.IMPORTE_TOTAL*100))'#10'else (100 - ((period' +
+ 'o2.IMPORTE_TOTAL*100)/periodo1.IMPORTE_TOTAL))'#10'end as Porcentaje' +
+ #10#10'FROM'#10'periodos_aux'#10'left join'#10'(select comp1.ID_EMPRESA, comp1.AN' +
+ 'O, SEMESTRE as NFILA, SUM(comp1.IMPORTE_TOTAL) as IMPORTE_TOTAL'#10 +
+ 'from V_INF_FAC_PROVEEDOR comp1'#10'where ID_EMPRESA = :ID_EMPRESA1'#10'a' +
+ 'nd (ANO = :ANO1)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) periodo1 ' +
+ 'on (VALOR = periodo1.NFILA)'#10#10'left join'#10'(select comp2.ID_EMPRESA,' +
+ ' comp2.ANO, SEMESTRE as NFILA, SUM(comp2.IMPORTE_TOTAL) as IMPOR' +
+ 'TE_TOTAL'#10'from V_INF_FAC_PROVEEDOR comp2'#10'where ID_EMPRESA = :ID_E' +
+ 'MPRESA2'#10'and (ANO = :ANO2)'#10'group by 1,2,3'#10'order by 1 desc,2 asc) ' +
+ 'periodo2 on (VALOR = periodo2.NFILA)'#10#10'where periodo= '#39'SEMESTRAL'#39 +
+ #10'order by valor asc'#10#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'VALOR'
+ TableField = 'VALOR'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL1'
+ TableField = 'IMPORTE_TOTAL1'
+ end
+ item
+ DatasetField = 'DIFERENCIA'
+ TableField = 'DIFERENCIA'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = 'PORCENTAJE'
+ end
+ item
+ DatasetField = 'DESCRIPCION'
+ TableField = 'DESCRIPCION'
+ end
+ item
+ DatasetField = 'ANO1'
+ TableField = 'ANO1'
+ end
+ item
+ DatasetField = 'ANO2'
+ TableField = 'ANO2'
+ end>
+ end>
+ Name = 'InformeListadoFacturasGrafCompSemestral'
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'ANO1'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'ANO2'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = '1'
+ end
+ item
+ Name = 'ANO'
+ Value = '2010'
+ end
+ item
+ Name = 'NTOP'
+ Value = '5'
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ SQL =
+ 'select P.ANO, C.REFERENCIA, COALESCE(C.NOMBRE, P.NOMBRE) as NOMB' +
+ 'RE, p.Importe_TOTAL_ANO,'#10'COUNT(P.FECHA_FACTURA) as NUMFAC, SUM(P' +
+ '.IMPORTE_TOTAL) as IMPORTE_TOTAL,'#10'((SUM(P.IMPORTE_TOTAL)*100)/p.' +
+ 'Importe_TOTAL_ANO) as PORCENTAJE'#10#10'from V_INF_FAC_PROVEEDOR P'#10'lef' +
+ 't join CONTACTOS C on P.ID_PROVEEDOR = C.ID'#10#10'where p.ID_EMPRESA ' +
+ '= :ID_EMPRESA'#10'and P.ANO = :ANO'#10'group by 1,2,3,4'#10'order by 1,5 des' +
+ 'c'#10'rows 1 to :NTOP'#10#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ANO'
+ TableField = ''
+ SQLOrigin = 'ANO'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'NOMBRE'
+ TableField = 'NOMBRE'
+ end
+ item
+ DatasetField = 'NUMFAC'
+ TableField = ''
+ SQLOrigin = 'NUMFAC'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = ''
+ SQLOrigin = 'PORCENTAJE'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL_ANO'
+ TableField = ''
+ SQLOrigin = 'IMPORTE_TOTAL_ANO'
+ end>
+ end>
+ Name = 'InformeListadoProveedoresMayorFacturacionResumen'
+ Fields = <
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMPORTE_TOTAL_ANO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'NUMFAC'
+ DataType = datInteger
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ end
+ item
+ Params = <
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'ANO'
+ Value = ''
+ end
+ item
+ Name = 'NTOP'
+ Value = ''
+ end>
+ Statements = <
+ item
+ Connection = 'IBX'
+ SQL =
+ 'select P.ANO, C.REFERENCIA, COALESCE(C.NOMBRE, P.NOMBRE) as NOMB' +
+ 'RE,'#10'SUM(P.IMPORTE_DESCUENTO) as IMPORTE_DESCUENTO, SUM(P.IMPORTE' +
+ '_TOTAL) as IMPORTE_TOTAL,'#10'(SUM(P.IMPORTE_TOTAL) - SUM(P.IMPORTE_' +
+ 'DESCUENTO)) as IMPORTE_COBRADO,'#10'case when SUM(P.IMPORTE_TOTAL) =' +
+ ' 0 then 0'#10'else ((SUM(P.IMPORTE_DESCUENTO) * 100) / SUM(P.IMPORTE' +
+ '_TOTAL)) end as PORCENTAJE'#10#10'from V_INF_FAC_PROVEEDOR P'#10'left join' +
+ ' CONTACTOS C on P.ID_PROVEEDOR = C.ID'#10#10'where p.ID_EMPRESA = :ID_' +
+ 'EMPRESA'#10'and P.ANO = :ANO'#10'group by 1,2,3'#10'order by 1,5 desc'#10'rows 1' +
+ ' to :NTOP'#10#10#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ANO'
+ TableField = ''
+ SQLOrigin = 'ANO'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end
+ item
+ DatasetField = 'REFERENCIA'
+ TableField = 'REFERENCIA'
+ end
+ item
+ DatasetField = 'NOMBRE'
+ TableField = 'NOMBRE'
+ end
+ item
+ DatasetField = 'PORCENTAJE'
+ TableField = ''
+ SQLOrigin = 'PORCENTAJE'
+ end
+ item
+ DatasetField = 'IMPORTE_DESCUENTO'
+ TableField = 'IMPORTE_DESCUENTO'
+ end
+ item
+ DatasetField = 'IMPORTE_COBRADO'
+ TableField = ''
+ SQLOrigin = 'IMPORTE_COBRADO'
+ end>
+ end>
+ Name = 'InformeListadoProveedoresMayorDescuentoResumen'
+ Fields = <
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMPORTE_DESCUENTO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_COBRADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
end>
JoinDataTables = <>
UnionDataTables = <>
@@ -1132,35 +1651,35 @@ object RptFacturasProveedor: TRptFacturasProveedor
Top = 142
end
object frxCheckBoxObject1: TfrxCheckBoxObject
- Left = 296
- Top = 288
+ Left = 280
+ Top = 16
end
object frxChartObject1: TfrxChartObject
- Left = 296
- Top = 336
+ Left = 280
+ Top = 64
end
object frxGradientObject1: TfrxGradientObject
- Left = 360
- Top = 288
+ Left = 344
+ Top = 16
end
object frxCrossObject1: TfrxCrossObject
- Left = 360
- Top = 440
+ Left = 344
+ Top = 168
end
object frxOLEObject1: TfrxOLEObject
- Left = 296
- Top = 440
+ Left = 280
+ Top = 168
end
object frxBarCodeObject1: TfrxBarCodeObject
- Left = 360
- Top = 392
+ Left = 344
+ Top = 120
end
object frxRichObject1: TfrxRichObject
- Left = 296
- Top = 392
+ Left = 280
+ Top = 120
end
object frxReport: TfrxReport
- Version = '4.3'
+ Version = '4.7.71'
DotMatrixReport = False
EngineOptions.DoublePass = True
IniFile = '\Software\Fast Reports'
@@ -1169,63 +1688,47 @@ object RptFacturasProveedor: TRptFacturasProveedor
PrintOptions.Printer = 'Por defecto'
PrintOptions.PrintOnSheet = 0
ReportOptions.CreateDate = 37800.807714351900000000
- ReportOptions.LastChange = 39836.719287280100000000
+ ReportOptions.LastChange = 40577.743050081020000000
ScriptLanguage = 'PascalScript'
ScriptText.Strings = (
- 'procedure mContinuaOnBeforePrint(Sender: TfrxComponent);'
+ 'procedure Chart1OnBeforePrint(Sender: TfrxComponent);'
'begin'
- ' if Engine.FinalPass then'
- ' begin'
- ' if ( = ) then'
- ' begin '
- ' mContinua.Visible := False;'
- ' end '
- ' else'
- ' begin '
- ' mContinua.Visible := True;'
- ' end '
- ' end; '
+
+ ' if ( <> 0) then ' +
+ ' '
+
+ ' TLineSeries(Chart1.Series[0]).Title := '#39'Total Facturado '#39' +' +
+ ' IntToStr();'
+ ''
+ ' if ( <> 0) then'
+
+ ' TLineSeries(Chart1.Series[1]).Title := '#39'Total Facturado '#39' +' +
+ ' IntToStr()'
+ ' else'
+ ' Chart1.Series[1].Active := False; '
'end;'
''
- 'procedure Memo11OnBeforePrint(Sender: TfrxComponent);'
+ 'procedure Memo16OnBeforePrint(Sender: TfrxComponent);'
'var'
-
- ' ACadena : String; ' +
- ' '
+ ' Valor:Double; '
'begin'
- ' ACadena := ; '
- ' if Pos('#39'N'#186' de cuenta: '#39', ACadena) > 0 then'
- ' begin'
- ' Delete(ACadena, 1, 14);'
+ ' Valor := SUM() * 100; '
- ' Memo11.Lines.Text := '#39' '#39' + ACadena; ' +
- ' '
- ' end;'
- 'end;'
+ ' if (SUM()' +
+ ' = 0) then'
+ ' Valor := 100 - Valor '
+ ' else'
+
+ ' Valor := 100 - (Valor/SUM()); '
''
- 'procedure Memo10OnBeforePrint(Sender: TfrxComponent);'
- 'var'
-
- ' ACadena : String; ' +
- ' '
- 'begin'
-
- ' ACadena := ; '
- ' if Pos('#39'N'#186' de cuenta: '#39', ACadena) > 0 then'
- ' begin'
- ' Delete(ACadena, 1, 14);'
-
- ' Memo10.Lines.Text := '#39' '#39' + ACadena; ' +
- ' '
- ' end;'
+ ' memo16.lines.add(FormatFloat('#39'#,##0.00 %'#39',Valor));'
'end;'
''
'begin'
- ''
- 'end.')
+ 'end. ')
ShowProgress = False
StoreInDFM = False
OnStartReport = 'frxReportOnStartReport'
@@ -1236,15 +1739,23 @@ object RptFacturasProveedor: TRptFacturasProveedor
ShowDialog = False
UseFileCache = True
ShowProgress = False
+ OverwritePrompt = False
PrintOptimized = True
Outline = False
+ Background = False
+ HTMLTags = True
Author = 'FactuGES'
Subject = 'FactuGES'
- Background = False
Creator = 'FactuGES'
- HTMLTags = True
- Left = 424
- Top = 288
+ ProtectionFlags = [ePrint, eModify, eCopy, eAnnot]
+ HideToolbar = False
+ HideMenubar = False
+ HideWindowUI = False
+ FitWindow = False
+ CenterWindow = False
+ PrintScaling = False
+ Left = 408
+ Top = 16
end
object tbl_InformeListadoFacturas: TDAMemDataTable
RemoteUpdatesOptions = []
@@ -1316,8 +1827,6 @@ object RptFacturasProveedor: TRptFacturasProveedor
RemoteFetchEnabled = False
LocalSchema = schReport
LocalDataStreamer = Bin2DataStreamer
- DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
- MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'InformeListadoFacturas'
IndexDefs = <>
Left = 576
@@ -1333,6 +1842,7 @@ object RptFacturasProveedor: TRptFacturasProveedor
UserName = 'frxDBInformeListadoFacturas'
CloseDataSource = False
DataSource = DADSInformeListadoFacturas
+ BCDToCurrency = False
Left = 576
Top = 16
end
@@ -1411,8 +1921,6 @@ object RptFacturasProveedor: TRptFacturasProveedor
RemoteFetchEnabled = False
LocalSchema = schReport
LocalDataStreamer = Bin2DataStreamer
- DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
- MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'InformeListadoFacturasPendientes'
IndexDefs = <>
Left = 768
@@ -1428,6 +1936,7 @@ object RptFacturasProveedor: TRptFacturasProveedor
UserName = 'frxDBInformeListadoFacturasPendientes'
CloseDataSource = False
DataSource = DADSInformeListadoFacturasPendientes
+ BCDToCurrency = False
Left = 768
Top = 16
end
@@ -1441,6 +1950,7 @@ object RptFacturasProveedor: TRptFacturasProveedor
UserName = 'frxDBInformeListadoFacturasPendResumen'
CloseDataSource = False
DataSource = DADSInformeListadoFacturasPendResumen
+ BCDToCurrency = False
Left = 768
Top = 208
end
@@ -1448,6 +1958,7 @@ object RptFacturasProveedor: TRptFacturasProveedor
UserName = 'frxDBInformeListadoFacturasResumen'
CloseDataSource = False
DataSource = DADSInformeListadoFacturasResumen
+ BCDToCurrency = False
Left = 576
Top = 216
end
@@ -1465,8 +1976,6 @@ object RptFacturasProveedor: TRptFacturasProveedor
LogChanges = False
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteFetchEnabled = False
- DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
- MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
IndexDefs = <>
Left = 576
Top = 328
@@ -1479,8 +1988,6 @@ object RptFacturasProveedor: TRptFacturasProveedor
LogChanges = False
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteFetchEnabled = False
- DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
- MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
IndexDefs = <>
Left = 768
Top = 328
@@ -1493,4 +2000,325 @@ object RptFacturasProveedor: TRptFacturasProveedor
Left = 64
Top = 200
end
+ object DASInformeListadoFacturasGrafComp: TDADataSource
+ Left = 104
+ Top = 352
+ end
+ object tbl_InformeListadoFacturasGrafCompMensual: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeListadoFacturasGrafCompMensual'
+ IndexDefs = <>
+ Left = 104
+ Top = 408
+ end
+ object tbl_InformeListadoFacturasGrafCompTrimestral: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeListadoFacturasGrafCompTrimestral'
+ IndexDefs = <>
+ Left = 104
+ Top = 464
+ end
+ object frxDBInformeListadoFacturasGrafComp: TfrxDBDataset
+ UserName = 'frxDBInformeListadoFacturasGrafComp'
+ CloseDataSource = False
+ DataSource = DASInformeListadoFacturasGrafComp
+ BCDToCurrency = False
+ Left = 104
+ Top = 304
+ end
+ object tbl_InformeListadoFacturasGrafCompSemestral: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'VALOR'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'DESCRIPCION'
+ DataType = datString
+ Size = 20
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL1'
+ DataType = datCurrency
+ end
+ item
+ Name = 'DIFERENCIA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ID_EMPRESA1'
+ Value = ''
+ end
+ item
+ Name = 'ANO1'
+ Value = ''
+ end
+ item
+ Name = 'ID_EMPRESA2'
+ Value = ''
+ end
+ item
+ Name = 'ANO2'
+ Value = ''
+ end>
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeListadoFacturasGrafCompSemestral'
+ IndexDefs = <>
+ Left = 104
+ Top = 520
+ end
+ object frxDBInformeListadoProveedoresMayorFacturacionResumen: TfrxDBDataset
+ UserName = 'frxDBInformeListadoProveedoresMayorFacturacionResumen'
+ CloseDataSource = False
+ DataSource = DADSInformeListadoProveedoresMayorFacturacionResumen
+ BCDToCurrency = False
+ Left = 312
+ Top = 432
+ end
+ object DADSInformeListadoProveedoresMayorFacturacionResumen: TDADataSource
+ DataSet = tbl_InformeListadoProveedoresMayorFacturacionResumen.Dataset
+ DataTable = tbl_InformeListadoProveedoresMayorFacturacionResumen
+ Left = 312
+ Top = 488
+ end
+ object tbl_InformeListadoProveedoresMayorFacturacionResumen: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMPORTE_TOTAL_ANO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'NUMFAC'
+ DataType = datInteger
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = '1'
+ end
+ item
+ Name = 'ANO'
+ Value = '2010'
+ end
+ item
+ Name = 'NTOP'
+ Value = '5'
+ end>
+ MasterMappingMode = mmDataRequest
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeListadoProveedoresMayorFacturacionResumen'
+ IndexDefs = <>
+ Left = 312
+ Top = 544
+ end
+ object frxDBInformeListadoProveedoresMayorDescuentoResumen: TfrxDBDataset
+ UserName = 'frxDBInformeListadoProveedoresMayorDescuentoResumen'
+ CloseDataSource = False
+ DataSource = DADSInformeListadoProveedoresMayorDescuentoResumen
+ BCDToCurrency = False
+ Left = 616
+ Top = 432
+ end
+ object DADSInformeListadoProveedoresMayorDescuentoResumen: TDADataSource
+ DataSet = tbl_InformeListadoProveedoresMayorDescuentoResumen.Dataset
+ DataTable = tbl_InformeListadoProveedoresMayorDescuentoResumen
+ Left = 616
+ Top = 488
+ end
+ object tbl_InformeListadoProveedoresMayorDescuentoResumen: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <
+ item
+ Name = 'ANO'
+ DataType = datSmallInt
+ end
+ item
+ Name = 'REFERENCIA'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'IMPORTE_DESCUENTO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_COBRADO'
+ DataType = datCurrency
+ end
+ item
+ Name = 'PORCENTAJE'
+ DataType = datCurrency
+ end>
+ Params = <
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ Value = ''
+ end
+ item
+ Name = 'ANO'
+ Value = ''
+ end
+ item
+ Name = 'NTOP'
+ Value = ''
+ end>
+ MasterMappingMode = mmDataRequest
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ LocalSchema = schReport
+ LocalDataStreamer = Bin2DataStreamer
+ LogicalName = 'InformeListadoProveedoresMayorDescuentoResumen'
+ IndexDefs = <>
+ Left = 616
+ Top = 544
+ end
end
diff --git a/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.pas b/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.pas
index ad6ffa6a..84e15a63 100644
--- a/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.pas
+++ b/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.pas
@@ -37,6 +37,17 @@ type
tbl_InformeListadoFacturasPendResumen: TDAMemDataTable;
Bin2DataStreamer: TDABin2DataStreamer;
DARemoteDataAdapter: TDARemoteDataAdapter;
+ DASInformeListadoFacturasGrafComp: TDADataSource;
+ tbl_InformeListadoFacturasGrafCompMensual: TDAMemDataTable;
+ tbl_InformeListadoFacturasGrafCompTrimestral: TDAMemDataTable;
+ frxDBInformeListadoFacturasGrafComp: TfrxDBDataset;
+ tbl_InformeListadoFacturasGrafCompSemestral: TDAMemDataTable;
+ frxDBInformeListadoProveedoresMayorFacturacionResumen: TfrxDBDataset;
+ DADSInformeListadoProveedoresMayorFacturacionResumen: TDADataSource;
+ tbl_InformeListadoProveedoresMayorFacturacionResumen: TDAMemDataTable;
+ frxDBInformeListadoProveedoresMayorDescuentoResumen: TfrxDBDataset;
+ DADSInformeListadoProveedoresMayorDescuentoResumen: TDADataSource;
+ tbl_InformeListadoProveedoresMayorDescuentoResumen: TDAMemDataTable;
schReport: TDASchema;
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
@@ -47,19 +58,26 @@ type
FFechaFin: Variant;
FFechaVenInicio: Variant;
FFechaVenFin: Variant;
+ FAno1: Variant;
+ FAno2: Variant;
+ FIntervalo: Variant;
FListaIDProveedores: TIntegerArray;
FListaNombresProveedores: TStringList;
FImporteMinimo: Currency;
FDesglosado : Boolean;
+ FTopN: Integer;
procedure RecuperarNombresProveedores;
procedure PrepararTablaInforme(ATabla: TDAMemDataTable);
procedure PrepararTablaResumenInforme(ATabla: IDADataset);
+ procedure PrepararTablaInformeGrafComp(ATabla: TDAMemDataTable);
+ procedure PrepararTablaResumenInformeGrafComp(ATabla: TDAMemDataTable);
procedure IniciarParametrosInforme;
function _GenerarInforme(const TipoInforme: String): Binary;
public
function GenerarInformeIVA(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoFacturas(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoFacturasPendientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
+ function GenerarInformeFacturasGrafComp(const IdEmpresa: Integer; const Intervalo: Variant; const Ano1: Variant; const Ano2: Variant; const ListaIDProveedores: TIntegerArray; const TopN: Integer): Binary;
end;
implementation
@@ -68,7 +86,7 @@ implementation
uses
uSistemaFunc, StrUtils, uDataModuleServer, schFacturasProveedorClient_Intf,
- uROServer, DataAbstract4_Intf;
+ uROServer, DataAbstract4_Intf, srvGestorInformes_Impl;
const
rptInformeIVA = 'InformeIVAProveedores.fr3';
@@ -77,6 +95,7 @@ const
rptInformeListadoFacturasProveedorDesglosado = 'InformeListadoFacturasProveedorDesglosado.fr3';
rptInformeListadoFactuasProveedorPendiente = 'InformeListadoFacturasProveedorPendientes.fr3';
rptInformeListadoFactuasProveedorPendienteDesglosado = 'InformeListadoFacturasProveedorPendientesDesglosado.fr3';
+ rptInformeListadoFacturasProveedorGrafComp = 'InformeListadoFacturasProveedorGrafComp.fr3';
{ Dataset names for schReport }
ds_InformeListadoFacturasResumen = 'InformeListadoFacturasResumen';
@@ -99,6 +118,59 @@ begin
FreeANDNIL(FListaNombresProveedores);
end;
+function TRptFacturasProveedor.GenerarInformeFacturasGrafComp(
+ const IdEmpresa: Integer; const Intervalo, Ano1, Ano2: Variant;
+ const ListaIDProveedores: TIntegerArray; const TopN: Integer): Binary;
+var
+ AStream: TMemoryStream;
+ AInforme: Variant;
+
+begin
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FAno1 := Ano1;
+ FAno2 := Ano2;
+ FIntervalo := Intervalo;
+ FTopN := TopN;
+
+ if Assigned(FListaIDProveedores) then
+ FListaIDProveedores.Free;
+ FListaIDProveedores := ListaIDProveedores;
+
+ //Preparamos la tabla correspondiente y la abrimos para el informe
+ if (FIntervalo = CTE_MENSUAL) then
+ PrepararTablaInformeGrafComp(tbl_InformeListadoFacturasGrafCompMensual)
+ else if (FIntervalo = CTE_TRIMESTRAL) then
+ PrepararTablaInformeGrafComp(tbl_InformeListadoFacturasGrafCompTrimestral)
+ else
+ PrepararTablaInformeGrafComp(tbl_InformeListadoFacturasGrafCompSemestral);
+
+ //Se preparan las tablas del listado resumen del informe
+ PrepararTablaResumenInformeGrafComp(tbl_InformeListadoProveedoresMayorFacturacionResumen);
+ PrepararTablaResumenInformeGrafComp(tbl_InformeListadoProveedoresMayorDescuentoResumen);
+
+ Result := Binary.Create;
+
+ AInforme := DarRutaFichero(DarRutaInformes, rptInformeListadoFacturasProveedorGrafComp, IntTostr(FIdEmpresa));
+ if VarIsNull(AInforme) then
+ raise Exception.Create (('Error Servidor: GenerarInformeFacturasGrafComp, no encuentra informe ' + rptInformeListadoFacturasProveedorGrafComp));
+
+ frxReport.LoadFromFile(AInforme, True);
+// IniciarParametrosInforme;
+
+ frxReport.PrepareReport(False);
+ frxReport.PreviewPages.SaveToStream(Result);
+
+ finally
+ AStream.Free;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
+end;
+
function TRptFacturasProveedor.GenerarInformeIVA(const IdEmpresa: Integer;
const FechaInicio, FechaFin: Variant;
const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean;
@@ -445,6 +517,19 @@ begin
end;
end;
+procedure TRptFacturasProveedor.PrepararTablaInformeGrafComp(ATabla: TDAMemDataTable);
+begin
+ if ATabla.Active then
+ ATabla.Active := False;
+
+ DASInformeListadoFacturasGrafComp.DataTable := ATabla;
+ ATabla.ParamByName('ID_EMPRESA1').AsInteger := FIdEmpresa;
+ ATabla.ParamByName('ID_EMPRESA2').AsInteger := FIdEmpresa;
+ ATabla.ParamByName('ANO1').AsVariant := FAno1;
+ ATabla.ParamByName('ANO2').AsVariant := FAno2;
+ ATabla.Active := True;
+end;
+
procedure TRptFacturasProveedor.PrepararTablaResumenInforme(ATabla: IDADataset);
var
i: Integer;
@@ -494,6 +579,17 @@ begin
ATabla.Where.AddText(AWhereStr);
end;
+procedure TRptFacturasProveedor.PrepararTablaResumenInformeGrafComp(ATabla: TDAMemDataTable);
+begin
+ if ATabla.Active then
+ ATabla.Active := False;
+
+ ATabla.ParamByName('ID_EMPRESA').AsInteger := FIdEmpresa;
+ ATabla.ParamByName('ANO').AsVariant := FAno1;
+ ATabla.ParamByName('NTOP').AsInteger := FTopN;
+ ATabla.Active := True;
+end;
+
procedure TRptFacturasProveedor.RecuperarNombresProveedores;
var
AContactosService : IsrvContactos;
diff --git a/Source/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.pas b/Source/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.pas
index bfde10a1..46101346 100644
--- a/Source/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.pas
+++ b/Source/Modulos/Facturas de proveedor/Servidor/srvFacturasProveedor_Impl.pas
@@ -33,6 +33,10 @@ type
procedure DARemoteServiceCreate(Sender: TObject);
procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject;
var aConnectionName: string);
+
+ public
+ function DarListaAnos: StringArray;
+
end;
implementation
@@ -71,6 +75,24 @@ begin
bpFacturasProveedor.BusinessRulesID := BIZ_SERVER_FACTURAS_PROVEEDOR;
end;
+function TsrvFacturasProveedor.DarListaAnos: StringArray;
+var
+ dsAnos : IDADataset;
+begin
+ Result := StringArray.Create();
+ try
+ dsAnos := schFacturasProveedor.NewDataset(Connection, 'ListaAnosFacturas', '', True);
+ while not dsAnos.EOF do
+ begin
+ Result.Add(dsAnos.Fields[0].AsString);
+ dsAnos.Next;
+ end;
+ finally
+ dsAnos.Close;
+ dsAnos := NIL;
+ end;
+end;
+
procedure TsrvFacturasProveedor.DataAbstractServiceBeforeAcquireConnection(
aSender: TObject; var aConnectionName: string);
begin
diff --git a/Source/Modulos/Gestor de informes/Controller/GestorInformes_controller.dpk b/Source/Modulos/Gestor de informes/Controller/GestorInformes_controller.dpk
index 99f61879..45a44a35 100644
--- a/Source/Modulos/Gestor de informes/Controller/GestorInformes_controller.dpk
+++ b/Source/Modulos/Gestor de informes/Controller/GestorInformes_controller.dpk
@@ -43,6 +43,7 @@ contains
uIEditorInformeFacturasProveedorReport in 'View\uIEditorInformeFacturasProveedorReport.pas',
uIEditorInformePresupuestosReport in 'View\uIEditorInformePresupuestosReport.pas',
uIEditorInformeRecibosProveedorReport in 'View\uIEditorInformeRecibosProveedorReport.pas',
- uIEditorInformePedidosReport in 'View\uIEditorInformePedidosReport.pas';
+ uIEditorInformePedidosReport in 'View\uIEditorInformePedidosReport.pas',
+ uIEditorInformeFacturasProveedorReportGrafComp in 'View\uIEditorInformeFacturasProveedorReportGrafComp.pas';
end.
diff --git a/Source/Modulos/Gestor de informes/Controller/GestorInformes_controller.dproj b/Source/Modulos/Gestor de informes/Controller/GestorInformes_controller.dproj
index 74356137..367a8884 100644
--- a/Source/Modulos/Gestor de informes/Controller/GestorInformes_controller.dproj
+++ b/Source/Modulos/Gestor de informes/Controller/GestorInformes_controller.dproj
@@ -47,6 +47,7 @@
+
diff --git a/Source/Modulos/Gestor de informes/Controller/View/uIEditorInformeFacturasProveedorReportGrafComp.pas b/Source/Modulos/Gestor de informes/Controller/View/uIEditorInformeFacturasProveedorReportGrafComp.pas
new file mode 100644
index 00000000..06e3335a
--- /dev/null
+++ b/Source/Modulos/Gestor de informes/Controller/View/uIEditorInformeFacturasProveedorReportGrafComp.pas
@@ -0,0 +1,28 @@
+unit uIEditorInformeFacturasProveedorReportGrafComp;
+
+interface
+
+uses
+ FactuGES_Intf, uIEditorInformeBase;
+
+type
+ IEditorInformeFacturasProveedorReportGrafComp = interface(IEditorInformeBase)
+ ['{1F80F45F-AAD6-460D-9E68-AD4492009926}']
+
+ function GetIntervalo: Variant;
+ function GetAno1: Variant;
+ function GetAno2: Variant;
+
+ function GetListaIDProveedores: TIntegerArray;
+
+ property Intervalo: Variant read GetIntervalo;
+ property Ano1: Variant read GetAno1;
+ property Ano2: Variant read GetAno2;
+
+ property ListaIDProveedores: TIntegerArray read GetListaIDProveedores;
+ end;
+
+
+implementation
+
+end.
diff --git a/Source/Modulos/Gestor de informes/Controller/uGestorInformesController.pas b/Source/Modulos/Gestor de informes/Controller/uGestorInformesController.pas
index 39161e61..34c076b4 100644
--- a/Source/Modulos/Gestor de informes/Controller/uGestorInformesController.pas
+++ b/Source/Modulos/Gestor de informes/Controller/uGestorInformesController.pas
@@ -14,7 +14,8 @@ type
property DataModule: IDataModuleGestorInformes read GetDataModule;
// procedure Preview(AFactura : IBizFacturaCliente; AllItems: Boolean = false);
// procedure Print(AFactura : IBizFacturaCliente; AllItems: Boolean = false);
-
+ function DarListaIntervalos: TStringList;
+
//MODULO PRESUPUESTOS DE CLIENTE
procedure VerInformeListadoPresupuestos;
@@ -34,6 +35,8 @@ type
procedure VerInformeIVAProveedores;
procedure VerInformeListadoFacturasProv;
procedure VerInformeListadoFacturasProvPendientes;
+ procedure VerInformeFacturasProvGrafComp;
+ function DarListaAnosFacturasProv: TStringList;
//MODULO RECIBOS DE PROVEEDOR
procedure VerInformeListadoRecibosProvPendientes;
@@ -83,6 +86,9 @@ type
procedure VerInformeIVAProveedores;
procedure VerInformeListadoFacturasProv;
procedure VerInformeListadoFacturasProvPendientes;
+ procedure VerInformeFacturasProvGrafComp;
+ function DarListaAnosFacturasProv: TStringList;
+ function DarListaIntervalos: TStringList;
//MODULO RECIBOS DE PROVEEDOR
procedure VerInformeListadoRecibosProvPendientes;
@@ -104,7 +110,7 @@ uses
uIEditorInformeIVAProveedoresReport, uIEditorInformeFacturasProveedorReport,
uIEditorInformeFacturasProveedorPendientesReport, uIEditorInformeRecibosProveedorReport,
uIEditorInformeRecibosProvPendientesReport,
- uIEditorInformePedidosReport;
+ uIEditorInformePedidosReport, uIEditorInformeFacturasProveedorReportGrafComp;
{procedure CopiarArticulosPedido(AOrigen: IBizDetallesPedidoCliente;
@@ -264,6 +270,16 @@ begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end;
+function TGestorInformesController.DarListaAnosFacturasProv: TStringList;
+begin
+ Result := FDataModule.DarListaAnosFacturasProv;
+end;
+
+function TGestorInformesController.DarListaIntervalos: TStringList;
+begin
+ Result := FDataModule.DarListaIntervalos;
+end;
+
destructor TGestorInformesController.Destroy;
begin
FDataModule := Nil;
@@ -275,6 +291,30 @@ begin
Result := FDataModule;
end;
+procedure TGestorInformesController.VerInformeFacturasProvGrafComp;
+var
+ AStream: Binary;
+ AEditor : IEditorInformeFacturasProveedorReportGrafComp;
+begin
+ AEditor := NIL;
+ CreateEditor('EditorInformeFacturasProveedorReportGrafComp', IEditorInformeFacturasProveedorReportGrafComp, AEditor);
+ if Assigned(AEditor) then
+ try
+ AEditor.Controller := Self;
+ AEditor.Title := 'Informe comparativo de facturación de proveedores';
+
+ AStream := FDataModule.GenerarInformeFacturasProvGrafComp(AppFactuGES.EmpresaActiva.ID,
+ AEditor.Intervalo, AEditor.Ano1, AEditor.Ano2, AEditor.ListaIDProveedores);
+
+ AEditor.LoadFromStream(AStream);
+ AEditor.Preview;
+ finally
+ AEditor.Release;
+ AEditor := Nil;
+ FreeAndNil(AStream);
+ end;
+end;
+
procedure TGestorInformesController.VerInformeIVAClientes;
var
AStream: Binary;
diff --git a/Source/Modulos/Gestor de informes/Data/uDataModuleGestorInformes.dfm b/Source/Modulos/Gestor de informes/Data/uDataModuleGestorInformes.dfm
index 03b96bdd..d4b8f8d4 100644
--- a/Source/Modulos/Gestor de informes/Data/uDataModuleGestorInformes.dfm
+++ b/Source/Modulos/Gestor de informes/Data/uDataModuleGestorInformes.dfm
@@ -10,12 +10,12 @@ inherited DataModuleGestorInformes: TDataModuleGestorInformes
Top = 16
end
object rda_GestorInformes: TDARemoteDataAdapter
+ DataStreamer = Bin2DataStreamer
GetSchemaCall.RemoteService = RORemoteService
GetDataCall.RemoteService = RORemoteService
UpdateDataCall.RemoteService = RORemoteService
GetScriptsCall.RemoteService = RORemoteService
RemoteService = RORemoteService
- DataStreamer = Bin2DataStreamer
Left = 43
Top = 135
end
@@ -47,8 +47,6 @@ inherited DataModuleGestorInformes: TDataModuleGestorInformes
end>
StreamingOptions = [soDisableEventsWhileStreaming]
RemoteDataAdapter = rda_GestorInformes
- DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
- MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
LogicalName = 'DirectoryData'
IndexDefs = <>
Left = 184
diff --git a/Source/Modulos/Gestor de informes/Data/uDataModuleGestorInformes.pas b/Source/Modulos/Gestor de informes/Data/uDataModuleGestorInformes.pas
index 1731b9a4..28e01990 100644
--- a/Source/Modulos/Gestor de informes/Data/uDataModuleGestorInformes.pas
+++ b/Source/Modulos/Gestor de informes/Data/uDataModuleGestorInformes.pas
@@ -21,6 +21,7 @@ type
procedure DAClientDataModuleCreate(Sender: TObject);
public
// function GetItems : IBizFacturaCliente;
+ function DarListaIntervalos: TStringList;
//MODULO PRESUPUESTOS DE CLIENTE
function GenerarInformeListadoPresupuestos(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
@@ -41,6 +42,8 @@ type
function GenerarInformeIVAProveedores(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoFacturasProv(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoFacturasProvPendientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
+ function GenerarInformeFacturasProvGrafComp(const IdEmpresa: Integer; const Intervalo: Variant; const Ano1: Variant; const Ano2: Variant; const ListaIDProveedores: TIntegerArray): Binary;
+ function DarListaAnosFacturasProv: TStringList;
//MODULO RECIBOS DE CLIENTE
function GenerarInformeListadoRecibosProvPendientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
@@ -55,7 +58,7 @@ implementation
uses
uDataModuleConexion, uDataTableUtils, cxControls,
- Dialogs;
+ Dialogs, DataAbstract4_Intf;
{ TdmPresupuestos }
@@ -65,6 +68,48 @@ begin
RORemoteService.Message := dmConexion.Message;
end;
+function TDataModuleGestorInformes.DarListaAnosFacturasProv: TStringList;
+var
+ i: Integer;
+ AResultado : StringArray;
+begin
+ Result := Nil;
+ try
+ AResultado := (RORemoteService as IsrvGestorInformes).DarListaAnosFacturasProv;
+ Result := TStringList.Create;
+ for i:= 0 to AResultado.Count - 1 do
+ Result.Add(AResultado.Items[i]);
+ finally
+ FreeANDNIL(AResultado)
+ end;
+end;
+
+function TDataModuleGestorInformes.DarListaIntervalos: TStringList;
+var
+ i: Integer;
+ AResultado : StringArray;
+begin
+ Result := Nil;
+ try
+ AResultado := (RORemoteService as IsrvGestorInformes).DarListaIntervalos;
+ Result := TStringList.Create;
+ for i:= 0 to AResultado.Count - 1 do
+ Result.Add(AResultado.Items[i]);
+ finally
+ FreeANDNIL(AResultado)
+ end;
+end;
+
+function TDataModuleGestorInformes.GenerarInformeFacturasProvGrafComp(
+ const IdEmpresa: Integer; const Intervalo, Ano1, Ano2: Variant;
+ const ListaIDProveedores: TIntegerArray): Binary;
+begin
+ try
+ Result := (RORemoteService as IsrvGestorInformes).GenerarInformeFacturasProvGrafComp(IdEmpresa, Intervalo, Ano1, Ano2, ListaIdProveedores, 7);
+ finally
+ end;
+end;
+
function TDataModuleGestorInformes.GenerarInformeIVAClientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
begin
try
diff --git a/Source/Modulos/Gestor de informes/Model/Data/uIDataModuleGestorInformes.pas b/Source/Modulos/Gestor de informes/Model/Data/uIDataModuleGestorInformes.pas
index 1e85096f..f54d1732 100644
--- a/Source/Modulos/Gestor de informes/Model/Data/uIDataModuleGestorInformes.pas
+++ b/Source/Modulos/Gestor de informes/Model/Data/uIDataModuleGestorInformes.pas
@@ -3,12 +3,14 @@ unit uIDataModuleGestorInformes;
interface
uses
- uROTypes, FactuGES_Intf;
+ uROTypes, Classes, FactuGES_Intf;
type
IDataModuleGestorInformes = interface
+
['{65FB8E9E-5218-43DC-80AD-BDB4383B7064}']
// function GetItems: IBizFacturaCliente;
+ function DarListaIntervalos: TStringList;
procedure getInforme;
//MODULO PRESUPUESTOS DE CLIENTE
@@ -31,6 +33,9 @@ type
function GenerarInformeListadoFacturasProv(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoFacturasProvPendientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
+ function GenerarInformeFacturasProvGrafComp(const IdEmpresa: Integer; const Intervalo: Variant; const Ano1: Variant; const Ano2: Variant; const ListaIDProveedores: TIntegerArray): Binary;
+ function DarListaAnosFacturasProv: TStringList;
+
//MODULO RECIBOS DE CLIENTE
function GenerarInformeListadoRecibosProvPendientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoRecibosProveedor(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
diff --git a/Source/Modulos/Gestor de informes/Plugin/uPluginGestorInformes.dfm b/Source/Modulos/Gestor de informes/Plugin/uPluginGestorInformes.dfm
index 9b80ff8a..663ec359 100644
--- a/Source/Modulos/Gestor de informes/Plugin/uPluginGestorInformes.dfm
+++ b/Source/Modulos/Gestor de informes/Plugin/uPluginGestorInformes.dfm
@@ -103,6 +103,12 @@ object PluginGestorInformes: TPluginGestorInformes
ImageIndex = 0
OnExecute = actInformeRecibosProvPendientesExecute
end
+ object actInformeFacturasProveedorGrafComp: TAction
+ Category = 'Facturas de proveedor'
+ Caption = 'Informe comparativo de facturaci'#243'n de proveedores'
+ ImageIndex = 0
+ OnExecute = actInformeFacturasProveedorGrafCompExecute
+ end
end
object MainMenu: TMainMenu
Images = LargeImages
@@ -162,6 +168,14 @@ object PluginGestorInformes: TPluginGestorInformes
Tag = 130
Action = actInformeRecibosProvPendientes
end
+ object N5: TMenuItem
+ Tag = 140
+ Caption = '-'
+ end
+ object Informecomparativodefacturacindeproveedores1: TMenuItem
+ Tag = 150
+ Action = actInformeFacturasProveedorGrafComp
+ end
end
end
object SmallImages: TPngImageList
diff --git a/Source/Modulos/Gestor de informes/Plugin/uPluginGestorInformes.pas b/Source/Modulos/Gestor de informes/Plugin/uPluginGestorInformes.pas
index 766a0a0a..489e0a7b 100644
--- a/Source/Modulos/Gestor de informes/Plugin/uPluginGestorInformes.pas
+++ b/Source/Modulos/Gestor de informes/Plugin/uPluginGestorInformes.pas
@@ -41,6 +41,9 @@ type
N4: TMenuItem;
Listadoderecibosdeproveedor1: TMenuItem;
Listadoderecibosdeproveedorpendientes1: TMenuItem;
+ actInformeFacturasProveedorGrafComp: TAction;
+ N5: TMenuItem;
+ Informecomparativodefacturacindeproveedores1: TMenuItem;
procedure actInformeFacturasClienteExecute(Sender: TObject);
procedure actInformeFacturasClientePendientesExecute(Sender: TObject);
procedure actInformeFacturasClienteIVAExecute(Sender: TObject);
@@ -51,6 +54,7 @@ type
procedure actInformeFacturasProveedorIVAExecute(Sender: TObject);
procedure actInformeRecibosProveedorExecute(Sender: TObject);
procedure actInformeRecibosProvPendientesExecute(Sender: TObject);
+ procedure actInformeFacturasProveedorGrafCompExecute(Sender: TObject);
private
FController : IGestorInformesController;
public
@@ -98,6 +102,12 @@ begin
FController.VerInformeListadoFacturasProv;
end;
+procedure TPluginGestorInformes.actInformeFacturasProveedorGrafCompExecute(
+ Sender: TObject);
+begin
+ FController.VerInformeFacturasProvGrafComp;
+end;
+
procedure TPluginGestorInformes.actInformeFacturasProveedorIVAExecute(
Sender: TObject);
begin
diff --git a/Source/Modulos/Gestor de informes/Servidor/srvGestorInformes_Impl.pas b/Source/Modulos/Gestor de informes/Servidor/srvGestorInformes_Impl.pas
index 6419edd5..6dea5f7f 100644
--- a/Source/Modulos/Gestor de informes/Servidor/srvGestorInformes_Impl.pas
+++ b/Source/Modulos/Gestor de informes/Servidor/srvGestorInformes_Impl.pas
@@ -25,12 +25,19 @@ const
ds_Customers = 'Customers';
ds_Regions = 'Regions';
+ CTE_MENSUAL = 'Mensual';
+ CTE_TRIMESTRAL = 'Trimestral';
+ CTE_SEMESTRAL = 'Semestral';
+
type
{ TGestorInformes }
TsrvGestorInformes = class(TDataAbstractService, IsrvGestorInformes)
Schema: TDASchema;
Bin2DataStreamer: TDABin2DataStreamer;
public
+ //MODULO DE INFORMES
+ function DarListaIntervalos: StringArray;
+
//MODULO PRESUPUESTOS CLIENTE
function GenerarInformeListadoPresupuestos(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
@@ -39,6 +46,9 @@ type
function GenerarInformeListadoFacturasCli(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoFacturasCliPendientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
+ function GenerarInformeFacturasCliGrafComp(const IdEmpresa: Integer; const Intervalo: Variant; const Ano1: Variant; const Ano2: Variant; const ListaIDClientes: TIntegerArray; const TopN: Integer): Binary;
+ function DarListaAnosFacturasCli: StringArray;
+
//MODULO RECIBOS CLIENTE
function GenerarInformeListadoRecibosCliente(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoRecibosCliPendientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
@@ -51,6 +61,9 @@ type
function GenerarInformeListadoFacturasProv(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoFacturasProvPendientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
+ function GenerarInformeFacturasProvGrafComp(const IdEmpresa: Integer; const Intervalo: Variant; const Ano1: Variant; const Ano2: Variant; const ListaIDProveedores: TIntegerArray; const TopN: Integer): Binary;
+ function DarListaAnosFacturasProv: StringArray;
+
//MODULO RECIBOS PROVEEDOR
function GenerarInformeListadoRecibosProveedor(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
function GenerarInformeListadoRecibosProvPendientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
@@ -62,13 +75,78 @@ implementation
uses
{Generated:} FactuGES_Invk, uDataModuleServer, uDatabaseUtils, Dialogs,
uRptPresupuestosCliente_Server, uRptFacturasCliente_Server, uRptRecibosCliente_Server,
- uRptPedidosProveedor_Server, uRptFacturasProveedor_Server, uRptRecibosProveedor_Server;
+ uRptPedidosProveedor_Server, uRptFacturasProveedor_Server, uRptRecibosProveedor_Server,
+ srvFacturasProveedor_Impl, srvFacturasCliente_Impl;
procedure Create_srvGestorInformes(out anInstance: IUnknown);
begin
anInstance := TsrvGestorInformes.Create(nil);
end;
+
+function TsrvGestorInformes.DarListaAnosFacturasCli: StringArray;
+var
+ AServer : TsrvFacturasCliente;
+begin
+ Result := Nil;
+ AServer := TsrvFacturasCliente.Create(nil);
+ try
+ Result := AServer.DarListaAnos;
+ finally
+ FreeAndNIL(AServer);
+ end;
+end;
+
+function TsrvGestorInformes.DarListaAnosFacturasProv: StringArray;
+var
+ AServer : TsrvFacturasProveedor;
+begin
+ Result := Nil;
+ AServer := TsrvFacturasProveedor.Create(nil);
+ try
+ Result := AServer.DarListaAnos;
+ finally
+ FreeAndNIL(AServer);
+ end;
+end;
+
+
+function TsrvGestorInformes.DarListaIntervalos: StringArray;
+begin
+ Result := StringArray.Create();
+ Result.Add(CTE_MENSUAL);
+ Result.Add(CTE_TRIMESTRAL);
+ Result.Add(CTE_SEMESTRAL);
+end;
+
+function TsrvGestorInformes.GenerarInformeFacturasCliGrafComp(
+ const IdEmpresa: Integer; const Intervalo, Ano1, Ano2: Variant;
+ const ListaIDClientes: TIntegerArray; const TopN: Integer): Binary;
+var
+ AReportGenerator : TRptFacturasCliente;
+begin
+ AReportGenerator := TRptFacturasCliente.Create(nil);
+ try
+ Result := AReportGenerator.GenerarInformeFacturasGrafComp(IdEmpresa, Intervalo, Ano1, Ano2, ListaIDClientes, TopN);
+ finally
+ FreeAndNIL(AReportGenerator);
+ end;
+end;
+
+function TsrvGestorInformes.GenerarInformeFacturasProvGrafComp(
+ const IdEmpresa: Integer; const Intervalo, Ano1, Ano2: Variant;
+ const ListaIDProveedores: TIntegerArray; const TopN: Integer): Binary;
+var
+ AReportGenerator : TRptFacturasProveedor;
+begin
+ AReportGenerator := TRptFacturasProveedor.Create(nil);
+ try
+ Result := AReportGenerator.GenerarInformeFacturasGrafComp(IdEmpresa, Intervalo, Ano1, Ano2, ListaIDProveedores, TopN);
+ finally
+ FreeAndNIL(AReportGenerator);
+ end;
+end;
+
function TsrvGestorInformes.GenerarInformeIVAClientes(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
var
AReportGenerator : TRptFacturasCliente;
diff --git a/Source/Modulos/Gestor de informes/Views/GestorInformes_view.dpk b/Source/Modulos/Gestor de informes/Views/GestorInformes_view.dpk
index 958b4734..12859f3c 100644
--- a/Source/Modulos/Gestor de informes/Views/GestorInformes_view.dpk
+++ b/Source/Modulos/Gestor de informes/Views/GestorInformes_view.dpk
@@ -64,11 +64,13 @@ requires
dxLayoutControlD11,
dxComnD11,
cxEditorsD11,
- cxDataD11;
+ cxDataD11,
+ dxCoreD11,
+ fqb110,
+ bdertl;
contains
uGestorInformesViewRegister in 'uGestorInformesViewRegister.pas',
- uViewPeriodoFechas in 'uViewPeriodoFechas.pas' {frViewPeriodoFechas: TFrame},
uViewFiltroImportes in 'uViewFiltroImportes.pas' {frViewFiltroImportes: TFrame},
uEditorInformeIVAClientesReport in 'uEditorInformeIVAClientesReport.pas' {fEditorInformeIVAClientesReport: TForm},
uEditorInformeBase in 'uEditorInformeBase.pas' {fEditorInformeBase: TForm},
@@ -85,6 +87,9 @@ contains
uEditorInformeFacturasProveedorReport in 'uEditorInformeFacturasProveedorReport.pas' {fEditorInformeFacturasProveedorReport: TForm},
uEditorInformePedidosReport in 'uEditorInformePedidosReport.pas' {fEditorInformePedidosReport: TForm},
uEditorInformeRecibosProveedorReport in 'uEditorInformeRecibosProveedorReport.pas' {fEditorInformeRecibosProveedorReport: TForm},
- uEditorInformePresupuestosReport in 'uEditorInformePresupuestosReport.pas' {fEditorInformePresupuestosReport: TForm};
+ uEditorInformePresupuestosReport in 'uEditorInformePresupuestosReport.pas' {fEditorInformePresupuestosReport: TForm},
+ uViewPeriodoFechas in 'uViewPeriodoFechas.pas' {frViewPeriodoFechas: TFrame},
+ uViewIntervaloComparativo in 'uViewIntervaloComparativo.pas' {TfrViewIntervaloComparativo: TFrame},
+ uEditorInformeFacturasProveedorReportGrafComp in 'uEditorInformeFacturasProveedorReportGrafComp.pas' {fEditorInformeFacturasProveedorReportGrafComp: TForm};
end.
diff --git a/Source/Modulos/Gestor de informes/Views/GestorInformes_view.dproj b/Source/Modulos/Gestor de informes/Views/GestorInformes_view.dproj
index 6a768ffc..188c4328 100644
--- a/Source/Modulos/Gestor de informes/Views/GestorInformes_view.dproj
+++ b/Source/Modulos/Gestor de informes/Views/GestorInformes_view.dproj
@@ -38,40 +38,49 @@
MainSource
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
TForm
@@ -92,6 +101,10 @@
TForm
+
+
+ TForm
+
TForm
@@ -105,7 +118,7 @@
TForm
-
+
TForm
@@ -137,6 +150,10 @@
TFrame
+
+
+ TFrame
+
TFrame
@@ -145,12 +162,6 @@
TFrame
-
-
-
-
-
-