Rpt Clientes 1725 se le agrego enviar correo electronico

SyncUpdate2IONOS
Luis Rendon 1 year ago
parent 78b37a6f83
commit 6bb1fe3b2b
  1. 107
      Nscripts/Scripts.py

@ -3,54 +3,52 @@ import pyodbc
import pandas as pd import pandas as pd
import datetime import datetime
import calendar import calendar
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
# Establecer la conexión a la base de datos # Establecer la conexión a la base de datos
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=.;DATABASE=GEMCO;') conn = pyodbc.connect('DRIVER={SQL Server};SERVER=.;DATABASE=GEMCO;')
# Crear el cursor # Crear el cursor
cursor = conn.cursor() cursor = conn.cursor()
# # Obtener la fecha actual # Obtener la fecha actual
# fecha_actual = datetime.date.today() FechaActual = datetime.date.today()
# print(fecha_actual)
# Obtener la fecha actual ingresada por el usuario
fecha_actual_str = input("Ingresa la fecha actual (YYYY-MM-DD): ")
fecha_actual = datetime.datetime.strptime(fecha_actual_str, "%Y-%m-%d").date()
# Calcular el primer día del mes anterior # FechaActual_str = input("Ingresa la fecha actual (YYYY-MM-DD): ")
primer_dia_mes_anterior = datetime.date(fecha_actual.year, fecha_actual.month - 1, 1) # FechaActual = datetime.datetime.strptime(FechaActual_str, "%Y-%m-%d").date()
print( primer_dia_mes_anterior)
# Calcular el último día del mes anterior # Calcular el primer día y el último día del mes anterior según la fecha actual
ultimo_dia_mes_anterior = primer_dia_mes_anterior.replace(day=calendar.monthrange(primer_dia_mes_anterior.year, primer_dia_mes_anterior.month)[1]) if FechaActual.month == 1: # Si es el primer día del año, obtener el mes anterior del año anterior
PrimerDiaMesAnterior = datetime.date(FechaActual.year - 1, 12, 1)
UltimoDiaMesAnterior = datetime.date(FechaActual.year - 1, 12, 31)
else: # Si no es el primer día del año, obtener el mes anterior del mismo año
PrimerDiaMesAnterior = datetime.date(FechaActual.year, FechaActual.month - 1, 1)
UltimoDiaMesAnterior = PrimerDiaMesAnterior.replace(day=calendar.monthrange(PrimerDiaMesAnterior.year, PrimerDiaMesAnterior.month)[1])
print(ultimo_dia_mes_anterior)
# Convertir las fechas a formato de cadena (YYYY-MM-DD) # Convertir las fechas a formato de cadena (YYYY-MM-DD)
inicio = primer_dia_mes_anterior.strftime('%Y-%m-%d') Inicio = PrimerDiaMesAnterior.strftime('%Y-%m-%d')
print(Inicio)
fin = ultimo_dia_mes_anterior.strftime('%Y-%m-%d') Fin = UltimoDiaMesAnterior.strftime('%Y-%m-%d')
print(Fin)
tipo_operacion = '2' TipoOperacion = '2'
cliente = '1725' Cliente = '1725'
print(inicio + " Esta fue el parametro que se envio al inicio ")
print(fin + " Esta es el paremetro que se envio en fin ")
sql = "{CALL [dbo].[Reportes.Web.Clientes.Facturas.Cruzadas] (?, ?, ?, ?)}" sql = "{CALL [dbo].[Reportes.Web.Clientes.Facturas.Cruzadas] (?, ?, ?, ?)}"
params = (inicio, fin, tipo_operacion, cliente) params = (Inicio, Fin, TipoOperacion, Cliente)
cursor.execute(sql, params) cursor.execute(sql, params)
# Obtener los resultados # Obtener los resultados
resultados = cursor.fetchall() Resultados = cursor.fetchall()
# Cerrar la conexión # Cerrar la conexión
cursor.close() cursor.close()
conn.close() conn.close()
# Resto del código...
# Definir las columnas # Definir las columnas
columnas = ['Referencia', 'Pedimento', 'Clave', 'FechaFirmaBanco', 'TipoCambio', 'PesoBruto', 'PaisVendedor', 'PaisOrigen', columnas = ['Referencia', 'Pedimento', 'Clave', 'FechaFirmaBanco', 'TipoCambio', 'PesoBruto', 'PaisVendedor', 'PaisOrigen',
'NumFacturas', 'Factura', 'ValorFactura', 'Fraccion', 'Descripcion', 'nClave', 'CantFacturas', 'ValorAduana', 'NumFacturas', 'Factura', 'ValorFactura', 'Fraccion', 'Descripcion', 'nClave', 'CantFacturas', 'ValorAduana',
@ -58,22 +56,55 @@ columnas = ['Referencia', 'Pedimento', 'Clave', 'FechaFirmaBanco', 'TipoCambio',
'ValorComercial', 'Incoterm'] 'ValorComercial', 'Incoterm']
# Modificar la estructura de los datos # Modificar la estructura de los datos
datos_modificados = [list(item) for item in resultados] DatosModificados = [list(item) for item in Resultados]
# Crear el DataFrame a partir de los datos # Crear el DataFrame a partir de los datos
df = pd.DataFrame(datos_modificados, columns=columnas) df = pd.DataFrame(DatosModificados, columns=columnas)
# Obtener la ruta de la carpeta de descargas del usuario # Obtener la ruta de la carpeta de descargas del usuario
carpeta_descargas = os.path.expanduser("~") + "\\Downloads\\" CarpetaDescargas = os.path.expanduser("~") + "\\Downloads\\"
# Definir el nombre del archivo # Definir el nombre del archivo
nombre_archivo = 'RptCliente1725InformeMensual.xlsx' NombreArchivo = 'RptCliente1725InformeMensual.xlsx'
# Concatenar la ruta de la carpeta de descargas con el nombre del archivo # Concatenar la ruta de la carpeta de descargas con el nombre del archivo
ruta_archivo = carpeta_descargas + nombre_archivo RutaArchivo = CarpetaDescargas + NombreArchivo
# Guardar el DataFrame en un archivo Excel en la carpeta de descargas # Guardar el DataFrame en un archivo Excel en la carpeta de descargas
df.to_excel(ruta_archivo, index=False) df.to_excel(RutaArchivo, index=False)
# Detalles del correo electrónico
remitente = 'noreply@gemcousa.mx'
destinatarios = ['agarcia@gemcousa.com', 'lrendon@gemcousa.com' ]
asunto = 'Adjunto: Informe Mensual Cliente 1725'
cuerpo = 'Hola, adjunto encontrarás el informe mensual.'
# Configurar los detalles del servidor de correo saliente
servidor_smtp = 'smtp.ionos.com'
puerto_smtp = 587
usuario_smtp = 'noreply@gemcousa.mx'
contraseña_smtp = 'Mx77lf%02'
# Crear el mensaje de correo electrónico
mensaje = MIMEMultipart()
mensaje['From'] = remitente
mensaje['To'] = ', '.join(destinatarios)
mensaje['Subject'] = asunto
# Agregar el cuerpo del mensaje
mensaje.attach(MIMEText(cuerpo, 'plain'))
# Adjuntar el archivo Excel al mensaje
with open(RutaArchivo, 'rb') as archivo:
parte_adjunta = MIMEApplication(archivo.read(), Name=os.path.basename(RutaArchivo))
parte_adjunta['Content-Disposition'] = f'attachment; filename="{os.path.basename(RutaArchivo)}"'
mensaje.attach(parte_adjunta)
# Establecer la conexión con el servidor de correo saliente
conexion_smtp = smtplib.SMTP(servidor_smtp, puerto_smtp)
conexion_smtp.starttls()
conexion_smtp.login(usuario_smtp, contraseña_smtp)
# Enviar el mensaje
texto_mensaje = mensaje.as_string()
conexion_smtp.sendmail(remitente, destinatarios, texto_mensaje)
# Cerrar la conexión
conexion_smtp.quit()
print("El archivo se ha guardado en la carpeta de descargas.") print("El archivo se ha enviado por correo electrónico.")

Loading…
Cancel
Save