Listados de pedidos a proveedor -> Arreglos estéticos

git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@891 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
David Arranz 2009-01-28 10:09:06 +00:00
parent 5bfc178b04
commit c5e8dffe74
6 changed files with 180 additions and 71 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

View File

@ -1,6 +1,7 @@
object RptPedidosProveedor: TRptPedidosProveedor object RptPedidosProveedor: TRptPedidosProveedor
OldCreateOrder = True OldCreateOrder = True
OnCreate = DataModuleCreate OnCreate = DataModuleCreate
OnDestroy = DataModuleDestroy
Height = 522 Height = 522
Width = 766 Width = 766
object schReport: TDASchema object schReport: TDASchema
@ -572,42 +573,20 @@ object RptPedidosProveedor: TRptPedidosProveedor
PrintOptions.Printer = 'Por defecto' PrintOptions.Printer = 'Por defecto'
PrintOptions.PrintOnSheet = 0 PrintOptions.PrintOnSheet = 0
ReportOptions.CreateDate = 37800.807714351900000000 ReportOptions.CreateDate = 37800.807714351900000000
ReportOptions.LastChange = 39836.753662280090000000 ReportOptions.LastChange = 39840.822843958330000000
ScriptLanguage = 'PascalScript' ScriptLanguage = 'PascalScript'
ScriptText.Strings = ( 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);' 'procedure mContinuaOnBeforePrint(Sender: TfrxComponent);'
'begin' 'begin'
' if Engine.FinalPass then' ' if Engine.FinalPass then'
' begin' ' begin'
' if (<Page#> = <TotalPages#>) then'
' //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'
' begin ' ' begin '
' mContinua.Visible := True;' ' mContinua.Visible := False;'
' end ' ' end '
' else' ' else'
' begin ' ' begin '
' mContinua.Visible := False;' ' mContinua.Visible := True;'
' end ' ' end '
' end; ' ' end; '
'end;' 'end;'

View File

