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

112 lines
3.3 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;
frxDBDetalles1: TfrxDBDataset;
DADataDetalles1: TDADataSource;
tbl_Facturas: TDAMemDataTable;
frxDBDetalles2: TfrxDBDataset;
DADataDetalles2: TDADataSource;
tbl_Vendedores: TDAMemDataTable;
schReport: TDASchema;
DataDictionary: TDADataDictionary;
procedure DataModuleCreate(Sender: TObject);
private
FConnection: IDAConnection;
//Genera cada uno de los albaranes a imprimir
procedure GenerarComision(const ID: integer); overload;
public
function GenerarComision(const AComisionID : String): 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);
var
AInforme: Variant;
begin
FConnection.BeginTransaction;
try
tbl_Comisiones.Active := False;
tbl_Facturas.Active := False;
tbl_Vendedores.Active := False;
tbl_Comisiones.ParamByName('ID').AsInteger := ID;
tbl_Facturas.ParamByName('ID').AsInteger := ID;
tbl_Vendedores.ParamByName('ID').AsInteger := ID;
tbl_Comisiones.Active := True;
tbl_Facturas.Active := True;
tbl_Vendedores.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.ReportOptions.Name := 'Comisiones';
frxReport.PrepareReport(False);
finally
FConnection.RollbackTransaction;
end;
end;
function TRptComisiones.GenerarComision(const AComisionID: String): 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]));
frxReport.PreviewPages.SaveToStream(Result);
end;
end.