FactuGES2/Source/Modulos/Recibos de cliente/Reports/uRptRecibosCliente_Server.pas
2008-07-14 14:53:12 +00:00

124 lines
3.5 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;
FConnection.BeginTransaction;
try
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);
finally
FConnection.RollbackTransaction;
end;
end;
procedure TRptRecibosCliente.GenerarRecibo(const ID: Integer);
{var
dsMaster: IDADataset;
dsCompensados : IDADataset;
AStream: TMemoryStream;
}
begin
// AStream := TMemoryStream.Create;
try
// dsMaster := schReport.NewDataset(FConnection, ds_InformeCabecera, ['ID'], [ID]);
// dsCompensados := schReport.NewDataset(FConnection, ds_InformeCompensados, ['ID_RECIBO'], [ID], False);
// AStream.Clear;
// DABINAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1);
// DABINAdapter.ReadDataset(AStream, tbl_Cabecera, TRUE, '', TRUE, TRUE);
// AStream.Clear;
// DABINAdapter.WriteDataset(AStream, dsCompensados, [woRows, woSchema], -1);
// DABINAdapter.ReadDataset(AStream, tbl_Compensados, TRUE, '', TRUE, TRUE);
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
// AStream.Free;
// dsMaster := Nil;
// dsCompensados := Nil;
end;
end;
end.