# 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
```
