Actualizar backend/services.py

This commit is contained in:
2026-08-26 09:38:11 -05:00
parent 51d6de32dd
commit a0dbffd848

View File

@@ -643,6 +643,37 @@ def _sb():
raise RuntimeError("Supabase no está conectado") raise RuntimeError("Supabase no está conectado")
return dm.supabase_client return dm.supabase_client
# ── Estado/observaciones por alumno (tabla cobranza_estado_alumno) ──
def alumno_estado_obtener(matricula):
"""Devuelve {estado, observaciones} de un alumno. Si no existe, valores por defecto."""
sb = _sb()
res = sb.table("cobranza_estado_alumno").select("*").eq("matricula", str(matricula)).execute()
fila = (res.data or [None])[0]
if not fila:
return {"estado": "EN CURSO", "observaciones": []}
return {"estado": fila.get("estado") or "EN CURSO",
"observaciones": fila.get("observaciones") or []}
def alumno_estado_guardar(matricula, estado, observaciones, usuario=None):
"""Guarda (upsert) el estado y la lista de observaciones del alumno."""
sb = _sb()
from datetime import datetime, timezone
payload = {
"matricula": str(matricula),
"estado": estado or "EN CURSO",
"observaciones": observaciones or [],
"actualizado_en": datetime.now(timezone.utc).isoformat(),
"actualizado_por": usuario or None,
}
sb.table("cobranza_estado_alumno").upsert(payload).execute()
return {"status": "ok"}
def alumnos_por_retirar():
"""Lista de matrículas marcadas como POR RETIRAR (para tachar la fila en la tabla)."""
sb = _sb()
res = sb.table("cobranza_estado_alumno").select("matricula").eq("estado", "POR RETIRAR").execute()
return {"matriculas": [str(r["matricula"]) for r in (res.data or [])]}
def usuarios_listar(): def usuarios_listar():
sb = _sb() sb = _sb()
perfiles = sb.table("perfiles").select("id, nombre, rol, activo").execute().data or [] perfiles = sb.table("perfiles").select("id, nombre, rol, activo").execute().data or []