debug: add /debug-fb/cmxc endpoint for direct Firebird CMXC query

Shows IDRECEPCION, PREFIJO, NUM_FACTURA, CODCONTRATO, N_EXAMENES
for all CMXC receptions on a given date.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-28 15:21:32 -05:00
co-authored by Claude Sonnet 4.6
parent b8bee68d6a
commit 27b15b184c
+50
View File
@@ -176,6 +176,56 @@ async def debug_tarifas(user: dict = Depends(get_current_user)):
return JSONResponse({"ok": False, "traceback": traceback.format_exc()})
@router.get("/cmxc")
async def debug_cmxc(
fecha: str = Query(default="", description="YYYY-MM-DD, vacío = hoy"),
user: dict = Depends(get_current_user),
):
"""Consulta directa a Firebird: recepciones CMXC para la fecha dada."""
from datetime import date as date_cls
if not fecha:
fecha = date_cls.today().isoformat()
fecha_ini = f"{fecha} 00:00:00"
fecha_fin = f"{fecha} 23:59:59"
try:
conn = get_connection()
cfg = {r["key"]: r["value"] for r in conn.execute("SELECT * FROM config").fetchall()}
conn.close()
fb, ok, msg = get_firebird_from_config(cfg)
if not ok:
return JSONResponse({"ok": False, "error": msg})
ok1, _, rows = fb.execute_query("""
SELECT
r.IDRECEPCION, r.PREFIJO, r.NUM_FACTURA,
CAST(r.FECHA_RECEPCION AS VARCHAR(30)) AS FECHA_RECEPCION,
r.COD_PACIENTE, TRIM(r.NIT_EMPRESA) AS NIT_EMPRESA,
TRIM(e.CODCONTRATO) AS CODCONTRATO, TRIM(e.NOMBRE) AS NOM_EMPRESA,
(SELECT COUNT(*) FROM RELACION rel WHERE rel.IDRECEPCION = r.IDRECEPCION) AS N_EXAMENES
FROM RECEPCION r
LEFT JOIN EMPRESA e ON e.NIT = r.NIT_EMPRESA
WHERE r.FECHA_RECEPCION BETWEEN :fi AND :ff
AND r.PREFIJO = 'CMXC'
ORDER BY r.IDRECEPCION
""", {"fi": fecha_ini, "ff": fecha_fin})
ok2, _, total = fb.execute_query("""
SELECT COUNT(*) AS N FROM RECEPCION r
WHERE r.FECHA_RECEPCION BETWEEN :fi AND :ff
""", {"fi": fecha_ini, "ff": fecha_fin})
fb.disconnect()
return JSONResponse({
"ok": True,
"fecha": fecha,
"total_recepcion_del_dia": total[0]["N"] if ok2 and total else "?",
"cmxc_count": len(rows or []),
"cmxc_rows": list(rows or []),
})
except Exception:
return JSONResponse({"ok": False, "traceback": traceback.format_exc()})
@router.get("/cups")
async def find_cups(request: Request, user: dict = Depends(get_current_user)):
try: