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).
- Spouštěč: Běží úloha
ProcessRecurringRecords(typicky každou minutu nebo hodinu). - Výběr: Dotazuje se na entity
RecordRecurrence, kdestatus = 'Active'a Cron výraz odpovídá "teď". - Generování:
- Přečte JSON blob
data. - Instancuje cílovou službu (např. službu
Task). - Zavolá
createEntitys uloženými daty.
- Přečte JSON blob
- Logování: Propojí nově vytvořený záznam s rodičem
RecordRecurrencepřes odkazcreatedRecords.
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.
- Producent: Kód vloží úlohu do fronty:
$this->entityManager->createEntity('WorkQueue', [
'serviceName' => 'MyHeavyService',
'methodName' => 'processData',
'data' => ['id' => 123]
]); - Konzument: Dedikovaný démon (nebo cron job) vyzvedává položky ve stavu
Pending(Čekající). - Provedení: Dynamicky vyvolá
$service->$method($data). - 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í.