From 210b02a5b45be1f31cd4c36d79ab5d93f3544479 Mon Sep 17 00:00:00 2001 From: Luis Rendon Date: Fri, 8 Sep 2023 17:27:07 -0500 Subject: [PATCH] Se agrego el codigo de mejora que envia las facturas en Notificacion AA agrupado. --- NotificacionCruce/notificacionn.py | 326 +++++++++++++++-------------- 1 file changed, 165 insertions(+), 161 deletions(-) diff --git a/NotificacionCruce/notificacionn.py b/NotificacionCruce/notificacionn.py index 6cf086f..ac14983 100644 --- a/NotificacionCruce/notificacionn.py +++ b/NotificacionCruce/notificacionn.py @@ -1,162 +1,3 @@ -# import json -# import pyodbc -# import smtplib -# from email.mime.multipart import MIMEMultipart -# from email.mime.text import MIMEText - -# # Cargar la configuración desde el archivo JSON -# with open('config.json', 'r') as config_file: -# config = json.load(config_file) - -# # Cargar la configuración de correo desde el archivo JSON -# with open('config.json', 'r') as email_config_file: -# email_config = json.load(email_config_file) - -# # Crear la cadena de conexión -# 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']};" -# ) - -# # Conectarse a la base de datos -# try: -# conn = pyodbc.connect(conn_str) -# print("Conexión exitosa") - -# # Crear el cursor y ejecutar el procedimiento almacenado -# cursor = conn.cursor() -# fecha = '2023-08-28' # 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 -# 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) - -# # Iterar a través de las facturas y enviar un solo correo por factura -# for invoice, factura_rows in factura_data.items(): -# # Obtener los datos comunes para la factura (fecha, invoice, caja, vigenciaDoda, notificacion) -# first_row = factura_rows[0] -# fechaActual = first_row.FechaActual -# invoice = first_row.Invoice -# caja = first_row.Caja -# vigenciaDoda = first_row.VigenciaDODA -# notificacion = first_row.Notificacion - -# # ... - -# # 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'] - -# # Crear y enviar correos a CorreosResponsables -# for destinatario in correos_responsables: -# # Crear el mensaje de correo electrónico -# msg_correo_responsable = MIMEMultipart() -# msg_correo_responsable['From'] = sender_email -# msg_correo_responsable['To'] = destinatario -# msg_correo_responsable['Subject'] = f"Información de factura {invoice} - CorreosResponsables" - -# # Crear el cuerpo del mensaje con los datos de la factura -# message = f"Fecha Actual: {fechaActual}\nInvoice: {invoice}\nCaja: {caja}\nVigenciaDODA: {vigenciaDoda}\nNotificacion: {notificacion}" -# msg_correo_responsable.attach(MIMEText(message, 'plain')) - -# 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 -# server.sendmail(sender_email, destinatario, msg_correo_responsable.as_string()) -# print(f"Correo enviado a CorreosResponsables: {destinatario}") - -# # Cerrar la conexión SMTP -# server.quit() -# except Exception as e: -# print(f"Error al enviar correo a CorreosResponsables: {destinatario} - {e}") - -# # Crear y enviar correos a NotificacionAA -# for destinatario in notificacion_aa: -# # Crear el mensaje de correo electrónico -# msg_notificacion_aa = MIMEMultipart() -# msg_notificacion_aa['From'] = sender_email -# msg_notificacion_aa['To'] = destinatario -# msg_notificacion_aa['Subject'] = f"Información de factura {invoice} - NotificacionAA" - -# # Crear el cuerpo del mensaje con los datos de la factura -# message = f"Fecha Actual: {fechaActual}\nInvoice: {invoice}\nCaja: {caja}\nVigenciaDODA: {vigenciaDoda}\nNotificacion: {notificacion}" -# msg_notificacion_aa.attach(MIMEText(message, 'plain')) - -# 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 -# server.sendmail(sender_email, destinatario, msg_notificacion_aa.as_string()) -# print(f"Correo enviado a NotificacionAA: {destinatario}") - -# # Cerrar la conexión SMTP -# server.quit() -# except Exception as e: -# print(f"Error al enviar correo a NotificacionAA: {destinatario} - {e}") - -# # ... - - - - -# except Exception as e: -# print("Error al conectarse:", e) - - - - - - - - - - - import smtplib from email.mime.multipart import MIMEMultipart @@ -186,8 +27,8 @@ conn = pyodbc.connect(conn_str) try: cursor = conn.cursor() - fecha = '2023-09-11' # Ejemplo de fecha - # fecha = datetime.date.today() + # fecha = '2023-09-05' # Ejemplo de fecha + fecha = datetime.date.today() cursor.execute("{CALL NotificacionCruze(?)}", fecha) # Recuperar los resultados del procedimiento almacenado @@ -287,7 +128,170 @@ 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"" +# message += f"

Factura {invoice}

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

" + +# message += f"

CorreosResponsables:

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

Información de todas las facturas

" + +# for invoice, rows in factura_data.items(): +# message_all_invoices += f"

Factura {invoice}

" +# message_all_invoices += "" +# for row in rows: +# fechaActual = row.FechaActual +# caja = row.Caja +# vigenciaDoda = row.VigenciaDODA +# notificacion = row.Notificacion + +# message_all_invoices += f"" + +# message_all_invoices += "
Fecha ActualInvoiceCajaVigenciaDODANotificacion
{fechaActual}{invoice}{caja}{vigenciaDoda}{notificacion}

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