FactuGES2/Source/Modulos/Recibos de cliente/Reports/uRptRecibosCliente_Server.pas

99 lines
2.7 KiB
ObjectPascal

unit uRptRecibosCliente_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
TRptRecibosCliente = class(TDataModule)
DADataCabecera: TDADataSource;
tbl_Cabecera: TDAMemDataTable;
frxRichObject1: TfrxRichObject;
frxBarCodeObject1: TfrxBarCodeObject;
frxOLEObject1: TfrxOLEObject;
frxCrossObject1: TfrxCrossObject;
frxCheckBoxObject1: TfrxCheckBoxObject;
frxGradientObject1: TfrxGradientObject;
frxChartObject1: TfrxChartObject;
frxDBCabecera: TfrxDBDataset;
DADataCompensados: TDADataSource;
frxDBCompensados: TfrxDBDataset;
tbl_Compensados: TDAMemDataTable;
frxReport: TfrxReport;
Bin2DataStreamer: TDABin2DataStreamer;
schReport: TDASchema;
DataDictionary: TDADataDictionary;
procedure DataModuleCreate(Sender: TObject);
private
FConnection: IDAConnection;
procedure GenerarRecibo(const ID : Integer); overload;
public
function GenerarRecibo(const ID : String): Binary; overload;
end;
implementation
{$R *.dfm}
uses
uDataModuleServer;
const
rptInforme = 'InfReciboCliente.fr3';
{ Dataset names for schReport }
ds_InformeCabecera = 'Informe_Cabecera';
ds_InformeCompensados = 'Informe_Compensados';
{ TRptReciboCliente }
procedure TRptRecibosCliente.DataModuleCreate(Sender: TObject);
begin
schReport.ConnectionManager := dmServer.ConnectionManager;
FConnection := dmServer.DarNuevaConexion;
frxReport.EngineOptions.NewSilentMode := simReThrow;
end;
function TRptRecibosCliente.GenerarRecibo(const ID: String): Binary;
var
ID_Recibos: TStringList;
i: Integer;
begin
Result := Binary.Create;
ID_Recibos := TStringList.Create;
ID_Recibos.CommaText := ID;
//Vamos generando todos y cada uno de los albaranes recibidos
for i := 0 to ID_Recibos.Count - 1 do
GenerarRecibo(StrToInt(ID_Recibos.Strings[i]));
frxReport.PreviewPages.SaveToStream(Result);
end;
procedure TRptRecibosCliente.GenerarRecibo(const ID: Integer);
begin
FConnection.BeginTransaction;
try
tbl_Cabecera.ParamByName('ID').AsInteger := ID;
tbl_Compensados.ParamByName('ID_RECIBO').AsInteger := ID;
tbl_Cabecera.Active := True;
tbl_Compensados.Active := True;
frxReport.LoadFromFile(DarRutaInformes + rptInforme, True);
frxReport.PrepareReport(False);
finally
FConnection.RollbackTransaction;
end;
end;
end.