@ -70,18 +70,22 @@ type
DABin2DataStreamer1: TDABin2DataStreamer; DABin2DataStreamer1: TDABin2DataStreamer;
procedure DataModuleCreate(Sender: TObject); procedure DataModuleCreate(Sender: TObject);
procedure frxReportGetValue(const VarName: string; var Value: Variant); procedure frxReportGetValue(const VarName: string; var Value: Variant);
procedure DataModuleDestroy(Sender: TObject);
private private
FConnection: IDAConnection; FConnection: IDAConnection;
FIdEmpresa: Integer; FIdEmpresa: Integer;
FFechaInicio: Variant; FFechaInicio: Variant;
FFechaFin: Variant; FFechaFin: Variant;
FListaIDProveedores: TIntegerArray; FListaIDProveedores: TIntegerArray;
FListaNombresProveedores: TStringList;
FImporteMinimo: Currency; FImporteMinimo: Currency;
FImprimirPrecio : Boolean; FImprimirPrecio : Boolean;
FImprimirRefProveedor : Boolean; FImprimirRefProveedor : Boolean;
FDesglosado : Boolean;
procedure _GenerarPedido(const ID : Integer); procedure _GenerarPedido(const ID : Integer);
procedure RecuperarNombresProveedores;
procedure IniciarParametrosInforme;
procedure PrepararTablaInforme(ATabla: TDAMemDataTable); procedure PrepararTablaInforme(ATabla: TDAMemDataTable);
procedure PrepararTablaResumenInforme(ATabla: IDADataset); procedure PrepararTablaResumenInforme(ATabla: IDADataset);
function _GenerarInforme(const TipoInforme: String): Binary; function _GenerarInforme(const TipoInforme: String): Binary;
@ -103,7 +107,8 @@ implementation
{$R *.dfm} {$R *.dfm}
uses uses
uSistemaFunc, StrUtils, uDataModuleServer, schPedidosProveedorClient_Intf; uSistemaFunc, StrUtils, uDataModuleServer, schPedidosProveedorClient_Intf,
uROServer, DataAbstract4_Intf;
const const
rptInforme = 'InfPedidoProveedor.fr3'; rptInforme = 'InfPedidoProveedor.fr3';
@ -125,10 +130,17 @@ begin
FConnection := dmServer.DarNuevaConexion; FConnection := dmServer.DarNuevaConexion;
frxReport.EngineOptions.NewSilentMode := simReThrow; frxReport.EngineOptions.NewSilentMode := simReThrow;
FListaNombresProveedores := TStringList.Create;
frxDBCabecera.DataSource := DADSCabecera; frxDBCabecera.DataSource := DADSCabecera;
frxDBDetalles.DataSource := DADSDetalles; frxDBDetalles.DataSource := DADSDetalles;
end; end;
procedure TRptPedidosProveedor.DataModuleDestroy(Sender: TObject);
begin
FreeANDNIL(FListaNombresProveedores);
end;
procedure TRptPedidosProveedor.frxReportGetValue(const VarName: string; procedure TRptPedidosProveedor.frxReportGetValue(const VarName: string;
var Value: Variant); var Value: Variant);
begin begin
@ -158,8 +170,6 @@ begin
FFechaFin := FechaFin; FFechaFin := FechaFin;
FImporteMinimo := ImporteMinimo; FImporteMinimo := ImporteMinimo;
if Assigned(FListaIDProveedores) then
FListaIDProveedores.Free;
FListaIDProveedores := ListaIDProveedores; FListaIDProveedores := ListaIDProveedores;
if tbl_InformeListadoPedidos.Active then if tbl_InformeListadoPedidos.Active then
@ -178,6 +188,7 @@ begin
DABin2DataStreamer1.ReadDataset(AStream, tbl_InformeListadoPedidosResumen, TRUE, '', TRUE, TRUE); DABin2DataStreamer1.ReadDataset(AStream, tbl_InformeListadoPedidosResumen, TRUE, '', TRUE, TRUE);
//DESGLOSADO POR PROVEEDOR EN ESTE INFORME NO SE DESGLOSARÁ POR PROVEEDOR //DESGLOSADO POR PROVEEDOR EN ESTE INFORME NO SE DESGLOSARÁ POR PROVEEDOR
FDesglosado := Desglosado;
if Desglosado then if Desglosado then
ATipoInforme := rptInformeListadoPedidosDesglosado ATipoInforme := rptInformeListadoPedidosDesglosado
else else
@ -226,8 +237,7 @@ begin
raise Exception.Create (('Error Servidor: _GenerarInforme, no encuentra informe ' + TipoInforme)); raise Exception.Create (('Error Servidor: _GenerarInforme, no encuentra informe ' + TipoInforme));
frxReport.LoadFromFile(AInforme, True); frxReport.LoadFromFile(AInforme, True);
frxReport.Variables.Variables['FechaInicio'] := FFechaInicio; IniciarParametrosInforme;
frxReport.Variables.Variables['FechaFin'] := FFechaFin;
frxReport.PrepareReport(False); frxReport.PrepareReport(False);
frxReport.PreviewPages.SaveToStream(Result); frxReport.PreviewPages.SaveToStream(Result);
@ -280,6 +290,48 @@ begin
end; end;
procedure TRptPedidosProveedor.IniciarParametrosInforme;
var
ATextos : TStringList;
ACadena : String;
begin
ATextos := TStringList.Create;
try
if (not VarIsNull(FFechaInicio)) and (not VarIsNull(FFechaFin)) then
ACadena := Format('Fechas de pedido 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('Pedidos 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 TRptPedidosProveedor.PrepararTablaInforme(ATabla: TDAMemDataTable); procedure TRptPedidosProveedor.PrepararTablaInforme(ATabla: TDAMemDataTable);
var var
Condicion: TDAWhereExpression; Condicion: TDAWhereExpression;
@ -386,4 +438,94 @@ begin
ATabla.Where.AddText(AWhereStr); ATabla.Where.AddText(AWhereStr);
end; end;
procedure TRptPedidosProveedor.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 := DABin2DataStreamer1;
ADataTable.RemoteFetchEnabled := False;
DABin2DataStreamer1.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;
end. end.