NAV data exchange on invoices — endpoints and background job

How the NAV query, the asynchronous invoice kind refresh job, the line additional data and manual labelling work.

Seven endpoints sit under the navdata function right (SUBSCRIPTION): NAV download, invoice kind refresh, line additional data and manual labelling. Each checks the content scope per invoice (invoiceInScope).

Line additional data (lineadditional, lineadditionalsave)

Manual viewing and saving of NAV additionalLineData and productCodes for an invoice or a line through masterdata/analytic::saveLineAdditionalData; the NAV line is not touched.

Manual labelling (labelsearch, addLabel, removeLabel)

Assignment: dlbtlabel->addLink, source manual. On removal the pass-through rows of the label are deleted; the target invoice only while it is a draft (contract/passthrough::invoiceIsDraft, deleteInvoice).

Data model

Table names carry the installation's own prefix in the database: invoice_ctrl, invoice, invoice_item, analytics tables (masterdata/analytic), label_link, pass-through tables (contract/passthrough), cron_queue.

Permissions and prerequisites

  • Layer 2: canAction(navdata) on every endpoint; the key is classified SUBSCRIPTION.
  • Layer 3: invoiceInScope per invoice.
  • Prerequisite: a NAV technical user at the owner company, the navosa library. Error keys: error_nav_*, error_navref_queue.