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 - - - - - - - - - - - - + + + + + + + + + + + + + + + + +
DialogListaFacturasClienteEnvioEMail
+ T +
fDialogOpcionesImpresionFacturasCliente
TfEditorElegirFacturasCliente @@ -105,6 +112,8 @@
frViewFacturasCliente
TFrame
+ +