diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj
index 59c4c4f6..f03a7d66 100644
--- a/Source/Cliente/FactuGES.dproj
+++ b/Source/Cliente/FactuGES.dproj
@@ -53,7 +53,7 @@
Delphi.Personality
VCLApplication
-FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1850FalseFalseFalseFalseFalse30821252Rodax Software S.L.1.8.5.0FactuGESFactuGES1.8.5.0FactuGES.dprFalse
+FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1860FalseFalseFalseFalseFalse30821252Rodax Software S.L.1.8.6.0FactuGESFactuGES1.8.6.0FactuGES.dprFalse
diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res
index ba95f9bb..721b7d64 100644
Binary files a/Source/Cliente/FactuGES.res and b/Source/Cliente/FactuGES.res differ
diff --git a/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dpk b/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dpk
index ac1db4ee..e3b99ea7 100644
Binary files a/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dpk and b/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dpk differ
diff --git a/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dproj b/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dproj
index 37905b86..d8e9e633 100644
--- a/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dproj
+++ b/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.dproj
@@ -1,4 +1,5 @@
-
+
+
{7ed85635-c723-4c0b-bf1d-f719e0ea33ad}
FacturasCliente_controller.dpk
@@ -41,26 +42,27 @@
Delphi.Personality
Package
-FalseTrueFalseTrueFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0FacturasCliente_controller.dpk
+FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0FacturasCliente_controller.dpk
MainSource
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.res b/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.res
index 8b251f31..1641339f 100644
Binary files a/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.res and b/Source/Modulos/Facturas de cliente/Controller/FacturasCliente_controller.res differ
diff --git a/Source/Modulos/Facturas de cliente/Controller/View/uIDialogListaFacturasClienteEnvioEMail.pas b/Source/Modulos/Facturas de cliente/Controller/View/uIDialogListaFacturasClienteEnvioEMail.pas
new file mode 100644
index 00000000..204393a0
--- /dev/null
+++ b/Source/Modulos/Facturas de cliente/Controller/View/uIDialogListaFacturasClienteEnvioEMail.pas
@@ -0,0 +1,21 @@
+unit uIDialogListaFacturasClienteEnvioEMail;
+
+interface
+
+uses
+ uBizFacturasCliente, uFacturasClienteController;
+
+type
+ IDialogListaFacturasClienteEnvioEMail = interface
+ ['{6BEC32D6-1C72-4FD0-AA02-655BE80872CF}']
+ function GetFacturas: IBizFacturaCliente;
+ procedure SetFacturas(const Value: IBizFacturaCliente);
+ property Facturas: IBizFacturaCliente read GetFacturas write SetFacturas;
+ function ShowModal : Integer;
+ procedure Release;
+ end;
+
+
+implementation
+
+end.
diff --git a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas
index 44ed59f5..4476ffe1 100644
--- a/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas
+++ b/Source/Modulos/Facturas de cliente/Controller/uFacturasClienteController.pas
@@ -53,7 +53,13 @@ type
function ElegirFacturas(AFacturas : IBizFacturaCliente; AMensaje: String; AMultiSelect: Boolean): IBizFacturaCliente;
function ExtraerSeleccionados(ARecibosCliente: IBizFacturaCliente) : IBizFacturaCliente;
- procedure EnviarFacturaPorEMail(AFactura : IBizFacturaCliente);
+
+ function EnviarFacturaPorEMail(AFactura : IBizFacturaCliente;
+ const AEnviarDirectamente: Boolean = True;
+ const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
+ const ATextoEMail: String = ''): Boolean;
+ function EnviarEmailFacturas(AFacturas : IBizFacturaCliente): Boolean;
+ function GenerarEmailFactura(AFactura : IBizFacturaCliente): Boolean;
function DarListaAnosFacturas: TStringList;
procedure FiltrarAno(AFactura: IBizFacturaCliente; ADynWhereDataTable: WideString; const Ano: String);
@@ -121,7 +127,13 @@ type
function ElegirFacturas(AFacturas : IBizFacturaCliente; AMensaje: String; AMultiSelect: Boolean): IBizFacturaCliente;
function ExtraerSeleccionados(AFacturasCliente: IBizFacturaCliente) : IBizFacturaCliente;
- procedure EnviarFacturaPorEMail(AFactura : IBizFacturaCliente);
+
+ function EnviarFacturaPorEMail(AFactura : IBizFacturaCliente;
+ const AEnviarDirectamente: Boolean = True;
+ const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
+ const ATextoEMail: String = ''): Boolean;
+ function EnviarEmailFacturas(AFacturas : IBizFacturaCliente): Boolean;
+ function GenerarEmailFactura(AFactura : IBizFacturaCliente): Boolean;
function DarListaAnosFacturas: TStringList;
procedure FiltrarAno(AFactura: IBizFacturaCliente; ADynWhereDataTable: WideString; const Ano: String);
@@ -130,14 +142,14 @@ type
implementation
uses
- Windows, Controls, cxControls, DB, uEditorRegistryUtils, schFacturasClienteClient_Intf,
+ Controls, cxControls, DB, uEditorRegistryUtils, schFacturasClienteClient_Intf,
uBizContactos, uIEditorFacturasCliente, uIEditorFacturaCliente, uFactuGES_App,
uDataModuleFacturasCliente, uBizDetallesFacturaCliente, uControllerDetallesBase,
uDataModuleUsuarios, uDAInterfaces, uDataTableUtils, uDateUtils, uNumUtils,
uAlbaranesClienteController, schAlbaranesClienteClient_Intf, uROTypes, uDetallesAlbaranClienteController,
uBizDetallesAlbaranCliente, uFacturasClienteReportController,
DateUtils, Forms, uFormasPagoController, uBizFormasPago, uIEditorElegirFacturasCliente,
- uRecibosClienteController, uBizRecibosCliente, uIntegerListUtils,
+ uRecibosClienteController, uBizRecibosCliente, uIntegerListUtils, uIDialogListaFacturasClienteEnvioEMail,
uSistemaFunc, uDialogElegirEMail, uEMailUtils, Dialogs, uStringsUtils,
uROXMLIntf;
@@ -755,8 +767,43 @@ begin
end;
end;
-procedure TFacturasClienteController.EnviarFacturaPorEMail(
- AFactura: IBizFacturaCliente);
+function TFacturasClienteController.EnviarEmailFacturas(AFacturas: IBizFacturaCliente): Boolean;
+var
+ ADialog : IDialogListaFacturasClienteEnvioEMail;
+ ARespuesta : Integer;
+begin
+ ADialog := NIL;
+
+ if not Assigned(AFacturas) then
+ raise Exception.Create ('Facturas no asignadas (EnviarFacturasPorEMail)');
+
+ if AFacturas.DataTable.Active then
+ AFacturas.DataTable.Active := True;
+
+ ShowHourglassCursor;
+ try
+ CreateEditor('DialogListaFacturasClienteEnvioEMail', IDialogListaFacturasClienteEnvioEMail, ADialog);
+
+ if Assigned(ADialog) then
+ begin
+ try
+ ADialog.Facturas := AFacturas;
+ ARespuesta := ADialog.ShowModal;
+ Result := (ARespuesta = mrOK)
+ finally
+ ADialog.Release;
+ end;
+ end;
+ finally
+ ADialog := NIL;
+ HideHourglassCursor;
+ end;
+end;
+
+function TFacturasClienteController.EnviarFacturaPorEMail(AFactura : IBizFacturaCliente;
+ const AEnviarDirectamente: Boolean = True;
+ const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
+ const ATextoEMail: String = ''): Boolean;
var
AReportController : IFacturasClienteReportController;
AFicheroTMP : TFileName;
@@ -764,36 +811,40 @@ var
AListaEmail : TStringList;
begin
if not Assigned(AFactura) then
- raise Exception.Create ('Factura no asignado (EnviarFacturaPorEMail)');
+ raise Exception.Create ('Presupuesto no asignado (EnviarPresupuestoPorEMail)');
if AFactura.DataTable.Active then
AFactura.DataTable.Active := True;
+ RecuperarCliente(AFactura);
+ AFactura.Cliente.DataTable.Active := True;
+
AFicheroTMP := DarFicheroPDFTemporal(EscapeIllegalChars(AFactura.REFERENCIA));
- AListaEmail := TStringList.Create;
- try
- RecuperarCliente(AFactura);
- AFactura.Cliente.DataTable.Active := True;
+ if not EsCadenaVacia(ADireccionEMail) then
+ AEMail := ADireccionEMail
+ else begin
+ AListaEmail := TStringList.Create;
+ try
+ if not AFactura.Cliente.EMAIL_1IsNull then
+ AListaEmail.Add(AFactura.Cliente.EMAIL_1);
+ if not AFactura.Cliente.EMAIL_2IsNull then
+ AListaEmail.Add(AFactura.Cliente.EMAIL_2);
- if not AFactura.Cliente.EMAIL_1IsNull then
- AListaEmail.Add(AFactura.Cliente.EMAIL_1);
- if not AFactura.Cliente.EMAIL_2IsNull then
- AListaEmail.Add(AFactura.Cliente.EMAIL_2);
-
- if not ElegirEMail(AListaEmail, AEMail) then
- Exit;
- finally
- FreeANDNIL(AListaEmail);
+ if not ElegirEMail(AListaEmail, AEMail) then
+ Exit;
+ finally
+ FreeANDNIL(AListaEmail);
+ end;
end;
ShowHourglassCursor;
AReportController := TFacturasClienteReportController.Create;
try
AReportController.ExportToPDF(AFactura.ID, AFicheroTMP);
- EnviarEMailMAPI('Factura ' + AFactura.REFERENCIA, '', AFicheroTMP, '', '', AFactura.Cliente.NOMBRE, AEMail);
+ Result := EnviarEMailMAPI('Factura ' + AFactura.REFERENCIA, '', AFicheroTMP, '', '', AFactura.Cliente.NOMBRE, AEMail, AEnviarDirectamente);
finally
- SysUtils.DeleteFile(AFicheroTMP);
+ DeleteFile(AFicheroTMP);
AReportController := NIL;
HideHourglassCursor;
end;
@@ -1083,6 +1134,23 @@ begin
end;
end;
+function TFacturasClienteController.GenerarEmailFactura(AFactura: IBizFacturaCliente): Boolean;
+begin
+ if not Assigned(AFactura) then
+ raise Exception.Create ('Factura no asignadas (GenerarEmailFactura)');
+
+ if AFactura.DataTable.Active then
+ AFactura.DataTable.Active := True;
+
+ ShowHourglassCursor;
+ try
+ RecuperarCliente(AFactura);
+ EnviarFacturaPorEMail(AFactura, False);
+ finally
+ HideHourglassCursor;
+ end;
+end;
+
procedure TFacturasClienteController.GenerarRecibos(AFactura: IBizFacturaCliente);
var
AFormasPagoController : IFormasPagoController;
diff --git a/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dpk b/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dpk
index 8b15070f..17a5d674 100644
--- a/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dpk
+++ b/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dpk
@@ -36,7 +36,12 @@ requires
PreCli_FacCli_relation,
GestorInformes_controller,
rtl,
- vcl;
+ vcl,
+ cxLibraryD11,
+ dxThemeD11,
+ dxGDIPlusD11,
+ dxCoreD11,
+ vclx;
contains
uFacturasClienteViewRegister in 'uFacturasClienteViewRegister.pas',
@@ -50,6 +55,7 @@ contains
uViewElegirArticulosFacturasCliente in 'uViewElegirArticulosFacturasCliente.pas' {frViewElegirArticulosFacturasCliente: TFrame},
uEditorElegirFacturasCliente in 'uEditorElegirFacturasCliente.pas' {fEditorElegirFacturasCliente: TfEditorElegirFacturasCliente},
uViewDatosYSeleccionClienteFacturaCliente in 'uViewDatosYSeleccionClienteFacturaCliente.pas' {frViewDatosYSeleccionClienteFacturaCliente: TFrame},
- uDialogOpcionesImpresionFacturasCliente in 'uDialogOpcionesImpresionFacturasCliente.pas' {fDialogOpcionesImpresionFacturasCliente: TfEditorElegirFacturasCliente};
+ uDialogOpcionesImpresionFacturasCliente in 'uDialogOpcionesImpresionFacturasCliente.pas' {fDialogOpcionesImpresionFacturasCliente: TfEditorElegirFacturasCliente},
+ uDialogListaFacturasClienteEnvioEMail in 'uDialogListaFacturasClienteEnvioEMail.pas' {fDialogListaFacturasClienteEnvioEMail: TForm};
end.
diff --git a/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dproj b/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dproj
index 4cf71f8c..5f9dcd39 100644
--- a/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dproj
+++ b/Source/Modulos/Facturas de cliente/Views/FacturasCliente_view.dproj
@@ -49,18 +49,25 @@
MainSource
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ T
+
TfEditorElegirFacturasCliente
@@ -105,6 +112,8 @@
TFrame
+
+