Doklady a účetnictví
Nový modul v exportu z 19. 8. 2026. V předchozí verzi existovala jen entita Invoice a generování faktur za dokončené termíny; nyní jde o samostatnou účetní vrstvu s vlastními pravidly a exportem do Pohody.
Kde v kódu: base44/shared/ (1 142 řádků) + funkce generatePurchaseDocument, getPublicInvoice, processRefund, onServiceRealized, onLateCancellation, syncPohodaExport, pohodaTestRun, batchGenerateInvoices.
Pravidla vzniku dokladu
Ověřený fakt — z komentáře a kódu shared/documentGeneration.ts:
| Situace | Co vznikne | Exportuje se do Pohody? |
|---|---|---|
| Terapie placená kartou / online / převodem (NEO) | daňový doklad (tax_invoice) |
ano |
Terapie placená na recepci (cashdesk_*) |
nic — doklad vystavuje pokladní systém | ne |
| Terapie čerpaná z balíčku nebo voucheru | nic — daňový příjem vznikl už při prodeji | ne |
| Terapie čerpaná z kreditu | stopa čerpání (no_doc) |
ne |
| Prodej balíčku nebo voucheru | daňový doklad k nákupu (advance_invoice / tax_invoice) |
ano |
| Dobití kreditu | nedaňové potvrzení o přijetí platby (non_tax_confirmation) |
ne |
Uskutečnění služby (completed) |
vznik výnosu (revenue), případně doklad k dodávce |
ano |
Pozdní storno (cancelled_late) |
storno poplatek (penalty, není plněním DPH) |
ano |
Nedostavení u pojišťovny (no_show_insurance) |
storno poplatek k úhradě klientem | ano |
| Vratka hotovostí nebo přes bránu | dobropis (credit_note) vázaný na původní doklad |
ano |
| Vratka na kredit nebo do balíčku | bez dobropisu — nejde o daňovou změnu | ne |
| Kampaňový voucher | marketingový náklad (marketing_expense) |
ano |
Dvě fáze účetního toku
Změna logiky: peněžní tok a výnos jsou oddělené v čase.
flowchart LR
P[Přijetí platby] -->|accounting_phase = payment_receipt| D1[Doklad k přijaté platbě / záloha]
R[Uskutečnění služby] -->|accounting_phase = realization| D2[Vznik výnosu / doklad k dodávce]
D1 --> POH[Export do Pohody]
D2 --> POH
- Klient zaplatí předem (kredit, balíček, voucher) → přijatá záloha, bez výnosu
- Služba se uskuteční (
status = completed) → automatonServiceRealizedzaúčtuje výnos - U dokladu k dodávce s odpočtem zálohy je
total_amount = 0 Kčk úhradě
Identifikátory a idempotence
| Pole | K čemu je |
|---|---|
event_id |
UUID účetní události — sdílené mezi Invoice, PaymentLog a CreditTransaction; slouží ke korelaci a deduplikaci exportu |
purchase_id |
Samostatný nákup mimo rezervaci (kredit, balíček, voucher) |
variable_symbol |
Číslo dokladu + ID klienta; u klienta jinak client_number |
invoice_token |
Náhodné UUID pro veřejný odkaz /invoice?token=… |
accounting_source |
reservation / standalone_purchase — odvozuje se, nezadává se ručně |
accounting_phase |
payment_receipt / realization — rovněž odvozené |
Export do Pohody
Ověřený fakt — syncPohodaExport (admin only):
- Načte
Invoicespohoda_export_status = 'pending',export_to_pohoda = trueatax_document_flag = true - Po dávkách po 20 sestaví dataPack XML (
shared/pohodaXml.ts) a POSTne ho napohoda_api_url - Z
responsePackuložípohoda_external_id, nebo chybu dopohoda_export_error - Doklad označí jako
exported/failed
Přepínače (SystemSettings): pohoda_export_enabled, pohoda_test_mode (dry-run), pohoda_new_rules_enabled (nová pravidla — operationMeta tagy a vazba na původní platbu; zapínat až po testu).
Testovací režim — pohodaTestRun projde 10 reprezentativních scénářů, nic nepersistuje a neodesílá, jen loguje výsledek a kontroluje idempotenci.
Riziko: doklady ve stavu
failednikdo znovu nezkouší — viz R18. Účetní zápisy navíc vznikají bez transakcí (Base44 NoSQL) — viz R17.
Kdo k tomu má přístup
generatePurchaseDocument— roleadminnebofinancesyncPohodaExport— pouzeadmingetPublicInvoice— bez přihlášení, výhradně přes token dokladu
Související
- Platby — způsoby platby, vratky a nákupy mimo rezervaci
- Nastavení — konfigurace Pohody
- Entity
Invoice,PaymentLog,CreditTransaction