Files
safekat/scripts/papeles_impresion/loadMargenesPapelImpresion.py
2025-05-07 11:51:52 +02:00

96 lines
2.6 KiB
Python

import pandas as pd
import mysql.connector
"""
Script para insertar márgenes en la tabla 'papel_impresion_margenes' en base a un archivo Excel.
- Lee los papeles objetivo desde la hoja 'Papeles'.
- Lee los tramos de márgenes desde la hoja 'Tramos'.
- Elimina márgenes existentes de los papeles especificados.
- Inserta nuevos tramos de márgenes para cada papel.
Requiere:
- Archivo Excel con hojas 'Papeles' y 'Tramos'.
- Conexión activa a la base de datos MySQL.
- Paquetes: pandas, mysql-connector-python
Autor: IMN
Fecha: 07/05/2025
"""
# === CONFIGURACIÓN ===
RUTA_EXCEL = "Tramos papel.xlsx"
DB_CONFIG = {
"host": "82.223.102.252",
"user": "erp-dev",
"password": "Txhn75@10",
"database": "erp-dev"
}
# === CARGAR DATOS DESDE EXCEL ===
df_papeles = pd.read_excel(RUTA_EXCEL, sheet_name="Papeles")
df_tramos = pd.read_excel(RUTA_EXCEL, sheet_name="Tramos")
ids_papeles = df_papeles['ID'].dropna().astype(int).unique().tolist()
print("IDs de papeles cargados:", ids_papeles)
# === CONEXIÓN A MYSQL ===
conn = mysql.connector.connect(**DB_CONFIG)
cursor = conn.cursor()
# === ELIMINAR MÁRGENES EXISTENTES ===
delete_query = f"""
DELETE FROM papel_impresion_margenes
WHERE papel_impresion_id IN ({', '.join(map(str, ids_papeles))});
"""
cursor.execute(delete_query)
print(f"Eliminadas entradas antiguas para {len(ids_papeles)} papeles.")
# === ACTUALIZAR PRECIO TONELADA PARA CADA PAPEL ===
update_query = """
UPDATE lg_papel_impresion
SET precio_tonelada = %s
WHERE id = %s
"""
# Preparar los valores (precio, id)
updates = []
for _, row in df_papeles.iterrows():
papel_id = int(row["ID"])
precio = float(row["Precio Tonelada"])
updates.append((precio, papel_id))
# Ejecutar actualizaciones
cursor.executemany(update_query, updates)
conn.commit()
print(f"Actualizados {cursor.rowcount} precios en lg_papel_impresion.")
# === PREPARAR DATOS NUEVOS ===
insert_query = """
INSERT INTO papel_impresion_margenes (
papel_impresion_id, paginas_min, paginas_max, margen,
user_created_id, user_updated_id, is_deleted, deleted_at,
created_at, updated_at
) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())
"""
data = []
for papel_id in ids_papeles:
for _, row in df_tramos.iterrows():
data.append((
papel_id,
int(row["Páginas min"]),
int(row["Páginas máx"]),
float(row["%"]),
10, 10, 0, None
))
# === INSERTAR NUEVOS REGISTROS ===
cursor.executemany(insert_query, data)
conn.commit()
# === FINALIZAR ===
print(f"Insertadas {cursor.rowcount} filas.")
cursor.close()
conn.close()