From ebd45446a470b602cd859052d7876467ae9f78fa Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Wed, 1 Jul 2026 12:16:15 -0500 Subject: [PATCH] tmp: add check_cups.py script to query Firebird schema Co-Authored-By: Claude Sonnet 4.6 --- check_cups.py | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 check_cups.py diff --git a/check_cups.py b/check_cups.py new file mode 100644 index 0000000..76115cf --- /dev/null +++ b/check_cups.py @@ -0,0 +1,63 @@ +import sys +sys.path.insert(0, ".") +import sqlite3 +from app.services.firebird_service import get_firebird_from_config + +conn = sqlite3.connect("rips_manager.db") +conn.row_factory = sqlite3.Row +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: + print("Error Firebird:", msg) + sys.exit(1) + +# Columnas de ITEM +ok1, _, rows1 = fb.execute_query(""" + SELECT TRIM(f.RDB$FIELD_NAME) AS campo + FROM RDB$RELATION_FIELDS f + WHERE TRIM(f.RDB$RELATION_NAME) = 'ITEM' + ORDER BY f.RDB$FIELD_POSITION +""") +print("=== COLUMNAS DE ITEM ===") +print([r["campo"] for r in rows1] if ok1 else "sin tabla ITEM") + +# Muestra de ITEM con CUPS +ok2, _, rows2 = fb.execute_query(""" + SELECT FIRST 3 i.* FROM ITEM i + WHERE i.CUPS_DETALLE IS NOT NULL AND TRIM(i.CUPS_DETALLE) <> '' +""") +print("\n=== ITEM CON CUPS_DETALLE ===") +for r in (rows2 or []): + print(dict(r)) + +# ITEM para CH4 +ok3, _, rows3 = fb.execute_query("SELECT FIRST 1 i.* FROM ITEM i WHERE TRIM(i.CODIGO) = 'CH4'") +print("\n=== ITEM DONDE CODIGO='CH4' ===") +print(dict(rows3[0]) if (ok3 and rows3) else "no encontrado por CODIGO") + +# Intentar JOIN directo RELACION -> ITEM +ok4, _, rows4 = fb.execute_query(""" + SELECT FIRST 5 rel.COD_EXAMEN, i.CUPS_DETALLE + FROM RELACION rel + JOIN ITEM i ON TRIM(i.CODIGO) = TRIM(rel.COD_EXAMEN) + WHERE i.CUPS_DETALLE IS NOT NULL AND TRIM(i.CUPS_DETALLE) <> '' +""") +print("\n=== JOIN RELACION->ITEM (por CODIGO) ===") +for r in (rows4 or []): + print(dict(r)) + +if not rows4: + # Intentar con otro campo + ok5, _, rows5 = fb.execute_query(""" + SELECT FIRST 3 i.* FROM ITEM i WHERE TRIM(i.CODIGO) IN ( + SELECT DISTINCT TRIM(rel.COD_EXAMEN) FROM RELACION rel WHERE rel.COD_EXAMEN IS NOT NULL + ) + """) + print("\n=== ITEM que coincide con COD_EXAMEN de RELACION ===") + for r in (rows5 or []): + print(dict(r)) + +fb.disconnect() +print("\nListo.")