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 @@
TDataModule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
TDataModule
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ T
+
T
@@ -134,6 +145,8 @@
TFrame
+
+