Listados de facturas de cliente -> Arreglos estéticos
git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@890 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
parent
04f1da12de
commit
5bfc178b04
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
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
@ -1,6 +1,7 @@
|
||||
object RptFacturasCliente: TRptFacturasCliente
|
||||
OldCreateOrder = True
|
||||
OnCreate = DataModuleCreate
|
||||
OnDestroy = DataModuleDestroy
|
||||
Height = 513
|
||||
Width = 933
|
||||
object schReport: TDASchema
|
||||
|
||||
@ -91,6 +91,7 @@ type
|
||||
tbl_InformeListadoFacturasResumen: TDAMemDataTable;
|
||||
Bin2DataStreamer: TDABin2DataStreamer;
|
||||
procedure DataModuleCreate(Sender: TObject);
|
||||
procedure DataModuleDestroy(Sender: TObject);
|
||||
private
|
||||
FConnection: IDAConnection;
|
||||
FIdEmpresa: Integer;
|
||||
@ -99,7 +100,9 @@ type
|
||||
FFechaVenInicio: Variant;
|
||||
FFechaVenFin: Variant;
|
||||
FListaIDClientes: TIntegerArray;
|
||||
FListaNombresClientes : TStringList;
|
||||
FImporteMinimo: Currency;
|
||||
FDesglosado : Boolean;
|
||||
|
||||
//Genera cada una de las facturas a imprimir
|
||||
procedure _GenerarFactura(const ID: Integer; const VerSello: Boolean = True);
|
||||
@ -107,6 +110,8 @@ type
|
||||
procedure PrepararTablaInforme(ATabla: TDAMemDataTable);
|
||||
procedure PrepararTablaResumenInforme(ATabla: IDADataset);
|
||||
function _GenerarInforme(const TipoInforme: String): Binary;
|
||||
procedure IniciarParametrosInforme;
|
||||
procedure RecuperarNombresClientes;
|
||||
public
|
||||
function GenerarFactura(const ListaID : TIntegerArray; const VerSello: Boolean = True): Binary;
|
||||
function GenerarFacturaEnPDF(const ListaID : TIntegerArray; const VerSello: Boolean = True): Binary;
|
||||
@ -120,7 +125,8 @@ implementation
|
||||
{$R *.dfm}
|
||||
|
||||
uses
|
||||
uSistemaFunc, StrUtils, uDataModuleServer, schFacturasClienteClient_Intf;
|
||||
uSistemaFunc, StrUtils, uDataModuleServer, schFacturasClienteClient_Intf,
|
||||
uROServer, DataAbstract4_Intf;
|
||||
|
||||
const
|
||||
rptFacturaCliente = 'InfFacturaCliente.fr3';
|
||||
@ -144,11 +150,18 @@ begin
|
||||
FConnection := dmServer.DarNuevaConexion;
|
||||
frxReport.EngineOptions.NewSilentMode := simReThrow;
|
||||
|
||||
FListaNombresClientes := TStringList.Create;
|
||||
|
||||
frxDBCabecera.DataSource := DADSCabecera;
|
||||
frxDBDetalles.DataSource := DADSDetalles;
|
||||
frxDBVencimientos.DataSource := DADSVencimientos;
|
||||
end;
|
||||
|
||||
procedure TRptFacturasCliente.DataModuleDestroy(Sender: TObject);
|
||||
begin
|
||||
FreeANDNIL(FListaNombresClientes);
|
||||
end;
|
||||
|
||||
function TRptFacturasCliente.GenerarFactura(const ListaID: TIntegerArray; const VerSello: Boolean = True): Binary;
|
||||
var
|
||||
i: Integer;
|
||||
@ -279,7 +292,8 @@ begin
|
||||
Bin2DataStreamer.ReadDataset(AStream, tbl_InformeListadoFacturasResumen, TRUE, '', TRUE, TRUE);
|
||||
|
||||
//DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
|
||||
if Desglosado then
|
||||
FDesglosado := Desglosado;
|
||||
if FDesglosado then
|
||||
ATipoInforme := rptInformeListadoFacturasClienteDesglosado
|
||||
else
|
||||
ATipoInforme := rptInformeListadoFacturasCliente;
|
||||
@ -342,7 +356,8 @@ begin
|
||||
end;
|
||||
|
||||
//DESGLOSADO POR CLIENTE EN ESTE INFORME NO SE DESGLOSARÁ POR CLIENTE
|
||||
if Desglosado then
|
||||
FDesglosado := Desglosado;
|
||||
if FDesglosado then
|
||||
ATipoInforme := rptInformeListadoFactuasClientePendienteDesglosado
|
||||
else
|
||||
ATipoInforme := rptInformeListadoFactuasClientePendiente;
|
||||
@ -359,6 +374,56 @@ begin
|
||||
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;
|
||||
@ -490,6 +555,96 @@ begin
|
||||
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; const VerSello: Boolean = True);
|
||||
var
|
||||
AInforme: Variant;
|
||||
@ -527,7 +682,6 @@ end;
|
||||
function TRptFacturasCliente._GenerarInforme(const TipoInforme: String): Binary;
|
||||
var
|
||||
AInforme: Variant;
|
||||
|
||||
begin
|
||||
Result := Binary.Create;
|
||||
AInforme := DarRutaFichero(DarRutaInformes, TipoInforme, IntToStr(FIdEmpresa));
|
||||
@ -535,8 +689,7 @@ 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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user