Kompenzálás — adatmodell, mentés, tükör, jegyzőkönyv

A kompenzálás tételeinek ellenőrzése, a sorszámozás, a tükör-kompenzálás, a jegyzőkönyv-PDF iktatása, a kétféle törlés és a jogok.

A finance/compensation modul vevő- és szállítói számlák beszámítását rögzíti. Kiegyenlítő tranzakció nem készül (transaction_id = 0); a számlák egyenlegét a transaction::recalcInvoiceOutstanding() számolja újra.

Adatmodell

A táblanevek a telepítés saját előtagjával állnak az adatbázisban.

TáblaSzerepKapcsolat
compensationfej: sorszám, client, partner, dátum, státusztükör: azonos sorszám a partner-client oldalán
compensation_itembeszámított számla és összeg, oldalinvoice
doc, doc_linkjegyzőkönyv-PDFelőbb a kompenzáláshoz, utána a számlákhoz kötve

Mentés (save)

  1. Jog: canSave(route, id) (0 = add, >0 = edit); a client (módosításnál a meglévő és az új is) a hatókörben.
  2. Tételek (prepareItems) a hatókörre szűkített nyitott számlákból (searchOpenInvoices): egy számla csak egyszer, léteznie kell, a clienthez tartozzon, legyen nyitott, az összeg legfeljebb a nyitott; kell követelés- és tartozás-oldal, a két oldal összege egyezzen.
  3. Sorszám KOMP-<év>-<4 jegy> (tükörnél az eredetié), mentés, a számlák kintlévőségének újraszámolása, tükör (syncMirror).
  4. Jegyzőkönyv-PDF (pdftemplate compensation_protocol, a bizonylat nyelvén), iktatás Dlbtdocstore::fileDocument-tel a client „document” → „invoice” szabálya szerint, linkek, átnevezés a saját sorszámra. A jegyzőkönyv hiánya figyelmeztetés, nem hiba.
  5. Módosításnál updateCompensation(): tételek, egyenlegek, tükör frissítése, a jegyzőkönyv újragenerálása. Kézi újragenerálás: protocol végpont (canAction(protocol) + hatókör).

Hibák: error_client, error_duplicate_invoice, error_invoice_missing, error_invoice_scope, error_invoice_settled, error_amount_over, error_no_items, error_one_sided, error_sides_differ, error_mirror_invoice, error_no_storage, error_protocol.

Törlés

Egyetlen gomb, a jog dönti el a módot: delete joggal fizikai törlés (fej és tételek), majd a számlák egyenlegének újraszámolása — a tükör-kompenzálás és a dokumentum megmarad; csak statusdelete joggal status = 9, majd újraszámolás (a beszámítás ezzel kiesik). Hibák: error_no_selection, error_not_found.

Jogosultság

  • 2. réteg: list, add, edit, protocol, delete, statusdelete, debug — egyik sincs besorolva a seedekben (compensation_v1.sql). Az index() nem ellenőriz jogot (a menü canSee(list)); a form megnyitása jogot nem zár ki, csak olvasható módba vált. A searchinvoices add vagy edit jogot kér.
  • 3. réteg: getAllowedCompanyIds; a törölt sorok csak canSeeDeleted mellett látszanak.
Kapcsolódó témák: kompenzálás kintlévőség jogosultság