diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj
index 3efdabfa..377a649c 100644
--- a/Source/Base/Base.dproj
+++ b/Source/Base/Base.dproj
@@ -44,13 +44,6 @@
Package
FalseTrueFalseLibreria base de FactuGESFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0
-
-
-
-
-
-
-
VCL for the Web Design Package for CodeGear RAD Studio
CodeGear WebSnap Components
CodeGear SOAP Components
@@ -65,53 +58,53 @@
MainSource
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
TForm
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.dproj b/Source/Cliente/FactuGES.dproj
index cefc62b7..5bec7c8c 100644
--- a/Source/Cliente/FactuGES.dproj
+++ b/Source/Cliente/FactuGES.dproj
@@ -53,7 +53,7 @@
Delphi.Personality
VCLApplication
-FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2290FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.2.9.0FactuGESFactuGES2.2.9.0
+FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2300FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.0.0FactuGESFactuGES2.3.0.0
diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res
index 998bfc49..b1b8e68d 100644
Binary files a/Source/Cliente/FactuGES.res and b/Source/Cliente/FactuGES.res differ
diff --git a/Source/Informes/InformeIVAClientes.fr3 b/Source/Informes/InformeIVAClientes.fr3
index a76bb7a6..01b01df9 100644
--- a/Source/Informes/InformeIVAClientes.fr3
+++ b/Source/Informes/InformeIVAClientes.fr3
@@ -1,22 +1,20 @@
-
+
-
-
-
-
-
-
+
+
+
+
-
+
-
+
@@ -26,7 +24,7 @@
-
+
@@ -35,12 +33,33 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/InformeIVAClientesDesglosado.fr3 b/Source/Informes/InformeIVAClientesDesglosado.fr3
index a98eb2f0..b1c25be6 100644
--- a/Source/Informes/InformeIVAClientesDesglosado.fr3
+++ b/Source/Informes/InformeIVAClientesDesglosado.fr3
@@ -1,22 +1,21 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
-
+
+
-
+
@@ -26,7 +25,7 @@
-
+
@@ -35,16 +34,36 @@
-
+
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/InformeIVAProveedores.fr3 b/Source/Informes/InformeIVAProveedores.fr3
index fd59f2ed..634ccfa9 100644
--- a/Source/Informes/InformeIVAProveedores.fr3
+++ b/Source/Informes/InformeIVAProveedores.fr3
@@ -1,22 +1,20 @@
-
+
-
-
-
-
-
-
+
+
+
+
-
+
-
+
@@ -26,7 +24,7 @@
-
+
@@ -35,12 +33,33 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/InformeIVAProveedoresDesglosado.fr3 b/Source/Informes/InformeIVAProveedoresDesglosado.fr3
index 8104a234..2e078546 100644
--- a/Source/Informes/InformeIVAProveedoresDesglosado.fr3
+++ b/Source/Informes/InformeIVAProveedoresDesglosado.fr3
@@ -1,22 +1,20 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
-
+
-
+
@@ -26,7 +24,7 @@
-
+
@@ -35,16 +33,37 @@
-
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/InformeListadoFacturasCliente.fr3 b/Source/Informes/InformeListadoFacturasCliente.fr3
index cf36ba76..0d065aec 100644
--- a/Source/Informes/InformeListadoFacturasCliente.fr3
+++ b/Source/Informes/InformeListadoFacturasCliente.fr3
@@ -1,22 +1,21 @@
-
+
-
-
-
-
-
-
+
+
+
+
-
+
+
-
+
@@ -26,7 +25,7 @@
-
+
@@ -35,19 +34,32 @@
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/InformeListadoFacturasClienteDesglosado.fr3 b/Source/Informes/InformeListadoFacturasClienteDesglosado.fr3
index 193441fb..e0e1e55f 100644
--- a/Source/Informes/InformeListadoFacturasClienteDesglosado.fr3
+++ b/Source/Informes/InformeListadoFacturasClienteDesglosado.fr3
@@ -1,22 +1,20 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
-
+
-
+
@@ -26,7 +24,7 @@
-
+
@@ -35,28 +33,41 @@
-
+
-
-
+
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/InformeListadoFacturasProveedor.fr3 b/Source/Informes/InformeListadoFacturasProveedor.fr3
index c5e84dfd..811c567a 100644
--- a/Source/Informes/InformeListadoFacturasProveedor.fr3
+++ b/Source/Informes/InformeListadoFacturasProveedor.fr3
@@ -1,22 +1,20 @@
-
+
-
-
-
-
-
-
+
+
+
+
-
+
-
+
@@ -27,7 +25,7 @@
-
+
@@ -37,12 +35,33 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Informes/InformeListadoFacturasProveedorDesglosado.fr3 b/Source/Informes/InformeListadoFacturasProveedorDesglosado.fr3
index aa9488cb..4c1a78e3 100644
--- a/Source/Informes/InformeListadoFacturasProveedorDesglosado.fr3
+++ b/Source/Informes/InformeListadoFacturasProveedorDesglosado.fr3
@@ -1,22 +1,20 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
-
+
-
+
@@ -25,9 +23,9 @@
-
+
-
+
@@ -37,16 +35,37 @@
-
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm
index c40d26bd..630227e6 100644
--- a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm
+++ b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.dfm
@@ -1,8 +1,9 @@
object RptFacturasCliente: TRptFacturasCliente
OldCreateOrder = True
OnCreate = DataModuleCreate
+ OnDestroy = DataModuleDestroy
Height = 464
- Width = 688
+ Width = 869
object DADataCabecera: TDADataSource
DataSet = tbl_Cabecera.Dataset
DataTable = tbl_Cabecera
@@ -354,6 +355,66 @@ object RptFacturasCliente: TRptFacturasCliente
object schReport: TDASchema
ConnectionManager = dmServer.ConnectionManager
Datasets = <
+ item
+ Params = <>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ TargetTable = 'v_Facturas_cliente'
+ Name = 'IBX'
+ SQL =
+ 'select ID_EMPRESA,'#10'NOMBRE,'#10'sum(BASE_IMPONIBLE) as BASE_IMPONIBLE' +
+ ','#10'sum(IMPORTE_IVA) as IMPORTE_IVA,'#10'sum(IMPORTE_TOTAL) AS IMPORTE' +
+ '_TOTAL'#10'from V_facturas_cliente'#10'group by 1,2'#10'order by 1,2'#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID_EMPRESA'
+ TableField = 'ID_EMPRESA'
+ end
+ item
+ DatasetField = 'NOMBRE'
+ TableField = 'NOMBRE'
+ end
+ item
+ DatasetField = 'BASE_IMPONIBLE'
+ TableField = 'BASE_IMPONIBLE'
+ end
+ item
+ DatasetField = 'IMPORTE_IVA'
+ TableField = 'IMPORTE_IVA'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end>
+ end>
+ Name = 'ListadoFacturasResumen'
+ Fields = <
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'BASE_IMPONIBLE'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_IVA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end>
+ end
item
Params = <>
Statements = <
@@ -1311,42 +1372,20 @@ object RptFacturasCliente: TRptFacturasCliente
PrintOptions.Printer = 'Por defecto'
PrintOptions.PrintOnSheet = 0
ReportOptions.CreateDate = 37800.807714351900000000
- ReportOptions.LastChange = 39770.742049143520000000
+ ReportOptions.LastChange = 39882.453172557870000000
ScriptLanguage = 'PascalScript'
ScriptText.Strings = (
- 'procedure frxReportOnStartReport(Sender: TfrxComponent);'
- 'begin'
- ' Set('#39'Pagina'#39', 0);'
- ' Set('#39'TotalPaginas'#39', 0); '
- 'end;'
- ''
- 'procedure Band1OnBeforePrint(Sender: TfrxComponent);'
- 'begin'
- ' if not Engine.FinalPass then'
- ' Set('#39'TotalPaginas'#39', ( + 1));'
- ''
- ' if Engine.FinalPass then'
- ' Set('#39'Pagina'#39', ( + 1)); '
- 'end;'
- ''
'procedure mContinuaOnBeforePrint(Sender: TfrxComponent);'
'begin'
' if Engine.FinalPass then'
' begin'
-
- ' //A la vez que salta este salta la asignacion de pagina por ' +
- 'lo que no coincide nunca si no suponemos +1 ' +
- ' ' +
- ' ' +
- ' ' +
- ' '
- ' if (( + 1) = ) then'
+ ' if ( = ) then'
' begin '
- ' mContinua.Visible := True;'
+ ' mContinua.Visible := False;'
' end '
' else'
' begin '
- ' mContinua.Visible := False;'
+ ' mContinua.Visible := True;'
' end '
' end; '
'end;'
@@ -1503,4 +1542,31 @@ object RptFacturasCliente: TRptFacturasCliente
Left = 576
Top = 16
end
+ object tbl_InformeListadoFacturasResumen: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <>
+ Params = <>
+ MasterMappingMode = mmDataRequest
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
+ MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
+ IndexDefs = <>
+ Left = 584
+ Top = 304
+ end
+ object DADSInformeListadoFacturasResumen: TDADataSource
+ DataSet = tbl_InformeListadoFacturasResumen.Dataset
+ DataTable = tbl_InformeListadoFacturasResumen
+ Left = 584
+ Top = 248
+ end
+ object frxDBInformeListadoFacturasResumen: TfrxDBDataset
+ UserName = 'frxDBInformeListadoFacturasResumen'
+ CloseDataSource = True
+ DataSource = DADSInformeListadoFacturasResumen
+ Left = 584
+ Top = 192
+ 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 acf8dfae..25824511 100644
--- a/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas
+++ b/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas
@@ -33,13 +33,33 @@ type
tbl_InformeListadoFacturas: TDAMemDataTable;
DADSInformeListadoFacturas: TDADataSource;
frxDBInformeListadoFacturas: TfrxDBDataset;
+ tbl_InformeListadoFacturasResumen: TDAMemDataTable;
+ DADSInformeListadoFacturasResumen: TDADataSource;
+ frxDBInformeListadoFacturasResumen: TfrxDBDataset;
schReport: TDASchema;
procedure DataModuleCreate(Sender: TObject);
+ procedure DataModuleDestroy(Sender: TObject);
private
FConnection: IDAConnection;
+ FIdEmpresa: Integer;
+ FFechaInicio: Variant;
+ FFechaFin: Variant;
+ FFechaVenInicio: Variant;
+ FFechaVenFin: Variant;
+ FListaIDClientes: TIntegerArray;
+ FListaNombresClientes : TStringList;
+ FImporteMinimo: Currency;
+ FDesglosado : Boolean;
+
//Genera cada uno de los albaranes a imprimir
procedure _GenerarFactura(const ID: integer); overload;
- function _GenerarInforme(const TipoInforme: String; const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const ImporteMinimo: Currency): Binary;
+
+ procedure PrepararTablaInforme(ATabla: TDAMemDataTable);
+ procedure PrepararTablaResumenInforme(ATabla: IDADataset);
+ function _GenerarInforme(const TipoInforme: String): Binary;
+ procedure IniciarParametrosInforme;
+ procedure RecuperarNombresClientes;
+
public
function GenerarFactura(const ListaID : TIntegerArray): Binary; overload;
function GenerarInformeIVA(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDClientes: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
@@ -52,7 +72,8 @@ implementation
{$R *.dfm}
uses
- uSistemaFunc, uDataModuleServer, schFacturasClienteClient_Intf;
+ uSistemaFunc, StrUtils, uROServer, DataAbstract4_Intf,
+ uDataModuleServer, schFacturasClienteClient_Intf;
const
rptFacturaCliente = 'InfFacturaCliente.fr3';
@@ -64,6 +85,7 @@ const
rptInformeListadoFactuasClientePendiente = 'InformeListadoFacturasClientePendientes.fr3';
rptInformeListadoFactuasClientePendienteDesglosado = 'InformeListadoFacturasClientePendientesDesglosado.fr3';
+ ds_InformeListadoFacturasResumen = 'ListadoFacturasResumen';
{ TRptFacturasCliente }
@@ -72,7 +94,14 @@ procedure TRptFacturasCliente.DataModuleCreate(Sender: TObject);
begin
schReport.ConnectionManager := dmServer.ConnectionManager;
FConnection := dmServer.DarNuevaConexion;
- frxReport.EngineOptions.NewSilentMode := simReThrow;
+ frxReport.EngineOptions.NewSilentMode := simReThrow;
+
+ FListaNombresClientes := TStringList.Create;
+end;
+
+procedure TRptFacturasCliente.DataModuleDestroy(Sender: TObject);
+begin
+ FreeANDNIL(FListaNombresClientes);
end;
function TRptFacturasCliente.GenerarFactura(const ListaID: TIntegerArray): Binary;
@@ -95,15 +124,58 @@ function TRptFacturasCliente.GenerarInformeIVA(const IdEmpresa: Integer; const F
const ImporteMinimo: Currency): Binary;
var
ATipoInforme: String;
+ AStream: TMemoryStream;
+ dsMaster: IDADataset;
begin
-//DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FFechaInicio := FechaInicio;
+ FFechaFin := FechaFin;
+ FFechaVenInicio := Null;
+ FFechaVenFin := Null;
+ FImporteMinimo := ImporteMinimo;
+
+ if Assigned(FListaIDClientes) then
+ FListaIDClientes.Free;
+ FListaIDClientes := ListaIDClientes;
+
+ //Se van a prepara las tablas del informe
+ if tbl_InformeListadoFacturas.Active then
+ tbl_InformeListadoFacturas.Active := False;
+ PrepararTablaInforme(tbl_InformeListadoFacturas);
+
+ //Se prepara la tabla del listado resumen del informe
+ if tbl_InformeListadoFacturasResumen.Active then
+ tbl_InformeListadoFacturasResumen.Active := False;
+ dsMaster := schReport.NewDataset(FConnection, ds_InformeListadoFacturasResumen, [], [], False);
+ PrepararTablaResumenInforme(dsMaster);
+ //Esto se hace para rellenar la tabla del datamodule que usa el informe.
+ dsMaster.Open;
+ AStream.Clear;
+ Bin2DataStreamer.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1);
+ Bin2DataStreamer.ReadDataset(AStream, tbl_InformeListadoFacturasResumen, TRUE, '', TRUE, TRUE);
+
+ //DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
if Desglosado then
ATipoInforme := rptInformeIVADesglosado
else
ATipoInforme := rptInformeIVA;
- Result := _GenerarInforme(ATipoInforme, IdEmpresa, FechaInicio, FechaFin, ListaIDClientes, ImporteMinimo);
+ //Finalmente se abren las tablas del informe
+ tbl_InformeListadoFacturas.Active := True;
+ tbl_InformeListadoFacturasResumen.Active := True;
+
+ Result := _GenerarInforme(ATipoInforme);
+ finally
+ AStream.Free;
+ dsMaster := Nil;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
end;
function TRptFacturasCliente.GenerarInformeListadoFacturas(const IdEmpresa: Integer;
@@ -111,16 +183,60 @@ function TRptFacturasCliente.GenerarInformeListadoFacturas(const IdEmpresa: Inte
const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
var
ATipoInforme: String;
+ AStream: TMemoryStream;
+ dsMaster: IDADataset;
begin
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
-//DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
- if Desglosado then
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FFechaInicio := FechaInicio;
+ FFechaFin := FechaFin;
+// FFechaVenInicio := FechaVenInicio;
+// FFechaVenFin := FechaVenFin;
+ FImporteMinimo := ImporteMinimo;
+
+ if Assigned(FListaIDClientes) then
+ FListaIDClientes.Free;
+ FListaIDClientes := ListaIDClientes;
+
+ //Se prepara la tabla del listado general del informe
+ if tbl_InformeListadoFacturas.Active then
+ tbl_InformeListadoFacturas.Active := False;
+ PrepararTablaInforme(tbl_InformeListadoFacturas);
+
+ //Se prepara la tabla del listado resumen del informe
+ if tbl_InformeListadoFacturasResumen.Active then
+ tbl_InformeListadoFacturasResumen.Active := False;
+ dsMaster := schReport.NewDataset(FConnection, ds_InformeListadoFacturasResumen, [], [], False);
+ PrepararTablaResumenInforme(dsMaster);
+ //Esto se hace para rellenar la tabla del datamodule que usa el informe.
+ dsMaster.Open;
+ AStream.Clear;
+ Bin2DataStreamer.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1);
+ Bin2DataStreamer.ReadDataset(AStream, tbl_InformeListadoFacturasResumen, TRUE, '', TRUE, TRUE);
+
+ //DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
+ FDesglosado := Desglosado;
+ if FDesglosado then
ATipoInforme := rptInformeListadoFacturasClienteDesglosado
else
ATipoInforme := rptInformeListadoFacturasCliente;
- Result := _GenerarInforme(ATipoInforme, IdEmpresa, FechaInicio, FechaFin, ListaIDClientes, ImporteMinimo);
+ //Finalmente se abren las tablas del informe
+ tbl_InformeListadoFacturas.Active := True;
+ tbl_InformeListadoFacturasResumen.Active := True;
+
+ Result := _GenerarInforme(ATipoInforme);
+
+ finally
+ AStream.Free;
+ dsMaster := Nil;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
end;
function TRptFacturasCliente.GenerarInformeListadoFacturasPendientes(
@@ -130,13 +246,30 @@ function TRptFacturasCliente.GenerarInformeListadoFacturasPendientes(
var
Condicion: TDAWhereExpression;
ATipoInforme: String;
+ AStream: TMemoryStream;
+ dsMaster: IDADataset;
begin
- if tbl_InformeListadoFacturas.Active then
- tbl_InformeListadoFacturas.Active := False;
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+{
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FFechaInicio := FechaInicio;
+ FFechaFin := FechaFin;
+// FFechaVenInicio := FechaVenInicio;
+// FFechaVenFin := FechaVenFin;
+ FImporteMinimo := ImporteMinimo;
+ FListaIDClientes := ListaIDClientes;
+
+ //Se prepara la tabla del listado general del informe
+ if tbl_InformeListadoFacturasPendientes.Active then
+ tbl_InformeListadoFacturasPendientes.Active := False;
+ PrepararTablaInforme(tbl_InformeListadoFacturasPendientes);
// Filtrar el informe por situacion
- with tbl_InformeListadoFacturas.DynamicWhere do
+ with tbl_InformeListadoFacturasPendientes.DynamicWhere do
begin
// (ID_EMPRESA >= ID)
Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteSITUACION), NewConstant('PAGADA', datString), dboNotEqual);
@@ -146,14 +279,297 @@ begin
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
-
-//DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
- if Desglosado then
+ //DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
+ FDesglosado := Desglosado;
+ if FDesglosado then
ATipoInforme := rptInformeListadoFactuasClientePendienteDesglosado
else
ATipoInforme := rptInformeListadoFactuasClientePendiente;
- Result := _GenerarInforme(ATipoInforme, IdEmpresa, FechaInicio, FechaFin, ListaIDClientes, ImporteMinimo);
+ //Finalmente se abren las tablas del informe
+ tbl_InformeListadoFacturasPendientes.Active := True;
+
+ Result := _GenerarInforme(ATipoInforme);
+
+ finally
+ AStream.Free;
+ dsMaster := Nil;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
+ }
+end;
+
+procedure TRptFacturasCliente.IniciarParametrosInforme;
+var
+ ATextos : TStringList;
+ ACadena : String;
+begin
+ ATextos := TStringList.Create;
+
+ try
+ if (not VarIsNull(FFechaInicio)) and (not VarIsNull(FFechaFin)) then
+ ACadena := Format('Fechas de factura desde el %s hasta el %s', [VarToStr(FFechaInicio), VarToStr(FFechaFin)])
+ else
+ ACadena := 'Sin rango de fechas';
+ ATextos.Add(ACadena);
+ ACadena := '';
+
+ // Filtrar el informe por fechas de vencimiento
+{ if (not VarIsNull(FFechaVenInicio)) and (not VarIsNull(FFechaVenFin)) then
+ begin
+ ACadena := Format('Vencimientos desde el %s hasta el %s', [VarToStr(FFechaVenInicio), VarToStr(FFechaVenFin)]);
+ ATextos.Add(ACadena);
+ ACadena := '';
+ end;
+}
+ if (FImporteMinimo > 0) then
+ begin
+ ACadena := Format('Facturas con importe superior a %m', [FImporteMinimo]);
+ ATextos.Add(ACadena);
+ ACadena := '';
+ end;
+
+ if Assigned(FListaIDClientes) and (FListaIDClientes.Count > 0) then
+ begin
+ RecuperarNombresClientes;
+ ACadena := FListaNombresClientes.Text;
+ end
+ else begin
+ ACadena := 'Todos los clientes';
+ if FDesglosado then
+ ACadena := ACadena + ' (desglosados)'
+ end;
+
+ ATextos.Add(ACadena);
+ ACadena := '';
+
+ frxReport.Variables.Variables['TextoParametros'] := ATextos.Text;
+ finally
+ FreeAndNil(ATextos);
+ end;
+end;
+
+procedure TRptFacturasCliente.PrepararTablaInforme(ATabla: TDAMemDataTable);
+var
+ Condicion: TDAWhereExpression;
+ i: Integer;
+
+begin
+ // Filtrar el informe por empresa
+ with ATabla.DynamicWhere do
+ begin
+ // (ID_EMPRESA >= ID)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteID_EMPRESA), NewConstant(FIdEmpresa, datInteger), dboEqual);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+
+ // Filtrar el informe por fechas
+ if not VarIsNull(FFechaInicio)
+ and not VarIsNull(FFechaFin) then
+ begin
+ with ATabla.DynamicWhere do
+ begin
+ // (FECHA_INICIO between FECHA_FIN)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteFECHA_FACTURA), NewConstant(FFechaInicio, datDateTime), dboGreaterOrEqual);
+ Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_FacturasClienteFECHA_FACTURA), NewConstant(FFechaFin, datDateTime), dboLessOrEqual), Condicion, dboAnd);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ end;
+
+ // Filtrar el informe por fechas de vencimiento
+{ if not VarIsNull(FFechaVenInicio)
+ and not VarIsNull(FFechaVenFin) then
+ begin
+ with ATabla.DynamicWhere do
+ begin
+ // (FECHA_VENCIMIENTO_INICIO between FECHA_VENCIMIENTO_FIN)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteFECHA_VENCIMIENTO), NewConstant(FFechaVenInicio, datDateTime), dboGreaterOrEqual);
+ Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_FacturasClienteFECHA_VENCIMIENTO), NewConstant(FFechaVenFin, datDateTime), dboLessOrEqual), Condicion, dboAnd);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ end;
+}
+
+ // Filtrar el informe por proveedor
+ if Assigned(FListaIDClientes) then
+ begin
+ with ATabla.DynamicWhere do
+ begin
+ for i := 0 to FListaIDClientes.Count - 1 do
+ begin
+
+ // (ID_CLIENTE = ID)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteID_CLIENTE), NewConstant(FListaIDClientes.Items[i], datInteger), dboEqual);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ end;
+ end;
+
+ // Filtrar el informe por importe minimo
+ if (FImporteMinimo > 0) then
+ begin
+ with ATabla.DynamicWhere do
+ begin
+ // (IMPORTE_TOTAL > ImporteMinimo)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasCLienteIMPORTE_TOTAL), NewConstant(FImporteMinimo, datCurrency), dboGreaterOrEqual);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ end;
+end;
+
+procedure TRptFacturasCliente.PrepararTablaResumenInforme(ATabla: IDADataset);
+var
+ i: Integer;
+ AWhereStr : String;
+
+begin
+ // Filtrar el informe por empresa
+ AWhereStr := ' (' + fld_FacturasCLienteID_EMPRESA + ' = ' + IntToStr(FIdEmpresa) + ') ';
+
+ // Filtrar el informe por fechas
+ if not VarIsNull(FFechaInicio)
+ and not VarIsNull(FFechaFin) then
+ begin
+ if Length(AWhereStr) > 0 then
+ AWhereStr := AWhereStr + 'AND';
+ AWhereStr := AWhereStr + ' (' + fld_FacturasCLienteFECHA_FACTURA + ' between ''' + ReplaceStr(VarToStr(FFechaInicio),'/','.') + ''' and ''' + ReplaceStr(VarToStr(FFechaFin),'/','.') + ''') ';
+ end;
+
+ // Filtrar el informe por fechas de vencimiento
+{ if not VarIsNull(FFechaVenInicio)
+ and not VarIsNull(FFechaVenFin) then
+ begin
+ if Length(AWhereStr) > 0 then
+ AWhereStr := AWhereStr + 'AND';
+ AWhereStr := AWhereStr + ' (' + fld_FacturasCLienteFECHA_VENCIMIENTO + ' between ''' + ReplaceStr(VarToStr(FFechaVenInicio),'/','.') + ''' and ''' + ReplaceStr(VarToStr(FFechaVenFin),'/','.') + ''') ';
+ end;
+}
+
+ // Filtrar el informe por cliente
+ if Assigned(FListaIDClientes) then
+ begin
+ for i := 0 to FListaIDClientes.Count - 1 do
+ begin
+ if Length(AWhereStr) > 0 then
+ AWhereStr := AWhereStr + 'AND';
+ AWhereStr := AWhereStr + ' (' + fld_FacturasCLienteID_CLIENTE + ' = ' + IntToStr(FListaIDClientes.Items[i]) + ') ';
+ end;
+ end;
+
+ // Filtrar el informe por importe minimo
+ if (FImporteMinimo > 0) then
+ begin
+ if Length(AWhereStr) > 0 then
+ AWhereStr := AWhereStr + 'AND';
+ AWhereStr := AWhereStr + ' (' + fld_FacturasCLienteIMPORTE_TOTAL + ' >= ' + CurrToStr(FImporteMinimo) + ') ';
+ end;
+
+ ATabla.Where.AddText(AWhereStr);
+end;
+
+procedure TRptFacturasCliente.RecuperarNombresClientes;
+var
+ AContactosService : IsrvContactos;
+ Intf : IInterface;
+ AClientID : TGUID;
+
+ ATableNameArray: StringArray;
+ ATableRequestInfoArray: TableRequestInfoArray;
+ ATableRequestInfo: TableRequestInfoV5;
+ AStream: TMemoryStream;
+ ADataTable: TDAMemDataTable;
+ i: Integer;
+ AWhereBuilder : TDAWhereBuilder;
+ ACondicion : TDAWhereExpression;
+begin
+ CreateGUID(AClientID);
+
+ GetClassFactory('srvContactos').CreateInstance(AClientID, Intf);
+
+ if Assigned(Intf) then
+ begin
+ AContactosService := Intf as IsrvContactos;
+
+ ATableNameArray := StringArray.Create;
+ ATableRequestInfoArray := TableRequestInfoArray.Create;
+ AWhereBuilder := TDAWhereBuilder.Create;
+ try
+ ATableNameArray.Add('Clientes');
+ ATableRequestInfo := TableRequestInfoV5.Create;
+
+ with ATableRequestInfo do
+ begin
+ IncludeSchema := True;
+ MaxRecords := -1;
+ UserFilter := '';
+
+ AWhereBuilder.Clear;
+ with AWhereBuilder do
+ for i := 0 to FListaIDClientes.Count - 1 do
+ begin
+ ACondicion := NewBinaryExpression(
+ NewBinaryExpression(NewField('', 'ID'), NewConstant(FListaIDClientes[i], datInteger), dboEqual),
+ NewBinaryExpression(NewField('', 'ID_EMPRESA'), NewConstant(FIdEmpresa, datInteger), dboEqual),
+ dboAnd);
+
+ if not AWhereBuilder.IsEmpty then
+ Expression := NewBinaryExpression(Expression, ACondicion, dboOr)
+ else
+ Expression := ACondicion;
+ end;
+
+ WhereClause := AWhereBuilder.ExpressionToXmlNode(AWhereBuilder.Expression);
+ end;
+
+ try
+ ATableRequestInfoArray.Add(ATableRequestInfo);
+ AStream := AContactosService.GetData(ATableNameArray, ATableRequestInfoArray);
+ if Assigned(AStream) then
+ begin
+ ADataTable := TDAMemDataTable.Create(nil);
+ try
+ ADataTable.Name := 'Clientes';
+ ADataTable.LocalDataStreamer := Bin2DataStreamer;
+ ADataTable.RemoteFetchEnabled := False;
+ Bin2DataStreamer.ReadDataset(AStream, ADataTable, True);
+
+ ADataTable.Open;
+ FListaNombresClientes.Clear;
+ for i := 0 to ADataTable.RecordCount - 1 do
+ begin
+ FListaNombresClientes.Add(ADataTable.FieldByName('NOMBRE').AsString);
+ ADataTable.Next;
+ end;
+
+ finally
+ FreeANDNil(ADataTable);
+ end;
+ end;
+ except
+ on e: Exception do
+ dmServer.EscribirLog(e.Message);
+ end;
+ finally
+ FreeANDNIL(ATableRequestInfoArray);
+ FreeANDNIL(ATableNameArray);
+ FreeANDNIL(AWhereBuilder);
+ end;
+ end;
end;
procedure TRptFacturasCliente._GenerarFactura(const ID: integer);
@@ -186,98 +602,21 @@ begin
end;
end;
-function TRptFacturasCliente._GenerarInforme(const TipoInforme: String;
- const IdEmpresa: Integer; const FechaInicio, FechaFin: Variant;
- const ListaIDClientes: TIntegerArray; const ImporteMinimo: Currency): Binary;
+function TRptFacturasCliente._GenerarInforme(const TipoInforme: String): Binary;
var
- Condicion: TDAWhereExpression;
- i: Integer;
AInforme: Variant;
begin
Result := Binary.Create;
- FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ AInforme := DarRutaFichero(DarRutaInformes, TipoInforme, IntToStr(FIdEmpresa));
+ if VarIsNull(AInforme) then
+ raise Exception.Create (('Error Servidor: _GenerarInforme, no encuentra informe ' + TipoInforme));
- try
+ frxReport.LoadFromFile(AInforme, True);
+ IniciarParametrosInforme;
- if tbl_InformeListadoFacturas.Active then
- tbl_InformeListadoFacturas.Active := False;
-
- // Filtrar el informe por empresa
- with tbl_InformeListadoFacturas.DynamicWhere do
- begin
- // (ID_EMPRESA >= ID)
- Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteID_EMPRESA), NewConstant(IdEmpresa, datInteger), dboEqual);
- if IsEmpty then
- Expression := Condicion
- else
- Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
- end;
-
- // Filtrar el informe por fechas
- if not VarIsNull(FechaInicio)
- and not VarIsNull(FechaFin) then
- begin
- with tbl_InformeListadoFacturas.DynamicWhere do
- begin
- // (FECHA_INICIO between FECHA_FIN)
- Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteFECHA_FACTURA), NewConstant(FechaInicio, datDateTime), dboGreaterOrEqual);
- Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_FacturasClienteFECHA_FACTURA), NewConstant(FechaFin, datDateTime), dboLessOrEqual), Condicion, dboAnd);
- if IsEmpty then
- Expression := Condicion
- else
- Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
- end;
- end;
-
- // Filtrar el informe por cliente
- if Assigned(ListaIDClientes) then
- begin
- with tbl_InformeListadoFacturas.DynamicWhere do
- begin
- for i := 0 to ListaIDClientes.Count - 1 do
- begin
-
- // (ID_CLIENTE = ID)
- Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteID_CLIENTE), NewConstant(ListaIDClientes.Items[i], datInteger), dboEqual);
- if IsEmpty then
- Expression := Condicion
- else
- Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
- end;
- end;
- end;
-
- // Filtrar el informe por importe minimo
- if (ImporteMinimo > 0) then
- begin
- with tbl_InformeListadoFacturas.DynamicWhere do
- begin
- // (IMPORTE_TOTAL > ImporteMinimo)
- Condicion := NewBinaryExpression(NewField('', fld_FacturasClienteIMPORTE_TOTAL), NewConstant(ImporteMinimo, datCurrency), dboGreaterOrEqual);
- if IsEmpty then
- Expression := Condicion
- else
- Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
- end;
- end;
-
-
- tbl_InformeListadoFacturas.Active := True;
-
- AInforme := DarRutaFichero(DarRutaInformes, TipoInforme, IntToStr(IdEmpresa));
- if VarIsNull(AInforme) then
- raise Exception.Create (('Error Servidor: _GenerarInforme, no encuentra informe' + TipoInforme));
-
- frxReport.LoadFromFile(AInforme, True);
- frxReport.Variables.Variables['FechaInicio'] := FechaInicio;
- frxReport.Variables.Variables['FechaFin'] := FechaFin;
- frxReport.PrepareReport(False);
- frxReport.PreviewPages.SaveToStream(Result);
-
- finally
- FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
- end;
+ frxReport.PrepareReport(False);
+ frxReport.PreviewPages.SaveToStream(Result);
end;
end.
diff --git a/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dproj b/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dproj
index b601adc1..29be5bf7 100644
--- a/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dproj
+++ b/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dproj
@@ -49,35 +49,35 @@
MainSource
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
TForm
diff --git a/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm b/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm
index 742c59a7..e87c13da 100644
--- a/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm
+++ b/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.dfm
@@ -1,8 +1,9 @@
object RptFacturasProveedor: TRptFacturasProveedor
OldCreateOrder = True
OnCreate = DataModuleCreate
+ OnDestroy = DataModuleDestroy
Height = 405
- Width = 570
+ Width = 763
object frxRichObject1: TfrxRichObject
Left = 48
Top = 296
@@ -35,6 +36,66 @@ object RptFacturasProveedor: TRptFacturasProveedor
ConnectionManager = dmServer.ConnectionManager
DataDictionary = DataDictionary
Datasets = <
+ item
+ Params = <>
+ Statements = <
+ item
+ Connection = 'IBX'
+ ConnectionType = 'Interbase'
+ Default = True
+ TargetTable = 'v_facturas_proveedor'
+ Name = 'IBX'
+ SQL =
+ 'select ID_EMPRESA,'#10'NOMBRE,'#10'sum(BASE_IMPONIBLE) as BASE_IMPONIBLE' +
+ ','#10'sum(IMPORTE_IVA) as IMPORTE_IVA,'#10'sum(IMPORTE_TOTAL) AS IMPORTE' +
+ '_TOTAL'#10'from V_facturas_proveedor'#10'group by 1,2'#10'order by 1,2'#10
+ StatementType = stSQL
+ ColumnMappings = <
+ item
+ DatasetField = 'ID_EMPRESA'
+ TableField = 'ID_EMPRESA'
+ end
+ item
+ DatasetField = 'NOMBRE'
+ TableField = 'NOMBRE'
+ end
+ item
+ DatasetField = 'BASE_IMPONIBLE'
+ TableField = 'BASE_IMPONIBLE'
+ end
+ item
+ DatasetField = 'IMPORTE_IVA'
+ TableField = 'IMPORTE_IVA'
+ end
+ item
+ DatasetField = 'IMPORTE_TOTAL'
+ TableField = 'IMPORTE_TOTAL'
+ end>
+ end>
+ Name = 'ListadoFacturasProveedorResumen'
+ Fields = <
+ item
+ Name = 'ID_EMPRESA'
+ DataType = datInteger
+ end
+ item
+ Name = 'NOMBRE'
+ DataType = datString
+ Size = 255
+ end
+ item
+ Name = 'BASE_IMPONIBLE'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_IVA'
+ DataType = datCurrency
+ end
+ item
+ Name = 'IMPORTE_TOTAL'
+ DataType = datCurrency
+ end>
+ end
item
Params = <>
Statements = <
@@ -548,4 +609,31 @@ object RptFacturasProveedor: TRptFacturasProveedor
Left = 48
Top = 80
end
+ object frxDBInformeListadoFacturasResumen: TfrxDBDataset
+ UserName = 'frxDBInformeListadoFacturasResumen'
+ CloseDataSource = True
+ DataSource = DADSInformeListadoFacturasResumen
+ Left = 648
+ Top = 24
+ end
+ object DADSInformeListadoFacturasResumen: TDADataSource
+ DataSet = tbl_InformeListadoFacturasResumen.Dataset
+ DataTable = tbl_InformeListadoFacturasResumen
+ Left = 648
+ Top = 80
+ end
+ object tbl_InformeListadoFacturasResumen: TDAMemDataTable
+ RemoteUpdatesOptions = []
+ Fields = <>
+ Params = <>
+ MasterMappingMode = mmDataRequest
+ LogChanges = False
+ StreamingOptions = [soDisableEventsWhileStreaming]
+ RemoteFetchEnabled = False
+ DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch]
+ MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates]
+ IndexDefs = <>
+ Left = 648
+ Top = 136
+ 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 af4779c0..8cf34100 100644
--- a/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.pas
+++ b/Source/Modulos/Facturas de proveedor/Reports/uRptFacturasProveedor_Server.pas
@@ -26,10 +26,29 @@ type
Bin2DataStreamer: TDABin2DataStreamer;
schReport: TDASchema;
DataDictionary: TDADataDictionary;
+ frxDBInformeListadoFacturasResumen: TfrxDBDataset;
+ DADSInformeListadoFacturasResumen: TDADataSource;
+ tbl_InformeListadoFacturasResumen: TDAMemDataTable;
procedure DataModuleCreate(Sender: TObject);
+ procedure DataModuleDestroy(Sender: TObject);
+
private
FConnection: IDAConnection;
- function _GenerarInforme(const TipoInforme: String; const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const FechaVenInicio: Variant; const FechaVenFin: Variant; const ListaIDProveedores: TIntegerArray; const ImporteMinimo: Currency): Binary;
+ FIdEmpresa: Integer;
+ FFechaInicio: Variant;
+ FFechaFin: Variant;
+ FFechaVenInicio: Variant;
+ FFechaVenFin: Variant;
+ FListaIDProveedores: TIntegerArray;
+ FListaNombresProveedores: TStringList;
+ FImporteMinimo: Currency;
+ FDesglosado : Boolean;
+
+ procedure PrepararTablaInforme(ATabla: TDAMemDataTable);
+ procedure PrepararTablaResumenInforme(ATabla: IDADataset);
+ function _GenerarInforme(const TipoInforme: String): Binary;
+ procedure IniciarParametrosInforme;
+ procedure RecuperarNombresProveedores;
public
function GenerarInformeIVA(const IdEmpresa: Integer; const FechaInicio: Variant; const FechaFin: Variant; const ListaIDProveedores: TIntegerArray; const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
@@ -42,7 +61,8 @@ implementation
{$R *.dfm}
uses
- uSistemaFunc, uDataModuleServer, schFacturasProveedorClient_Intf;
+ uSistemaFunc, StrUtils, uROServer, DataAbstract4_Intf,
+ uDataModuleServer, schFacturasProveedorClient_Intf;
const
rptFacturaProveedor = 'InfFacturaProveedor.fr3';
@@ -52,6 +72,8 @@ const
rptInformeListadoFacturasProveedorDesglosado = 'InformeListadoFacturasProveedorDesglosado.fr3';
rptInformeListadoFactuasProveedorPendiente = 'InformeListadoFacturasProveedorPendientes.fr3';
rptInformeListadoFactuasProveedorPendienteDesglosado = 'InformeListadoFacturasProveedorPendientesDesglosado.fr3';
+ ds_InformeListadoFacturasResumen = 'ListadoFacturasProveedorResumen';
+ ds_InformeListadoFacturasPendientesResumen = 'InformeListadoFacturasPendientesResumen';
{ TRptFacturasProveedor }
@@ -61,6 +83,13 @@ begin
schReport.ConnectionManager := dmServer.ConnectionManager;
FConnection := dmServer.DarNuevaConexion;
frxReport.EngineOptions.NewSilentMode := simReThrow;
+
+ FListaNombresProveedores := TStringList.Create;
+end;
+
+procedure TRptFacturasProveedor.DataModuleDestroy(Sender: TObject);
+begin
+ FreeANDNIL(FListaNombresProveedores);
end;
function TRptFacturasProveedor.GenerarInformeIVA(const IdEmpresa: Integer;
@@ -69,15 +98,64 @@ function TRptFacturasProveedor.GenerarInformeIVA(const IdEmpresa: Integer;
const ImporteMinimo: Currency): Binary;
var
ATipoInforme: String;
+ AStream: TMemoryStream;
+ dsMaster: IDADataset;
begin
-//DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
- if Desglosado then
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FFechaInicio := FechaInicio;
+ FFechaFin := FechaFin;
+ FFechaVenInicio := Null;
+ FFechaVenFin := Null;
+ FImporteMinimo := ImporteMinimo;
+ FDesglosado := Desglosado;
+
+ if Assigned(FListaIDProveedores) then
+ FListaIDProveedores.Free;
+
+ FListaIDProveedores := ListaIDProveedores;
+
+ //Se van a prepara las tablas del informe
+ if tbl_InformeListadoFacturas.Active then
+ tbl_InformeListadoFacturas.Active := False;
+
+ PrepararTablaInforme(tbl_InformeListadoFacturas);
+
+ //Se prepara la tabla del listado resumen del informe
+ if tbl_InformeListadoFacturasResumen.Active then
+ tbl_InformeListadoFacturasResumen.Active := False;
+
+ dsMaster := schReport.NewDataset(FConnection, ds_InformeListadoFacturasResumen, [], [], False);
+ PrepararTablaResumenInforme(dsMaster);
+
+ //Esto se hace para rellenar la tabla del datamodule que usa el informe.
+ dsMaster.Open;
+ AStream.Clear;
+ Bin2DataStreamer.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1);
+ Bin2DataStreamer.ReadDataset(AStream, tbl_InformeListadoFacturasResumen, TRUE, '', TRUE, TRUE);
+
+ //DESGLOSADO POR PROVEEDOR EN ESTE INFORME NO SE DESGLOSARÁ POR PROVEEDOR
+ if FDesglosado then
ATipoInforme := rptInformeIVADesglosado
else
ATipoInforme := rptInformeIVA;
- Result := _GenerarInforme(ATipoInforme, IdEmpresa, FechaInicio, FechaFin, Null, Null, ListaIDProveedores, ImporteMinimo);
+ //Finalmente se abren las tablas del informe
+ tbl_InformeListadoFacturas.Active := True;
+ tbl_InformeListadoFacturasResumen.Active := True;
+
+ Result := _GenerarInforme(ATipoInforme);
+
+ finally
+ AStream.Free;
+ dsMaster := Nil;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
end;
function TRptFacturasProveedor.GenerarInformeListadoFacturas(
@@ -87,16 +165,63 @@ function TRptFacturasProveedor.GenerarInformeListadoFacturas(
const ImporteMinimo: Currency): Binary;
var
ATipoInforme: String;
+ AStream: TMemoryStream;
+ dsMaster: IDADataset;
begin
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
-//DESGLOSADO POR PROVEEDOR EN ESTE INFORME NO SE DESGLOSARÁ POR PROVEEDOR
- if Desglosado then
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FFechaInicio := FechaInicio;
+ FFechaFin := FechaFin;
+ FFechaVenInicio := FechaVenInicio;
+ FFechaVenFin := FechaVenFin;
+ FImporteMinimo := ImporteMinimo;
+ FDesglosado := Desglosado;
+
+ if Assigned(FListaIDProveedores) then
+ FListaIDProveedores.Free;
+ FListaIDProveedores := ListaIDProveedores;
+
+ //Se prepara la tabla del listado general del informe
+ if tbl_InformeListadoFacturas.Active then
+ tbl_InformeListadoFacturas.Active := False;
+
+ PrepararTablaInforme(tbl_InformeListadoFacturas);
+
+ //Se prepara la tabla del listado resumen del informe
+ if tbl_InformeListadoFacturasResumen.Active then
+ tbl_InformeListadoFacturasResumen.Active := False;
+ dsMaster := schReport.NewDataset(FConnection, ds_InformeListadoFacturasResumen, [], [], False);
+
+ PrepararTablaResumenInforme(dsMaster);
+
+ //Esto se hace para rellenar la tabla del datamodule que usa el informe.
+ dsMaster.Open;
+ AStream.Clear;
+ Bin2DataStreamer.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1);
+ Bin2DataStreamer.ReadDataset(AStream, tbl_InformeListadoFacturasResumen, TRUE, '', TRUE, TRUE);
+
+ //DESGLOSADO POR PROVEEDOR EN ESTE INFORME NO SE DESGLOSARÁ POR PROVEEDOR
+ if FDesglosado then
ATipoInforme := rptInformeListadoFacturasProveedorDesglosado
else
ATipoInforme := rptInformeListadoFacturasProveedor;
- Result := _GenerarInforme(ATipoInforme, IdEmpresa, FechaInicio, FechaFin, FechaVenInicio, FechaVenFin, ListaIDProveedores, ImporteMinimo);
+ //Finalmente se abren las tablas del informe
+ tbl_InformeListadoFacturas.Active := True;
+ tbl_InformeListadoFacturasResumen.Active := True;
+
+ Result := _GenerarInforme(ATipoInforme);
+
+ finally
+ AStream.Free;
+ dsMaster := Nil;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
end;
function TRptFacturasProveedor.GenerarInformeListadoFacturasPendientes(
@@ -107,15 +232,38 @@ function TRptFacturasProveedor.GenerarInformeListadoFacturasPendientes(
var
Condicion: TDAWhereExpression;
ATipoInforme: String;
+ AStream: TMemoryStream;
+ dsMaster: IDADataset;
begin
- if tbl_InformeListadoFacturas.Active then
- tbl_InformeListadoFacturas.Active := False;
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+{
+ AStream := TMemoryStream.Create;
+ try
+ //Inicializamos parametros
+ FIdEmpresa := IdEmpresa;
+ FFechaInicio := FechaInicio;
+ FFechaFin := FechaFin;
+ FFechaVenInicio := FechaVenInicio;
+ FFechaVenFin := FechaVenFin;
+ FImporteMinimo := ImporteMinimo;
+ FDesglosado := Desglosado;
+
+ if Assigned(FListaIDProveedores) then
+ FListaIDProveedores.Free;
+ FListaIDProveedores := ListaIDProveedores;
+
+
+ //Se prepara la tabla del listado general del informe
+{ if tbl_InformeListadoFacturasPendientes.Active then
+ tbl_InformeListadoFacturasPendientes.Active := False;
+
+ PrepararTablaInforme(tbl_InformeListadoFacturasPendientes);
// Filtrar el informe por situacion
- with tbl_InformeListadoFacturas.DynamicWhere do
+ with tbl_InformeListadoFacturasPendientes.DynamicWhere do
begin
- // (ID_EMPRESA >= ID)
+ // (SITUACION >= PAGADA)
Condicion := NewBinaryExpression(NewField('', fld_FacturasProveedorSITUACION), NewConstant('PAGADA', datString), dboNotEqual);
if IsEmpty then
Expression := Condicion
@@ -123,126 +271,327 @@ begin
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
+ //Se prepara la tabla del listado resumen del informe
+ if tbl_InformeListadoFacturasPendResumen.Active then
+ tbl_InformeListadoFacturasPendResumen.Active := False;
-//DESGLOSADO POR PROVEEDOR EN ESTE INFORME
- if Desglosado then
+ dsMaster := schReport.NewDataset(FConnection, ds_InformeListadoFacturasPendientesResumen, [], [], False);
+ PrepararTablaResumenInforme(dsMaster);
+
+ // Filtrar el informe por situacion
+ dsMaster.Where.AddText(' AND (SITUACION <> ''PAGADA'')');
+
+ //Esto se hace para rellenar la tabla del datamodule que usa el informe.
+ dsMaster.Open;
+ AStream.Clear;
+ Bin2DataStreamer.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1);
+ Bin2DataStreamer.ReadDataset(AStream, tbl_InformeListadoFacturasPendResumen, TRUE, '', TRUE, TRUE);
+
+ //DESGLOSADO POR PROVEEDOR EN ESTE INFORME
+ if FDesglosado then
ATipoInforme := rptInformeListadoFactuasProveedorPendienteDesglosado
else
ATipoInforme := rptInformeListadoFactuasProveedorPendiente;
+ //Finalmente se abren las tablas del informe
+ tbl_InformeListadoFacturasPendientes.Active := True;
+ tbl_InformeListadoFacturasPendResumen.Active := True;
- Result := _GenerarInforme(ATipoInforme, IdEmpresa, FechaInicio, FechaFin, FechaVenInicio, FechaVenFin, ListaIDProveedores, ImporteMinimo);
+ Result := _GenerarInforme(ATipoInforme);
+ finally
+ AStream.Free;
+ dsMaster := Nil;
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
+}
end;
-function TRptFacturasProveedor._GenerarInforme(const TipoInforme: String;
- const IdEmpresa: Integer; const FechaInicio, FechaFin: Variant;
- const FechaVenInicio: Variant; const FechaVenFin: Variant;
- const ListaIDProveedores: TIntegerArray; const ImporteMinimo: Currency): Binary;
+procedure TRptFacturasProveedor.IniciarParametrosInforme;
+var
+ ATextos : TStringList;
+ ACadena : String;
+begin
+ ATextos := TStringList.Create;
+
+ try
+ if (not VarIsNull(FFechaInicio)) and (not VarIsNull(FFechaFin)) then
+ ACadena := Format('Fechas de factura desde el %s hasta el %s', [VarToStr(FFechaInicio), VarToStr(FFechaFin)])
+ else
+ ACadena := 'Sin rango de fechas';
+ ATextos.Add(ACadena);
+ ACadena := '';
+
+ // Filtrar el informe por fechas de vencimiento
+ if (not VarIsNull(FFechaVenInicio)) and (not VarIsNull(FFechaVenFin)) then
+ begin
+ ACadena := Format('Vencimientos desde el %s hasta el %s', [VarToStr(FFechaVenInicio), VarToStr(FFechaVenFin)]);
+ ATextos.Add(ACadena);
+ ACadena := '';
+ end;
+
+ if (FImporteMinimo > 0) then
+ begin
+ ACadena := Format('Facturas con importe superior a %m', [FImporteMinimo]);
+ ATextos.Add(ACadena);
+ ACadena := '';
+ end;
+
+ if Assigned(FListaIDProveedores) and (FListaIDProveedores.Count > 0) then
+ begin
+ RecuperarNombresProveedores;
+ ACadena := FListaNombresProveedores.Text;
+ end
+ else begin
+ ACadena := 'Todos los proveedores';
+ if FDesglosado then
+ ACadena := ACadena + ' (desglosados)'
+ end;
+
+ ATextos.Add(ACadena);
+ ACadena := '';
+
+ frxReport.Variables.Variables['TextoParametros'] := ATextos.Text;
+ finally
+ FreeAndNil(ATextos);
+ end;
+end;
+
+procedure TRptFacturasProveedor.PrepararTablaInforme(ATabla: TDAMemDataTable);
var
Condicion: TDAWhereExpression;
i: Integer;
- AInforme: Variant;
begin
- Result := Binary.Create;
- FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ // Filtrar el informe por empresa
+ with ATabla.DynamicWhere do
+ begin
+ // (ID_EMPRESA >= ID)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasProveedorID_EMPRESA), NewConstant(FIdEmpresa, datInteger), dboEqual);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
- try
- if tbl_InformeListadoFacturas.Active then
- tbl_InformeListadoFacturas.Active := False;
-
- // Filtrar el informe por empresa
- with tbl_InformeListadoFacturas.DynamicWhere do
+ // Filtrar el informe por fechas
+ if not VarIsNull(FFechaInicio) and
+ not VarIsNull(FFechaFin) then
+ begin
+ with ATabla.DynamicWhere do
begin
- // (ID_EMPRESA >= ID)
- Condicion := NewBinaryExpression(NewField('', fld_FacturasProveedorID_EMPRESA), NewConstant(IdEmpresa, datInteger), dboEqual);
+ // (FECHA_INICIO between FECHA_FIN)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasProveedorFECHA_FACTURA), NewConstant(FFechaInicio, datDateTime), dboGreaterOrEqual);
+ Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_FacturasProveedorFECHA_FACTURA), NewConstant(FFechaFin, datDateTime), dboLessOrEqual), Condicion, dboAnd);
if IsEmpty then
Expression := Condicion
else
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
+ end;
- // Filtrar el informe por fechas
- if not VarIsNull(FechaInicio)
- and not VarIsNull(FechaFin) then
+ // Filtrar el informe por fechas de vencimiento
+ if not VarIsNull(FFechaVenInicio)
+ and not VarIsNull(FFechaVenFin) then
+ begin
+ with ATabla.DynamicWhere do
begin
- with tbl_InformeListadoFacturas.DynamicWhere do
+ // (FECHA_VENCIMIENTO_INICIO between FECHA_VENCIMIENTO_FIN)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasProveedorFECHA_VENCIMIENTO), NewConstant(FFechaVenInicio, datDateTime), dboGreaterOrEqual);
+ Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_FacturasProveedorFECHA_VENCIMIENTO), NewConstant(FFechaVenFin, datDateTime), dboLessOrEqual), Condicion, dboAnd);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
+ end;
+ end;
+
+ // Filtrar el informe por proveedor
+ if Assigned(FListaIDProveedores) then
+ begin
+ with ATabla.DynamicWhere do
+ begin
+ for i := 0 to FListaIDProveedores.Count - 1 do
begin
- // (FECHA_INICIO between FECHA_FIN)
- Condicion := NewBinaryExpression(NewField('', fld_FacturasProveedorFECHA_FACTURA), NewConstant(FechaInicio, datDateTime), dboGreaterOrEqual);
- Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_FacturasProveedorFECHA_FACTURA), NewConstant(FechaFin, datDateTime), dboLessOrEqual), Condicion, dboAnd);
+
+ // (ID_PROVEEDOR = ID)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasProveedorID_PROVEEDOR), NewConstant(FListaIDProveedores.Items[i], datInteger), dboEqual);
if IsEmpty then
Expression := Condicion
else
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
- end;
+ end;
end;
+ end;
- // Filtrar el informe por fechas de vencimiento
- if not VarIsNull(FechaVenInicio)
- and not VarIsNull(FechaVenFin) then
+ // Filtrar el informe por importe minimo
+ if (FImporteMinimo > 0) then
+ begin
+ with ATabla.DynamicWhere do
begin
- with tbl_InformeListadoFacturas.DynamicWhere do
- begin
- // (FECHA_VENCIMIENTO_INICIO between FECHA_VENCIMIENTO_FIN)
- Condicion := NewBinaryExpression(NewField('', fld_FacturasProveedorFECHA_VENCIMIENTO), NewConstant(FechaVenInicio, datDateTime), dboGreaterOrEqual);
- Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_FacturasProveedorFECHA_VENCIMIENTO), NewConstant(FechaVenFin, datDateTime), dboLessOrEqual), Condicion, dboAnd);
- if IsEmpty then
- Expression := Condicion
- else
- Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
- end;
+ // (IMPORTE_TOTAL > ImporteMinimo)
+ Condicion := NewBinaryExpression(NewField('', fld_FacturasProveedorIMPORTE_TOTAL), NewConstant(FImporteMinimo, datCurrency), dboGreaterOrEqual);
+ if IsEmpty then
+ Expression := Condicion
+ else
+ Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
-
- // Filtrar el informe por proveedor
- if Assigned(ListaIDProveedores) then
- begin
- with tbl_InformeListadoFacturas.DynamicWhere do
- begin
- for i := 0 to ListaIDProveedores.Count - 1 do
- begin
-
- // (ID_PROVEEDOR = ID)
- Condicion := NewBinaryExpression(NewField('', fld_FacturasProveedorID_PROVEEDOR), NewConstant(ListaIDProveedores.Items[i], datInteger), dboEqual);
- if IsEmpty then
- Expression := Condicion
- else
- Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
- end;
- end;
- end;
-
- // Filtrar el informe por importe minimo
- if (ImporteMinimo > 0) then
- begin
- with tbl_InformeListadoFacturas.DynamicWhere do
- begin
- // (IMPORTE_TOTAL > ImporteMinimo)
- Condicion := NewBinaryExpression(NewField('', fld_FacturasProveedorIMPORTE_TOTAL), NewConstant(ImporteMinimo, datCurrency), dboGreaterOrEqual);
- if IsEmpty then
- Expression := Condicion
- else
- Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
- end;
- end;
-
-
- tbl_InformeListadoFacturas.Active := True;
-
- AInforme := DarRutaFichero(DarRutaInformes, TipoInforme, IntTostr(IdEmpresa));
- if VarIsNull(AInforme) then
- raise Exception.Create (('Error Servidor: _GenerarInforme, no encuentra informe ' + TipoInforme));
-
- frxReport.LoadFromFile(AInforme, True);
- frxReport.Variables.Variables['FechaInicio'] := FechaInicio;
- frxReport.Variables.Variables['FechaFin'] := FechaFin;
-
- frxReport.PrepareReport(False);
- frxReport.PreviewPages.SaveToStream(Result);
-
- finally
- FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
end;
end;
+procedure TRptFacturasProveedor.PrepararTablaResumenInforme(ATabla: IDADataset);
+var
+ i: Integer;
+ AWhereStr : String;
+
+begin
+ // Filtrar el informe por empresa
+ AWhereStr := ' (' + fld_FacturasProveedorID_EMPRESA + ' = ' + IntToStr(FIdEmpresa) + ') ';
+
+ // Filtrar el informe por fechas
+ if not VarIsNull(FFechaInicio)
+ and not VarIsNull(FFechaFin) then
+ begin
+ if Length(AWhereStr) > 0 then
+ AWhereStr := AWhereStr + 'AND';
+ AWhereStr := AWhereStr + ' (' + fld_FacturasProveedorFECHA_FACTURA + ' between ''' + ReplaceStr(VarToStr(FFechaInicio),'/','.') + ''' and ''' + ReplaceStr(VarToStr(FFechaFin),'/','.') + ''') ';
+ end;
+
+ // Filtrar el informe por fechas de vencimiento
+ if not VarIsNull(FFechaVenInicio)
+ and not VarIsNull(FFechaVenFin) then
+ begin
+ if Length(AWhereStr) > 0 then
+ AWhereStr := AWhereStr + 'AND';
+ AWhereStr := AWhereStr + ' (' + fld_FacturasProveedorFECHA_VENCIMIENTO + ' between ''' + ReplaceStr(VarToStr(FFechaVenInicio),'/','.') + ''' and ''' + ReplaceStr(VarToStr(FFechaVenFin),'/','.') + ''') ';
+ end;
+
+ // Filtrar el informe por proveedor
+ if Assigned(FListaIDProveedores) then
+ begin
+ for i := 0 to FListaIDProveedores.Count - 1 do
+ begin
+ if Length(AWhereStr) > 0 then
+ AWhereStr := AWhereStr + 'AND';
+ AWhereStr := AWhereStr + ' (' + fld_FacturasProveedorID_PROVEEDOR + ' = ' + IntToStr(FListaIDProveedores.Items[i]) + ') ';
+ end;
+ end;
+
+ // Filtrar el informe por importe minimo
+ if (FImporteMinimo > 0) then
+ begin
+ if Length(AWhereStr) > 0 then
+ AWhereStr := AWhereStr + 'AND';
+ AWhereStr := AWhereStr + ' (' + fld_FacturasProveedorIMPORTE_TOTAL + ' >= ' + CurrToStr(FImporteMinimo) + ') ';
+ end;
+
+ ATabla.Where.AddText(AWhereStr);
+end;
+
+procedure TRptFacturasProveedor.RecuperarNombresProveedores;
+var
+ AContactosService : IsrvContactos;
+ Intf : IInterface;
+ AClientID : TGUID;
+
+ ATableNameArray: StringArray;
+ ATableRequestInfoArray: TableRequestInfoArray;
+ ATableRequestInfo: TableRequestInfoV5;
+ AStream: TMemoryStream;
+ ADataTable: TDAMemDataTable;
+ i: Integer;
+ AWhereBuilder : TDAWhereBuilder;
+ ACondicion : TDAWhereExpression;
+begin
+ CreateGUID(AClientID);
+
+ GetClassFactory('srvContactos').CreateInstance(AClientID, Intf);
+
+ if Assigned(Intf) then
+ begin
+ AContactosService := Intf as IsrvContactos;
+
+ ATableNameArray := StringArray.Create;
+ ATableRequestInfoArray := TableRequestInfoArray.Create;
+ AWhereBuilder := TDAWhereBuilder.Create;
+ try
+ ATableNameArray.Add('Proveedores');
+ ATableRequestInfo := TableRequestInfoV5.Create;
+
+ with ATableRequestInfo do
+ begin
+ IncludeSchema := True;
+ MaxRecords := -1;
+ UserFilter := '';
+
+ AWhereBuilder.Clear;
+ with AWhereBuilder do
+ for i := 0 to FListaIDProveedores.Count - 1 do
+ begin
+ ACondicion := NewBinaryExpression(
+ NewBinaryExpression(NewField('', 'ID'), NewConstant(FListaIDProveedores[i], datInteger), dboEqual),
+ NewBinaryExpression(NewField('', 'ID_EMPRESA'), NewConstant(FIdEmpresa, datInteger), dboEqual),
+ dboAnd);
+
+ if not AWhereBuilder.IsEmpty then
+ Expression := NewBinaryExpression(Expression, ACondicion, dboOr)
+ else
+ Expression := ACondicion;
+ end;
+
+ WhereClause := AWhereBuilder.ExpressionToXmlNode(AWhereBuilder.Expression);
+ end;
+
+ try
+ ATableRequestInfoArray.Add(ATableRequestInfo);
+ AStream := AContactosService.GetData(ATableNameArray, ATableRequestInfoArray);
+ if Assigned(AStream) then
+ begin
+ ADataTable := TDAMemDataTable.Create(nil);
+ try
+ ADataTable.Name := 'Proveedores';
+ ADataTable.LocalDataStreamer := Bin2DataStreamer;
+ ADataTable.RemoteFetchEnabled := False;
+ Bin2DataStreamer.ReadDataset(AStream, ADataTable, True);
+
+ ADataTable.Open;
+ FListaNombresProveedores.Clear;
+ for i := 0 to ADataTable.RecordCount - 1 do
+ begin
+ FListaNombresProveedores.Add(ADataTable.FieldByName('NOMBRE').AsString);
+ ADataTable.Next;
+ end;
+
+ finally
+ FreeANDNil(ADataTable);
+ end;
+ end;
+ except
+ on e: Exception do
+ dmServer.EscribirLog(e.Message);
+ end;
+ finally
+ FreeANDNIL(ATableRequestInfoArray);
+ FreeANDNIL(ATableNameArray);
+ FreeANDNIL(AWhereBuilder);
+ end;
+ end;
+end;
+
+function TRptFacturasProveedor._GenerarInforme(const TipoInforme: String): Binary;
+var
+ AInforme: Variant;
+begin
+ Result := Binary.Create;
+
+ AInforme := DarRutaFichero(DarRutaInformes, TipoInforme, IntTostr(FIdEmpresa));
+ if VarIsNull(AInforme) then
+ raise Exception.Create (('Error Servidor: _GenerarInforme, no encuentra informe ' + TipoInforme));
+
+ frxReport.LoadFromFile(AInforme, True);
+ IniciarParametrosInforme;
+
+ frxReport.PrepareReport(False);
+ frxReport.PreviewPages.SaveToStream(Result);
+end;
+
end.
diff --git a/Source/Modulos/Gestor de informes/Controller/uGestorInformesController.pas b/Source/Modulos/Gestor de informes/Controller/uGestorInformesController.pas
index 6b45d06c..ba23c156 100644
--- a/Source/Modulos/Gestor de informes/Controller/uGestorInformesController.pas
+++ b/Source/Modulos/Gestor de informes/Controller/uGestorInformesController.pas
@@ -346,6 +346,9 @@ var
AStream: Binary;
AEditor : IEditorInformeFacturasClientePendientesReport;
begin
+ showmessage('Informe en desarrollo');
+ exit;
+
AEditor := NIL;
CreateEditor('EditorInformeFacturasClientePendientesReport', IEditorInformeFacturasClientePendientesReport, AEditor);
@@ -393,6 +396,9 @@ var
AStream: Binary;
AEditor : IEditorInformeFacturasProveedorPendientesReport;
begin
+ showmessage('Informe en desarrollo');
+ exit;
+
AEditor := NIL;
CreateEditor('EditorInformeFacturasProveedorPendientesReport', IEditorInformeFacturasProveedorPendientesReport, AEditor);
if Assigned(AEditor) then
diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES
index dd820780..5fcd220f 100644
Binary files a/Source/Servidor/FactuGES_Server.RES and b/Source/Servidor/FactuGES_Server.RES differ
diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj
index 97de16a4..40125c38 100644
--- a/Source/Servidor/FactuGES_Server.dproj
+++ b/Source/Servidor/FactuGES_Server.dproj
@@ -1,284 +1,288 @@
-
+
-
- {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1}
- FactuGES_Server.dpr
- Debug
- AnyCPU
- DCC32
- ..\..\Output\Debug\Servidor\FactuGES_Server.exe
-
-
- 7.0
- False
- False
- 0
- 3
- ..\..\Output\Release\Servidor
- RELEASE
-
-
- 7.0
- 3
- ..\..\Output\Debug\Servidor
- DEBUG;
- True
-
-
- Delphi.Personality
-
-
- FalseTrueFalseTrueFalse2290FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.2.9.0FactuGES (Servidor)2.2.9.0miércoles, 18 de febrero de 2009 16:31
- RemObjects Pascal Script - RemObjects SDK 3.0 Integration
- FactuGES_Server.dpr
-
-
-
-
- MainSource
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDARemoteService
-
-
-
- TRORemoteDataModule
-
-
-
-
-
-
-
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDARemoteService
-
-
-
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
-
-
- TDataModule
-
-
-
- TDARemoteService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
-
-
- TDataAbstractService
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
- TDataModule
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
-
-
-
- TDataAbstractService
-
-
-
-
-
- TDataAbstractService
-
-
-
- TFrame
-
-
-
- TFrame
-
-
-
- TForm
-
-
-
- TFrame
-
-
-
- TDARemoteService
-
-
-
-
-
-
- TDataModule
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1}
+ FactuGES_Server.dpr
+ Debug
+ AnyCPU
+ DCC32
+ ..\..\Output\Debug\Servidor\FactuGES_Server.exe
+
+
+ 7.0
+ False
+ False
+ 0
+ 3
+ ..\..\Output\Release\Servidor
+ RELEASE
+
+
+ 7.0
+ 3
+ ..\..\Output\Debug\Servidor
+ DEBUG;
+ True
+
+
+ Delphi.Personality
+
+
+FalseTrueFalseTrueFalse2300FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.3.0.0FactuGES (Servidor)2.3.0.0martes, 10 de marzo de 2009 19:06
+
+
+
+
+ RemObjects Pascal Script - RemObjects SDK 3.0 Integration
+ FactuGES_Server.dpr
+
+
+
+
+ MainSource
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDARemoteService
+
+
+
+ TRORemoteDataModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDARemoteService
+
+
+
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDARemoteService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+ TDataModule
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+
+
+
+ TDataAbstractService
+
+
+
+
+
+ TDataAbstractService
+
+
+
+ TFrame
+
+
+
+ TFrame
+
+
+
+ TForm
+
+
+
+ TFrame
+
+
+
+ TDARemoteService
+
+
+
+
+
+
+ TDataModule
+
+
+
+
+
+
+
+
+
+
+
+
+