diff --git a/NotificacionCruce/VigenciaDoda.py b/NotificacionCruce/VigenciaDoda.py index 19d3b9e..396ef6a 100644 --- a/NotificacionCruce/VigenciaDoda.py +++ b/NotificacionCruce/VigenciaDoda.py @@ -5,7 +5,25 @@ import pyodbc import json import datetime -# Cargar la información de conexión desde el archivo JSON +# import os cargar achivo en diferentes carpetas. +# # # Cargar la información de conexión desde el archivo JSON +# # with open('config.json', 'r') as config_file: +# # config = json.load(config_file) + + + +# # Obtiene la ruta del directorio donde se encuentra el script +# directorio_script = os.path.dirname(os.path.abspath(__file__)) + +# # Establece el directorio de trabajo actual +# os.chdir(directorio_script) + +# # Carga 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 forma local with open('config.json', 'r') as config_file: config = json.load(config_file) @@ -75,7 +93,7 @@ try: # Obtener los datos comunes para la factura (fecha, invoice, caja, vigenciaDoda, notificacion) first_row = factura_data[invoice][0] - fechaActual = first_row.FechaActual + # fechaActual = first_row.FechaActual caja = first_row.Caja vigenciaDoda = first_row.VigenciaDODA notificacion = first_row.Notificacion @@ -89,8 +107,10 @@ try: # 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"
Fecha ActualInvoiceCajaVigenciaDODANotificacion
" + # message += f"" + message += f"" message += f"
InvoiceCajaVigenciaDODANotificacion
{fechaActual}{invoice}{caja}{vigenciaDoda}{notificacion}
{invoice}{caja}{vigenciaDoda}{notificacion}

" message += "" msg.attach(MIMEText(message, 'html')) @@ -181,3 +201,18 @@ except Exception as e: +# { conexion al server de producion +# "server": "100.10.10.1", +# "database": "ZINC", +# "username": "admin", +# "password": "DBAdmin1234$.", +# "EmailUser": "noreply@gemcousa.mx", +# "EmailPassword": "Mx77lf%02", +# "EmailServer": "smtp.ionos.com", +# "EmailPort": 587, +# "ServerSIR": "192.168.100.11", +# "DatabaseSIR": "SIR", +# "DBUserSIR": "usersir", +# "DBPasswordSIR": "S1r22$Us" +# } + diff --git a/Pruebas Notificacion/VigenciaDoda.py b/Pruebas Notificacion/VigenciaDoda.py new file mode 100644 index 0000000..99b08d0 --- /dev/null +++ b/Pruebas Notificacion/VigenciaDoda.py @@ -0,0 +1,234 @@ +# 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-18' # Ejemplo de fecha +# cursor.execute("{CALL NotiVigenciaDoda(?)}", fecha) + +# # Recuperar los resultados del procedimiento almacenado +# rows = cursor.fetchall() + +# 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': []} + +# # 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 + +# # Preguntar al usuario por los correos para esta factura +# correos_responsables = input(f'Correos Responsables para la factura {invoice}: ').split(',') +# notificacion_aa = input(f'Correos NotificacionAA para la factura {invoice}: ').split(',') +# correos_tipo_viaje = input(f'Correos CorreoTipoViaje para la factura {invoice}: ').split(',') + +# 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) + +# # 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'] + +# # Iterar a través de las facturas y enviar correos personalizados +# 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'] + +# # Crear el mensaje de correo electrónico +# msg = MIMEMultipart() +# msg['From'] = sender_email +# msg['To'] = ', '.join(correos_responsables + notificacion_aa + correos_tipo_viaje) # Agregar destinatarios al campo "Para" +# 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 += "" +# 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 con los destinatarios en el campo "Para" +# server.sendmail(sender_email, correos_responsables + notificacion_aa + correos_tipo_viaje, 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) + + +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() + print('Conexion exitosa ala DB. ') + fecha = '2023-10-02' # Ejemplo de fecha + cursor.execute("{CALL NotiVigenciaDoda(?)}", fecha) + + # Recuperar los resultados del procedimiento almacenado + rows = cursor.fetchall() + + 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': []} + + # Preguntar al usuario por los correos para esta factura + correos_responsables = input(f'Correos Responsables para la factura {invoice}: ').split(',') + notificacion_aa = input(f'Correos NotificacionAA para la factura {invoice}: ').split(',') + correos_tipo_viaje = input(f'Correos CorreoTipoViaje para la factura {invoice}: ').split(',') + + 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) + + # 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'] + + # Iterar a través de las facturas y enviar correos personalizados + 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['To'] = ', '.join(correos_responsables + notificacion_aa + correos_tipo_viaje) # Agregar destinatarios al campo "Para" + msg['Subject'] = f"Notificacion Vigencia de documentos. {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"
InvoiceCajaVigenciaDODANotificacion
{invoice}{caja}{vigenciaDoda}{notificacion}

" + 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 con los destinatarios en el campo "Para" + server.sendmail(sender_email, correos_responsables + notificacion_aa + correos_tipo_viaje, 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) + + + diff --git a/Pruebas Notificacion/config.json b/Pruebas Notificacion/config.json new file mode 100644 index 0000000..115c148 --- /dev/null +++ b/Pruebas Notificacion/config.json @@ -0,0 +1,18 @@ +{ + "server": "100.10.10.1", + "database": "ZINC", + "username": "admin", + "password": "DBAdmin1234$.", + "EmailUser": "noreply@gemcousa.mx", + "EmailPassword": "Mx77lf%02", + "EmailServer": "smtp.ionos.com", + "EmailPort": 587, + "ServerSIR": "192.168.100.11", + "DatabaseSIR": "SIR", + "DBUserSIR": "usersir", + "DBPasswordSIR": "S1r22$Us" +} + + + + \ No newline at end of file