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.")