Přeskočit na hlavní obsah

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:

  1. Zkontroluje, zda se změnila specifická pole (položky, sleva, měna, náklady na dopravu).
  2. Pokud došlo ke změně, vyvolá službu Calculation\Service.
  3. Aktualizuje grandTotal (celkový součet), totalAmount (částka), taxAmount (daň) atd.
  4. 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 name prázdné, vygeneruje se na základě číselné řady.
  • Datum Zaplacení: Pokud se status změní na Paid (Zaplaceno), automaticky se nastaví datePaid na 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 duzp prázdné, nastaví se na dateInvoiced (datum vystavení).
  • Validace: Kontroluje, zda je duzp platné 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á amountWithTax z amountWithoutTax (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.