# QRPlatbaApp – QR kód pro platby ## Přehled Aplikace generuje QR kódy pro platby pacientů v ordinaci. Údaje o pacientovi jsou předávány z Medicusu, aplikace zobrazí okno s výběrem položky k úhradě a generuje QR kód ve formátu **SPAYD** (Czech Payment Standard). ## Soubory | Soubor | Popis | |--------|-------| | `QRPlatbaApp.py` | Hlavní skript (customtkinter GUI) | | `QRPlatbaApp.spec` | PyInstaller konfigurace | | `qrcode.ico` | Ikona EXE | | `dist/QRPlatbaApp.exe` | Spustitelný EXE | | `QRPlatby/` | Uložené QR kódy (PNG) | ## Konfigurace v Medicusu V menu **Konfigurace > Externí programy**: | Položka | Hodnota | |---------|---------| | **Program** | `U:\OrdinaceProjekt\Medicus\Externi\QRCode\dist\QRPlatbaApp.exe` | | **Příkazový řádek** | `"U:\OrdinaceProjekt\Medicus\Externi\QRCode\dist\QRPlatbaApp.exe" %JMENO% %PRIJMENI% %RODCIS%` | | **Pacient** | ✓ | | **Menu** | QR Platba | ## Důležité technické detaily ### Rodné číslo Medicus předává RC **s lomítkem** (např. `730928/104`). Skript lomítko automaticky odstraní — variabilní symbol ve SPAYD formátu musí být max 10 číslic: ```python RODCIS = sys.argv[3].replace("/", "") ``` ### Argumenty z Medicusu ```python JMENO = sys.argv[1] PRIJMENI = sys.argv[2] RODCIS = sys.argv[3].replace("/", "") ``` ## Ceník Načítá se ze stored procedure Medicus DB: ```python cur.execute("SELECT V.KOD, V.NAZEV, V.CENA FROM VLV_SEL(NULL, NULL, NULL) V ORDER BY V.KOD") ``` ## SPAYD formát ``` SPD*1.0*ACC:CZ7520100000002800046620*AM:500.00*CC:CZK*X-VS:7309281045*MSG:Buzalka%20Vladimír%20–%20Poplatek ``` | Pole | Popis | |------|-------| | `ACC` | IBAN bankovního účtu | | `AM` | Částka (Kč) | | `CC` | Měna (CZK) | | `X-VS` | Variabilní symbol = RC bez lomítka (max 10 číslic) | | `MSG` | Jméno pacienta + položka | ## Bankovní účty ```python ACCOUNTS = { "2100046291/2010": "CZ1720100000002100046291", "2800046620/2010": "CZ7520100000002800046620", } ``` ## Výstup QR kódy PNG se ukládají do `U:\OrdinaceProjekt\Medicus\Externi\QRCode\QRPlatby\`. ## Error handling Jakákoliv výjimka zobrazí dialog a pošle email na `vladimir.buzalka@buzalka.cz` s traceback a údaji pacienta. Implementováno přes `Knihovny/EmailMessagingGraph.py`. ## Firebird DB připojení ```python DB_DSN = r'localhost:c:\medicus 3\data\medicus.fdb' DB_USER = 'SYSDBA' DB_PASSWORD = 'masterkey' DB_CHARSET = 'win1250' ``` ## Rebuild EXE ``` cd U:\OrdinaceProjekt\Medicus\Externi\QRCode pyinstaller QRPlatbaApp.spec ```