mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
96 lines
2.6 KiB
Python
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()
|