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ábla | Szerep | Kapcsolat |
|---|---|---|
compensation | fej: sorszám, client, partner, dátum, státusz | tükör: azonos sorszám a partner-client oldalán |
compensation_item | beszámított számla és összeg, oldal | invoice |
doc, doc_link | jegyzőkönyv-PDF | előbb a kompenzáláshoz, utána a számlákhoz kötve |
Mentés (save)
- 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. - 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. - 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). - Jegyzőkönyv-PDF (
pdftemplatecompensation_protocol, a bizonylat nyelvén), iktatásDlbtdocstore::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. - 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:protocolvé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). Azindex()nem ellenőriz jogot (a menücanSee(list)); a form megnyitása jogot nem zár ki, csak olvasható módba vált. Asearchinvoicesaddvagyeditjogot kér. - 3. réteg:
getAllowedCompanyIds; a törölt sorok csakcanSeeDeletedmellett látszanak.