diff --git a/Source/Informes/1/InformeListadoRecibosProvPendientes.fr3 b/Source/Informes/1/InformeListadoRecibosProvPendientes.fr3 index 2469357a..3e83274e 100644 --- a/Source/Informes/1/InformeListadoRecibosProvPendientes.fr3 +++ b/Source/Informes/1/InformeListadoRecibosProvPendientes.fr3 @@ -1,16 +1,14 @@ - + - - - - - + + + @@ -22,7 +20,7 @@ - + @@ -32,7 +30,7 @@ - + diff --git a/Source/Informes/1/InformeListadoRecibosProvPendientesDesglosado.fr3 b/Source/Informes/1/InformeListadoRecibosProvPendientesDesglosado.fr3 index 2ac1c4e2..41ebe34d 100644 --- a/Source/Informes/1/InformeListadoRecibosProvPendientesDesglosado.fr3 +++ b/Source/Informes/1/InformeListadoRecibosProvPendientesDesglosado.fr3 @@ -1,16 +1,14 @@ - + - - + - - - - + + + @@ -22,7 +20,7 @@ - + @@ -32,14 +30,13 @@ - + - diff --git a/Source/Informes/1/InformeListadoRecibosProveedor.fr3 b/Source/Informes/1/InformeListadoRecibosProveedor.fr3 index e4ac6bf5..bfdd68ad 100644 --- a/Source/Informes/1/InformeListadoRecibosProveedor.fr3 +++ b/Source/Informes/1/InformeListadoRecibosProveedor.fr3 @@ -1,16 +1,14 @@ - + - - - - - + + + @@ -22,9 +20,9 @@ - + - + @@ -36,11 +34,10 @@ - - + diff --git a/Source/Informes/1/InformeListadoRecibosProveedorDesglosado.fr3 b/Source/Informes/1/InformeListadoRecibosProveedorDesglosado.fr3 index 1a0ec8c8..72c5c63e 100644 --- a/Source/Informes/1/InformeListadoRecibosProveedorDesglosado.fr3 +++ b/Source/Informes/1/InformeListadoRecibosProveedorDesglosado.fr3 @@ -1,20 +1,17 @@ - + - - - - - + + + - - + @@ -23,9 +20,9 @@ - + - + @@ -40,7 +37,7 @@ - + diff --git a/Source/Informes/2/InformeListadoRecibosProvPendientes.fr3 b/Source/Informes/2/InformeListadoRecibosProvPendientes.fr3 index e75dc21b..7a0e59c6 100644 --- a/Source/Informes/2/InformeListadoRecibosProvPendientes.fr3 +++ b/Source/Informes/2/InformeListadoRecibosProvPendientes.fr3 @@ -1,16 +1,14 @@ - + - - - - - + + + @@ -22,26 +20,25 @@ - + - + - + - - + diff --git a/Source/Informes/2/InformeListadoRecibosProvPendientesDesglosado.fr3 b/Source/Informes/2/InformeListadoRecibosProvPendientesDesglosado.fr3 index be8a14cd..5dbdb295 100644 --- a/Source/Informes/2/InformeListadoRecibosProvPendientesDesglosado.fr3 +++ b/Source/Informes/2/InformeListadoRecibosProvPendientesDesglosado.fr3 @@ -1,16 +1,14 @@ - + - - - - - + + + @@ -22,26 +20,25 @@ - + - + - + - - + @@ -54,7 +51,7 @@ - + diff --git a/Source/Informes/2/InformeListadoRecibosProveedor.fr3 b/Source/Informes/2/InformeListadoRecibosProveedor.fr3 index f9ffedaa..52dcd989 100644 --- a/Source/Informes/2/InformeListadoRecibosProveedor.fr3 +++ b/Source/Informes/2/InformeListadoRecibosProveedor.fr3 @@ -1,16 +1,14 @@ - + - - - - - + + + @@ -22,9 +20,9 @@ - + - + @@ -36,17 +34,16 @@ - - + - + diff --git a/Source/Informes/2/InformeListadoRecibosProveedorDesglosado.fr3 b/Source/Informes/2/InformeListadoRecibosProveedorDesglosado.fr3 index 5151c65c..e8abe49f 100644 --- a/Source/Informes/2/InformeListadoRecibosProveedorDesglosado.fr3 +++ b/Source/Informes/2/InformeListadoRecibosProveedorDesglosado.fr3 @@ -1,20 +1,17 @@ - + - - - - - + + + - @@ -25,7 +22,7 @@ - + @@ -40,13 +37,13 @@ - + - + diff --git a/Source/Modulos/Recibos de proveedor/Reports/uRptRecibosProveedor_Server.dfm b/Source/Modulos/Recibos de proveedor/Reports/uRptRecibosProveedor_Server.dfm index 2639451b..43bb0832 100644 --- a/Source/Modulos/Recibos de proveedor/Reports/uRptRecibosProveedor_Server.dfm +++ b/Source/Modulos/Recibos de proveedor/Reports/uRptRecibosProveedor_Server.dfm @@ -1,6 +1,7 @@ object RptRecibosProveedor: TRptRecibosProveedor OldCreateOrder = True OnCreate = DataModuleCreate + OnDestroy = DataModuleDestroy Height = 405 Width = 873 object DADataCabecera: TDADataSource @@ -1148,42 +1149,20 @@ object RptRecibosProveedor: TRptRecibosProveedor PrintOptions.Printer = 'Por defecto' PrintOptions.PrintOnSheet = 0 ReportOptions.CreateDate = 37800.807714351900000000 - ReportOptions.LastChange = 39839.760718449080000000 + ReportOptions.LastChange = 39841.474564699070000000 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;' diff --git a/Source/Modulos/Recibos de proveedor/Reports/uRptRecibosProveedor_Server.pas b/Source/Modulos/Recibos de proveedor/Reports/uRptRecibosProveedor_Server.pas index 55bb3a8a..4058db5d 100644 --- a/Source/Modulos/Recibos de proveedor/Reports/uRptRecibosProveedor_Server.pas +++ b/Source/Modulos/Recibos de proveedor/Reports/uRptRecibosProveedor_Server.pas @@ -41,6 +41,7 @@ type schReport: TDASchema; DataDictionary: TDADataDictionary; procedure DataModuleCreate(Sender: TObject); + procedure DataModuleDestroy(Sender: TObject); private FConnection: IDAConnection; FIdEmpresa: Integer; @@ -50,7 +51,11 @@ type FFechaVenFin: Variant; FListaIDProveedores: TIntegerArray; FImporteMinimo: Currency; - + FListaNombresProveedores: TStringList; + FDesglosado : Boolean; + + procedure RecuperarNombresProveedores; + procedure IniciarParametrosInforme; procedure PrepararTablaInforme(ATabla: TDAMemDataTable); procedure PrepararTablaResumenInforme(ATabla: IDADataset); function _GenerarInforme(const TipoInforme: String): Binary; @@ -64,7 +69,8 @@ implementation {$R *.dfm} uses - uSistemaFunc, StrUtils, uDataModuleServer, schRecibosProveedorClient_Intf; + uSistemaFunc, StrUtils, uDataModuleServer, schRecibosProveedorClient_Intf, + uROServer, DataAbstract4_Intf; const rptInforme = 'InfReciboProveedor.fr3'; @@ -89,10 +95,17 @@ begin FConnection := dmServer.DarNuevaConexion; frxReport.EngineOptions.NewSilentMode := simReThrow; + FListaNombresProveedores := TStringList.Create; + frxDBCabecera.DataSource := DADataCabecera; frxDBCompensados.DataSource := DADataCompensados; end; +procedure TRptRecibosProveedor.DataModuleDestroy(Sender: TObject); +begin + FreeANDNIL(FListaNombresProveedores); +end; + function TRptRecibosProveedor.GenerarInformeListadoRecibos( const IdEmpresa: Integer; const FechaInicio, FechaFin: Variant; const FechaVenInicio, FechaVenFin: Variant; @@ -140,6 +153,7 @@ begin //DESGLOSADO POR PROVEEDOR EN ESTE INFORME NO SE DESGLOSARÁ POR PROVEEDOR + FDesglosado := Desglosado; if Desglosado then ATipoInforme := rptInformeListadoRecibosProveedorDesglosado else @@ -217,6 +231,7 @@ begin //DESGLOSADO POR PROVEEDOR EN ESTE INFORME NO SE DESGLOSARÁ POR PROVEEDOR + FDesglosado := Desglosado; if Desglosado then ATipoInforme := rptInformeListadoRecibosProvPendientesDesglosado else @@ -234,6 +249,48 @@ begin end; end; +procedure TRptRecibosProveedor.IniciarParametrosInforme; +var + ATextos : TStringList; + ACadena : String; +begin + ATextos := TStringList.Create; + + try + if (not VarIsNull(FFechaInicio)) and (not VarIsNull(FFechaFin)) then + ACadena := Format('Fechas de recibo desde el %s hasta el %s', [VarToStr(FFechaInicio), VarToStr(FFechaFin)]) + else + ACadena := 'Sin rango de fechas'; + ATextos.Add(ACadena); + ACadena := ''; + + if (FImporteMinimo > 0) then + begin + ACadena := Format('Recibos 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 TRptRecibosProveedor.PrepararTablaInforme(ATabla: TDAMemDataTable); var Condicion: TDAWhereExpression; @@ -365,6 +422,97 @@ begin ATabla.Where.AddText(AWhereStr); end; +procedure TRptRecibosProveedor.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 TRptRecibosProveedor._GenerarInforme(const TipoInforme: String): Binary; var AInforme: Variant; @@ -376,9 +524,8 @@ begin raise Exception.Create (('Error Servidor: _GenerarInforme, no encuentra informe ' + TipoInforme)); frxReport.LoadFromFile(AInforme, True); - frxReport.Variables.Variables['FechaInicio'] := FFechaInicio; - frxReport.Variables.Variables['FechaFin'] := FFechaFin; - + IniciarParametrosInforme; + frxReport.PrepareReport(False); frxReport.PreviewPages.SaveToStream(Result); end;