Add QR payment generator with live Medicus price list

- New QRPlatba/ module: standalone app for generating SPAYD QR payment codes
- Live price list loaded directly from Medicus Firebird DB (VLV_SEL), sorted by KOD
- Patient data (name, surname, RC) passed as arguments from Medicus button
- Auto-generates QR on load and refreshes on every dropdown change
- Account selector dropdown (two FIO accounts with IBAN)
- Save button exports QR as PNG next to the EXE (sys.executable-relative path)
- SPAYD format: ACC, AM, CC, X-VS (rodné číslo), MSG (patient + item)
- README.md with full documentation, Medicus button command, DB schema
- Add .gitignore (excludes build/, dist/, .venv/, .idea/, .claude/)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-25 20:07:10 +01:00
parent 532fe5ab41
commit 89511c500f
4 changed files with 421 additions and 32 deletions
+116
View File
@@ -0,0 +1,116 @@
# QRPlatbaApp Generátor QR plateb pro ordinaci MUDr. Buzalková
Aplikace pro generování QR kódů plateb dle standardu **SPAYD / ČBA** přímo z prostředí Medicus 3.
Ceník se načítá živě z databáze Medicusu, takže jakákoliv změna cen v Medicusu se okamžitě projeví.
---
## Funkce
- Načítá ceník přímo z databáze Medicus (Firebird) vždy aktuální ceny
- Pacientské údaje (jméno, příjmení, rodné číslo) přijímá jako argumenty z tlačítka Medicusu
- QR kód se zobrazí automaticky po otevření okna
- QR kód se obnoví při každé změně položky nebo čísla účtu
- Výběr ze dvou bankovních účtů (dropdown)
- Tlačítko **Uložit QR kód** uloží PNG soubor do složky `QRPlatby/`
- Variabilní symbol = rodné číslo pacienta
- Zpráva příjemci = `Příjmení Jméno Název položky`
---
## Spuštění z Medicusu
Příkaz pro tlačítko v Medicusu:
```
"U:\PycharmProjects\FIO\.venv\Scripts\pythonw.exe" "U:\PycharmProjects\FIO\QRPlatba\QRPlatbaApp.py" "%JMENO%" "%PRIJMENI%" "%RODCISN%"
```
> `pythonw.exe` se používá místo `python.exe`, aby se nezobrazovalo černé konzolové okno.
---
## Struktura projektu
```
QRPlatba/
├── QRPlatbaApp.py # Hlavní aplikace
├── README.md # Tato dokumentace
└── QRPlatby/ # Výstupní složka pro uložené QR kódy (PNG)
```
---
## Závislosti
Nainstalovat přes pip do projektového venv:
```bash
pip install customtkinter pillow qrcode fdb
```
| Balíček | Účel |
|-----------------|-------------------------------------------|
| `customtkinter` | Moderní GUI (tmavý/světlý režim) |
| `pillow` | Práce s obrázky (zobrazení QR v okně) |
| `qrcode` | Generování QR kódů |
| `fdb` | Připojení k Firebird databázi (Medicus) |
---
## Databázové připojení
Aplikace se připojuje k lokální Firebird databázi Medicusu:
| Parametr | Hodnota |
|-----------|------------------------------------------|
| DSN | `localhost:c:\medicus 3\data\medicus.fdb`|
| Uživatel | `SYSDBA` |
| Charset | `win1250` |
| View | `VLV_SEL` ceník výkonů |
Položky jsou seřazeny podle pole `KOD` (pořadové číslo v ceníku Medicusu).
---
## Formát QR kódu (SPAYD)
QR kód odpovídá standardu **Short Payment Descriptor (SPAYD)** dle specifikace České bankovní asociace.
Příklad vygenerovaného řetězce:
```
SPD*1.0*ACC:CZ1720100000002100046291*AM:600.00*CC:CZK*X-VS:486122443*MSG:Abohamda%20Horia%20%E2%80%93%20O%C4%8Dkov%C3%A1n%C3%AD%20ch%C5%99ipka%20(VAXIGRIP)
```
| Pole | Obsah |
|---------|------------------------------------|
| `ACC` | IBAN cílového účtu |
| `AM` | Částka v Kč |
| `CC` | Měna (vždy CZK) |
| `X-VS` | Variabilní symbol = rodné číslo |
| `MSG` | Příjmení Jméno Název položky |
---
## Bankovní účty
| Číslo účtu | IBAN |
|------------------|----------------------------|
| 2100046291/2010 | CZ1720100000002100046291 |
| 2800046620/2010 | CZ7520100000002800046620 |
---
## Uložené QR kódy
Soubory se ukládají do složky `QRPlatby/` ve formátu:
```
Příjmení_Jméno_YYYYMMDD_HHMMSS.png
```
Příklad: `Abohamda_Horia_20260325_143022.png`
---
*© Ordinace MUDr. Buzalková | QR Platba dle ČBA v1.2*