Listados de recibos de proveedor -> Arreglos estéticos

git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@894 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
David Arranz 2009-01-28 11:23:26 +00:00
parent f65df6dd9f
commit 63bf5af46f
10 changed files with 217 additions and 114 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -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', (<TotalPaginas> + 1));'
''
' if Engine.FinalPass then'
' Set('#39'Pagina'#39', (<Pagina> + 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 ((<Pagina> + 1) = <TotalPaginas>) then'
' if (<Page#> = <TotalPages#>) then'
' begin '
' mContinua.Visible := True;'
' mContinua.Visible := False;'
' end '
' else'
' begin '
' mContinua.Visible := False;'
' mContinua.Visible := True;'
' end '
' end; '
'end;'

View File

@ -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;