Számla mentése — folyamat és szabályok
A számla létrehozásának és módosításának lépései: kvóta, validáció, duplikátum-szűrés, számlatömb-zárolás, közös beszúró út, visszaolvasás és jogosultság.
A számla mentése egyetlen végponton (finance/invoice.save) fut; az invoice_id dönti el, hogy létrehozás vagy módosítás történik. Minden beszúrás a közös addInvoice() úton megy.
Adatmodell
A táblanevek a telepítés saját előtagjával állnak az adatbázisban.
| Tábla | Szerep |
|---|---|
invoice, invoice_item | fej és tételek (a Dlbtinvoice::add() írja) |
invoice_retention | visszatartási sorok (saveRetentions()) |
| számlatömb-táblák | a masterdata/invoice_block modellen át, sorszám-zárolással |
allocation, label_link | analitika és címkék (módosításnál) |
Létrehozás folyamata
- Jog:
canSave(route, 0)— ha azaddkulcs nincs a funkció-törzsben, azeditdönt; a tulajdonos (company_client_id) a hatókörben (ownerInScope). - Kvóta:
dlbtquota->checkAction(user, route, 'add', 1);need_credit/need_planállapotnál hiba (error_quota_*). - Mezővalidáció, duplikátum-keresés (
findDuplicateInvoice; kukában lévő duplikátumra külön üzenet), sztornó/helyesbítő esetén a hivatkozott számla kötelező és léteznie kell, beszámítás-ellenőrzés (checkOffsetInvoice), visszatartás-összeg korlát. - Saját sorszámozású kimenő számlánál a számlatömb zárolása (
lockSeries), sorszám-képzés, dátum-sorrend ellenőrzés. addInvoice($post), majd visszaolvasás (getInvoice); ha nincs meg:error_not_created, a sorszám nem használódik el.commitSeriesSeq, számlafajta beállítása (applyKind()), kvóta-fogyasztás (consumeAction()), visszatartások mentése, napló.- A válasz az új
invoice_id-t adja; átirányítás nincs.
Módosítás
Ugyanaz a validáció; ha a számla sorszámozott/véglegesített (getSeriesLock()['numbered']), error_invoice_finalized. Egyébként editInvoice($id, $post): a fej és a tételek teljes cseréje, a tétel-újraszámítás a libraryben, applyKind(), visszatartások, napló. A form megnyitása is canSave és ownerInScope ellenőrzéssel jár: más cég számlája nem nyitható meg.
Hibakulcsok
error_supplier, error_customer_required, error_currency, error_date, error_invoice_no_form, error_number_in_own_series, error_duplicate, error_duplicate_trashed, error_offset_*, error_retention_over, error_reference_*, error_number_client, error_number_busy, error_number_block, error_series_prefix_taken, error_number_date_order, error_quota_*.
Form-segédek
getDueDate,getTaxData,getRate— fizetési határidő, ÁFA-kulcs, MNB-árfolyam; jog:addvagyedit.offsetinvoices— beszámítható kimenő számlák; jog:edit+ tulajdonos-hatókör.docsearch,attachdocument,detachdocument,unlinkdocument— doc-center dokumentum keresése, számlához kötése és leválasztása, a régiinvoice_documentkapcsolat bontása; jog:edit+ hatókör.- A PDF-mezők (sablon, záradék, megjegyzés) a
pdfjoghoz kötöttek.
Jogosultság
- 1. réteg: alap hozzáférés és módosítási jog a számla útvonalon.
- 2. réteg:
add(a funkció-törzsben nincs besorolva, csak a függőség-táblákban szerepel),edit(BASE). - 3. réteg:
ownerInScopeésinvoiceInScope.