Tareas #334: Poder enviar varios documentos a la vez a un mismo cliente (se hace poder enviar varios correos a la vez)

git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@1024 0c75b7a4-871f-7646-8a2f-f78d34cc349f
This commit is contained in:
roberto 2010-09-23 10:49:10 +00:00
parent c96d43c5b7
commit 8d8660792e
32 changed files with 968 additions and 126 deletions

View File

@ -53,7 +53,7 @@
<Borland.Personality>Delphi.Personality</Borland.Personality>
<Borland.ProjectType>VCLApplication</Borland.ProjectType>
<BorlandProject>
<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Language><Language Name="RootDir">C:\Archivos de programa\Borland\Delphi7\Bin\</Language></Language><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">8</VersionInfo><VersionInfo Name="Release">5</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">3082</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Rodax Software S.L.</VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.8.5.0</VersionInfoKeys><VersionInfoKeys Name="InternalName">FactuGES</VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName">FactuGES</VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.8.5.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Excluded_Packages></Excluded_Packages><Source><Source Name="MainSource">FactuGES.dpr</Source></Source></Delphi.Personality><ModelSupport>False</ModelSupport></BorlandProject></BorlandProject>
<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Language><Language Name="RootDir">C:\Archivos de programa\Borland\Delphi7\Bin\</Language></Language><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">8</VersionInfo><VersionInfo Name="Release">6</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">3082</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName">Rodax Software S.L.</VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.8.6.0</VersionInfoKeys><VersionInfoKeys Name="InternalName">FactuGES</VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName">FactuGES</VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.8.6.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Excluded_Packages></Excluded_Packages><Source><Source Name="MainSource">FactuGES.dpr</Source></Source></Delphi.Personality><ModelSupport>False</ModelSupport></BorlandProject></BorlandProject>
</ProjectExtensions>
<Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" />
<ItemGroup>

Binary file not shown.

View File

@ -1,4 +1,5 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{7ed85635-c723-4c0b-bf1d-f719e0ea33ad}</ProjectGuid>
<MainSource>FacturasCliente_controller.dpk</MainSource>
@ -41,26 +42,27 @@
<Borland.Personality>Delphi.Personality</Borland.Personality>
<Borland.ProjectType>Package</Borland.ProjectType>
<BorlandProject>
<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Package_Options><Package_Options Name="ImplicitBuild">True</Package_Options><Package_Options Name="DesigntimeOnly">False</Package_Options><Package_Options Name="RuntimeOnly">False</Package_Options></Package_Options><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">3082</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Source><Source Name="MainSource">FacturasCliente_controller.dpk</Source></Source></Delphi.Personality></BorlandProject></BorlandProject>
<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters></Parameters><Package_Options><Package_Options Name="ImplicitBuild">False</Package_Options><Package_Options Name="DesigntimeOnly">False</Package_Options><Package_Options Name="RuntimeOnly">False</Package_Options></Package_Options><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">0</VersionInfo><VersionInfo Name="Release">0</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">3082</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys></VersionInfoKeys><Source><Source Name="MainSource">FacturasCliente_controller.dpk</Source></Source></Delphi.Personality></BorlandProject></BorlandProject>
</ProjectExtensions>
<Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" />
<ItemGroup>
<DelphiCompile Include="FacturasCliente_controller.dpk">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="..\AlbaranesCliente_controller.dcp" />
<DCCReference Include="..\AlbaranesCliente_model.dcp" />
<DCCReference Include="..\ApplicationBase.dcp" />
<DCCReference Include="..\Articulos_controller.dcp" />
<DCCReference Include="..\Contactos_controller.dcp" />
<DCCReference Include="..\FacturasCliente_data.dcp" />
<DCCReference Include="..\FacturasCliente_model.dcp" />
<DCCReference Include="..\FormasPago_controller.dcp" />
<DCCReference Include="..\RecibosCliente_controller.dcp" />
<DCCReference Include="uArticulosFacturaClienteController.pas" />
<DCCReference Include="uDetallesFacturaClienteController.pas" />
<DCCReference Include="uFacturasClienteController.pas" />
<DCCReference Include="uFacturasClienteReportController.pas" />
<DCCReference Include="View\AlbaranesCliente_controller.dcp" />
<DCCReference Include="View\AlbaranesCliente_model.dcp" />
<DCCReference Include="View\ApplicationBase.dcp" />
<DCCReference Include="View\Articulos_controller.dcp" />
<DCCReference Include="View\Contactos_controller.dcp" />
<DCCReference Include="View\FacturasCliente_data.dcp" />
<DCCReference Include="View\FacturasCliente_model.dcp" />
<DCCReference Include="View\FormasPago_controller.dcp" />
<DCCReference Include="View\RecibosCliente_controller.dcp" />
<DCCReference Include="View\uIDialogListaFacturasClienteEnvioEMail.pas" />
<DCCReference Include="View\uIEditorElegirArticulosFacturasCliente.pas" />
<DCCReference Include="View\uIEditorElegirFacturasCliente.pas" />
<DCCReference Include="View\uIEditorFacturaCliente.pas" />

View File

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

View File

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

View File

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

View File

@ -49,18 +49,25 @@
<DelphiCompile Include="FacturasCliente_view.dpk">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="..\AlbCli_FacCli_relation.dcp" />
<DCCReference Include="..\ApplicationBase.dcp" />
<DCCReference Include="..\Articulos_view.dcp" />
<DCCReference Include="..\Base.dcp" />
<DCCReference Include="..\Contactos_view.dcp" />
<DCCReference Include="..\FacturasCliente_controller.dcp" />
<DCCReference Include="..\FacturasCliente_model.dcp" />
<DCCReference Include="..\GestorInformes_controller.dcp" />
<DCCReference Include="..\GUIBase.dcp" />
<DCCReference Include="..\PreCli_FacCli_relation.dcp" />
<DCCReference Include="..\rtl.dcp" />
<DCCReference Include="..\vcl.dcp" />
<DCCReference Include="AlbCli_FacCli_relation.dcp" />
<DCCReference Include="ApplicationBase.dcp" />
<DCCReference Include="Articulos_view.dcp" />
<DCCReference Include="Base.dcp" />
<DCCReference Include="Contactos_view.dcp" />
<DCCReference Include="cxLibraryD11.dcp" />
<DCCReference Include="dxCoreD11.dcp" />
<DCCReference Include="dxGDIPlusD11.dcp" />
<DCCReference Include="dxThemeD11.dcp" />
<DCCReference Include="FacturasCliente_controller.dcp" />
<DCCReference Include="FacturasCliente_model.dcp" />
<DCCReference Include="GestorInformes_controller.dcp" />
<DCCReference Include="GUIBase.dcp" />
<DCCReference Include="PreCli_FacCli_relation.dcp" />
<DCCReference Include="rtl.dcp" />
<DCCReference Include="uDialogListaFacturasClienteEnvioEMail.pas">
<Form>DialogListaFacturasClienteEnvioEMail</Form>
<DesignClass>T</DesignClass>
</DCCReference>
<DCCReference Include="uDialogOpcionesImpresionFacturasCliente.pas">
<Form>fDialogOpcionesImpresionFacturasCliente</Form>
<DesignClass>TfEditorElegirFacturasCliente</DesignClass>
@ -105,6 +112,8 @@
<Form>frViewFacturasCliente</Form>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="vcl.dcp" />
<DCCReference Include="vclx.dcp" />
</ItemGroup>
</Project>
<!-- EurekaLog First Line

