AbetoDesign_FactuGES2/Source/Modulos/Comisiones/Reports/uRptComisiones_Server.pas

116 lines
3.6 KiB
ObjectPascal

unit uRptComisiones_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
TRptComisiones = class(TDataModule)
DADataCabecera: TDADataSource;
tbl_Comisiones: TDAMemDataTable;
frxRichObject1: TfrxRichObject;
frxBarCodeObject1: TfrxBarCodeObject;
frxOLEObject1: TfrxOLEObject;
frxCrossObject1: TfrxCrossObject;
frxCheckBoxObject1: TfrxCheckBoxObject;
frxGradientObject1: TfrxGradientObject;
frxChartObject1: TfrxChartObject;
frxDBCabecera: TfrxDBDataset;
frxReport: TfrxReport;
Bin2DataStreamer: TDABin2DataStreamer;
frxDBDetalles2: TfrxDBDataset;
DADataDetalles2: TDADataSource;
tbl_Vendedores: TDAMemDataTable;
tbl_FacturasComision: TDAMemDataTable;
DADataDetalles: TDADataSource;
frxDBDetalles: TfrxDBDataset;
tbl_FacturasComisionDesglosado: TDAMemDataTable;
DADataDetalles3: TDADataSource;
frxDBDetalles3: TfrxDBDataset;
schReport: TDASchema;
DataDictionary: TDADataDictionary;
procedure DataModuleCreate(Sender: TObject);
private
FConnection: IDAConnection;
//Genera cada uno de los albaranes a imprimir
procedure GenerarComision(const ID: integer; const AllDetails: Boolean); overload;
public
function GenerarComision(const AComisionID : String; const AllDetails: Boolean): Binary; overload;
end;
implementation
{$R *.dfm}
uses
uSistemaFunc, uDataModuleServer;
const
rptComision = 'InfComision.fr3';
{ TRptComision }
procedure TRptComisiones.DataModuleCreate(Sender: TObject);
begin
schReport.ConnectionManager := dmServer.ConnectionManager;
FConnection := dmServer.DarNuevaConexion;
frxReport.EngineOptions.NewSilentMode := simReThrow;
end;
procedure TRptComisiones.GenerarComision(const ID: integer; const AllDetails: Boolean);
var
AInforme: Variant;
begin
FConnection.BeginTransaction;
try
tbl_Comisiones.Active := False;
tbl_FacturasComision.Active := False;
tbl_FacturasComisionDesglosado.Active := False;
tbl_Comisiones.ParamByName('ID').AsInteger := ID;
tbl_FacturasComision.ParamByName('ID').AsInteger := ID;
tbl_Comisiones.Active := True;
tbl_FacturasComision.Active := True;
// tbl_FacturasComisionDesglosado.Active := True;
AInforme := DarRutaFichero(DarRutaInformes, rptComision, tbl_Comisiones.FieldByName('ID_EMPRESA').AsString);
if VarIsNull(AInforme) then
raise Exception.Create (('Error Servidor: GenerarComision, no encuentra informe' + rptComision));
frxReport.LoadFromFile(AInforme, True);
frxReport.Variables.Variables['AllDetails'] := AllDetails;
frxReport.ReportOptions.Name := 'Comisiones';
frxReport.PrepareReport(False);
finally
FConnection.RollbackTransaction;
end;
end;
function TRptComisiones.GenerarComision(const AComisionID: String; const AllDetails: Boolean): Binary;
var
ID_Comisiones: TStringList;
i: Integer;
begin
Result := Binary.Create;
ID_Comisiones := TStringList.Create;
ID_Comisiones.CommaText := AComisionID;
//Vamos generando todos y cada uno de las comisiones pedidas
for i := 0 to ID_Comisiones.Count - 1 do
GenerarComision(StrToInt(ID_Comisiones.Strings[i]), AllDetails);
frxReport.PreviewPages.SaveToStream(Result);
end;
end.