Klienti
Seznam klientů
Cesta: /Clients
Komponenta: src/pages/Clients.jsx
Tabulkový přehled všech klientů kliniky.
Funkce:
- Vyhledávání (jméno, e-mail, telefon)
- Filtrování podle kategorie a stavu (aktivní / archivovaný)
- Přidání nového klienta přes
ClientDialog - Kliknutím na řádek → přechod na detail klienta
Detail klienta
Cesta: /clients/:id
Komponenta: src/pages/ClientDetail.jsx
Detail konkrétního klienta rozdělený do záložek.
Záložky
| Záložka | Obsah |
|---|---|
| Přehled | Základní info: jméno, kontakty, segment, kategorie, poznámky |
Termíny (bookings) |
Historie všech rezervací — datum, terapeut, výkon, stav, platba |
Platby (payments) |
Záznamy z PaymentLog — metoda, částka, stav |
Kredity (credits) |
Aktuální zůstatek kreditního účtu + výpis transakcí |
Balíčky (packages) |
Zakoupené balíčky sezení (ClientPackage) a jejich čerpání |
Doklady (invoices) |
Vystavené doklady klienta (Invoice) — nově i zálohy, dobropisy a storno poplatky, s odkazem na veřejný doklad |
Souhlasy (consents) |
On-boarding: VOP, GDPR, marketing, dotazníky + digitální podpis — viz níže |
Aktivita (activity) |
Auditní log akcí vztažených ke klientovi |
Záložka Souhlasy (on-boarding)
Ověřený fakt — komponenta ClientConsentsTab.jsx. Zobrazuje stav digitálních souhlasů uložených na entitě Client (viz On-boarding):
- VOP —
vop_accepted+ čas + verze (vop_version). - GDPR —
gdpr_consent_accepted+ čas. - Marketing a Dotazníky spokojenosti — volitelné souhlasy, které může admin odvolat / obnovit (změna se zapíše do
ActivityLogjakoconsent_revoked/consent_restored). - Digitální podpis — náhled
signature_data, čas podpisu, příznak „✓ ověřeno OTP".
Pokud klient nedokončil onboarding (is_profile_complete = false), záložka zobrazí upozornění, že souhlasy a podpis nejsou k dispozici.
Segmenty klientů
| Segment | Popis |
|---|---|
standard |
Standardní klient |
vip |
VIP klient |
child |
Dítě |
couple |
Pár (párová terapie) |
Kreditní systém
- Každý klient má jeden kreditní účet (
ClientCredit) - Admin může kredit dobít — nově s volbou způsobu platby a ID platby pro spárování
- Klient může platit kreditem přes portál nebo admin přes EventDialog
- Každý pohyb je zaznamenán v
CreditTransaction
Změna logiky (export 19. 8. 2026):
- Dobití kreditu je účetní událost — vystaví se nedaňové potvrzení o přijetí platby (
non_tax_confirmation) a do Pohody jde jako přijatá záloha. Výnos vzniká až čerpáním kreditu za realizovanou službu. - Převody kreditu mezi klienty — nové typy transakcí
transfer_out/transfer_ins odkazem na druhého klienta (related_client_id). Viz otevřená otázka O25. - Typy transakcí: dobití, platba, vrácení, úprava, převod odeslaný, převod přijatý.
Číslo klienta
Změna logiky: každý klient dostává client_number — lidsky čitelné sekvenční ID přidělované automatem assignClientNumber z čítače SystemSettings.client_number_seed. Používá se pro identifikaci a jako variabilní symbol při párování plateb. Pro stávající klienty existuje hromadné doplnění (action: 'backfill').
Balíčky sezení
- Klient může mít zakoupený balíček (
ClientPackage) - Balíček odpočítává sezení při každé zaplacené rezervaci
- Po vyčerpání se stav změní na
exhausted
Změna logiky: prodej balíčku je nyní samostatný nákup s daňovým dokladem — na ClientPackage se ukládá cenový snapshot (price, vat_rate, vat_amount, total_amount), purchase_id a invoice_id. Balíčky lze omezit na skupiny klientů (allowed_client_category_ids) a defaultně jsou nabízeny až po první realizované terapii (requires_first_visit).