View File

@ -0,0 +1,101 @@
inherited fDialogListaFacturasClienteEnvioEMail: TfDialogListaFacturasClienteEnvioEMail
Caption = 'Enviar facturas por correo electr'#243'nico'
ClientHeight = 432
ClientWidth = 665
ExplicitWidth = 671
ExplicitHeight = 464
PixelsPerInch = 96
TextHeight = 13
inherited Bevel2: TBevel
Width = 665
ExplicitWidth = 735
end
inherited Bevel3: TBevel
Top = 388
Width = 665
ExplicitTop = 388
ExplicitWidth = 735
end
inherited pnlBotones: TPanel
Top = 390
Width = 665
ExplicitTop = 390
ExplicitWidth = 665
inherited btnAceptar: TButton
Left = 488
Top = 6
Width = 96
ExplicitLeft = 488
ExplicitTop = 6
ExplicitWidth = 96
end
inherited btnCancelar: TButton
Left = 590
Top = 6
ExplicitLeft = 590
ExplicitTop = 6
end
end
inherited pnlHeader: TPanel
Width = 665
ExplicitWidth = 665
inherited lblInstruccion: TLabel
Width = 213
Caption = 'Enviar facturas por correo electr'#243'nico'
ExplicitWidth = 213
end
inherited Label2: TLabel
Width = 562
Height = 26
Caption =
'Se generar'#225'n correos electr'#243'nicos autom'#225'ticos adjuntando los fac' +
'turas elegidos en formato PDF. S'#243'lo se tendr'#225'n en cuenta los cli' +
'entes que tengan relleno su e-mail administrativo.'
WordWrap = True
ExplicitWidth = 562
ExplicitHeight = 26
end
end
inherited pnlCuerpo: TPanel
Width = 665
Height = 322
ExplicitWidth = 665
ExplicitHeight = 322
end
inherited ListView1: TListView
Width = 665
Height = 322
Columns = <
item
Caption = 'Documento'
Width = 120
end
item
Caption = 'Destinatario'
Width = 250
end
item
Caption = 'Direcci'#243'n E-Mail'
Width = 170
end
item
Caption = 'Estado'
Width = 120
end>
ExplicitLeft = 0
ExplicitTop = 66
ExplicitWidth = 665
ExplicitHeight = 322
end
inherited ActionList1: TActionList
Top = 352
inherited actAceptar: TAction
Caption = '&Generar correos'
OnExecute = actAceptarExecute
OnUpdate = actAceptarUpdate
end
inherited actCancelar: TAction
OnExecute = actCancelarExecute
end
end
end

View File

@ -0,0 +1,179 @@
unit uDialogListaFacturasClienteEnvioEMail;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uDialogBase, ActnList, StdCtrls, ExtCtrls, ComCtrls,
uDialogListaEnvioEMail, uIDialogListaFacturasClienteEnvioEMail, uFacturasClienteController,
uBizFacturasCliente;
type
TfDialogListaFacturasClienteEnvioEMail = class(TfDialogListaEnvioEMail, IDialogListaFacturasClienteEnvioEMail)
procedure actCancelarExecute(Sender: TObject);
procedure actAceptarUpdate(Sender: TObject);
procedure actAceptarExecute(Sender: TObject);
private
FFacturasCliente : IBizFacturaCliente;
FController : IFacturasClienteController;
protected
function GetFacturas: IBizFacturaCliente;
procedure SetFacturas(const Value: IBizFacturaCliente);
procedure RellenarLista;
procedure BorrarLista;
public
constructor Create(AOwner: TComponent); override;
property FacturasCliente: IBizFacturaCliente read GetFacturas write SetFacturas;
end;
implementation
uses
schFacturasClienteClient_Intf, uStringsUtils, cxControls;
{$R *.dfm}
{ TfDialogListaFacturasEnvioEMail }
procedure TfDialogListaFacturasClienteEnvioEMail.actAceptarExecute(Sender: TObject);
var
i : Integer;
begin
ShowHourglassCursor;
Application.ProcessMessages;
try
FFacturasCliente.First;
FController.RecuperarCliente(FFacturasCliente);
FFacturasCliente.Cliente.DataTable.Active := True;
try
for i := 0 to FFacturasCliente.DataTable.RecordCount - 1 do
begin
if not EsCadenaVacia(FFacturasCliente.Cliente.EMAIL_1) then
begin
if FController.EnviarFacturaPorEMail(FFacturasCliente, True, FFacturasCliente.Cliente.EMAIL_1) then
begin
ListView1.Items[i].SubItems[2] := 'Correo generado';
ModalResult := mrOk;
end
else
ListView1.Items[i].SubItems[2] := 'Error al generar correo';
Self.Update;
Application.ProcessMessages;
end
else
if not EsCadenaVacia(FFacturasCliente.Cliente.EMAIL_2) then
begin
if FController.EnviarFacturaPorEMail(FFacturasCliente, True, FFacturasCliente.Cliente.EMAIL_2) then
begin
ListView1.Items[i].SubItems[2] := 'Correo generado';
ModalResult := mrOk;
end
else
ListView1.Items[i].SubItems[2] := 'Error al generar correo';
Self.Update;
Application.ProcessMessages;
end;
FFacturasCliente.Next;
FController.RecuperarCliente(FFacturasCliente);
FFacturasCliente.Cliente.DataTable.Active := True;
end;
btnAceptar.Enabled := False;
finally
ListView1.Items.EndUpdate;
end;
finally
HideHourglassCursor;
end;
btnCancelar.SetFocus;
end;
procedure TfDialogListaFacturasClienteEnvioEMail.actAceptarUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (ListView1.Items.Count > 0)
end;
procedure TfDialogListaFacturasClienteEnvioEMail.actCancelarExecute(Sender: TObject);
begin
inherited;
ModalResult := mrOk;
end;
procedure TfDialogListaFacturasClienteEnvioEMail.BorrarLista;
begin
ListView1.Items.Clear;
end;
constructor TfDialogListaFacturasClienteEnvioEMail.Create(AOwner: TComponent);
begin
inherited;
ModalResult := mrCancel;
FController := TFacturasClienteController.Create;
end;
function TfDialogListaFacturasClienteEnvioEMail.GetFacturas: IBizFacturaCliente;
begin
Result := FFacturasCliente;
end;
procedure TfDialogListaFacturasClienteEnvioEMail.RellenarLista;
var
i : Integer;
begin
ListView1.Items.BeginUpdate;
ListView1.Items.Clear;
FFacturasCliente.First;
FFacturasCliente.DataTable.DisableControls;
try
for i := 0 to FFacturasCliente.DataTable.RecordCount - 1 do
begin
FController.RecuperarCliente(FFacturasCliente);
FFacturasCliente.Cliente.DataTable.Active := True;
with ListView1.Items.Add do
begin
Caption := FFacturasCliente.REFERENCIA;
SubItems.Add(FFacturasCliente.NOMBRE);
if not FFacturasCliente.Cliente.EMAIL_1IsNull then
begin
SubItems.Add(FFacturasCliente.Cliente.EMAIL_1);
SubItems.Add('')
end
else
if not FFacturasCliente.Cliente.EMAIL_2IsNull then
begin
SubItems.Add(FFacturasCliente.Cliente.EMAIL_2);
SubItems.Add('')
end
else
SubItems.Add('Sin dirección e-mail')
end;
FFacturasCliente.Next;
end;
finally
FFacturasCliente.DataTable.EnableControls;
ListView1.Items.EndUpdate;
end;
end;
procedure TfDialogListaFacturasClienteEnvioEMail.SetFacturas(const Value: IBizFacturaCliente);
begin
FFacturasCliente := Value;
if Assigned(FFacturasCliente) then
begin
FFacturasCliente.DataTable.Open;
RellenarLista;
end
else
BorrarLista;
end;
end.

