diff --git a/NotificacionCruce/notificacionn.py b/NotificacionCruce/notificacionn.py index ac14983..73903bb 100644 --- a/NotificacionCruce/notificacionn.py +++ b/NotificacionCruce/notificacionn.py @@ -1,131 +1,131 @@ -import smtplib -from email.mime.multipart import MIMEMultipart -from email.mime.text import MIMEText -import pyodbc -import json -import datetime +# 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) +# # 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 +# # 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']};" -) +# 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) +# # 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) +# 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() +# # 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) +# # 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'] +# 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'] +# # Tus credenciales de correo electrónico desde el archivo JSON +# sender_email = email_config['EmailUser'] +# sender_password = email_config['EmailPassword'] - factura_data = {} +# 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) +# # 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 = {} +# # 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': []} +# # 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_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) +# 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'] +# # 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 +# # 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 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"" - message += f"

Factura {invoice}

" - message += f"" - message += f"" - message += f"
Fecha ActualInvoiceCajaVigenciaDODANotificacion
{fechaActual}{invoice}{caja}{vigenciaDoda}{notificacion}

" +# # Crear el cuerpo del mensaje con los datos de la factura en una tabla +# message = f"" +# message += f"

Factura {invoice}

" +# message += f"" +# message += f"" +# message += f"
Fecha ActualInvoiceCajaVigenciaDODANotificacion
{fechaActual}{invoice}{caja}{vigenciaDoda}{notificacion}

" - # message += f"

CorreosResponsables:

" - # message += "" +# # message += f"

CorreosResponsables:

" +# # message += "" - # message += f"

NotificacionAA:

" - # message += "" +# # message += f"

NotificacionAA:

" +# # message += "" - message += "" - msg.attach(MIMEText(message, 'html')) +# message += "" +# 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) +# 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}") +# # 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}") +# # 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) +# 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. @@ -293,6 +293,148 @@ except Exception as 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"" + message += f"

Factura {invoice}

" + message += f"" + message += f"" + message += f"
Fecha ActualInvoiceCajaVigenciaDODANotificacion
{fechaActual}{invoice}{caja}{vigenciaDoda}{notificacion}

" + + # # Agregar correos de CorreosResponsables, NotificacionAA y CorreosTipoViaje al mensaje + # message += "

CorreosResponsables:

" + # message += "" + + # message += f"

NotificacionAA:

" + # message += "" + + # message += f"

CorreosTipoViaje:

" + # message += "" + + message += "" + 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) + + + + + + +