Skip to content

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()