View File

@ -100,9 +100,28 @@ begin
end;
procedure TfEditorFacturasCliente.actEnviarEMailExecute(Sender: TObject);
var
AFacturas : IBizFacturaCliente;
begin
inherited;
FController.EnviarFacturaPorEMail(FFacturas);
if ViewGrid.NumSeleccionados = 1 then
FController.GenerarEmailFactura(FFacturas)
else begin
ShowHourglassCursor;
try
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Facturas as ISeleccionable).SelectedRecords);
AFacturas := (Controller as IFacturasClienteController).ExtraerSeleccionados(Facturas) as IBizFacturaCliente;
if Assigned(AFacturas) then
FController.EnviarEmailFacturas(AFacturas);
// RefrescarInterno;
finally
AFacturas := NIL;
HideHourglassCursor;
end;
end;
end;
procedure TfEditorFacturasCliente.actEnviarEMailUpdate(Sender: TObject);

View File

@ -10,7 +10,8 @@ implementation
uses
uEditorRegistryUtils, uEditorFacturasCliente, uEditorFacturaCliente,
uEditorFacturasClienteReport, uEditorElegirArticulosFacturaCliente,
uEditorElegirFacturasCliente, uDialogOpcionesImpresionFacturasCliente;
uEditorElegirFacturasCliente, uDialogOpcionesImpresionFacturasCliente,
uDialogListaFacturasClienteEnvioEMail;
procedure RegisterViews;
begin
@ -20,6 +21,7 @@ begin
EditorRegistry.RegisterClass(TfEditorElegirFacturasCliente, 'EditorElegirFacturasCliente');
EditorRegistry.RegisterClass(TfEditorFacturasClientePreview, 'EditorFacturasClientePreview');
EditorRegistry.RegisterClass(TfDialogOpcionesImpresionFacturasCliente, 'DialogOpcionesImpresionFacturasCliente');
EditorRegistry.RegisterClass(TfDialogListaFacturasClienteEnvioEMail, 'DialogListaFacturasClienteEnvioEMail');
end;
procedure UnregisterViews;
@ -30,6 +32,7 @@ begin
EditorRegistry.UnRegisterClass(TfEditorElegirFacturasCliente);
EditorRegistry.UnRegisterClass(TfEditorFacturasClientePreview);
EditorRegistry.UnRegisterClass(TfDialogOpcionesImpresionFacturasCliente);
EditorRegistry.UnRegisterClass(TfDialogListaFacturasClienteEnvioEMail);
end;
end.

View File

@ -49,14 +49,15 @@
<DelphiCompile Include="PedidosProveedor_controller.dpk">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="..\Articulos_controller.dcp" />
<DCCReference Include="..\Base.dcp" />
<DCCReference Include="..\Contactos_controller.dcp" />
<DCCReference Include="..\PedidosProveedor_data.dcp" />
<DCCReference Include="uArticulosPedidoProveedorController.pas" />
<DCCReference Include="uDetallesPedidoProveedorController.pas" />
<DCCReference Include="uPedidosProveedorController.pas" />
<DCCReference Include="uPedidosProveedorReportController.pas" />
<DCCReference Include="View\Articulos_controller.dcp" />
<DCCReference Include="View\Base.dcp" />
<DCCReference Include="View\Contactos_controller.dcp" />
<DCCReference Include="View\PedidosProveedor_data.dcp" />
<DCCReference Include="View\uIDialogListaPedidosProveedorEnvioEMail.pas" />
<DCCReference Include="View\uIEditorDireccionEntregaPedidoProveedor.pas" />
<DCCReference Include="View\uIEditorElegirArticulosPedidosProveedor.pas" />
<DCCReference Include="View\uIEditorElegirPedidosProveedor.pas" />

View File

