FactuGES2/Source/Modulos/Facturas de cliente/Reports/uRptFacturasCliente_Server.pas

110 lines
3.4 KiB
ObjectPascal

unit uRptFacturasCliente_Server;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, frxClass, frxDBSet, uDAScriptingProvider,
uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient,
frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes,
uDAInterfaces, uDADataStreamer, uDABin2DataStreamer, uDAMemDataTable;
type
TRptFacturasCliente = class(TDataModule)
DADataCabecera: TDADataSource;
DADataDetalles: TDADataSource;
tbl_FacturaCliente: TDAMemDataTable;
tbl_DetallesFacturaCliente: TDAMemDataTable;
frxRichObject1: TfrxRichObject;
frxBarCodeObject1: TfrxBarCodeObject;
frxOLEObject1: TfrxOLEObject;
frxCrossObject1: TfrxCrossObject;
frxCheckBoxObject1: TfrxCheckBoxObject;
frxGradientObject1: TfrxGradientObject;
frxDBCabecera: TfrxDBDataset;
frxDBDetalles: TfrxDBDataset;
DADataVencimientos: TDADataSource;
tbl_Vencimientos: TDAMemDataTable;
frxDBDataset1: TfrxDBDataset;
DataDictionary: TDADataDictionary;
frxReport: TfrxReport;
Bin2DataStreamer: TDABin2DataStreamer;
schReport: TDASchema;
procedure DataModuleCreate(Sender: TObject);
private
FConnection: IDAConnection;
//Genera cada uno de los albaranes a imprimir
procedure GenerarFactura(const ID: integer); overload;
public
function GenerarFactura(const AFacturaID : String): Binary; overload;
end;
implementation
{$R *.dfm}
uses
uDataModuleServer, schFacturasClienteClient_Intf;
const
rptFacturaCliente = 'InfFacturaCliente.fr3';
rptFacturaClienteAbeto = 'InfFacturaClienteAbeto.fr3';
{ Dataset names for schReport }
ds_InformeFacturasCliente = 'InformeFacturasCliente';
ds_InformeFacturasCliente_Detalles = 'InformeFacturasCliente_Detalles';
ds_InformeFacturasCliente_Vencimientos = 'InformeFacturasCliente_Vencimientos';
{ TRptFacturasCliente }
procedure TRptFacturasCliente.DataModuleCreate(Sender: TObject);
begin
schReport.ConnectionManager := dmServer.ConnectionManager;
FConnection := dmServer.DarNuevaConexion;
frxReport.EngineOptions.NewSilentMode := simReThrow;
end;
function TRptFacturasCliente.GenerarFactura(const AFacturaID: String): Binary;
var
ID_Facturas: TStringList;
i: Integer;
begin
Result := Binary.Create;
FConnection.BeginTransaction;
try
ID_Facturas := TStringList.Create;
ID_Facturas.CommaText := AFacturaID;
//Vamos generando todos y cada uno de los albaranes recibidos
for i := 0 to ID_Facturas.Count - 1 do
GenerarFactura(StrToInt(ID_Facturas.Strings[i]));
frxReport.PreviewPages.SaveToStream(Result);
finally
FConnection.RollbackTransaction;
end;
end;
procedure TRptFacturasCliente.GenerarFactura(const ID: integer);
begin
tbl_FacturaCliente.ParamByName('ID').AsInteger := ID;
tbl_DetallesFacturaCliente.ParamByName('ID_FACTURA').AsInteger := ID;
tbl_Vencimientos.ParamByName('ID_FACTURA').AsInteger := ID;
tbl_FacturaCliente.Active := True;
tbl_DetallesFacturaCliente.Active := True;
tbl_Vencimientos.Active := True;
if (tbl_FacturaCliente.FieldByName('ID_TIENDA').AsInteger <> 3) then
frxReport.LoadFromFile(DarRutaInformes + rptFacturaCliente, True)
else
frxReport.LoadFromFile(DarRutaInformes + rptFacturaClienteAbeto, True);
frxReport.PrepareReport(False);
end;
end.