from pathlib import Path import pandas as pd BASE = Path("datos") SALIDA = Path("salidas") SALIDA.mkdir(exist_ok=True) ventas = pd.read_csv(BASE / "ventas_mes.csv", parse_dates=["fecha"]) clientes = pd.read_csv(BASE / "clientes.csv") requeridas = {"fecha", "cliente_id", "importe", "estado"} faltantes = requeridas - set(ventas.columns) if faltantes: raise ValueError(f"Columnas faltantes en ventas_mes.csv: {sorted(faltantes)}") if ventas["importe"].isna().any(): raise ValueError("Hay importes vacios. Revisar archivo de origen.") ventas_validas = ventas[ventas["estado"].eq("confirmada")].copy() reporte = ( ventas_validas .merge(clientes, on="cliente_id", how="left") .groupby("segmento", dropna=False, as_index=False) .agg(ventas=("importe", "sum"), operaciones=("importe", "count")) .sort_values("ventas", ascending=False) ) control = { "filas_origen": len(ventas), "filas_confirmadas": len(ventas_validas), "total_confirmado": float(ventas_validas["importe"].sum()), "segmentos_reportados": len(reporte), } reporte.to_excel(SALIDA / "reporte_mensual.xlsx", index=False) pd.Series(control).to_csv(SALIDA / "control_reporte.csv", header=False) print("Reporte generado en salidas/reporte_mensual.xlsx")