Tecsitel_FactuGES2/Source/Modulos/Presupuestos de cliente/Reports/uRptPresupuestosCliente_Server.pas
david e7e45f1323 - #12 -> Enviar documentos por correo electrónico. Adaptación de los módulos (sin terminar)
- En los controladores, cambiar TObservador por TControllerBase
- Limpieza de código y warnings.


git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@528 0c75b7a4-871f-7646-8a2f-f78d34cc349f
2008-08-22 14:52:35 +00:00

170 lines
5.5 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, uDADataStreamer, uDABin2DataStreamer,
frxGradient, frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDAEngine,
IBSQL, IBDatabase, IBCustomDataSet, IBQuery, frxExportPDF, FactuGES_Intf;
type
TRptPresupuestosCliente = class(TDataModule)
DADSCabecera: TDADataSource;
DADSDetalles: TDADataSource;
frxBarCodeObject1: TfrxBarCodeObject;
frxOLEObject1: TfrxOLEObject;
frxCrossObject1: TfrxCrossObject;
frxCheckBoxObject1: TfrxCheckBoxObject;
frxGradientObject1: TfrxGradientObject;
frxDBCabecera: TfrxDBDataset;
frxDBDetalles: TfrxDBDataset;
tbl_Cabecera: TDAMemDataTable;
tbl_Detalles: TDAMemDataTable;
frxReport: TfrxReport;
IBDatabase1: TIBDatabase;
IBTransaction1: TIBTransaction;
DataSource1: TDataSource;
DataSource2: TDataSource;
capitulos: TIBQuery;
DataSource3: TDataSource;
detalles: TIBQuery;
DataSource4: TDataSource;
resumen: TIBQuery;
resumenID: TIntegerField;
resumenID_PRESUPUESTO: TIntegerField;
resumenPOSICION: TIntegerField;
resumenTIPO_DETALLE: TIBStringField;
resumenCONCEPTO: TIBStringField;
resumenIMPORTE_TOTAL: TIBBCDField;
resumenVISIBLE: TSmallintField;
frxDBCapitulos: TfrxDBDataset;
frxDBResumen: TfrxDBDataset;
DABin2DataStreamer1: TDABin2DataStreamer;
cabecera: TIBQuery;
cabeceraID: TIntegerField;
cabeceraID_EMPRESA: TIntegerField;
cabeceraFECHA_PRESUPUESTO: TDateField;
cabeceraREFERENCIA: TIBStringField;
cabeceraPORTADA: TMemoField;
cabeceraMEMORIA: TMemoField;
cabeceraOBSERVACIONES: TMemoField;
cabeceraIMPORTE_NETO: TIBBCDField;
cabeceraIMPORTE_PORTE: TIBBCDField;
cabeceraDESCUENTO: TFloatField;
cabeceraIMPORTE_DESCUENTO: TIBBCDField;
cabeceraBASE_IMPONIBLE: TIBBCDField;
cabeceraIVA: TFloatField;
cabeceraID_CLIENTE: TIntegerField;
cabeceraREFERENCIA_CLIENTE: TIBStringField;
cabeceraCLIENTE_FINAL: TIBStringField;
cabeceraNIF_CIF: TIBStringField;
cabeceraNOMBRE: TIBStringField;
cabeceraIMPORTE_IVA: TIBBCDField;
cabeceraIMPORTE_TOTAL: TIBBCDField;
cabeceraPERSONA_CONTACTO: TIBStringField;
cabeceraCALLE: TIBStringField;
cabeceraPOBLACION: TIBStringField;
cabeceraPROVINCIA: TIBStringField;
cabeceraCODIGO_POSTAL: TIBStringField;
DADSCapitulos: TDADataSource;
tbl_Capitulos: TDAMemDataTable;
DADSResumen: TDADataSource;
tbl_Resumen: TDAMemDataTable;
DAMemDataTable1: TDAMemDataTable;
DAMemDataTable2: TDAMemDataTable;
schReport: TDASchema;
DataDictionary: TDADataDictionary;
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';
{ TRptPresupuestosProveedor }
procedure TRptPresupuestosCliente.DataModuleCreate(Sender: TObject);
begin
schReport.ConnectionManager := dmServer.ConnectionManager;
FConnection := dmServer.DarNuevaConexion;
frxReport.EngineOptions.NewSilentMode := simReThrow;
end;
function TRptPresupuestosCliente.GenerarPresupuestoEnPDF(const ListaID: TIntegerArray): Binary;
var
i: Integer;
begin
Result := Binary.Create;
//FConnection.BeginTransaction; <--- Creo que no va a hacer falta.
try
//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)
finally
//FConnection.RollbackTransaction; <--- Creo que no va a hacer falta.
end;
end;
function TRptPresupuestosCliente.GenerarPresupuesto(const ListaID: TIntegerArray): Binary;
var
i: Integer;
begin
Result := Binary.Create;
//FConnection.BeginTransaction; <--- Creo que no va a hacer falta.
try
//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);
finally
//FConnection.RollbackTransaction; <--- Creo que no va a hacer falta.
end;
end;
procedure TRptPresupuestosCliente._GenerarPresupuesto(const AID: Integer);
begin
frxDBCabecera.DataSource := DADSCabecera;
frxDBCapitulos.DataSource := DADSCapitulos;
frxDBDetalles.DataSource := DADSDetalles;
frxDBResumen.DataSource := DADSResumen;
tbl_Cabecera.ParamByName('ID').AsInteger := AID;
tbl_Capitulos.ParamByName('ID_PRESUPUESTO').AsInteger := AID;
tbl_Detalles.ParamByName('ID_PRESUPUESTO').AsInteger := AID;
tbl_Resumen.ParamByName('ID_PRESUPUESTO').AsInteger := AID;
tbl_Cabecera.Active := True;
tbl_Capitulos.Active := True;
tbl_Detalles.Active := True;
tbl_Resumen.Active := True;
frxReport.LoadFromFile(DarRutaInformes + rptInforme, True);
frxReport.PrepareReport(False);
end;
end.