SyncUpdate2IONOS
parent
a97df23785
commit
59e12276bd
@ -0,0 +1,182 @@ |
||||
import smtplib |
||||
from email.mime.multipart import MIMEMultipart |
||||
from email.mime.text import MIMEText |
||||
import pyodbc |
||||
import json |
||||
import datetime |
||||
|
||||
# Cargar la información de conexión desde el archivo JSON |
||||
with open('config.json', 'r') as config_file: |
||||
config = json.load(config_file) |
||||
|
||||
# Crear una cadena de conexión usando la información del archivo JSON en este momento esta la conexion a DB local |
||||
conn_str = ( |
||||
f"DRIVER=ODBC Driver 17 for SQL Server;" |
||||
f"SERVER={config['server']};" |
||||
f"DATABASE={config['database']};" |
||||
f"UID={config['username']};" |
||||
f"PWD={config['password']};" |
||||
) |
||||
|
||||
# Conectar a la base de datos |
||||
conn = pyodbc.connect(conn_str) |
||||
|
||||
try: |
||||
cursor = conn.cursor() |
||||
# fecha = '2023-09-13' # Ejemplo de fecha |
||||
fecha = datetime.date.today() |
||||
cursor.execute("{CALL NotiVigenciaDoda(?)}", fecha) |
||||
|
||||
# Recuperar los resultados del procedimiento almacenado |
||||
rows = cursor.fetchall() |
||||
|
||||
# Configurar el servidor de correo electrónico saliente (SMTP) desde el archivo JSON |
||||
with open('config.json', 'r') as email_config_file: |
||||
email_config = json.load(email_config_file) |
||||
|
||||
smtp_server = email_config['EmailServer'] |
||||
smtp_port = email_config['EmailPort'] |
||||
|
||||
# Tus credenciales de correo electrónico desde el archivo JSON |
||||
sender_email = email_config['EmailUser'] |
||||
sender_password = email_config['EmailPassword'] |
||||
|
||||
factura_data = {} |
||||
|
||||
# Iterar a través de los resultados y agruparlos por factura |
||||
for row in rows: |
||||
invoice = row.Invoice |
||||
if invoice not in factura_data: |
||||
factura_data[invoice] = [] |
||||
factura_data[invoice].append(row) |
||||
|
||||
# Crear un diccionario para almacenar los correos de CorreosResponsables, NotificacionAA y CorreosTipoViaje por factura |
||||
correos_por_factura = {} |
||||
|
||||
# Iterar a través de los resultados y agrupar los correos por factura |
||||
for row in rows: |
||||
invoice = row.Invoice |
||||
if invoice not in correos_por_factura: |
||||
correos_por_factura[invoice] = {'CorreosResponsables': [], 'NotificacionAA': [], 'CorreoTipoViaje': []} |
||||
|
||||
correos_responsables = row.CorreosResponsables.split(',') if row.CorreosResponsables else [] |
||||
notificacion_aa = row.NotificacionAA.split(',') if row.NotificacionAA else [] |
||||
correos_tipo_viaje = row.CorreoTipoViaje.split(',') if row.CorreoTipoViaje else [] |
||||
|
||||
correos_por_factura[invoice]['CorreosResponsables'].extend(correos_responsables) |
||||
correos_por_factura[invoice]['NotificacionAA'].extend(notificacion_aa) |
||||
correos_por_factura[invoice]['CorreoTipoViaje'].extend(correos_tipo_viaje) |
||||
|
||||
# Iterar a través de las facturas y enviar correos |
||||
for invoice, correos_en_factura in correos_por_factura.items(): |
||||
correos_responsables = correos_en_factura['CorreosResponsables'] |
||||
notificacion_aa = correos_en_factura['NotificacionAA'] |
||||
correos_tipo_viaje = correos_en_factura['CorreoTipoViaje'] |
||||
|
||||
# Obtener los datos comunes para la factura (fecha, invoice, caja, vigenciaDoda, notificacion) |
||||
first_row = factura_data[invoice][0] |
||||
fechaActual = first_row.FechaActual |
||||
caja = first_row.Caja |
||||
vigenciaDoda = first_row.VigenciaDODA |
||||
notificacion = first_row.Notificacion |
||||
|
||||
# Crear el mensaje de correo electrónico |
||||
msg = MIMEMultipart() |
||||
msg['From'] = sender_email |
||||
msg['Subject'] = f"Información de factura {invoice}" |
||||
|
||||
# Crear el cuerpo del mensaje con los datos de la factura en una tabla |
||||
message = f"<html><body>" |
||||
message += f"<h2>Factura {invoice}</h2>" |
||||
message += f"<table border='1'><tr><th>Fecha Actual</th><th>Invoice</th><th>Caja</th><th>VigenciaDODA</th><th>Notificacion</th></tr>" |
||||
message += f"<tr><td>{fechaActual}</td><td>{invoice}</td><td>{caja}</td><td>{vigenciaDoda}</td><td>{notificacion}</td></tr>" |
||||
message += f"</table><br>" |
||||
|
||||
|
||||
message += "</body></html>" |
||||
msg.attach(MIMEText(message, 'html')) |
||||
|
||||
try: |
||||
# Establecer la conexión al servidor SMTP |
||||
server = smtplib.SMTP(smtp_server, smtp_port) |
||||
server.starttls() |
||||
server.login(sender_email, sender_password) |
||||
|
||||
# Enviar el correo a todos los destinatarios de CorreosResponsables, NotificacionAA y CorreosTipoViaje |
||||
destinatarios = correos_responsables + notificacion_aa + correos_tipo_viaje |
||||
server.sendmail(sender_email, destinatarios, msg.as_string()) |
||||
print(f"Correo enviado a CorreosResponsables, NotificacionAA y CorreosTipoViaje de factura {invoice}") |
||||
|
||||
# Cerrar la conexión SMTP |
||||
server.quit() |
||||
except Exception as e: |
||||
print(f"Error al enviar correo de factura {invoice}: {e}") |
||||
|
||||
except Exception as e: |
||||
print("Error al conectarse:", e) |
||||
|
||||
|
||||
|
||||
|
||||
# Procedimiento almacenado de sql server. |
||||
|
||||
|
||||
# Create procedure [dbo].[NotiVigenciaDoda] |
||||
# ( |
||||
# @Fecha Date |
||||
# ) |
||||
# as |
||||
# begin |
||||
|
||||
|
||||
# SELECT |
||||
# @Fecha AS FechaActual, |
||||
# f.[Invoice], |
||||
# f.[Ruta] AS Caja, |
||||
# f.[VigenciaDODA], |
||||
# -- f.[TipoViaje], |
||||
# CorreosResponsables, |
||||
# ce.NotificacionAA, |
||||
|
||||
# CASE |
||||
# WHEN DATEDIFF(DAY, @Fecha, f.[VigenciaDODA]) = 1 THEN 'Vigencia Documentos 1 Dia.' |
||||
# WHEN DATEDIFF(DAY, @Fecha, f.[VigenciaDODA]) = 0 THEN 'Vigencia Documentos 0 Dias.' |
||||
# WHEN @Fecha > f.VigenciaDODA THEN 'Documentos Vencidos' |
||||
# END AS Notificacion, |
||||
|
||||
# (SELECT |
||||
# CASE |
||||
# WHEN f.[TipoViaje] = 1 THEN ce.NotificacionZINCDirectos |
||||
# WHEN f.[TipoViaje] = 2 THEN ce.NotificacionZINCTransbordos |
||||
# ELSE NULL |
||||
# END |
||||
# ) AS CorreoTipoViaje |
||||
|
||||
# FROM dbo.Facturas f |
||||
# LEFT JOIN dbo.CatResponsables cr ON f.ResponsableCruce = cr.Responsable |
||||
# CROSS JOIN [Config.Emails] ce |
||||
# OUTER APPLY ( |
||||
# SELECT STRING_AGG(cc.Correo, ', ') AS CorreosResponsables |
||||
# FROM dbo.[CatResponsables.Correos] cc |
||||
# WHERE cr.id = cc.IdResponsable |
||||
# ) CorreosSubquery |
||||
# WHERE ( |
||||
# DATEDIFF(DAY, @Fecha, f.[VigenciaDODA]) = 1 |
||||
# OR DATEDIFF(DAY, @Fecha, f.[VigenciaDODA]) = 0 |
||||
# OR @Fecha > f.VigenciaDODA ) |
||||
# AND f.Activo = 1 |
||||
# GROUP BY f.[Invoice], f.[Ruta], f.[VigenciaDODA] , f.[TipoViaje] , ce.NotificacionZINCDirectos , ce.NotificacionZINCTransbordos, ce.NotificacionAA, CorreosResponsables |
||||
|
||||
# ORDER BY VigenciaDODA; |
||||
|
||||
# end |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,442 +0,0 @@ |
||||
|
||||
# import smtplib |
||||
# from email.mime.multipart import MIMEMultipart |
||||
# from email.mime.text import MIMEText |
||||
# import pyodbc |
||||
# import json |
||||
# import datetime |
||||
|
||||
# # Cargar la información de conexión desde el archivo JSON |
||||
# with open('config.json', 'r') as config_file: |
||||
# config = json.load(config_file) |
||||
|
||||
# # Crear una cadena de conexión usando la información del archivo JSON |
||||
|
||||
|
||||
|
||||
# conn_str = ( |
||||
# f"DRIVER=ODBC Driver 17 for SQL Server;" |
||||
# f"SERVER={config['server']};" |
||||
# f"DATABASE={config['database']};" |
||||
# f"UID={config['username']};" |
||||
# f"PWD={config['password']};" |
||||
# ) |
||||
|
||||
# # Conectar a la base de datos |
||||
# conn = pyodbc.connect(conn_str) |
||||
|
||||
# try: |
||||
# cursor = conn.cursor() |
||||
# fecha = '2023-09-11' # Ejemplo de fecha |
||||
# # fecha = datetime.date.today() |
||||
# cursor.execute("{CALL NotificacionCruze(?)}", fecha) |
||||
|
||||
# # Recuperar los resultados del procedimiento almacenado |
||||
# rows = cursor.fetchall() |
||||
|
||||
# # Configurar el servidor de correo electrónico saliente (SMTP) desde el archivo JSON |
||||
# with open('config.json', 'r') as email_config_file: |
||||
# email_config = json.load(email_config_file) |
||||
|
||||
# smtp_server = email_config['EmailServer'] |
||||
# smtp_port = email_config['EmailPort'] |
||||
|
||||
# # Tus credenciales de correo electrónico desde el archivo JSON |
||||
# sender_email = email_config['EmailUser'] |
||||
# sender_password = email_config['EmailPassword'] |
||||
|
||||
# factura_data = {} |
||||
|
||||
# # Iterar a través de los resultados y agruparlos por factura |
||||
# for row in rows: |
||||
# invoice = row.Invoice |
||||
# if invoice not in factura_data: |
||||
# factura_data[invoice] = [] |
||||
# factura_data[invoice].append(row) |
||||
|
||||
# # Crear un diccionario para almacenar los correos de CorreosResponsables y NotificacionAA por factura |
||||
# correos_por_factura = {} |
||||
|
||||
# # Iterar a través de los resultados y agrupar los correos por factura |
||||
# for row in rows: |
||||
# invoice = row.Invoice |
||||
# if invoice not in correos_por_factura: |
||||
# correos_por_factura[invoice] = {'CorreosResponsables': [], 'NotificacionAA': []} |
||||
|
||||
# correos_responsables = row.CorreosResponsables.split(',') if row.CorreosResponsables else [] |
||||
# notificacion_aa = row.NotificacionAA.split(',') if row.NotificacionAA else [] |
||||
|
||||
# correos_por_factura[invoice]['CorreosResponsables'].extend(correos_responsables) |
||||
# correos_por_factura[invoice]['NotificacionAA'].extend(notificacion_aa) |
||||
|
||||
# # Iterar a través de las facturas y enviar correos |
||||
# for invoice, correos_en_factura in correos_por_factura.items(): |
||||
# correos_responsables = correos_en_factura['CorreosResponsables'] |
||||
# notificacion_aa = correos_en_factura['NotificacionAA'] |
||||
|
||||
# # Obtener los datos comunes para la factura (fecha, invoice, caja, vigenciaDoda, notificacion) |
||||
# first_row = factura_data[invoice][0] |
||||
# fechaActual = first_row.FechaActual |
||||
# caja = first_row.Caja |
||||
# vigenciaDoda = first_row.VigenciaDODA |
||||
# notificacion = first_row.Notificacion |
||||
|
||||
# # Crear el mensaje de correo electrónico |
||||
# msg = MIMEMultipart() |
||||
# msg['From'] = sender_email |
||||
# msg['Subject'] = f"Información de factura {invoice}" |
||||
|
||||
# # Crear el cuerpo del mensaje con los datos de la factura en una tabla |
||||
# message = f"<html><body>" |
||||
# message += f"<h2>Factura {invoice}</h2>" |
||||
# message += f"<table border='1'><tr><th>Fecha Actual</th><th>Invoice</th><th>Caja</th><th>VigenciaDODA</th><th>Notificacion</th></tr>" |
||||
# message += f"<tr><td>{fechaActual}</td><td>{invoice}</td><td>{caja}</td><td>{vigenciaDoda}</td><td>{notificacion}</td></tr>" |
||||
# message += f"</table><br>" |
||||
|
||||
# # message += f"<h3>CorreosResponsables:</h3>" |
||||
# # message += "<ul>" |
||||
# # for destinatario in correos_responsables: |
||||
# # message += f"<li>{destinatario}</li>" |
||||
# # message += "</ul>" |
||||
|
||||
# # message += f"<h3>NotificacionAA:</h3>" |
||||
# # message += "<ul>" |
||||
# # for destinatario in notificacion_aa: |
||||
# # message += f"<li>{destinatario}</li>" |
||||
# # message += "</ul>" |
||||
|
||||
# message += "</body></html>" |
||||
# msg.attach(MIMEText(message, 'html')) |
||||
|
||||
# try: |
||||
# # Establecer la conexión al servidor SMTP |
||||
# server = smtplib.SMTP(smtp_server, smtp_port) |
||||
# server.starttls() |
||||
# server.login(sender_email, sender_password) |
||||
|
||||
# # Enviar el correo a todos los destinatarios de CorreosResponsables y NotificacionAA |
||||
# destinatarios = correos_responsables + notificacion_aa |
||||
# server.sendmail(sender_email, destinatarios, msg.as_string()) |
||||
# print(f"Correo enviado a CorreosResponsables y NotificacionAA de factura {invoice}") |
||||
|
||||
# # Cerrar la conexión SMTP |
||||
# server.quit() |
||||
# except Exception as e: |
||||
# print(f"Error al enviar correo de factura {invoice}: {e}") |
||||
|
||||
# except Exception as e: |
||||
# print("Error al conectarse:", e) |
||||
|
||||
|
||||
# Codigo doode se mejora el envio de las notificaciones AA en ves de una por una un resumen de las Facturas Mejora a futuro. |
||||
|
||||
# import smtplib |
||||
# from email.mime.multipart import MIMEMultipart |
||||
# from email.mime.text import MIMEText |
||||
# import pyodbc |
||||
# import json |
||||
|
||||
# # Cargar la información de conexión desde el archivo JSON |
||||
# with open('config.json', 'r') as config_file: |
||||
# config = json.load(config_file) |
||||
|
||||
# # Crear una cadena de conexión usando la información del archivo JSON |
||||
# conn_str = ( |
||||
# f"DRIVER=ODBC Driver 17 for SQL Server;" |
||||
# f"SERVER={config['server']};" |
||||
# f"DATABASE={config['database']};" |
||||
# f"UID={config['username']};" |
||||
# f"PWD={config['password']};" |
||||
# ) |
||||
|
||||
# # Conectar a la base de datos |
||||
# conn = pyodbc.connect(conn_str) |
||||
|
||||
# try: |
||||
# cursor = conn.cursor() |
||||
# fecha = '2023-09-05' # Ejemplo de fecha |
||||
# fecha = datetime.date.today() |
||||
# cursor.execute("{CALL NotificacionCruze(?)}", fecha) |
||||
|
||||
# # Recuperar los resultados del procedimiento almacenado |
||||
# rows = cursor.fetchall() |
||||
|
||||
# # Configurar el servidor de correo electrónico saliente (SMTP) desde el archivo JSON |
||||
# with open('config.json', 'r') as email_config_file: |
||||
# email_config = json.load(email_config_file) |
||||
|
||||
# smtp_server = email_config['EmailServer'] |
||||
# smtp_port = email_config['EmailPort'] |
||||
|
||||
# # Tus credenciales de correo electrónico desde el archivo JSON |
||||
# sender_email = email_config['EmailUser'] |
||||
# sender_password = email_config['EmailPassword'] |
||||
|
||||
# # Crear un diccionario para almacenar la información de todas las facturas |
||||
# factura_data = {} |
||||
|
||||
# # Crear un diccionario para almacenar los correos de CorreosResponsables por factura |
||||
# correos_por_factura = {} |
||||
|
||||
# # Agrupar la información de todas las facturas y correos de CorreosResponsables |
||||
# for row in rows: |
||||
# invoice = row.Invoice |
||||
|
||||
# # Agregar la información de la factura |
||||
# if invoice not in factura_data: |
||||
# factura_data[invoice] = [] |
||||
|
||||
# factura_data[invoice].append(row) |
||||
|
||||
# # Agregar los correos de CorreosResponsables |
||||
# correos_responsables = row.CorreosResponsables.split(',') if row.CorreosResponsables else [] |
||||
|
||||
# if invoice not in correos_por_factura: |
||||
# correos_por_factura[invoice] = [] |
||||
|
||||
# correos_por_factura[invoice].extend(correos_responsables) |
||||
|
||||
# # Iterar a través de las facturas y enviar correos a CorreosResponsables |
||||
# for invoice, correos_responsables in correos_por_factura.items(): |
||||
# # Obtener la información común para la factura |
||||
# first_row = factura_data[invoice][0] |
||||
# fechaActual = first_row.FechaActual |
||||
# caja = first_row.Caja |
||||
# vigenciaDoda = first_row.VigenciaDODA |
||||
# notificacion = first_row.Notificacion |
||||
|
||||
# # Crear el mensaje de correo electrónico |
||||
# msg = MIMEMultipart() |
||||
# msg['From'] = sender_email |
||||
# msg['Subject'] = f"Información de factura {invoice}" |
||||
|
||||
# # Crear el cuerpo del mensaje con los datos de la factura en una tabla |
||||
# message = f"<html><body>" |
||||
# message += f"<h2>Factura {invoice}</h2>" |
||||
# message += f"<table border='1'><tr><th>Fecha Actual</th><th>Invoice</th><th>Caja</th><th>VigenciaDODA</th><th>Notificacion</th></tr>" |
||||
# message += f"<tr><td>{fechaActual}</td><td>{invoice}</td><td>{caja}</td><td>{vigenciaDoda}</td><td>{notificacion}</td></tr>" |
||||
# message += f"</table><br>" |
||||
|
||||
# message += f"<h3>CorreosResponsables:</h3>" |
||||
# message += "<ul>" |
||||
# for destinatario in correos_responsables: |
||||
# message += f"<li>{destinatario}</li>" |
||||
# message += "</ul>" |
||||
|
||||
# message += "</body></html>" |
||||
# msg.attach(MIMEText(message, 'html')) |
||||
|
||||
# try: |
||||
# # Establecer la conexión al servidor SMTP |
||||
# server = smtplib.SMTP(smtp_server, smtp_port) |
||||
# server.starttls() |
||||
# server.login(sender_email, sender_password) |
||||
|
||||
# # Enviar el correo a los destinatarios de CorreosResponsables |
||||
# server.sendmail(sender_email, correos_responsables, msg.as_string()) |
||||
# print(f"Correo enviado a CorreosResponsables de factura {invoice}") |
||||
|
||||
# # Cerrar la conexión SMTP |
||||
# server.quit() |
||||
# except Exception as e: |
||||
# print(f"Error al enviar correo de factura {invoice}: {e}") |
||||
|
||||
# # Obtener todos los destinatarios de NotificacionAA |
||||
# destinatarios_notificacion_aa = [] |
||||
|
||||
# for row in rows: |
||||
# notificacion_aa = row.NotificacionAA.split(',') if row.NotificacionAA else [] |
||||
# destinatarios_notificacion_aa.extend(notificacion_aa) |
||||
|
||||
# # Crear un mensaje único con la información de todas las facturas |
||||
# msg_all_invoices = MIMEMultipart() |
||||
# msg_all_invoices['From'] = sender_email |
||||
# msg_all_invoices['Subject'] = "Información de todas las facturas" |
||||
|
||||
# # Crear el cuerpo del mensaje con la información de todas las facturas en una tabla |
||||
# message_all_invoices = f"<html><body>" |
||||
# message_all_invoices += "<h2>Información de todas las facturas</h2>" |
||||
|
||||
# for invoice, rows in factura_data.items(): |
||||
# message_all_invoices += f"<h3>Factura {invoice}</h3>" |
||||
# message_all_invoices += "<table border='1'><tr><th>Fecha Actual</th><th>Invoice</th><th>Caja</th><th>VigenciaDODA</th><th>Notificacion</th></tr>" |
||||
|
||||
# for row in rows: |
||||
# fechaActual = row.FechaActual |
||||
# caja = row.Caja |
||||
# vigenciaDoda = row.VigenciaDODA |
||||
# notificacion = row.Notificacion |
||||
|
||||
# message_all_invoices += f"<tr><td>{fechaActual}</td><td>{invoice}</td><td>{caja}</td><td>{vigenciaDoda}</td><td>{notificacion}</td></tr>" |
||||
|
||||
# message_all_invoices += "</table><br>" |
||||
|
||||
# message_all_invoices += "</body></html>" |
||||
# msg_all_invoices.attach(MIMEText(message_all_invoices, 'html')) |
||||
|
||||
# try: |
||||
# # Establecer la conexión al servidor SMTP |
||||
# server = smtplib.SMTP(smtp_server, smtp_port) |
||||
# server.starttls() |
||||
# server.login(sender_email, sender_password) |
||||
|
||||
# # Enviar el correo a todos los destinatarios de NotificacionAA |
||||
# server.sendmail(sender_email, destinatarios_notificacion_aa, msg_all_invoices.as_string()) |
||||
# print("Correo enviado a todos los destinatarios de NotificacionAA con la información de las facturas") |
||||
|
||||
# # Cerrar la conexión SMTP |
||||
# server.quit() |
||||
# except Exception as e: |
||||
# print(f"Error al enviar correo de factura {invoice}: {e}") |
||||
|
||||
|
||||
# except Exception as e: |
||||
# print("Error al conectarse:", e) |
||||
|
||||
#codigo de se le agrego correo tipos viaje . |
||||
|
||||
import smtplib |
||||
from email.mime.multipart import MIMEMultipart |
||||
from email.mime.text import MIMEText |
||||
import pyodbc |
||||
import json |
||||
import datetime |
||||
|
||||
# Cargar la información de conexión desde el archivo JSON |
||||
with open('config.json', 'r') as config_file: |
||||
config = json.load(config_file) |
||||
|
||||
# Crear una cadena de conexión usando la información del archivo JSON |
||||
conn_str = ( |
||||
f"DRIVER=ODBC Driver 17 for SQL Server;" |
||||
f"SERVER={config['server']};" |
||||
f"DATABASE={config['database']};" |
||||
f"UID={config['username']};" |
||||
f"PWD={config['password']};" |
||||
) |
||||
|
||||
# Conectar a la base de datos |
||||
conn = pyodbc.connect(conn_str) |
||||
|
||||
try: |
||||
cursor = conn.cursor() |
||||
fecha = '2023-09-13' # Ejemplo de fecha |
||||
cursor.execute("{CALL NotificacionCruze(?)}", fecha) |
||||
|
||||
# Recuperar los resultados del procedimiento almacenado |
||||
rows = cursor.fetchall() |
||||
|
||||
# Configurar el servidor de correo electrónico saliente (SMTP) desde el archivo JSON |
||||
with open('config.json', 'r') as email_config_file: |
||||
email_config = json.load(email_config_file) |
||||
|
||||
smtp_server = email_config['EmailServer'] |
||||
smtp_port = email_config['EmailPort'] |
||||
|
||||
# Tus credenciales de correo electrónico desde el archivo JSON |
||||
sender_email = email_config['EmailUser'] |
||||
sender_password = email_config['EmailPassword'] |
||||
|
||||
factura_data = {} |
||||
|
||||
# Iterar a través de los resultados y agruparlos por factura |
||||
for row in rows: |
||||
invoice = row.Invoice |
||||
if invoice not in factura_data: |
||||
factura_data[invoice] = [] |
||||
factura_data[invoice].append(row) |
||||
|
||||
# Crear un diccionario para almacenar los correos de CorreosResponsables, NotificacionAA y CorreosTipoViaje por factura |
||||
correos_por_factura = {} |
||||
|
||||
# Iterar a través de los resultados y agrupar los correos por factura |
||||
for row in rows: |
||||
invoice = row.Invoice |
||||
if invoice not in correos_por_factura: |
||||
correos_por_factura[invoice] = {'CorreosResponsables': [], 'NotificacionAA': [], 'CorreoTipoViaje': []} |
||||
|
||||
correos_responsables = row.CorreosResponsables.split(',') if row.CorreosResponsables else [] |
||||
notificacion_aa = row.NotificacionAA.split(',') if row.NotificacionAA else [] |
||||
correos_tipo_viaje = row.CorreoTipoViaje.split(',') if row.CorreoTipoViaje else [] |
||||
|
||||
correos_por_factura[invoice]['CorreosResponsables'].extend(correos_responsables) |
||||
correos_por_factura[invoice]['NotificacionAA'].extend(notificacion_aa) |
||||
correos_por_factura[invoice]['CorreoTipoViaje'].extend(correos_tipo_viaje) |
||||
|
||||
# Iterar a través de las facturas y enviar correos |
||||
for invoice, correos_en_factura in correos_por_factura.items(): |
||||
correos_responsables = correos_en_factura['CorreosResponsables'] |
||||
notificacion_aa = correos_en_factura['NotificacionAA'] |
||||
correos_tipo_viaje = correos_en_factura['CorreoTipoViaje'] |
||||
|
||||
# Obtener los datos comunes para la factura (fecha, invoice, caja, vigenciaDoda, notificacion) |
||||
first_row = factura_data[invoice][0] |
||||
fechaActual = first_row.FechaActual |
||||
caja = first_row.Caja |
||||
vigenciaDoda = first_row.VigenciaDODA |
||||
notificacion = first_row.Notificacion |
||||
|
||||
# Crear el mensaje de correo electrónico |
||||
msg = MIMEMultipart() |
||||
msg['From'] = sender_email |
||||
msg['Subject'] = f"Información de factura {invoice}" |
||||
|
||||
# Crear el cuerpo del mensaje con los datos de la factura en una tabla |
||||
message = f"<html><body>" |
||||
message += f"<h2>Factura {invoice}</h2>" |
||||
message += f"<table border='1'><tr><th>Fecha Actual</th><th>Invoice</th><th>Caja</th><th>VigenciaDODA</th><th>Notificacion</th></tr>" |
||||
message += f"<tr><td>{fechaActual}</td><td>{invoice}</td><td>{caja}</td><td>{vigenciaDoda}</td><td>{notificacion}</td></tr>" |
||||
message += f"</table><br>" |
||||
|
||||
# # Agregar correos de CorreosResponsables, NotificacionAA y CorreosTipoViaje al mensaje |
||||
# message += "<h3>CorreosResponsables:</h3>" |
||||
# message += "<ul>" |
||||
# for destinatario in correos_responsables: |
||||
# message += f"<li>{destinatario}</li>" |
||||
# message += "</ul>" |
||||
|
||||
# message += f"<h3>NotificacionAA:</h3>" |
||||
# message += "<ul>"s |
||||
# for destinatario in notificacion_aa: |
||||
# message += f"<li>{destinatario}</li>" |
||||
# message += "</ul>" |
||||
|
||||
# message += f"<h3>CorreosTipoViaje:</h3>" |
||||
# message += "<ul>" |
||||
# for destinatario in correos_tipo_viaje: |
||||
# message += f"<li>{destinatario}</li>" |
||||
# message += "</ul>" |
||||
|
||||
message += "</body></html>" |
||||
msg.attach(MIMEText(message, 'html')) |
||||
|
||||
try: |
||||
# Establecer la conexión al servidor SMTP |
||||
server = smtplib.SMTP(smtp_server, smtp_port) |
||||
server.starttls() |
||||
server.login(sender_email, sender_password) |
||||
|
||||
# Enviar el correo a todos los destinatarios de CorreosResponsables, NotificacionAA y CorreosTipoViaje |
||||
destinatarios = correos_responsables + notificacion_aa + correos_tipo_viaje |
||||
server.sendmail(sender_email, destinatarios, msg.as_string()) |
||||
print(f"Correo enviado a CorreosResponsables, NotificacionAA y CorreosTipoViaje de factura {invoice}") |
||||
|
||||
# Cerrar la conexión SMTP |
||||
server.quit() |
||||
except Exception as e: |
||||
print(f"Error al enviar correo de factura {invoice}: {e}") |
||||
|
||||
except Exception as e: |
||||
print("Error al conectarse:", e) |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in new issue