07_baseline_rpmv008co.py
Ruta original: docs/proyectos/consumo-interno-fifo/scripts/07_baseline_rpmv008co.py
"""
Baseline: reporte nativo RPMV008_CO.asp (CONSUMO INTERNO), Empresa 0001,
excluyendo cancelados (Es_Cve_Estado <> 'CA'). Fuente de verdad -- viene del
.asp real de mpro (ver skill mpro-reporte-asp), no de una suposicion de
como se arma el reporte nativo.
Uso:
python3 07_baseline_rpmv008co.py --fecha-ini 2026-03-01 --fecha-fin 2026-03-31
"""
import argparse
import sys
from rich.console import Console
sys.path.append(".")
from connection_205_trivasadb3 import q
console = Console()
QUERY = """
SELECT
Consumo_Interno.Ci_Folio,
Consumo_Interno.Ci_ID,
Consumo_Interno.Ci_Fecha,
Consumo_Interno.Sc_Cve_Sucursal,
Consumo_Interno.Al_Cve_Almacen,
Consumo_Interno.Pr_Cve_Producto,
Producto.Pr_Descripcion,
Consumo_Interno.Es_Cve_Estado,
Consumo_Interno.Ci_Cantidad_Control_1,
Consumo_Interno.Ci_Cantidad_Control_2,
Consumo_Interno.Ci_Costo_Importe
FROM Consumo_Interno
INNER JOIN Sucursal ON Sucursal.Sc_Cve_Sucursal = Consumo_Interno.Sc_Cve_Sucursal
INNER JOIN Producto ON Producto.Pr_Cve_Producto = Consumo_Interno.Pr_Cve_Producto
WHERE Sucursal.Em_Cve_Empresa = '0001'
AND Consumo_Interno.Es_Cve_Estado <> 'CA'
AND Consumo_Interno.Ci_Fecha BETWEEN :fecha_ini AND :fecha_fin
ORDER BY Consumo_Interno.Ci_Folio, Consumo_Interno.Ci_ID
"""
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--fecha-ini", required=True)
ap.add_argument("--fecha-fin", required=True)
args = ap.parse_args()
sql = QUERY.replace(":fecha_ini", f"'{args.fecha_ini}'").replace(":fecha_fin", f"'{args.fecha_fin}'")
df = q(sql)
out = f"output/baseline_rpmv008co_{args.fecha_ini}_{args.fecha_fin}.csv"
df.to_csv(out, index=False)
console.print(f"[bold]Baseline RPMV008_CO[/bold] {args.fecha_ini} a {args.fecha_fin}")
console.print(f"Líneas: {len(df):,}")
console.print(f"Importe total: ${df['Ci_Costo_Importe'].sum():,.2f}")
console.print(f"Guardado en: {out}")
if __name__ == "__main__":
main()