Címke rendszer – Rendszerleírás
A címke-rendszer teljes működése: adatmodell (label, label_description, label_link, label_rule, label_action), a handler (Type action) értékek, a connector-párosítás (value_norm), a jelenlegi/tervezett actionök, a továbbszámlázás integráció, jogosultságok és a dlbtlabel motor.
dlbtlabel rendszer-könyvtár.1. Adatmodell (táblák és kapcsolatok)
| Tábla | Szerep | Fő mezők |
|---|---|---|
doliBIT_label | címke-fej (törzs) | label_id, group_key, code, color, icon, value_type, ref_object_type, is_multi, handler, status |
doliBIT_label_description | nyelvfüggő név | label_id, language_id, name |
doliBIT_label_link | címke ↔ objektum kötés | link_id, label_id, object_type, object_id, value_text/int/date, value_norm, source (manual/rule/import), action_state (none/pending/done/error) |
doliBIT_label_rule | automatikus címkézési szabály | rule_id, label_id, feltételek |
doliBIT_label_action | címkéhez rendelt akció-definíció | action_id, label_id, action_type (kontir/email/generate_voucher/status_set/webhook), params_json, run_mode (sync/queue) |
Kapcsolat: label 1—N label_description (nyelvenként), 1—N label_link (előfordulások az objektumokon), 1—N label_rule és 1—N label_action. A label_link.value_norm a normalizált érték, ez a párosítás (connector) kulcsa.
2. Handler (Type action) értékek
A doliBIT_label.handler (a form "Type action" mezője, VARCHAR(32)) dönti el, mit tesz a rendszer a címkéből képzett/kapott linkkel:
| handler | Viselkedés | Állapot |
|---|---|---|
| '' (default) / note | egyszerű jelölő | kiépítve |
| connector | összekötő címke (chip + idővonal); value_norm alapján párosít | kiépítve |
| ignore | nem hoz létre linket / figyelmen kívül hagy | kiépítve |
| parse_address / parse_bank / parse_vehicle / parse_period | a NAV additional értéket strukturált adattá alakítja | kiépítve |
| passthrough | továbbszámlázás-trigger: a connector-párosítás után a bérleti szerződés szerint kimenő számlát készít | kiépítve (jelen fejlesztés) |
3. Connector mechanizmus
A címke felkerülésekor a link value_norm mezőjébe a normalizált érték kerül (dlbtlabel::normalizeValue: text/int/ref/date szerint). A getConnectorLinks(label_id, value_norm) az azonos normalizált értékű linkeket adja vissza több objektum-típuson át – így egy számla és egy ingatlan "összeér", ha ugyanaz a value_norm szerepel mindkettőnél.
4. Címke felkerülése: automatikus és kézi
- Automatikus: a NAV számla-feldolgozás az additional adatokat a
dlbtlabel::ingestAdditional/classifyAdditionalrévén címke-linkekké alakítja (a handler szerint). - Kézi: a számla-lista
invoice.addLabelvégpontja adlbtlabel::addLink(label_id, 'invoice', invoice_id, value, value_type, 'manual')hívással tesz fel címkét (egy vagy több számlára). Idempotens: azonos (címke, objektum, value_norm) nem duplikálódik.
5. Jelenlegi és tervezett actionök
Kiépített (a handler-lánc által): note/connector/ignore/parse_*/passthrough. A doliBIT_label_action tábla (kontir/email/generate_voucher/status_set/webhook) a gazdagabb akció-réteg sémája, amelynek közös dispatch-e (a link action_state='pending' → futtató) még nincs bekötve – a jövőben minden action egy közös futtatón haladhat, a passthrough ugyanezzel a logikával.
6. Továbbszámlázás integráció
A funkció a címkében van paraméterezve (handler=passthrough), a bérlő/felár/draft-live a szerződésen. Lánc:
| Elem | Szerep |
|---|---|
| Címke (handler=passthrough) | a továbbszámlázás triggere |
| doliBIT_property.label_id + match_value | az ingatlan connector-címkéje és azonosító értéke |
| doliBIT_contract.passthrough_enabled / passthrough_mode / passthrough_markup / property_id | a bérlemény: bérlő, draft/éles, felár |
| doliBIT_contract_passthrough | dedup/munkalista (egy költségszámla egyszer) |
| cron: contract_passthrough_scan → contract_passthrough | scanner (párosít + sorba tesz) és processzor (draft kimenő számla) |
A scanner csak akkor indít a connector-címke alapján, ha a címke handler='passthrough' (a lease-lekérdezés JOIN-olja a doliBIT_label-t). A processzor a catalog számla-modellel készít számlát (a cron-kontextusban az admin modell nem tölthető), és a NAV-osához hasonlóan lépésenként naplóz.
7. Jogosultságok
A címke-törzs a extension/dolibit/masterdata/label route funkciójogaihoz kötött (list/edit/delete). A számlához rendelés a számla-modul navdata funkciójogát igényli, és a tartalmi hatókört (invoiceInScope) is ellenőrzi. A rendszergazda mindent lát.
8. Motor és függőségek
A központi könyvtár a system/library/dlbtlabel (Dlbtlabel): normalizeValue, ensureLabel, addLink, ingestAdditional, classifyAdditional, getConnectorLinks, getLinksForInvoice. Függőségek: NAV számla-feldolgozás (additional → linkek), számla-modul (kézi címkézés + továbbszámlázott számla létrehozása), szerződés/ingatlan törzs (passthrough), cron-queue (aszinkron futtatás).