diff --git a/Build/Build.fbl6 b/Build/Build.fbl6 index 46e0796..46e01ab 100644 Binary files a/Build/Build.fbl6 and b/Build/Build.fbl6 differ diff --git a/Source/Base/Base.RES b/Source/Base/Base.RES index 1641339..8b251f3 100644 Binary files a/Source/Base/Base.RES and b/Source/Base/Base.RES differ diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj index f4eef3b..43a4e67 100644 --- a/Source/Base/Base.dproj +++ b/Source/Base/Base.dproj @@ -58,62 +58,62 @@
DataModuleImpresiones
TDataModule + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DataModuleRegistroCorreos
TDataModule
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
fConfigurarConexion
diff --git a/Source/GUIBase/GUIBase.res b/Source/GUIBase/GUIBase.res index 1641339..8b251f3 100644 Binary files a/Source/GUIBase/GUIBase.res and b/Source/GUIBase/GUIBase.res differ diff --git a/Source/Modulos/Albaranes de cliente/Controller/AlbaranesCliente_controller.dpk b/Source/Modulos/Albaranes de cliente/Controller/AlbaranesCliente_controller.dpk index b1f2cc6..1fec071 100644 Binary files a/Source/Modulos/Albaranes de cliente/Controller/AlbaranesCliente_controller.dpk and b/Source/Modulos/Albaranes de cliente/Controller/AlbaranesCliente_controller.dpk differ diff --git a/Source/Modulos/Albaranes de cliente/Controller/AlbaranesCliente_controller.dproj b/Source/Modulos/Albaranes de cliente/Controller/AlbaranesCliente_controller.dproj index 06a7230..a96cd2f 100644 --- a/Source/Modulos/Albaranes de cliente/Controller/AlbaranesCliente_controller.dproj +++ b/Source/Modulos/Albaranes de cliente/Controller/AlbaranesCliente_controller.dproj @@ -1,4 +1,5 @@ - + + {7ed85635-c723-4c0b-bf1d-f719e0ea33ad} AlbaranesCliente_controller.dpk @@ -48,14 +49,15 @@ MainSource - - - - + + + + + diff --git a/Source/Modulos/Albaranes de cliente/Controller/View/uIDialogListaAlbaranesClienteEnvioEMail.pas b/Source/Modulos/Albaranes de cliente/Controller/View/uIDialogListaAlbaranesClienteEnvioEMail.pas new file mode 100644 index 0000000..6240806 --- /dev/null +++ b/Source/Modulos/Albaranes de cliente/Controller/View/uIDialogListaAlbaranesClienteEnvioEMail.pas @@ -0,0 +1,21 @@ +unit uIDialogListaAlbaranesClienteEnvioEMail; + +interface + +uses + uBizAlbaranesCliente, uAlbaranesClienteController; + +type + IDialogListaAlbaranesClienteEnvioEMail = interface + ['{61C5DC84-BB36-4ED2-BD49-8AEC470B3B87}'] + function GetAlbaranes: IBizAlbaranCliente; + procedure SetAlbaranes(const Value: IBizAlbaranCliente); + property Albaranes: IBizAlbaranCliente read GetAlbaranes write SetAlbaranes; + function ShowModal : Integer; + procedure Release; + end; + + +implementation + +end. diff --git a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas index 6bc3d95..272f0d6 100644 --- a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas +++ b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas @@ -64,7 +64,14 @@ type procedure CopiarDireccionEnvio (const ADireccionEnvio: IBizDireccionesContacto; AAlbaran: IBizAlbaranCliente); procedure QuitarDireccionEnvio(AAlbaran: IBizAlbaranCliente); - procedure EnviarAlbaranPorEMail(AAlbaran : IBizAlbaranCliente); + + procedure GenerarEmailAlbaran(AAlbaran : IBizAlbaranCliente); + function EnviarEmailAlbaranes(AAlbaranes : IBizAlbaranCliente): Boolean; + function EnviarAlbaranPorEMail(AAlbaran: IBizAlbaranCliente; + const AEnviarDirectamente: Boolean = True; + const ADireccionEMail: String = ''; const AAsuntoEMail: String = ''; + const ATextoEMail: String = ''): Boolean; + procedure RecuperarCliente(AAlbaran: IBizAlbaranCliente); function CambiarSituacion(AAlbaran : IBizAlbaranCliente; ANuevaSituacion: String; AFechaEnvio : TDateTime = 0; @@ -76,6 +83,9 @@ type end; TAlbaranesClienteController = class(TControllerBase, IAlbaranesClienteController) + private + procedure _AnadirMarcaEnvioCorreo(AAlbaran: IBizAlbaranCliente); + protected FDataModule : IDataModuleAlbaranesCliente; FClienteController : IClientesController; @@ -133,7 +143,7 @@ type const AHeaderText: String = ''); procedure VerDireccionEntrega(AAlbaran : IBizAlbaranCliente); function Duplicar(AAlbaran: IBizAlbaranCliente): IBizAlbaranCliente; - function GenerarOrdenDev(AAlbaran: IBizAlbaranCliente): IBizAlbaranCliente; + function GenerarOrdenDev(AAlbaran: IBizAlbaranCliente): IBizAlbaranCliente; procedure CopiarDireccionEnvio (const ADireccionEnvio: IBizDireccionesContacto; AAlbaran: IBizAlbaranCliente); @@ -147,7 +157,13 @@ type function EsModificable(AAlbaran: IBizAlbaranCliente): Boolean; function EsEliminable(AAlbaran: IBizAlbaranCliente): Boolean; - procedure EnviarAlbaranPorEMail(AAlbaran : IBizAlbaranCliente); + procedure GenerarEmailAlbaran(AAlbaran : IBizAlbaranCliente); + function EnviarEmailAlbaranes(AAlbaranes : IBizAlbaranCliente): Boolean; + function EnviarAlbaranPorEMail(AAlbaran: IBizAlbaranCliente; + const AEnviarDirectamente: Boolean = True; + const ADireccionEMail: String = ''; const AAsuntoEMail: String = ''; + const ATextoEMail: String = ''): Boolean; + function CambiarSituacion(AAlbaran : IBizAlbaranCliente; ANuevaSituacion: String; AFechaEnvio : TDateTime = 0; AFechaRecibido : TDateTime = 0; @@ -172,16 +188,16 @@ implementation uses uROTypes, Controls, cxControls, DB, uEditorRegistryUtils, uEditorPreview, DateUtils, uIEditorAlbaranesCliente, uIEditorAlbaranesDevCliente, uIEditorAlbaranDevCliente, - uDataModuleAlbaranesCliente, Variants, uBizDetallesAlbaranCliente, + uDataModuleAlbaranesCliente, Variants, uBizDetallesAlbaranCliente, uDataModuleRegistroCorreos, uBizContactos, uDataTableUtils, uDataModuleUsuarios, uFactuGES_App, schAlbaranesClienteClient_Intf, uDAInterfaces, uDateUtils, uIEditorAlbaranCliente, uIEditorElegirAlbaranesCliente, uIEditorDireccionEntregaAlbaranCliente, schContactosClient_Intf, uAlbaranesClienteReportController, uControllerDetallesBase, -// Pedidos no estará en TECSITEL +// Pedidos no estará en TECSITEL // uPedidosClienteController, uBizPedidosCliente, uBizDetallesPedidoCliente, schPedidosClienteClient_Intf, - uDialogUtils, Windows, Forms, Dialogs, uGUIBase, uIntegerListUtils, + uDialogUtils, Windows, Forms, Dialogs, uGUIBase, uIntegerListUtils, uIDialogListaAlbaranesClienteEnvioEMail, uSistemaFunc, uEMailUtils, uDialogElegirEMail, uStringsUtils; @@ -710,6 +726,38 @@ begin end; end; +procedure TAlbaranesClienteController._AnadirMarcaEnvioCorreo( + AAlbaran: IBizAlbaranCliente); +var + ASoloLectura : Boolean; +begin + if not Assigned(AAlbaran) then + raise Exception.Create ('Pedido no asignada (_AnadirMarcaEnvioCorreo)'); + + if AAlbaran.DataTable.Active then + AAlbaran.DataTable.Active := True; + + if AnadirMarcaEnvioCorreo(nme_AlbaranesCliente, AAlbaran.ID) then + begin + DesconectarTabla(AAlbaran.DataTable); + try + ASoloLectura := AAlbaran.DataTable.ReadOnly; + if ASoloLectura then + SetDataTableReadOnly(AAlbaran.DataTable, False); + try + AAlbaran.Edit; + AAlbaran.NUM_CORREOS := AAlbaran.NUM_CORREOS + 1; + AAlbaran.Post; + finally + if ASoloLectura then + SetDataTableReadOnly(AAlbaran.DataTable, True); + end; + finally + ConectarTabla(AAlbaran.DataTable); + end; + end; +end; + function TAlbaranesClienteController._Vacio: IBizAlbaranCliente; begin Result := Buscar(ID_NULO); @@ -802,50 +850,97 @@ begin end; end; -procedure TAlbaranesClienteController.EnviarAlbaranPorEMail( - AAlbaran: IBizAlbaranCliente); +function TAlbaranesClienteController.EnviarAlbaranPorEMail( + AAlbaran: IBizAlbaranCliente; const AEnviarDirectamente: Boolean; + const ADireccionEMail, AAsuntoEMail, ATextoEMail: String): Boolean; var AReportController : IAlbaranesClienteReportController; AFicheroTMP : TFileName; AEMail : String; + AAsunto : String; AListaEmail : TStringList; begin if not Assigned(AAlbaran) then - raise Exception.Create ('Albarán no asignado (EnviarAlbaranPorEMail)'); + raise Exception.Create ('Albaran no asignada (EnviarAlbaranPorEMail)'); if AAlbaran.DataTable.Active then AAlbaran.DataTable.Active := True; + RecuperarCliente(AAlbaran); + AAlbaran.Cliente.DataTable.Active := True; + AFicheroTMP := DarFicheroPDFTemporal(EscapeIllegalChars(AAlbaran.REFERENCIA)); - AListaEmail := TStringList.Create; - try - RecuperarCliente(AAlbaran); - AAlbaran.Cliente.DataTable.Active := True; + if not EsCadenaVacia(ADireccionEMail) then + AEMail := ADireccionEMail + else begin + AListaEmail := TStringList.Create; + try + if not EsCadenaVacia(AAlbaran.Cliente.EMAIL_ADMINISTRACION) then + AListaEmail.Add(AAlbaran.Cliente.EMAIL_ADMINISTRACION); - if not AAlbaran.Cliente.EMAIL_1IsNull then - AListaEmail.Add(AAlbaran.Cliente.EMAIL_1); - if not AAlbaran.Cliente.EMAIL_2IsNull then - AListaEmail.Add(AAlbaran.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; + if not EsCadenaVacia(AAsuntoEMail) then + AAsunto := AAsuntoEMail + else + AAsunto := 'Albaran ' + AAlbaran.REFERENCIA; + ShowHourglassCursor; + Application.ProcessMessages; + AReportController := TAlbaranesClienteReportController.Create; try AReportController.ExportToPDF(AAlbaran.ID, AFicheroTMP); - EnviarEMailMAPI('Albarán ' + AAlbaran.REFERENCIA, '', AFicheroTMP, '', '', AAlbaran.Cliente.NOMBRE, AEMail); + Result := EnviarEMailMAPI(AAsunto, ATextoEMail, AFicheroTMP, '', '', AAlbaran.Cliente.NOMBRE, AEMail, AEnviarDirectamente); + if Result then + _AnadirMarcaEnvioCorreo(AAlbaran); finally SysUtils.DeleteFile(AFicheroTMP); AReportController := NIL; HideHourglassCursor; + Application.ProcessMessages; end; end; +function TAlbaranesClienteController.EnviarEmailAlbaranes( + AAlbaranes: IBizAlbaranCliente): Boolean; +var + ADialog : IDialogListaAlbaranesClienteEnvioEMail; + ARespuesta : Integer; +begin + ADialog := NIL; + + if not Assigned(AAlbaranes) then + raise Exception.Create ('Albaranes no asignadas (EnviarAlbaranesPorEMail)'); + + if AAlbaranes.DataTable.Active then + AAlbaranes.DataTable.Active := True; + + ShowHourglassCursor; + try + CreateEditor('DialogListaAlbaranesClienteEnvioEMail', IDialogListaAlbaranesClienteEnvioEMail, ADialog); + + if Assigned(ADialog) then + begin + try + ADialog.Albaranes := AAlbaranes; + ARespuesta := ADialog.ShowModal; + Result := (ARespuesta = mrOK) + finally + ADialog.Release; + end; + end; + finally + ADialog := NIL; + HideHourglassCursor; + end; +end; function TAlbaranesClienteController.EsEliminable(AAlbaran: IBizAlbaranCliente): Boolean; begin @@ -1177,6 +1272,24 @@ begin end; end; +procedure TAlbaranesClienteController.GenerarEmailAlbaran( + AAlbaran: IBizAlbaranCliente); +begin + if not Assigned(AAlbaran) then + raise Exception.Create ('Albaranes no asignadas (GenerarEmailAlbaran)'); + + if AAlbaran.DataTable.Active then + AAlbaran.DataTable.Active := True; + + ShowHourglassCursor; + try + RecuperarCliente(AAlbaran); + EnviarAlbaranPorEMail(AAlbaran, False, AAlbaran.Cliente.EMAIL_ADMINISTRACION); + finally + HideHourglassCursor; + end; +end; + function TAlbaranesClienteController.GenerarOrdenDev(AAlbaran: IBizAlbaranCliente): IBizAlbaranCliente; var AOrden : IBizAlbaranCliente; diff --git a/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dpk b/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dpk index e8d68b1..04a04e7 100644 --- a/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dpk +++ b/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dpk @@ -39,7 +39,12 @@ requires PedidosCliente_model, Inventario_controller, FacturasCliente_model, - FacturasCliente_controller; + FacturasCliente_controller, + cxLibraryD11, + dxThemeD11, + dxGDIPlusD11, + dxCoreD11, + vclx; contains uAlbaranesClienteViewRegister in 'uAlbaranesClienteViewRegister.pas', @@ -58,6 +63,7 @@ contains uEditorAlbaranDevCliente in 'uEditorAlbaranDevCliente.pas' {fEditorAlbaranDevCliente: TCustomEditor}, uViewAlbaranDevCliente in 'uViewAlbaranDevCliente.pas' {frViewAlbaranDevCliente: TCustomView}, uViewDatosYSeleccionClienteAlbaran in 'uViewDatosYSeleccionClienteAlbaran.pas' {frViewDatosYSeleccionClienteAlbaran: TCustomView}, - uDialogOpcionesImpresionAlbaranesCliente in 'uDialogOpcionesImpresionAlbaranesCliente.pas' {frDialogOpcionesImpresionAlbaranesCliente: T}; + uDialogOpcionesImpresionAlbaranesCliente in 'uDialogOpcionesImpresionAlbaranesCliente.pas' {frDialogOpcionesImpresionAlbaranesCliente: T}, + uDialogListaAlbaranesClienteEnvioEMail in 'uDialogListaAlbaranesClienteEnvioEMail.pas' {frDialogListaAlbaranesClienteEnvioEMail: TForm}; end. diff --git a/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dproj b/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dproj index fb2bb04..384662e 100644 --- a/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dproj +++ b/Source/Modulos/Albaranes de cliente/Views/AlbaranesCliente_view.dproj @@ -43,6 +43,10 @@ Package FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + + + + File c:\archivos de programa\borland\delphi10\Bin\dclIntraweb_80_100.bpl not found File c:\archivos de programa\borland\delphi10\Bin\dclnet100.bpl not found File c:\archivos de programa\borland\delphi10\Bin\dclsoap100.bpl not found @@ -54,22 +58,29 @@ MainSource - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + +
fruDialogListaAlbaranesClienteEnvioEMail
+ T +
frDialogOpcionesImpresionAlbaranesCliente
T @@ -134,6 +145,8 @@
frViewElegirArticulosAlbaranesCliente
TFrame
+ +