@ -0,0 +1,21 @@
unit uIDialogListaPedidosProveedorEnvioEMail;
interface
uses
uBizPedidosProveedor, uPedidosProveedorController;
type
IDialogListaPedidosProveedorEnvioEMail = interface
['{EAE41845-26FA-4945-8184-789CE764BADD}']
function GetPedidos: IBizPedidoProveedor;
procedure SetPedidos(const Value: IBizPedidoProveedor);
property Pedidos: IBizPedidoProveedor read GetPedidos write SetPedidos;
function ShowModal : Integer;
procedure Release;
end;
implementation
end.

View File

@ -53,7 +53,13 @@ type
function ExtraerSeleccionados(APedido: IBizPedidoProveedor) : IBizPedidoProveedor;
function ElegirPedidos(APedido: IBizPedidoProveedor; AMensaje: String; AMultiSelect: Boolean): IBizPedidoProveedor;
procedure RecuperarProveedor(APedido: IBizPedidoProveedor);
procedure EnviarPedidoPorEMail(APedido: IBizPedidoProveedor);
function EnviarPedidoPorEMail(APedido : IBizPedidoProveedor;
const AEnviarDirectamente: Boolean = True;
const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
const ATextoEMail: String = ''): Boolean;
function EnviarEmailPedidos(APedidos : IBizPedidoProveedor): Boolean;
function GenerarEmailPedido(APedido : IBizPedidoProveedor): Boolean;
Procedure AsignarIDObra(APedido: IBizPedidoProveedor; const IDObra: Variant);
Procedure AsignarIDAlmacen(APedido: IBizPedidoProveedor; const IDAlmacen: Variant);
@ -128,7 +134,13 @@ type
function ExtraerSeleccionados(APedido: IBizPedidoProveedor) : IBizPedidoProveedor;
function ElegirPedidos(APedido: IBizPedidoProveedor; AMensaje: String; AMultiSelect: Boolean): IBizPedidoProveedor;
procedure EnviarPedidoPorEMail(APedido: IBizPedidoProveedor);
function EnviarPedidoPorEMail(APedido : IBizPedidoProveedor;
const AEnviarDirectamente: Boolean = True;
const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
const ATextoEMail: String = ''): Boolean;
function EnviarEmailPedidos(APedidos : IBizPedidoProveedor): Boolean;
function GenerarEmailPedido(APedido : IBizPedidoProveedor): Boolean;
Procedure AsignarIDObra(APedido: IBizPedidoProveedor; const IDObra: Variant);
Procedure AsignarIDAlmacen(APedido: IBizPedidoProveedor; const IDAlmacen: Variant);
@ -144,7 +156,7 @@ uses
uIEditorPedidosProveedor, uDataModulePedidosProveedor, uFactuGES_App,
uBizDetallesPedidoProveedor, uBizContactos, uDataTableUtils, uDataModuleUsuarios,
schPedidosProveedorClient_Intf, uDAInterfaces, uPedidosProveedorReportController,
uDateUtils, uIEditorPedidoProveedor, uIEditorElegirPedidosProveedor,
uDateUtils, uIEditorPedidoProveedor, uIEditorElegirPedidosProveedor, uIDialogListaPedidosProveedorEnvioEMail,
Dialogs, uIEditorDireccionEntregaPedidoProveedor, uIEditorSituacionPedidoProveedor,
Variants, uSistemaFunc, uEMailUtils, uDialogElegirEMail, uIntegerListUtils, uStringsUtils;
@ -658,8 +670,43 @@ begin
end;
end;
procedure TPedidosProveedorController.EnviarPedidoPorEMail(
APedido: IBizPedidoProveedor);
function TPedidosProveedorController.EnviarEmailPedidos(APedidos: IBizPedidoProveedor): Boolean;
var
ADialog : IDialogListaPedidosProveedorEnvioEMail;
ARespuesta : Integer;
begin
ADialog := NIL;
if not Assigned(APedidos) then
raise Exception.Create ('Pedidos no asignadas (EnviarPedidosPorEMail)');
if APedidos.DataTable.Active then
APedidos.DataTable.Active := True;
ShowHourglassCursor;
try
CreateEditor('DialogListaPedidosProveedorEnvioEMail', IDialogListaPedidosProveedorEnvioEMail, ADialog);
if Assigned(ADialog) then
begin
try
ADialog.Pedidos := APedidos;
ARespuesta := ADialog.ShowModal;
Result := (ARespuesta = mrOK)
finally
ADialog.Release;
end;
end;
finally
ADialog := NIL;
HideHourglassCursor;
end;
end;
function TPedidosProveedorController.EnviarPedidoPorEMail(APedido : IBizPedidoProveedor;
const AEnviarDirectamente: Boolean = True;
const ADireccionEMail: String = ''; const AAsuntoEMail: String = '';
const ATextoEMail: String = ''): Boolean;
var
AReportController : IPedidosProveedorReportController;
AFicheroTMP : TFileName;
@ -672,29 +719,33 @@ begin
if APedido.DataTable.Active then
APedido.DataTable.Active := True;
RecuperarProveedor(APedido);
APedido.Proveedor.DataTable.Active := True;
AFicheroTMP := DarFicheroPDFTemporal(EscapeIllegalChars(APedido.REFERENCIA));
AListaEmail := TStringList.Create;
try
RecuperarProveedor(APedido);
APedido.Proveedor.DataTable.Active := True;
if not EsCadenaVacia(ADireccionEMail) then
AEMail := ADireccionEMail
else begin
AListaEmail := TStringList.Create;
try
if not APedido.Proveedor.EMAIL_1IsNull then
AListaEmail.Add(APedido.Proveedor.EMAIL_1);
if not APedido.Proveedor.EMAIL_2IsNull then
AListaEmail.Add(APedido.Proveedor.EMAIL_2);
if not APedido.Proveedor.EMAIL_1IsNull then
AListaEmail.Add(APedido.Proveedor.EMAIL_1);
if not APedido.Proveedor.EMAIL_2IsNull then
AListaEmail.Add(APedido.Proveedor.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 := TPedidosProveedorReportController.Create;
try
AReportController.ExportToPDF(APedido.ID, AFicheroTMP);
EnviarEMailMAPI('Pedido ' + APedido.REFERENCIA, '', AFicheroTMP, '', '', APedido.Proveedor.NOMBRE, AEMail);
Result := EnviarEMailMAPI('Pedido ' + APedido.REFERENCIA, '', AFicheroTMP, '', '', APedido.Proveedor.NOMBRE, AEMail, AEnviarDirectamente);
finally
DeleteFile(AFicheroTMP);
AReportController := NIL;
@ -970,6 +1021,23 @@ begin
Result := FProveedorController;
end;
function TPedidosProveedorController.GenerarEmailPedido(APedido: IBizPedidoProveedor): Boolean;
begin
if not Assigned(APedido) then
raise Exception.Create ('Pedido no asignadas (GenerarEmailPedido)');
if APedido.DataTable.Active then
APedido.DataTable.Active := True;
ShowHourglassCursor;
try
RecuperarProveedor(APedido);
EnviarPedidoPorEMail(APedido, False);
finally
HideHourglassCursor;
end;
end;
function TPedidosProveedorController.GetDetallesController: IDetallesPedidoProveedorController;
begin
Result := FDetallesController;

View File

@ -89,6 +89,7 @@ contains
uEditorElegirPersonaContactoPedido in 'uEditorElegirPersonaContactoPedido.pas' {fEditorElegirPersonaContactoPedido: TfEditorSituacionPedidoProveedor},
uViewObraReserva in 'uViewObraReserva.pas' {frViewObraReserva: TFrame},
uDialogOpcionesImpresionPedidosProveedor in 'uDialogOpcionesImpresionPedidosProveedor.pas' {fDialogOpcionesImpresionPedidosProveedor: TForm},
uViewDatosYSeleccionProveedorPedido in 'uViewDatosYSeleccionProveedorPedido.pas'{frViewDatosYSeleccionProveedorPedido: TFrame};
uViewDatosYSeleccionProveedorPedido in 'uViewDatosYSeleccionProveedorPedido.pas' {frViewDatosYSeleccionProveedorPedido: TFrame},
uDialogListaPedidosProveedorEnvioEMail in 'uDialogListaPedidosProveedorEnvioEMail.pas' {frDialogListaPedidosProveedorEnvioEMail: TForm};
end.

View File

@ -88,6 +88,10 @@
<DCCReference Include="PNG_D10.dcp" />
<DCCReference Include="RemObjects_Core_D11.dcp" />
<DCCReference Include="rtl.dcp" />
<DCCReference Include="uDialogListaPedidosProveedorEnvioEMail.pas">
<Form>frDialogListaPedidosProveedorEnvioEMail</Form>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="uDialogOpcionesImpresionPedidosProveedor.pas">
<Form>fDialogOpcionesImpresionPedidosProveedor</Form>
<DesignClass>TForm</DesignClass>
@ -125,7 +129,10 @@
<DesignClass>TfEditorSituacionPedidoProveedor</DesignClass>
</DCCReference>
<DCCReference Include="uPedidosProveedorViewRegister.pas" />
<DCCReference Include="uViewDatosYSeleccionProveedorPedido.pas" />
<DCCReference Include="uViewDatosYSeleccionProveedorPedido.pas">
<Form>frViewDatosYSeleccionProveedorPedido</Form>
<DesignClass>TFrame</DesignClass>
</DCCReference>
<DCCReference Include="uViewDetallesPedidoProveedor.pas">
<Form>frViewDetallesPedidoProveedor</Form>
<DesignClass>TFrame</DesignClass>

View File

@ -0,0 +1,101 @@
inherited fDialogListaPedidosProveedorEnvioEMail: TfDialogListaPedidosProveedorEnvioEMail
Caption = 'Enviar pedidos por correo electr'#243'nico'
ClientHeight = 432
ClientWidth = 665
ExplicitWidth = 671
ExplicitHeight = 464
PixelsPerInch = 96
TextHeight = 13
inherited Bevel2: TBevel
Width = 665
ExplicitWidth = 735
end
inherited Bevel3: TBevel
Top = 388
Width = 665
ExplicitTop = 388
ExplicitWidth = 735
end
inherited pnlBotones: TPanel
Top = 390
Width = 665
ExplicitTop = 390
ExplicitWidth = 665
inherited btnAceptar: TButton
Left = 488
Top = 6
Width = 96
ExplicitLeft = 488
ExplicitTop = 6
ExplicitWidth = 96
end
inherited btnCancelar: TButton
Left = 590
Top = 6
ExplicitLeft = 590
ExplicitTop = 6
end
end
inherited pnlHeader: TPanel
Width = 665
ExplicitWidth = 665
inherited lblInstruccion: TLabel
Width = 615
Caption = 'Enviar pedidos por correo electr'#243'nico'
ExplicitWidth = 210
end
inherited Label2: TLabel
Width = 590
Height = 27
Caption =
'Se generar'#225'n correos electr'#243'nicos autom'#225'ticos adjuntando los ped' +
'idos elegidos en formato PDF. S'#243'lo se tendr'#225'n en cuenta los clie' +
'ntes que tengan relleno su e-mail administrativo.'
WordWrap = True
ExplicitWidth = 559
ExplicitHeight = 26
end
end
inherited pnlCuerpo: TPanel
Width = 665
Height = 322
ExplicitWidth = 665
ExplicitHeight = 322
end
inherited ListView1: TListView
Width = 665
Height = 322
Columns = <
item
Caption = 'Documento'
Width = 120
end
item
Caption = 'Destinatario'
Width = 250
end
item
Caption = 'Direcci'#243'n E-Mail'
Width = 170
end
item
Caption = 'Estado'
Width = 120
end>
ExplicitLeft = 0
ExplicitTop = 66
ExplicitWidth = 665
ExplicitHeight = 322
end
inherited ActionList1: TActionList
Top = 352
inherited actAceptar: TAction
Caption = '&Generar correos'
OnExecute = actAceptarExecute
OnUpdate = actAceptarUpdate
end
inherited actCancelar: TAction
OnExecute = actCancelarExecute
end
end
end

View File

@ -0,0 +1,179 @@
unit uDialogListaPedidosProveedorEnvioEMail;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uDialogBase, ActnList, StdCtrls, ExtCtrls, ComCtrls,
uDialogListaEnvioEMail, uIDialogListaPedidosProveedorEnvioEMail, uPedidosProveedorController,
uBizPedidosProveedor;
type
TfDialogListaPedidosProveedorEnvioEMail = class(TfDialogListaEnvioEMail, IDialogListaPedidosProveedorEnvioEMail)
procedure actCancelarExecute(Sender: TObject);
procedure actAceptarUpdate(Sender: TObject);
procedure actAceptarExecute(Sender: TObject);
private
FPedidosProveedor : IBizPedidoProveedor;
FController : IPedidosProveedorController;
protected
function GetPedidos: IBizPedidoProveedor;
procedure SetPedidos(const Value: IBizPedidoProveedor);
procedure RellenarLista;
procedure BorrarLista;
public
constructor Create(AOwner: TComponent); override;
property PedidosProveedor: IBizPedidoProveedor read GetPedidos write SetPedidos;
end;
implementation
uses
schPedidosProveedorClient_Intf, uStringsUtils, cxControls;
{$R *.dfm}
{ TfDialogListaPedidosEnvioEMail }
procedure TfDialogListaPedidosProveedorEnvioEMail.actAceptarExecute(Sender: TObject);
var
i : Integer;
begin
ShowHourglassCursor;
Application.ProcessMessages;
try
FPedidosProveedor.First;
FController.RecuperarProveedor(FPedidosProveedor);
FPedidosProveedor.Proveedor.DataTable.Active := True;
try
for i := 0 to FPedidosProveedor.DataTable.RecordCount - 1 do
begin
if not EsCadenaVacia(FPedidosProveedor.Proveedor.EMAIL_1) then
begin
if FController.EnviarPedidoPorEMail(FPedidosProveedor, True, FPedidosProveedor.Proveedor.EMAIL_1) then
begin
ListView1.Items[i].SubItems[2] := 'Correo generado';
ModalResult := mrOk;
end
else
ListView1.Items[i].SubItems[2] := 'Error al generar correo';
Self.Update;
Application.ProcessMessages;
end
else
if not EsCadenaVacia(FPedidosProveedor.Proveedor.EMAIL_2) then
begin
if FController.EnviarPedidoPorEMail(FPedidosProveedor, True, FPedidosProveedor.Proveedor.EMAIL_2) then
begin
ListView1.Items[i].SubItems[2] := 'Correo generado';
ModalResult := mrOk;
end
else
ListView1.Items[i].SubItems[2] := 'Error al generar correo';
Self.Update;
Application.ProcessMessages;
end;
FPedidosProveedor.Next;
FController.RecuperarProveedor(FPedidosProveedor);
FPedidosProveedor.Proveedor.DataTable.Active := True;
end;
btnAceptar.Enabled := False;
finally
ListView1.Items.EndUpdate;
end;
finally
HideHourglassCursor;
end;
btnCancelar.SetFocus;
end;
procedure TfDialogListaPedidosProveedorEnvioEMail.actAceptarUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (ListView1.Items.Count > 0)
end;
procedure TfDialogListaPedidosProveedorEnvioEMail.actCancelarExecute(Sender: TObject);
begin
inherited;
ModalResult := mrOk;
end;
procedure TfDialogListaPedidosProveedorEnvioEMail.BorrarLista;
begin
ListView1.Items.Clear;
end;
constructor TfDialogListaPedidosProveedorEnvioEMail.Create(AOwner: TComponent);
begin
inherited;
ModalResult := mrCancel;
FController := TPedidosProveedorController.Create;
end;
function TfDialogListaPedidosProveedorEnvioEMail.GetPedidos: IBizPedidoProveedor;
begin
Result := FPedidosProveedor;
end;
procedure TfDialogListaPedidosProveedorEnvioEMail.RellenarLista;
var
i : Integer;
begin
ListView1.Items.BeginUpdate;
ListView1.Items.Clear;
FPedidosProveedor.First;
FPedidosProveedor.DataTable.DisableControls;
try
for i := 0 to FPedidosProveedor.DataTable.RecordCount - 1 do
begin
FController.RecuperarProveedor(FPedidosProveedor);
FPedidosProveedor.Proveedor.DataTable.Active := True;
with ListView1.Items.Add do
begin
Caption := FPedidosProveedor.REFERENCIA;
SubItems.Add(FPedidosProveedor.NOMBRE);
if not FPedidosProveedor.Proveedor.EMAIL_1IsNull then
begin
SubItems.Add(FPedidosProveedor.Proveedor.EMAIL_1);
SubItems.Add('')
end
else
if not FPedidosProveedor.Proveedor.EMAIL_2IsNull then
begin
SubItems.Add(FPedidosProveedor.Proveedor.EMAIL_2);
SubItems.Add('')
end
else
SubItems.Add('Sin dirección e-mail')
end;
FPedidosProveedor.Next;
end;
finally
FPedidosProveedor.DataTable.EnableControls;
ListView1.Items.EndUpdate;
end;
end;
procedure TfDialogListaPedidosProveedorEnvioEMail.SetPedidos(const Value: IBizPedidoProveedor);
begin
FPedidosProveedor := Value;
if Assigned(FPedidosProveedor) then
begin
FPedidosProveedor.DataTable.Open;
RellenarLista;
end
else
BorrarLista;
end;
end.

View File

@ -75,7 +75,7 @@ type
implementation
uses
uDataModulePedidosProveedor, uDataModuleUsuarios, uFactuGES_App, uEditorDBBase,
cxControls, uDataModulePedidosProveedor, uDataModuleUsuarios, uFactuGES_App, uEditorDBBase,
uGenerarAlbaranesProvUtils, uGenerarFacturasProvPedUtils,
// uInventarioController, uBizInventario,
uDialogUtils, uGridStatusUtils, uDBSelectionListUtils,
@ -104,9 +104,27 @@ begin
end;
procedure TfEditorPedidosProveedor.actEnviarEMailExecute(Sender: TObject);
var
APedidos : IBizPedidoProveedor;
begin
inherited;
FController.EnviarPedidoPorEMail(FPedidos);
if ViewGrid.NumSeleccionados = 1 then
FController.GenerarEmailPedido(Pedidos)
else begin
ShowHourglassCursor;
try
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Pedidos as ISeleccionable).SelectedRecords);
APedidos := (Controller as IPedidosProveedorController).ExtraerSeleccionados(Pedidos) as IBizPedidoProveedor;
if Assigned(APedidos) then
if FController.EnviarEmailPedidos(APedidos) then
RefrescarInterno;
finally
APedidos := NIL;
HideHourglassCursor;
end;
end;
end;
procedure TfEditorPedidosProveedor.actEnviarEMailUpdate(Sender: TObject);

