FactuGES2/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.pas

117 lines
3.4 KiB
ObjectPascal

unit uRptPresupuestosCliente_Server;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, frxClass, frxDBSet, uDAScriptingProvider,
uDADataTable, uDACDSDataTable, DB, uDAClasses, uDABINAdapter, uROTypes,
uDAInterfaces, uDAMemDataTable, uDABin2DataStreamer,
frxGradient, frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDAEngine,
IBSQL, IBDatabase, IBCustomDataSet, IBQuery, uDADataStreamer, FactuGES_Intf,
frxExportPDF;
type
TRptPresupuestosCliente = class(TDataModule)
DADataCabecera: TDADataSource;
DADataDetalles: TDADataSource;
frxBarCodeObject1: TfrxBarCodeObject;
frxOLEObject1: TfrxOLEObject;
frxCrossObject1: TfrxCrossObject;
frxCheckBoxObject1: TfrxCheckBoxObject;
frxGradientObject1: TfrxGradientObject;
frxDBCabecera: TfrxDBDataset;
frxDBDetalles: TfrxDBDataset;
Bin2DataStreamer: TDABin2DataStreamer;
tbl_Cabecera: TDAMemDataTable;
tbl_Detalles: TDAMemDataTable;
frxReport: TfrxReport;
schReport: TDASchema;
DataDictionary: TDADataDictionary;
IBDatabase1: TIBDatabase;
IBTransaction1: TIBTransaction;
DataSource1: TDataSource;
DataSource2: TDataSource;
cabecera: TIBQuery;
detalles: TIBQuery;
frxPDFExport1: TfrxPDFExport;
procedure DataModuleCreate(Sender: TObject);
private
FConnection: IDAConnection;
procedure _GenerarPresupuesto(const AID : Integer);
public
function GenerarPresupuesto(const ListaID : TIntegerArray): Binary;
function GenerarPresupuestoEnPDF(const ListaID : TIntegerArray): Binary;
end;
implementation
{$R *.dfm}
uses
uDataModuleServer, schPresupuestosClienteClient_Intf;
const
rptInforme = 'InfPresupuestoCliente.fr3';
{ Dataset names for schReport }
ds_InformeCabecera = 'Informe_Cabecera';
ds_InformeDetalles = 'Informe_Detalles';
{ TRptPresupuestosProveedor }
procedure TRptPresupuestosCliente.DataModuleCreate(Sender: TObject);
begin
schReport.ConnectionManager := dmServer.ConnectionManager;
FConnection := dmServer.DarNuevaConexion;
frxReport.EngineOptions.NewSilentMode := simReThrow;
end;
function TRptPresupuestosCliente.GenerarPresupuesto(const ListaID : TIntegerArray): Binary;
var
i: Integer;
begin
Result := Binary.Create;
//Vamos generando todos y cada uno de los presupuestos recibidos
for i := 0 to ListaID.Count - 1 do
_GenerarPresupuesto(ListaID.Items[i]);
frxReport.PreviewPages.SaveToStream(Result);
end;
function TRptPresupuestosCliente.GenerarPresupuestoEnPDF(
const ListaID: TIntegerArray): Binary;
var
i: Integer;
begin
Result := Binary.Create;
//Vamos generando todos y cada uno de los presupuestos recibidos
for i := 0 to ListaID.Count - 1 do
_GenerarPresupuesto(ListaID.Items[i]);
frxPDFExport1.Stream := Result;
frxReport.Export(frxPDFExport1)
end;
procedure TRptPresupuestosCliente._GenerarPresupuesto(const AID: Integer);
begin
FConnection.BeginTransaction;
try
tbl_Cabecera.ParamByName('ID').AsInteger := AID;
tbl_Detalles.ParamByName('ID').AsInteger := AID;
tbl_Cabecera.Active := True;
tbl_Detalles.Active := True;
frxReport.LoadFromFile(DarRutaInformes + rptInforme, True);
frxReport.PrepareReport(False);
finally
FConnection.RollbackTransaction;
end;
end;
end.