Hooky a Spouštěče (Triggers)
Modul Účetnictví (Accounting) silně spoléhá na Hooky (háčky), které vynucují obchodní pravidla, počítají součty a automaticky spravují stavy entit. To zajišťuje integritu dat bez ohledu na to, zda změna přichází z uživatelského rozhraní, API nebo importu.
Hlavní Hooky
Abstraktní Přepočet (Abstract Recalculate)
Soubor: src/backend/Core/Hooks/AbstractRecalculate.php
Spouštěč: afterSave (po uložení)
Entity: Faktura, Nabídka, Objednávka, Dobropis, Zálohová faktura
Toto je centrální spouštěč výpočetního jádra. Když je dokument uložen:
- Zkontroluje, zda se změnila specifická pole (položky, sleva, měna, náklady na dopravu).
- Pokud došlo ke změně, vyvolá službu
Calculation\Service. - Aktualizuje
grandTotal(celkový součet),totalAmount(částka),taxAmount(daň) atd. - Zabraňuje nekonečným smyčkám kontrolou příznaku
isRecalculating.
Pojmenování Faktur a Stavy
Soubor: src/backend/Hooks/Common/SetInvoiceName.php
Spouštěč: beforeSave (před uložením)
Entity: Všechny dokumenty typu Faktura
- Automatické pojmenování: Pokud je pole
nameprázdné, vygeneruje se na základě číselné řady. - Datum Zaplacení: Pokud se
statuszmění naPaid(Zaplaceno), automaticky se nastavídatePaidna aktuální čas (pokud je prázdné). - Variabilní Symbol: Zajišťuje nastavení Variabilního symbolu (obvykle odpovídá číslu faktury) pro párování plateb.
Správa DUZP (Datum Uskutečnění Zdanitelného Plnění)
Soubor: src/backend/Hooks/Common/ManageDuzp.php
Spouštěč: afterSave (po uložení)
Entity: Faktura, Dobropis
- Výchozí hodnota: Pokud je
duzpprázdné, nastaví se nadateInvoiced(datum vystavení). - Validace: Kontroluje, zda je
duzpplatné vzhledem k datu faktury (např. v určitých režimech DPH nesmí být starší než 14 dní).
Specifické Hooky
Pokladní Transakce
Soubor: src/backend/Hooks/CashTransaction/ProcessTransactions.php
Spouštěč: beforeSave (před uložením)
Entity: CashTransaction
- Výpočet Daně: Vypočítá
amountWithTaxzamountWithoutTax(nebo naopak) na základě zvolené Daňové třídy. - Aktualizace Zůstatku: Spustí přepočet zůstatku nadřazené
CashRegister(Pokladny). - Řada: Vygeneruje sekvenční číslo účtenky.
Odpočet Zálohy
Soubor: src/backend/Hooks/AdvanceDeductionItem/OnRemove.php
Spouštěč: beforeRemove (před odstraněním)
Entity: AdvanceDeductionItem
- Odpojení: Při odstranění odpočtu z konečné faktury tento hook zajistí čisté zrušení vazby na původní Zálohovou fakturu a aktualizuje její "Použitou částku".
Převod Objednávek (Order Transfer)
Soubor: src/backend/Hooks/OrderTransfer/Process.php
Spouštěč: afterSave (po uložení)
Entity: OrderTransfer
- Exekuce: Detekuje vytvoření požadavku na převod (např. Nabídka -> Faktura) a okamžitě spustí logiku převodu, pokud je stav
Processing.