Přeskočit na hlavní obsah

Technická reference: Business Logic

Architektura: Vzor 'Tools'

Na rozdíl od standardních modulů AutoERP, které silně spoléhají na adresář Services/, apertia/autocrm seskupuje doménovou logiku do Nástrojů (Tools). Umístěné v src/backend/Tools/, každý nástroj je samostatný balíček logiky.

Klíčové nástroje

  • Tools/Ares: Zajišťuje připojení k českému obchodnímu rejstříku. Obsahuje API klienta a logiku parsování XML odpovědí.
  • Tools/MicrosoftGraph: Spravuje životní cyklus předplatných. Zpracovává callbacky "Notification URL" z Azure.
  • Tools/Xml: Univerzální engine pro transformaci entit AutoERP do XML formátů.
  • Tools/RecordList: Sdílené helpery pro seznamy a sady sloupců, využívají je navazující moduly.
  • Tools/FieldManager & Tools/Layout: Rozšíření definic polí a layoutů (vč. link-multiple helperů, inline editů) nad rámec jádra CRM.
  • Tools/DynamicLogic & Tools/GlobalSearch: Společná logika pro UI pravidla a fulltext vyhledávání.
  • Tools/Alert, Tools/Activities, Tools/Stream: Utility pro serverová upozornění a zpracování aktivit/streamu.
  • Tools/CustomIcon, Tools/UserKanban: Ukládají vlastní ikony entit a uživatelské pořadí Kanbanu.
  • Tools/Email & Tools/EmailFolder: Rozšíření Email entity a folder helpery pro filtry a server-side zpracování.
  • Tools/Finstat, Tools/ZiveFirmy, Tools/Vies: Další registry/ověřování vedle ARES.
  • Tools/NavbarAction: Vkládá kontextové akce v navbaru (např. rychlé úpravy) navázané na aktuální záznam/entitu.

Engine opakování (Recurrence Engine)

Systém RecordRecurrence je řízen plánovanou úlohou (Cron).

  1. Spouštěč: Běží úloha ProcessRecurringRecords (typicky každou minutu nebo hodinu).
  2. Výběr: Dotazuje se na entity RecordRecurrence, kde status = 'Active' a Cron výraz odpovídá "teď".
  3. Generování:
    • Přečte JSON blob data.
    • Instancuje cílovou službu (např. službu Task).
    • Zavolá createEntity s uloženými daty.
  4. Logování: Propojí nově vytvořený záznam s rodičem RecordRecurrence přes odkaz createdRecords.

Systém pracovních front (Work Queue)

Pro náročné úlohy (jako hromadné odesílání e-mailů nebo komplexní zpracování dat) modul využívá WorkQueue.

  1. Producent: Kód vloží úlohu do fronty:
    $this->entityManager->createEntity('WorkQueue', [
    'serviceName' => 'MyHeavyService',
    'methodName' => 'processData',
    'data' => ['id' => 123]
    ]);
  2. Konzument: Dedikovaný démon (nebo cron job) vyzvedává položky ve stavu Pending (Čekající).
  3. Provedení: Dynamicky vyvolá $service->$method($data).
  4. Odolnost: Pokud úloha spadne, označí se jako Failed (Selhalo) s chybovou zprávou, čímž zabrání zaseknutí celého procesu.

Přehled klíčových entit

  • RecordRecurrence: Cron-based generátor libovolných entit.
  • WorkQueue: Čekající async úlohy (service + method + payload).
  • XmlTemplate / XmlFeed / XmlFeedReplaceEntry: Pipeline pro generování XML (šablona, feed, nahrazování hodnot).
  • RecordTemplate: Uložené payloady pro klonování složitých záznamů.
  • Alert: Serverem řízená upozornění pro uživatele.
  • CustomIcon / UserKanbanOrder: Personalizace UI (ikony, pořadí kanbanu).
  • MicrosoftGraphSubscription: Předplatná na notifikace změn z Graphu.
  • CurrencyRateHistoryRecord: Zachycené historické kurzy měn.
  • HumanResource: Profil zaměstnance propojený s uživateli.
  • Email / EmailFilter / EmailFolder: Rozšířený model emailu a filtrace/folder utility.
  • NavbarAction: Konfigurovatelné akce navázané na pohledy.

Přesahy a hooky

  • Hooky: Registry (ARES/Finstat/VIES/ŽivéFirmy) obohacují Account/Contact při vytvoření/aktualizaci, je-li povoleno.
  • Layout/Field procesory: Rozšiřují inline edit, render sloupců a chování link-multiple bez zásahu do navazujících modulů.
  • Search/Logic helpers: Dynamic logic a global search pomocníci jsou sdíleni moduly Výroba/Sklad/Účetnictví pro jednotné chování.