4f586f4b57
- faktury_report.py: nový list ED_PODANI (ED_BOOKOFSUBMISSIONS) s přehledem podání pojišťovnám - faktury_report.py: nový list ED_PODANI_DATA s dekódovaným obsahem dávek (KDAVKA, REQUEST XML, odpovědi pojišťoven) - Opraveno kódování: KDAVKA=cp1250, REQUEST detekce BOM (utf-16/utf-8), SERVERRESPONSE/PROTOCOL=iso-8859-2 - Hyperlinky ED_PODANI ↔ ED_PODANI_DATA a Faktura → FAK - FakturaceADavky.md: dokumentace ED_* tabulek, portálů pojišťoven, formátů REQUEST XML - Průzkumné skripty: find_edavky_table, explore_hpn, explore_ed_bookofsubmissions, parse_trace_edavky aj. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
import sys, io
|
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
|
|
import fdb
|
|
|
|
conn = fdb.connect(
|
|
dsn=r'localhost:c:\medicus 3\data\medicus.fdb',
|
|
user='SYSDBA', password='masterkey', charset='win1250'
|
|
)
|
|
cur = conn.cursor()
|
|
|
|
for table in ['ED_BOOKOFSUBMISSIONS', 'ED_BOOKOFSUBMISSIONATTACH', 'ED_MAILBOXMESSAGE', 'ED_STORAGE']:
|
|
print(f"\n{'='*70}")
|
|
print(f"TABULKA: {table}")
|
|
print('='*70)
|
|
|
|
cur.execute(f"""
|
|
SELECT rf.RDB$FIELD_NAME
|
|
FROM RDB$RELATION_FIELDS rf
|
|
WHERE rf.RDB$RELATION_NAME = '{table}'
|
|
ORDER BY rf.RDB$FIELD_POSITION
|
|
""")
|
|
cols = [r[0].strip() for r in cur.fetchall()]
|
|
print(f"Sloupce: {cols}")
|
|
|
|
cur.execute(f"SELECT COUNT(*) FROM {table}")
|
|
print(f"Počet: {cur.fetchone()[0]}")
|
|
|
|
# BLOB sloupce vynech
|
|
cur.execute(f"""
|
|
SELECT rf.RDB$FIELD_NAME
|
|
FROM RDB$RELATION_FIELDS rf
|
|
JOIN RDB$FIELDS f ON f.RDB$FIELD_NAME = rf.RDB$FIELD_SOURCE
|
|
WHERE rf.RDB$RELATION_NAME = '{table}'
|
|
AND f.RDB$FIELD_TYPE = 261
|
|
""")
|
|
blob_cols = {r[0].strip() for r in cur.fetchall()}
|
|
safe = [c for c in cols if c not in blob_cols]
|
|
|
|
# Najdi razeni
|
|
order_col = next((c for c in ['CREATEDATE','SENTDATE','CREATED','ODESLANO','DATUM','ID'] if c in cols), cols[0])
|
|
|
|
try:
|
|
cur.execute(f"SELECT FIRST 10 {', '.join(safe)} FROM {table} ORDER BY {order_col} DESC")
|
|
rows = cur.fetchall()
|
|
print(f"\nPosledních 10 (ORDER BY {order_col} DESC):")
|
|
for row in rows:
|
|
print(f" {dict(zip(safe, row))}")
|
|
except Exception as e:
|
|
print(f"Chyba SELECT: {e}")
|
|
# Zkus bez order
|
|
try:
|
|
cur.execute(f"SELECT FIRST 5 {', '.join(safe)} FROM {table}")
|
|
rows = cur.fetchall()
|
|
for row in rows:
|
|
print(f" {dict(zip(safe, row))}")
|
|
except Exception as e2:
|
|
print(f"Chyba i bez ORDER: {e2}")
|
|
|
|
conn.close()
|
|
print("\nHotovo.")
|