From 7e01bc60d4b55456672fcc651489c53251277d62 Mon Sep 17 00:00:00 2001 From: david Date: Thu, 21 Feb 2008 10:10:05 +0000 Subject: [PATCH] =?UTF-8?q?Facturas=20de=20=20cliente:=20exportaci=C3=B3n?= =?UTF-8?q?=20a=20word=20del=20informe=20(en=20preparaci=C3=B3n).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@290 0c75b7a4-871f-7646-8a2f-f78d34cc349f --- .../uFacturasClienteReportController.pas | 53 +++++++++++++++---- .../Data/uDataModuleFacturasCliente.pas | 14 +++-- .../uIDataModuleFacturasClienteReport.pas | 5 +- .../Views/uEditorFacturasClienteReport.dfm | 5 -- .../Views/uEditorFacturasClienteReport.pas | 27 +++++++++- 5 files changed, 82 insertions(+), 22 deletions(-) diff --git a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteReportController.pas b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteReportController.pas index fd029af2..d066cfa6 100644 --- a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteReportController.pas +++ b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteReportController.pas @@ -8,13 +8,14 @@ uses uBizFacturasCliente; type - IFacturasClienteReportController = interface + IFacturasClienteReportController = interface(IControllerBase) ['{A0F41767-4FF6-4BAE-9FC9-894DD721D756}'] - procedure Preview(const AFacturaID : String); - procedure Print(const AFacturaID : String); + procedure Preview(const AListaID : String); + procedure Print(const AListaID : String); + function ExportToWord(const AID: Integer; const AFileName : String = ''): Boolean; end; - TFacturasClienteReportController = class(TInterfacedObject, IFacturasClienteReportController) + TFacturasClienteReportController = class(TControllerBase, IFacturasClienteReportController) private FDataModule : IDataModuleFacturasClienteReport; function CreateEditor(const AName: String; const IID: TGUID; @@ -23,8 +24,9 @@ type constructor Create; destructor Destroy; override; - procedure Preview(const AFacturaID : String); - procedure Print(const AFacturaID : String); + procedure Preview(const AListaID : String); + procedure Print(const AListaID : String); + function ExportToWord(const AID: Integer; const AFileName : String = ''): Boolean; end; @@ -32,7 +34,8 @@ implementation uses uROTypes, uEditorRegistryUtils, uIEditorFacturasClientePreview, - uEditorPreview, uDataModuleFacturasCliente, uEditorBase, cxControls; + uEditorPreview, uDataModuleFacturasCliente, uEditorBase, cxControls, + uStringsUtils, uSistemaFunc; { TFacturasClienteReportController } @@ -54,7 +57,31 @@ begin inherited; end; -procedure TFacturasClienteReportController.Preview(const AFacturaID : String); +function TFacturasClienteReportController.ExportToWord(const AID: Integer; + const AFileName: String): Boolean; +var + AStream: Binary; + AFile : String; +begin + AFile := AFileName; + if EsCadenaVacia(AFile) and (not DarFicheroWordExportar(AFile)) then + Exit; + + ShowHourglassCursor; + try + AStream := FDataModule.GetRptWordFactura(AID); + try + AStream.SaveToFile(AFile); + Result := True; + finally + FreeAndNil(AStream); + end; + finally + HideHourglassCursor; + end; +end; + +procedure TFacturasClienteReportController.Preview(const AListaID : String); var AStream: Binary; AEditor : IEditorFacturasClientePreview; @@ -62,12 +89,14 @@ begin AEditor := NIL; ShowHourglassCursor; try - AStream := FDataModule.GetReport(AFacturaID); + AStream := FDataModule.GetRptFacturas(AListaID); try CreateEditor('EditorFacturasClientePreview', IEditorFacturasClientePreview, AEditor); if Assigned(AEditor) then with AEditor do begin + AEditor.Controller := Self; + AEditor.ListaID := AListaID; LoadFromStream(AStream); Preview; Release; @@ -81,7 +110,7 @@ begin end; end; -procedure TFacturasClienteReportController.Print(const AFacturaID : String); +procedure TFacturasClienteReportController.Print(const AListaID : String); var AStream: Binary; AEditor : IEditorFacturasClientePreview; @@ -89,12 +118,14 @@ begin AEditor := NIL; ShowHourglassCursor; try - AStream := FDataModule.GetReport(AFacturaID); + AStream := FDataModule.GetRptFacturas(AListaID); try CreateEditor('EditorFacturasClientePreview', IEditorFacturasClientePreview, AEditor); if Assigned(AEditor) then with AEditor do begin + AEditor.Controller := Self; + AEditor.ListaID := AListaID; LoadFromStream(AStream); Print; Release; diff --git a/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.pas b/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.pas index 2882b01b..5df32f51 100644 --- a/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.pas +++ b/Source/Modulos/Facturas de cliente/Data/uDataModuleFacturasCliente.pas @@ -30,7 +30,8 @@ type function NewItem : IBizFacturaCliente; // Report - function GetReport(const AFacturaID: String): Binary; + function GetRptFacturas(const AListaID: String): Binary; + function GetRptWordFactura(const AID: Integer): Binary; end; implementation @@ -49,9 +50,16 @@ begin RORemoteService.Message := dmConexion.Message; end; -function TDataModuleFacturasCliente.GetReport(const AFacturaID: String): Binary; +function TDataModuleFacturasCliente.GetRptFacturas( + const AListaID: String): Binary; begin -// Result := (RORemoteService as IsrvFacturasCliente).GenerateReport(AFacturaID) + Result := (RORemoteService as IsrvFacturasCliente).GenerateReport(AListaID) +end; + +function TDataModuleFacturasCliente.GetRptWordFactura( + const AID: Integer): Binary; +begin + Result := (RORemoteService as IsrvFacturasCliente).GenerateReportEnWord(AID) end; function TDataModuleFacturasCliente.NewItem: IBizFacturaCliente; diff --git a/Source/Modulos/Facturas de cliente/Model/Data/uIDataModuleFacturasClienteReport.pas b/Source/Modulos/Facturas de cliente/Model/Data/uIDataModuleFacturasClienteReport.pas index 4651b208..22cf8317 100644 --- a/Source/Modulos/Facturas de cliente/Model/Data/uIDataModuleFacturasClienteReport.pas +++ b/Source/Modulos/Facturas de cliente/Model/Data/uIDataModuleFacturasClienteReport.pas @@ -7,8 +7,9 @@ uses type IDataModuleFacturasClienteReport = interface - ['{F498AC70-AA38-4C06-B301-85A4AC0B210B}'] - function GetReport(const AFacturaID: String): Binary; + ['{D241A912-78C6-4C65-AEBF-8DDEFE35F511}'] + function GetRptFacturas(const AListaID: String): Binary; + function GetRptWordFactura(const AID: Integer): Binary; end; implementation diff --git a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasClienteReport.dfm b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasClienteReport.dfm index 4812f26e..80401039 100644 --- a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasClienteReport.dfm +++ b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasClienteReport.dfm @@ -2,9 +2,4 @@ inherited fEditorFacturasClientePreview: TfEditorFacturasClientePreview Caption = 'Previsualizar la factura' PixelsPerInch = 96 TextHeight = 13 - inherited frxReport1: TfrxReport - Datasets = <> - Variables = <> - Style = <> - end end diff --git a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasClienteReport.pas b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasClienteReport.pas index 7961197e..7c2f2149 100644 --- a/Source/Modulos/Facturas de cliente/Views/uEditorFacturasClienteReport.pas +++ b/Source/Modulos/Facturas de cliente/Views/uEditorFacturasClienteReport.pas @@ -12,10 +12,13 @@ uses JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uIEditorFacturasClientePreview, - JvExComCtrls, JvStatusBar; + JvExComCtrls, JvStatusBar, frxExportText, frxExportRTF, frxExportMail, + frxExportXLS, frxExportImage, frxExportPDF, frxClass, frxDCtrl, frxGradient, + frxChBox, frxCross, frxRich, frxOLE, frxBarcode; type TfEditorFacturasClientePreview = class(TfEditorPreview, IEditorFacturasClientePreview) + procedure actExportarRTFExecute(Sender: TObject); private { Private declarations } public @@ -27,4 +30,26 @@ implementation {$R *.dfm} +uses + uFacturasClienteReportController; + +procedure TfEditorFacturasClientePreview.actExportarRTFExecute(Sender: TObject); +var + AListaID : TStringList; + I: Integer; +begin + // inherited; <- No llamar al padre + if not Assigned(Controller) then + raise Exception.Create('No se ha asignado el controlador necesario'); + + AListaID := TStringList.Create; + try + AListaID.CommaText := Self.ListaID; + for I := 0 to AListaID.Count - 1 do + (Controller as IFacturasClienteReportController).ExportToWord(StrToInt(AListaID[I])); + finally + FreeAndNIL(AListaID); + end; +end; + end.