Actualizar backend/core/data_manager.py

This commit is contained in:
2026-09-23 10:31:08 -05:00
parent 2c395d51d8
commit f6916538c2

View File

@@ -468,9 +468,12 @@ class DataManager:
conn = self.get_connection()
cursor = conn.cursor()
# Clasificadores para filtros (mismos que Cobranza/Ocupabilidad)
_sede_sel = str(sede or "TODOS").upper()
_prog_sel = str(programa or "TODOS").upper()
# Clasificadores para filtros (mismos que Cobranza/Ocupabilidad).
# Acepta varios valores separados por coma (multi-selección). Vacío/TODOS = todo.
_sede_set = {s.strip().upper() for s in str(sede or "TODOS").split(",") if s.strip()}
_prog_set = {p.strip().upper() for p in str(programa or "TODOS").split(",") if p.strip()}
_sede_all = (not _sede_set) or ("TODOS" in _sede_set)
_prog_all = (not _prog_set) or ("TODOS" in _prog_set)
def _clasif_sede(dscp):
if not dscp: return "LIMA"
up = str(dscp).upper()
@@ -513,11 +516,12 @@ class DataManager:
vendedor = row[0] if row[0] else "SIN VENDEDOR"
if vendedor in vendedores_excluidos: continue
# Filtro SEDE/PROGRAMA (mismas reglas que Ocupabilidad/Cobranza)
# Filtro SEDE/PROGRAMA (mismas reglas que Ocupabilidad/Cobranza).
# Multi-selección: pasa si su sede/programa está en el set marcado.
_dscp = row[10] if (len(row) > 10 and row[10]) else (row[12] if len(row) > 12 else "")
if _sede_sel != "TODOS" and _clasif_sede(_dscp) != _sede_sel:
if not _sede_all and _clasif_sede(_dscp) not in _sede_set:
continue
if _prog_sel != "TODOS" and _clasif_prog(_dscp) != _prog_sel:
if not _prog_all and _clasif_prog(_dscp) not in _prog_set:
continue
inv_neta_raw = float(row[1]) if row[1] else 0.0