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áblaSzerep
invoice, invoice_itemfej és tételek (a Dlbtinvoice::add() írja)
invoice_retentionvisszatartási sorok (saveRetentions())
számlatömb-tábláka masterdata/invoice_block modellen át, sorszám-zárolással
allocation, label_linkanalitika és címkék (módosításnál)

Létrehozás folyamata

  1. Jog: canSave(route, 0) — ha az add kulcs nincs a funkció-törzsben, az edit dönt; a tulajdonos (company_client_id) a hatókörben (ownerInScope).
  2. Kvóta: dlbtquota->checkAction(user, route, 'add', 1); need_credit / need_plan állapotnál hiba (error_quota_*).
  3. 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.
  4. 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.
  5. addInvoice($post), majd visszaolvasás (getInvoice); ha nincs meg: error_not_created, a sorszám nem használódik el.
  6. commitSeriesSeq, számlafajta beállítása (applyKind()), kvóta-fogyasztás (consumeAction()), visszatartások mentése, napló.
  7. 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: add vagy edit.
  • 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égi invoice_document kapcsolat bontása; jog: edit + hatókör.
  • A PDF-mezők (sablon, záradék, megjegyzés) a pdf joghoz 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 és invoiceInScope.
Kapcsolódó témák: számla jogosultság kintlévőség