52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
# diag_matriculas_agosto_detalle.py
|
|
# Las 51 matriculas de AGOSTO 2026 (todos los asesores de los 8), con su
|
|
# dsc_det_programa (detalle del programa) y grupo. Mismo criterio del dashboard:
|
|
# dsc_vendedor de los 8, estado != ANU, fch_matricula en agosto.
|
|
from datetime import datetime
|
|
from collections import defaultdict, Counter
|
|
import services as S
|
|
import leads_logic as L
|
|
|
|
ANO, MES = 2026, 8
|
|
|
|
ase = S._asesores(); amap = ase["map"]
|
|
|
|
filas = []
|
|
for m in S._matriculas_crudas():
|
|
vend = S._norm_asesor(m.get("dsc_vendedor"), amap)
|
|
if not vend:
|
|
continue
|
|
estado = str(m.get("estado_matricula") or "").strip().upper()
|
|
if estado == "ANU":
|
|
continue
|
|
fm = L._to_date(m.get("fch_matricula"))
|
|
if not fm or fm.year != ANO or fm.month != MES:
|
|
continue
|
|
filas.append({
|
|
"vendedor": vend,
|
|
"num_matricula": m.get("num_matricula"),
|
|
"estado": estado,
|
|
"fch": fm.strftime("%d/%m/%Y"),
|
|
"dsc_programa": str(m.get("dsc_programa") or ""),
|
|
"dsc_det": str(m.get("dsc_promocion") or ""), # dsc_det_programa
|
|
"grupo": L.grupo_programa_curso(m.get("dsc_programa")),
|
|
})
|
|
|
|
print(f"\n=== MATRICULAS AGOSTO {ANO} — todos los asesores (total: {len(filas)}) ===\n")
|
|
print(f"{'#':3} {'vendedor':16} {'estado':6} {'fch':11} {'grupo':10} dsc_det_programa")
|
|
print("-"*100)
|
|
for i, f in enumerate(sorted(filas, key=lambda x: (x['grupo'], x['vendedor'])), 1):
|
|
print(f"{i:3} {f['vendedor'][:16]:16} {f['estado']:6} {f['fch']:11} {f['grupo']:10} {f['dsc_det'][:45]}")
|
|
|
|
print("-"*100)
|
|
print("\n=== RESUMEN por dsc_det_programa (cuantas matriculas de cada uno) ===")
|
|
cnt = Counter(f["dsc_det"] for f in filas)
|
|
for prog, n in sorted(cnt.items(), key=lambda x: -x[1]):
|
|
print(f" {n:3} {prog}")
|
|
|
|
print("\n=== RESUMEN por GRUPO (debe cuadrar con la matriz del dashboard) ===")
|
|
gr = Counter(f["grupo"] for f in filas)
|
|
for g in ["TEAC","TERC","SEMINARIOS","OTROS"]:
|
|
print(f" {g:12} {gr.get(g,0)}")
|
|
print(f" {'TOTAL':12} {len(filas)}")
|