notebookvb
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
# QRPlatbaApp – QR kód pro platby
|
||||
|
||||
## Přehled
|
||||
|
||||
Aplikace **QRPlatbaApp** 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
|
||||
|
||||
- `QRPlatbaApp.py` — hlavní Python skript (customtkinter GUI)
|
||||
- `dist/QRPlatbaApp.exe` — kompilovaný spustitelný soubor (bez CMD okna)
|
||||
|
||||
## Technologie
|
||||
|
||||
- **Python 3.x** (nutný pouze pro vývoj, EXE běží bez Pythonu)
|
||||
- **customtkinter** — moderní GUI
|
||||
- **qrcode** — generování QR kódů
|
||||
- **pillow (PIL)** — manipulace s obrázky
|
||||
- **fdb** — připojení na Firebird DB (Medicus)
|
||||
|
||||
## Jak to funguje
|
||||
|
||||
### 1. Spouštění z Medicusu
|
||||
|
||||
Medicus předá údaje pacienta přes příkazový řádek do EXE:
|
||||
```
|
||||
QRPlatbaApp.exe %JMENO% %PRIJMENI% %RODCIS%
|
||||
```
|
||||
|
||||
### 2. Načtení ceníku
|
||||
|
||||
Skript se připojí na Medicus DB a načte ceník ze stored procedure `VLV_SEL`:
|
||||
```python
|
||||
cur.execute("SELECT V.KOD, V.NAZEV, V.CENA FROM VLV_SEL(NULL, NULL, NULL) V ORDER BY V.KOD")
|
||||
```
|
||||
|
||||
### 3. GUI okno
|
||||
|
||||
Zobrazí se okno s:
|
||||
- Údaji pacienta (jméno, příjmení, rodné číslo)
|
||||
- Výběrem položky k úhradě (dropdown)
|
||||
- Výběrem bankovního účtu (2 možnosti: Fio 2100046291/2010 nebo 2800046620/2010)
|
||||
- Tlačítko "Uložit QR kód"
|
||||
- QR kód (200x200px, SPAYD formát)
|
||||
|
||||
### 4. SPAYD formát
|
||||
|
||||
QR kód obsahuje:
|
||||
```
|
||||
SPD*1.0*ACC:CZ7520100000002800046620*AM:500.00*CC:CZK*X-VS:7309281045*MSG:Buzalka%20Vladimír%20–%20Poplatek
|
||||
```
|
||||
|
||||
- `ACC` — IBAN bankovního účtu
|
||||
- `AM` — částka (Kč)
|
||||
- `CC` — měna (CZK)
|
||||
- `X-VS` — variabilní symbol (rodné číslo pacienta)
|
||||
- `MSG` — zpráva (jméno + položka)
|
||||
|
||||
### 5. Uložení QR
|
||||
|
||||
Po kliknutí na "Uložit QR kód" se PNG vygeneruje do adresáře:
|
||||
```
|
||||
U:\OrdinaceProjekt\Medicus\QRCode\QRPlatby\Buzalka_Vladimír_20260510_143025.png
|
||||
```
|
||||
|
||||
## Konfigurace v Medicusu
|
||||
|
||||
V menu **Konfigurace > Externí programy** přidej nový záznam:
|
||||
|
||||
| Položka | Hodnota |
|
||||
|---------|---------|
|
||||
| **Kategorie** | Ostatní |
|
||||
| **Typ programu** | Externí program |
|
||||
| **Program** | `U:\OrdinaceProjekt\Medicus\QRCode\dist\QRPlatbaApp.exe` |
|
||||
| **Příkazový řádek** | `"U:\OrdinaceProjekt\Medicus\QRCode\dist\QRPlatbaApp.exe" %JMENO% %PRIJMENI% %RODCIS%` |
|
||||
| **Pacient** | ✓ (vyžaduje vybraného pacienta) |
|
||||
| **Menu** | QR Platba |
|
||||
|
||||
## Firebird DB připojení
|
||||
|
||||
```python
|
||||
DB_DSN = r'localhost:c:\medicus 3\data\medicus.fdb'
|
||||
DB_USER = 'SYSDBA'
|
||||
DB_PASSWORD = 'masterkey'
|
||||
DB_CHARSET = 'win1250'
|
||||
```
|
||||
|
||||
## Bankovní účty
|
||||
|
||||
```python
|
||||
ACCOUNTS = {
|
||||
"2100046291/2010": "CZ1720100000002100046291",
|
||||
"2800046620/2010": "CZ7520100000002800046620",
|
||||
}
|
||||
```
|
||||
|
||||
Oba účty jsou u Fio banky.
|
||||
|
||||
## Spouštění bez CMD okna
|
||||
|
||||
EXE soubor se zkompiloval pomocí PyInstalleru s parametrem `--windowed`, což zajistí spuštění bez zobrazení CMD okna. GUI se zobrazí přímo bez blikání.
|
||||
|
||||
## Příjmání argumentů
|
||||
|
||||
Python skript přijímá argumenty přesně z příkazového řádku:
|
||||
```python
|
||||
if len(sys.argv) >= 4:
|
||||
JMENO = sys.argv[1] # arg 1 z Medicusu (%JMENO%)
|
||||
PRIJMENI = sys.argv[2] # arg 2 z Medicusu (%PRIJMENI%)
|
||||
RODCIS = sys.argv[3] # arg 3 z Medicusu (%RODCIS%)
|
||||
```
|
||||
|
||||
## Ladění a opravy
|
||||
|
||||
Při chybách se informace vypíší v GUI (messagebox).
|
||||
|
||||
Pokud potřebuješ upravit zdrojový kód, edituj `QRPlatbaApp.py` a znovu zkompiluj EXE.
|
||||
|
||||
## Výstup
|
||||
|
||||
Generované QR kódy PNG se ukládají do:
|
||||
```
|
||||
U:\OrdinaceProjekt\Medicus\QRCode\QRPlatby\
|
||||
├── Buzalka_Vladimír_20260510_143025.png
|
||||
├── Buzalka_Vladimír_20260510_144030.png
|
||||
└── ...
|
||||
```
|
||||
|
||||
## PyInstaller kompilace
|
||||
|
||||
EXE soubor byl zkompilován příkazem:
|
||||
```bash
|
||||
pyinstaller --onefile --windowed --icon=qrcode.ico QRPlatbaApp.py
|
||||
```
|
||||
|
||||
Výsledný EXE se nachází v `dist/QRPlatbaApp.exe` a je schopen běžet na počítačích bez Pythonu.
|
||||
|
||||
Při potřebě znovu kompilovat po změně kódu:
|
||||
```bash
|
||||
cd U:\OrdinaceProjekt\Medicus\QRCode
|
||||
C:\Python312\Scripts\pyinstaller.exe --onefile --windowed --icon=qrcode.ico --clean QRPlatbaApp.py
|
||||
```
|
||||
Reference in New Issue
Block a user