notebookvb

This commit is contained in:
2026-04-22 07:25:00 +02:00
parent ef7c5d77dc
commit 58026d944e
10053 changed files with 227 additions and 10730 deletions
+60 -7
View File
@@ -19,6 +19,9 @@ import xml.etree.ElementTree as ET
import pymysql
import pymysql.cursors
sys.path.insert(0, str(Path(__file__).parent.parent))
from Knihovny.najdi_dropbox import get_dropbox_root
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(errors="replace")
@@ -32,7 +35,14 @@ DB = dict(
cursorclass = pymysql.cursors.DictCursor,
)
XML_DIR = Path(__file__).parent / "xml_archive"
XML_DIR = (
Path(get_dropbox_root())
/ "Ordinace"
/ "Dokumentace_ke_zpracování"
/ "Zúčtovací zprávy"
/ "NačteníPředpisuWithClaude"
/ "xml_archive"
)
NS = "http://www.sukl.cz/erp/201704"
# ── Parametry spuštění (uprav zde, nebo nech None = celý archiv) ──────────────
@@ -154,11 +164,41 @@ def parsuj_xml(xml_text, xml_soubor):
prekroceni = prekroceni,
))
return doklad_dict, plp_list
# ── Vydej ─────────────────────────────────────────────────────────────────
vydej_list = []
for vydej_el in doklad.findall(f"{{{NS}}}Vydej"):
id_vydeje = t(vydej_el, "ID_Dokladu")
datum_vydeje = t(vydej_el, "DatumVydeje")
nazev_pzs = t(vydej_el, "NazevPZS")
jmeno_raw = t(vydej_el, "JmenoVydavajiciho")
jmeno_vydavajiciho = jmeno_raw if jmeno_raw and jmeno_raw.lower() != "skryto" else None
vydej_zalozeni = ts(t(vydej_el, "Zalozeni"))
vydej_zmena = ts(t(vydej_el, "Zmena"))
for vlp_el in vydej_el.findall(f"{{{NS}}}VLP"):
id_lp_predpis = t(vlp_el, "IdLpErp")
if not id_lp_predpis or not id_vydeje:
continue
vydej_list.append(dict(
id_vydeje = id_vydeje,
id_lp_predpis = id_lp_predpis,
id_dokladu = id_dokladu,
datum_vydeje = datum_vydeje,
nazev_pzs = nazev_pzs,
jmeno_vydavajiciho = jmeno_vydavajiciho,
mnozstvi = t(vlp_el, "Mnozstvi"),
nazev_vlp = t(vlp_el, "Nazev"),
kod_vlp = t(vlp_el, "Kod"),
navod = t(vlp_el, "Navod"),
zalozeni = vydej_zalozeni,
zmena = vydej_zmena,
))
return doklad_dict, plp_list, vydej_list
def uloz(conn, doklad, plp_list):
"""UPSERT dokladu a INSERT IGNORE PLP položek."""
def uloz(conn, doklad, plp_list, vydej_list):
"""UPSERT dokladu, INSERT IGNORE PLP a vydej položek."""
with conn.cursor() as cur:
# recept_doklad — ON DUPLICATE KEY UPDATE (stav se může změnit)
cur.execute("""
@@ -199,6 +239,19 @@ def uloz(conn, doklad, plp_list):
VALUES (%(id_lp)s, %(id_dokladu)s, %(uhrada)s, %(prekroceni)s)
""", plp)
# recept_vydej — INSERT IGNORE (výdej se nemění)
for v in vydej_list:
cur.execute("""
INSERT IGNORE INTO recept_vydej
(id_vydeje, id_lp_predpis, id_dokladu, datum_vydeje,
nazev_pzs, jmeno_vydavajiciho, mnozstvi, nazev_vlp,
kod_vlp, navod, zalozeni, zmena)
VALUES
(%(id_vydeje)s, %(id_lp_predpis)s, %(id_dokladu)s, %(datum_vydeje)s,
%(nazev_pzs)s, %(jmeno_vydavajiciho)s, %(mnozstvi)s, %(nazev_vlp)s,
%(kod_vlp)s, %(navod)s, %(zalozeni)s, %(zmena)s)
""", v)
conn.commit()
@@ -284,10 +337,10 @@ def main():
chyb += 1
continue
doklad, plp_list = vysledek
doklad, plp_list, vydej_list = vysledek
try:
uloz(conn, doklad, plp_list)
print(f"{doklad['stav']:20s} terminal={doklad['stav_terminal']} PLP={len(plp_list)}")
uloz(conn, doklad, plp_list, vydej_list)
print(f"{doklad['stav']:20s} terminal={doklad['stav_terminal']} PLP={len(plp_list)} vydej={len(vydej_list)}")
ok += 1
except Exception as e:
print(f"CHYBA DB {e}")