Script - Enviar por email listados en PDF

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 12:26 PM por David Miralpeix

Scripts varios


Guardar en PDF un listado y enviarlo por email.
Como se han reportado fallos en el envío automático, se recomienda para estos casos, usar el módulo de efactura. Hay documentación en el apartado de manuales.

1- Manejo de archivos mediante FSO (file system Object)
2- Enviar listado a PDF y obtener la ruta del archivo mediante ahoraProceso "ListadoAPDF"
3- Enviar Email con el PDF adjunto mediante ahoraProceso "Enviar_Correo"
**Atención**
el parámetro para que no abra el correo por cada envío funciona dependiendo de la versión de Windows y Outlook que tenga el cliente
· W8 + Outlook 2013 --> OK
' W10 + Outlook 2013 --> Puede no enviar directamente dependiendo del Service Pack
· W10 (v.1607) + Outlook 2013 32 bits (15.0.4875.1000) --> MAL
· W8 + Thunderbird --> OK
· W2008 Server + Outlook 2010 --> MAL
· W7 + Outlook 2010 --> MAL

……. Y el resto de las combinaciones hay que irlas probando y reportando


Importante: La condición WHERE que se le pase al AhoraProceso debería tener un único parámetro por lo que se aconseja el uso siempre que sea posible del IdDoc para identificar el registro a imprimir.


 Ver código ejemplo


Sub Enviar_Tarifas
lRutaDestino = "C:\Clientes\Ahora\Envios\"
lfileName = ""
lIdDocListado = 3065

lIdActualizacion = gForm.Controls("IdActualizacion")
lsql = "Select IdActualizacion, IdCliente from vPers_Tarifas_Actualiza_Cli_Consum_Arti "
lsql = lsql + "where IdActualizacion = '"& lIdActualizacion &"' "'And Tarifa_Personalizada = 1 And IdAccion = 3 "
lsql = lsql + "group by IdActualizacion, IdCliente order by IdCliente "
Set lRs_EnviaTarifas = gcn.OpenResultset(lsql)
Do While Not lRs_EnviaTarifas.EOF
lIdCliente = lRs_EnviaTarifas("IdCliente")

Set lObj = gcn.Obj.dameobjeto("Plantas", "Where IdCliente = '"& lIdCliente &"'")
gcn.ahoraproceso "ListadoAPDF",False,lIdDocListado, "Where Clientes_Datos.IdCliente = '"& lIdCliente &"'",lObj, lFileName

'Renombro el fichero
Set fso = CreateObject("Scripting.FileSystemObject")
FicheroOrigen = left(lFileName,36) & mid(lFileName,38,50)
lNombreFichero = gcn.Damevalorcampo("select left(Cliente,25) from Clientes_Datos where IdCliente = '"& lIdCliente &"'")
lFicheroDestino = lIdActualizacion & "_" & lIdCliente & "_" & lNombreFichero & ".PDF"
FicheroDestino = lRutaDestino & lFicheroDestino

' Copio el fichero en la Ruta nueva
fso.CopyFile FicheroOrigen, FicheroDestino

' Booro el fichero origen
fso.DeleteFile FicheroOrigen

'Lo envio por email Con los siguientes parámetros:
'gCn As Conexion,
'aPrevisualizar As Boolean,
'aUsuario As String,
'Optional aAsunto As String,
'Optional aDetalle As String,
'Optional aArchivo As String,
'Optional aRutaArchivo As String,
'Optional aCopia As String,
'Optional aCopiaOculta As String

lE_Mail = gcn.damevalorcampo("select top 1 E_Mail from Clientes_Contactos where IdCliente = '"& lIdCliente &"' and Nombre = 'TARIFA'")
lAsunto = gcn.Damevalorcampo("select Asunto_Correo from ceesi_Listados where iddoc = '"& lIdDocListado &"'")
lDetalle = gcn.Damevalorcampo("select Contenido_Correo from ceesi_Listados where iddoc = '"& lIdDocListado &"'")
lArchivo = FicheroDestino
gCn.AhoraProceso "Enviar_Correo", False, gCn, False, lE_Mail, lAsunto, lDetalle, "nada", lArchivo

lRs_EnviaTarifas.MoveNext
Loop

End Sub


Autor: José Ramón Ramos Armesto


¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo