Facturas de cliente: exportación a word del informe (en preparación).

git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@290 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
David Arranz 2008-02-21 10:10:05 +00:00
parent e6f9cf0502
commit 7e01bc60d4
5 changed files with 82 additions and 22 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -2,9 +2,4 @@ inherited fEditorFacturasClientePreview: TfEditorFacturasClientePreview
Caption = 'Previsualizar la factura'
PixelsPerInch = 96
TextHeight = 13
inherited frxReport1: TfrxReport
Datasets = <>
Variables = <>
Style = <>
end
end

View File

@ -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.