View File

@ -11,7 +11,7 @@ uses
uEditorRegistryUtils, uEditorPedidosProveedor, uEditorPedidoProveedor,
uEditorPedidosProveedorReport, uEditorElegirPedidosProveedor,
uEditorElegirArticulosPedidoProveedor, uEditorDireccionEntregaPedidoProveedor,
uEditorSituacionPedidoProveedor;
uEditorSituacionPedidoProveedor, uDialogListaPedidosProveedorEnvioEMail;
procedure RegisterViews;
begin
@ -21,7 +21,8 @@ begin
EditorRegistry.RegisterClass(TfEditorElegirPedidosProveedor, 'EditorElegirPedidosProveedor');
EditorRegistry.RegisterClass(TfEditorElegirArticulosPedidoProveedor, 'EditorElegirArticulosPedidoProveedor');
EditorRegistry.RegisterClass(TfEditorPedidosProveedorPreview, 'EditorPedidosProveedorPreview');
EditorRegistry.RegisterClass(TfEditorSituacionPedidoProveedor, 'EditorSituacionPedidoProveedor');
EditorRegistry.RegisterClass(TfEditorSituacionPedidoProveedor, 'EditorSituacionPedidoProveedor');
EditorRegistry.RegisterClass(TfDialogListaPedidosProveedorEnvioEMail, 'DialogListaPedidosProveedorEnvioEMail');
end;
procedure UnregisterViews;
@ -30,9 +31,10 @@ begin
EditorRegistry.UnRegisterClass(TfEditorPedidosProveedor);
EditorRegistry.UnRegisterClass(TfEditorPedidoProveedor);
EditorRegistry.UnRegisterClass(TfEditorElegirPedidosProveedor);
EditorRegistry.UnRegisterClass(TfEditorElegirArticulosPedidoProveedor);
EditorRegistry.UnRegisterClass(TfEditorElegirArticulosPedidoProveedor);
EditorRegistry.UnRegisterClass(TfEditorPedidosProveedorPreview);
EditorRegistry.UnRegisterClass(TfEditorSituacionPedidoProveedor);
EditorRegistry.UnRegisterClass(TfEditorSituacionPedidoProveedor);
EditorRegistry.UnRegisterClass(TfDialogListaPedidosProveedorEnvioEMail);
end;
end.

View File

@ -763,8 +763,8 @@ begin
AListaEmail := TStringList.Create;
try
if not APresupuesto.Cliente.EMAIL_1IsNull then
AListaEmail.Add(APresupuesto.Cliente.EMAIL_1)
else if not APresupuesto.Cliente.EMAIL_2IsNull then
AListaEmail.Add(APresupuesto.Cliente.EMAIL_1);
if not APresupuesto.Cliente.EMAIL_2IsNull then
AListaEmail.Add(APresupuesto.Cliente.EMAIL_2);
if not ElegirEMail(AListaEmail, AEMail) then
@ -1185,7 +1185,7 @@ begin
ShowHourglassCursor;
try
RecuperarCliente(APresupuesto);
EnviarPresupuestoPorEMail(APresupuesto);
EnviarPresupuestoPorEMail(APresupuesto, False);
finally
HideHourglassCursor;
end;

View File

@ -1,61 +1,87 @@
inherited fDialogListaPresupuestosEnvioEMail: TfDialogListaPresupuestosEnvioEMail
Caption = 'Enviar facturas por correo electr'#243'nico'
Caption = 'Enviar presupuestos por correo electr'#243'nico'
ClientHeight = 432
ClientWidth = 735
ExplicitWidth = 741
ClientWidth = 665
ExplicitWidth = 671
ExplicitHeight = 464
PixelsPerInch = 96
TextHeight = 13
inherited Bevel2: TBevel
Width = 735
Width = 665
ExplicitWidth = 735
end
inherited Bevel3: TBevel
Top = 388
Width = 735
Width = 665
ExplicitTop = 388
ExplicitWidth = 735
end
inherited pnlBotones: TPanel
Top = 390
Width = 735
Width = 665
ExplicitTop = 390
ExplicitWidth = 735
inherited btnAceptar: TButton
Left = 562
Top = 5
Width = 87
ExplicitLeft = 562
ExplicitTop = 5
ExplicitWidth = 87
Left = 488
Top = 6
Width = 96
ExplicitLeft = 488
ExplicitTop = 6
ExplicitWidth = 96
end
inherited btnCancelar: TButton
Left = 655
Left = 590
Top = 6
ExplicitLeft = 655
ExplicitLeft = 590
ExplicitTop = 6
end
end
inherited pnlHeader: TPanel
Width = 735
Width = 665
ExplicitWidth = 735
inherited lblInstruccion: TLabel
Width = 685
Width = 615
Caption = 'Enviar presupuestos por correo electr'#243'nico'
ExplicitWidth = 243
end
inherited Label2: TLabel
Width = 660
Width = 590
Height = 27
Caption =
'Se generar'#225'n correos electr'#243'nicos autom'#225'ticos adjuntando los pre' +
'supuestos elegidos en formato PDF. S'#243'lo se tendr'#225'n en cuenta los' +
' clientes que tengan relleno su e-mail administrativo.'
WordWrap = True
ExplicitWidth = 639
ExplicitHeight = 26
end
end
inherited pnlCuerpo: TPanel
Width = 735
Width = 665
Height = 322
ExplicitWidth = 735
ExplicitHeight = 322
end
inherited ListView1: TListView
Width = 735
Width = 665
Height = 322
Columns = <
item
Caption = 'Documento'
Width = 120
end
item
Caption = 'Destinatario'
Width = 250
end
item
Caption = 'Direcci'#243'n E-Mail'
Width = 170
end
item
Caption = 'Estado'
Width = 120
end>
ExplicitLeft = 0
ExplicitTop = 66
ExplicitWidth = 735

View File

@ -40,9 +40,7 @@ uses
procedure TfDialogListaPresupuestosEnvioEMail.actAceptarExecute(Sender: TObject);
var
i : Integer;
AEmail: String;
begin
ShowHourglassCursor;
Application.ProcessMessages;
try
@ -52,15 +50,23 @@ begin
try
for i := 0 to FPresupuestos.DataTable.RecordCount - 1 do
begin
AEmail := '';
if not FPresupuestos.Cliente.EMAIL_1IsNull then
AEmail := FPresupuestos.Cliente.EMAIL_1
else if not FPresupuestos.Cliente.EMAIL_2IsNull then
AEmail := FPresupuestos.Cliente.EMAIL_2;
if not EsCadenaVacia(AEmail) then
if not EsCadenaVacia(FPresupuestos.Cliente.EMAIL_1) then
begin
if FController.EnviarPresupuestoPorEMail(FPresupuestos, True, AEmail) then
if FController.EnviarPresupuestoPorEMail(FPresupuestos, True, FPresupuestos.Cliente.EMAIL_1) then
begin
ListView1.Items[i].SubItems[2] := 'Correo generado';
ModalResult := mrOk;
end
else
ListView1.Items[i].SubItems[2] := 'Error al generar correo';
Self.Update;
Application.ProcessMessages;
end
else
if not EsCadenaVacia(FPresupuestos.Cliente.EMAIL_2) then
begin
if FController.EnviarPresupuestoPorEMail(FPresupuestos, True, FPresupuestos.Cliente.EMAIL_2) then
begin
ListView1.Items[i].SubItems[2] := 'Correo generado';
ModalResult := mrOk;
@ -76,14 +82,15 @@ begin
FController.RecuperarCliente(FPresupuestos);
FPresupuestos.Cliente.DataTable.Active := True;
end;
btnCancelar.Enabled := False;
btnAceptar.Enabled := False;
finally
ListView1.Items.EndUpdate;
end;
finally
HideHourglassCursor;
end;
btnAceptar.SetFocus;
btnCancelar.SetFocus;
end;
procedure TfDialogListaPresupuestosEnvioEMail.actAceptarUpdate(Sender: TObject);
@ -135,10 +142,16 @@ begin
Caption := FPresupuestos.REFERENCIA;
SubItems.Add(FPresupuestos.NOMBRE);
if not FPresupuestos.Cliente.EMAIL_1IsNull then
SubItems.Add(FPresupuestos.Cliente.EMAIL_1)
begin
SubItems.Add(FPresupuestos.Cliente.EMAIL_1);
SubItems.Add('')
end
else
if not FPresupuestos.Cliente.EMAIL_2IsNull then
SubItems.Add(FPresupuestos.Cliente.EMAIL_2)
begin
SubItems.Add(FPresupuestos.Cliente.EMAIL_2);
SubItems.Add('')
end
else
SubItems.Add('Sin dirección e-mail')
end;

View File

@ -97,7 +97,7 @@ type
implementation
uses
uDataModulePresupuestosCliente, uDataModuleUsuarios, uFactuGES_App,
cxControls, uDataModulePresupuestosCliente, uDataModuleUsuarios, uFactuGES_App,
uEditorBase, uEditorDBBase, uDialogUtils, Dialogs,
uDBSelectionListUtils, uGridStatusUtils, uDialogOpcionesImpresionPresupuestosCliente,
uGenerarFacturasCliPreCliUtils, uEditorFechaDecision,
@ -228,9 +228,10 @@ begin
inherited;
if ViewGrid.NumSeleccionados = 1 then
FController.EnviarPresupuestoPorEMail(FPresupuestos)
FController.GenerarEmailPresupuesto(FPresupuestos)
// FController.EnviarPresupuestoPorEMail(FPresupuestos)
else begin
// ShowHourglassCursor;
ShowHourglassCursor;
try
SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Presupuestos as ISeleccionable).SelectedRecords);
APresupuestos := (Controller as IPresupuestosClienteController).ExtraerSeleccionados(Presupuestos) as IBizPresupuestoCliente;
@ -240,7 +241,7 @@ begin
// RefrescarInterno;
finally
APresupuestos := NIL;
// HideHourglassCursor;
HideHourglassCursor;
end;
end;
end;

Binary file not shown.

View File

@ -35,11 +35,7 @@
<Borland.Personality>Delphi.Personality</Borland.Personality>
<Borland.ProjectType />
<BorlandProject>
<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters><Parameters Name="RunParams">/standalone</Parameters></Parameters><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">8</VersionInfo><VersionInfo Name="Release">5</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">3082</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.8.5.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.8.5.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys><VersionInfoKeys Name="CompileDate">martes, 20 de julio de 2010 11:19</VersionInfoKeys></VersionInfoKeys><Excluded_Packages>
<BorlandProject><Delphi.Personality><Parameters><Parameters Name="UseLauncher">False</Parameters><Parameters Name="LoadAllSymbols">True</Parameters><Parameters Name="LoadUnspecifiedSymbols">False</Parameters><Parameters Name="RunParams">/standalone</Parameters></Parameters><VersionInfo><VersionInfo Name="IncludeVerInfo">True</VersionInfo><VersionInfo Name="AutoIncBuild">False</VersionInfo><VersionInfo Name="MajorVer">1</VersionInfo><VersionInfo Name="MinorVer">8</VersionInfo><VersionInfo Name="Release">6</VersionInfo><VersionInfo Name="Build">0</VersionInfo><VersionInfo Name="Debug">False</VersionInfo><VersionInfo Name="PreRelease">False</VersionInfo><VersionInfo Name="Special">False</VersionInfo><VersionInfo Name="Private">False</VersionInfo><VersionInfo Name="DLL">False</VersionInfo><VersionInfo Name="Locale">3082</VersionInfo><VersionInfo Name="CodePage">1252</VersionInfo></VersionInfo><VersionInfoKeys><VersionInfoKeys Name="CompanyName"></VersionInfoKeys><VersionInfoKeys Name="FileDescription"></VersionInfoKeys><VersionInfoKeys Name="FileVersion">1.8.6.0</VersionInfoKeys><VersionInfoKeys Name="InternalName"></VersionInfoKeys><VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys><VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys><VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys><VersionInfoKeys Name="ProductName"></VersionInfoKeys><VersionInfoKeys Name="ProductVersion">1.8.6.0</VersionInfoKeys><VersionInfoKeys Name="Comments"></VersionInfoKeys><VersionInfoKeys Name="CompileDate">miércoles, 22 de septiembre de 2010 19:15</VersionInfoKeys></VersionInfoKeys><Excluded_Packages>
<Excluded_Packages Name="C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\dxPSCoreD11.bpl">ExpressPrinting System by Developer Express Inc.</Excluded_Packages>
</Excluded_Packages><Source><Source Name="MainSource">FactuGES_Server.dpr</Source></Source></Delphi.Personality></BorlandProject></BorlandProject>