Skip to content

Consignment Billing Applet (Internal)

The purchase invoice you owe a consignor once consignment stock has sold: it turns the consignment liability the Consignment GRN recorded into a real amount owed to a supplier, and the consignment stock into a purchase. It moves no stock and touches no customer, sale or output tax. The journal runs after FINAL, and the two consignment accounts come only from the company’s default GL codes — if either is unmapped the document stays FINAL with no journal, and Trace Document is where you find and resolve it.

Overview

The Consignment Billing Applet (Internal) raises the purchase invoice you owe the consignor once consignment stock has been sold. Consignment stock arrives on a Consignment GRN: it sits in your location but the consignor still owns it, recorded as consignment stock against a consignment liability. When it sells, ownership passes to you and the consignor bills you. This applet is where that bill is entered — it turns the consignment liability into a real amount owed to a supplier and turns the consignment stock into a purchase.

Server document type INTERNAL_PURCHASE_CONSIGNMENT_INVOICE, short code CSGINV. The counterparty is a supplier (the applet’s own entity picker is titled Select Supplier), the internal route is internal-purchase-invoice, and the file-import screen posts to the internal purchase invoice import endpoint. It is a purchase-side document in every respect.

This document moves no stock, and it does not create a sale, revenue or a receivable. Its quantity signum is forced to 0 by the backend and its amount signum is −1 — the purchase direction. The journal it posts debits purchase and input-tax accounts, credits the supplier, and then debits Consignment Liability against a credit to Consignment Stock. Nothing is posted to a debtor, to sales, or to output tax, and no inventory transaction line is written. See Lifecycle and effects.

Where it fits

DocumentWhat it does
UpstreamConsignment GRN (Internal)Brings the consignor’s stock into your location (quantity +1) and records Consignment Stock / Consignment Liability. Its open lines are what this applet knocks off.
Upstream (optional, per line)Purchase Order, Purchase Requisition, Purchase GRN, Delivery Order (Internal)Line-level knock-off tabs, each shown only when the company has enabled that document flow.
This appletConsignment Billing (Internal)The consignor’s invoice. Converts consignment liability into a payable and consignment stock into a purchase. No stock movement.
SiblingConsignor Purchase Billing (Internal)The period record of what you owe a consignor. It writes its own billing tables and posts no journal at all — a different artefact from this one.
DownstreamPurchase Return (Internal)A consignment billing document that has been linked to a purchase return can no longer be voided.
Reverse directionConsignment Return (Internal)Sends unsold consignment stock back to the consignor instead of buying it.
This is not the document that bills a customer. If you place your stock at someone else’s location and want to invoice them for what they consumed, that is the sales side — see Customer Consignment and Sales Invoice (Internal).

Screens and menus

The left menu has three entries and no others:

Menu itemRouteWhat it shows
Consignment Billinginternal-purchase-invoiceThe listing, plus the create and edit panels
Line Itemsline-itemsA cross-document listing of billing lines, with its own edit panel
File Importfile-importCSV upload of billing data, and the listing of past import batches
Internal Consignment Billing listing on the left with the Create panel open on the Main Details tab
The listing (left) with the FINAL, DISCARD, VOID and SINGLE/MULTIPLE PRINT buttons above the grid, and the create panel (right) on Main Details. Branch and Location are required and show their validation messages until filled.

Listing

One grid with 25 columns: Doc Short Code, Doc No, Doc No (Company), Doc No (Branch), Reference, Posting Status, Status, Branch Code, Currency, Supplier Name, Purchaser, Amount Txn, the five ARAP columns (PNS, Settlement, Doc Open, Contra, Balance), Created Date, Transaction Date, Client Doc Short Code and Client Doc 1–5. Above the grid: FINAL, DISCARD, VOID and SINGLE/MULTIPLE PRINT — the print button is disabled until a default printable format is set. Rows are multi-select; the buttons act on the selection.

Create

Seven tabs. Main Details, Account (Entity Details, Bill To and Ship To, with the picker titled Select Supplier) and Line Items are always there — see Fields. CREATE stays greyed out, with no message saying why, until Branch and Location are filled on Main Details, a supplier is chosen on Account and at least one line exists; if you cannot see what is missing, check those four. The other four tabs each disappear when a setting is on:

TabShown whenContents
Delivery DetailsHIDE_DELIVERY_DETAILS_TAB offDelivery branch, location, permit and tracking references
PaymentHIDE_MAIN_PAYMENT_TAB offSettlement lines captured at the point of billing
KO ForHIDE_KO_FOR_TAB offA single sub-tab, Consignment Purchase GRN
Department HdrHIDE_DEPARTMENT_HDR_TAB offDimension, profit centre, project and segment for the header
Account tab with Entity Details, Bill To and Ship To sub-tabs, and the Select Supplier picker open on the right
The Account tab. The picker is titled Select Supplier and lists supplier entities — the counterparty on a consignment billing document is the consignor, not a customer.

KO For → Consignment Purchase GRN is the intended way to build the document. The grid lists consignment GRN lines still waiting to be billed — read from the line open queue where server_doc_type_1 = INTERNAL_PURCHASE_CONSIGNMENT_GRN and server_doc_type_2 = INTERNAL_PURCHASE_CONSIGNMENT_INVOICE. Selecting rows and pressing KNOCK OFF copies the GRN header onto the draft and creates one billing line per GRN line, each with a document link back to the GRN. All rows picked in one document must share the same supplier and the same branch.

KO For tab showing the Consignment Purchase GRN grid with KNOCK OFF and DELETE buttons
KO For → Consignment Purchase GRN. Short code CSGGRN identifies the source documents; the column is headed Supplier.

Edit

The edit panel adds six tabs to the create set and drops KO For (knock-off from that point on is per line): ARAP, Posting, TraceDocument, Contra, Doc Link and Attachment. Its buttons are RESET, FINAL, DISCARD, VOID and SAVE, each shown according to the document’s status and the settings in Document behaviour.

Line Items tab with a line selected and the Edit Item panel open on Item Details
Editing a line. The Edit Item panel carries Item Details (with Main Details, Department, Doc Link and Delivery Details sub-tabs) and the Issue Link tab.

Line editing has its own tab set: Item Details, a sub-item tab (Serial Number, Batch Number or Bin Number, depending on the item), Costing Details when HIDE_COSTING_DETAILS is off, Issue Link, and a pair of KO By / KO For tabs for each of Purchase GRN, Purchase Order, Purchase Requisition and Supplier Delivery Order — each pair rendered only when the company has enabled that document flow into INTERNAL_PURCHASE_CONSIGNMENT_INVOICE.

The Issue Link tab is a mock and shows fixed sample data. It shows the same one sample row (project “Test”, an issue number and an assignee) on every line of every document, and is connected to nothing. It has nothing to do with Goods Issue Notes — the columns are Project, Issue Number, Issue Summary, Issue Description, Assignee, Created Date, Resolved Date and Status.

File Import

Upload a .csv with a comma or pipe delimiter and press SUBMIT. Sample Format downloads a template. The screen is the internal purchase invoice importer, and the downloaded template is named Sales_Invoice_Master_Data_Template.csv regardless of the delimiter chosen.

File Import upload screen with the delimiter selector and the drag-and-drop area
File Import. Choose the delimiter first — it decides which sample template you get.

Past batches and their per-row results are on the File Import listing.

File import detail view listing the rows of an uploaded batch
Import detail: the rows of one uploaded batch and their outcome.

Configuration

Before you can use it

WhatWhereWhy
Branch and locationOrganisationBoth are Validators.required on the create form; the document cannot be created without them
Document numbering for CSGINVOrganisationSupplies Doc No (Tenant / Company / Branch)
Supplier entity with an AR/AP typeSupplierThe journal’s entity line is resolved from the entity’s AR/AP setting
Default GL codes for CONSIGNMENT_LIABILITY and CONSIGNMENT_STOCKChart of AccountsBoth are looked up as company default GL codes and the journal job throws MISSING_DEFAULT_GL_CODE if either is absent. FINAL is not stopped: the job is enqueued after the status change, so the document stays FINAL with no journal until the code is mapped and the job re-run from Financial Report › Error Checking › Trace Document
Default GL code for the creditor mapping (CREDITOR, or whatever the entity’s AR/AP type resolves to)Chart of AccountsThe journal job also throws MISSING_DEFAULT_GL_CODE when this is unmapped; same mechanism — FINAL succeeds, the journal is missing
Purchase and input-tax GL codesChart of AccountsResolvable per line, per header, per item-company link or as a company default; an unresolvable line is dropped after FINAL. If the principal has an AR/AP type the creditor line absorbs it and the journal posts wrong with no error; if not, the journal job fails with TOTAL_DEBITS_AND_TOTAL_CREDITS_NOT_BALANCES (see Troubleshooting)
Tax codesTax ConfigurationLine tax; the tax-code selector is hidden by HIDE_TAX_CONFIG_SELECTION
Knock-off configuration: INTERNAL_PURCHASE_CONSIGNMENT_GRN → INTERNAL_PURCHASE_CONSIGNMENT_INVOICE, enabledOrganisation → Company → Knock Off ConfigurationWithout an enabled flow row the GRN’s finalised lines never enter the open queue and the KO For grid stays empty
A default printable formatSettings → Printable Format SettingsSINGLE/MULTIPLE PRINT is disabled and the after-FINAL pop-up fails without it

Applet settings

Settings live on the shared settings screen (the field-settings route). Any tenant administrator with access to the applet’s Settings menu can change these; there is no per-row authority difference.

The settings menu has exactly three entries: Application Settings (the shared screen), Default Selection, and Printable Format Settings. A Knock Off Settings screen exists as a route and a component but its menu entry is commented out, so it is unreachable. The Personalization menu has one entry, Default Selection.

The applet’s settings model declares 103 keys. Of those, 52 pass all four proofs — declared, rendered on the shared screen for applet code internalConsignmentBillingApplet, persisted by the settings service, and read by this applet’s own code. Grouped by what they do:

GroupKeysWhat they control
Document buttonsHIDE_GENDOC_FINAL_BUTTON, HIDE_GENDOC_VOID_BUTTON, HIDE_GENDOC_DISCARD_BUTTONHide FINAL / VOID / DISCARD on both the listing and the edit form
ListingDISABLE_GEN_DOC_LISTING, SORT_ORDER, HIDE_SERVER_DOC_1, HIDE_SERVER_DOC_2, HIDE_SERVER_DOC_3Suppress the listing entirely; the column the grid is ordered by (the last-updated date when unset); hide the three document-number columns
Header fieldsCANNOT_EDIT_CURRENCY_RATE, HIDE_CLIENT_DOC_TYPE, HIDE_CLIENT_DOC_1…HIDE_CLIENT_DOC_5, HIDE_PERMIT_NO, HIDE_TRACKING_IDLock the currency rate; hide the client-document reference fields, permit number and tracking id
TabsHIDE_ATTACHMENT_TAB, HIDE_EXPORT_TAB, HIDE_MAIN_CONTRA_TABHide those three tabs on the edit form
ARAP columnsHIDE_ARAP_PNS, HIDE_ARAP_SETTLEMENT, HIDE_ARAP_DOC_OPEN, HIDE_ARAP_CONTRA, HIDE_ARAP_BALHide the five ARAP columns on the listing
Line grid and item formHIDE_QTY_BASE, HIDE_QTY_UOM, HIDE_UOM_TO_BASE_RATIO, HIDE_AMOUNT_TXN, HIDE_AMOUNT_NET_EXCL_TAX, HIDE_AMOUNT_STD_EXCL_TAX, HIDE_DISCOUNT_AMOUNT_EXCL_TAX, HIDE_UNIT_DISCOUNT, HIDE_UNIT_DISCOUNT_UOM_EXCL_TAX, and the eight HIDE_UNIT_PRICE_* keysHide individual quantity, price, discount and amount columns and fields
Line extrasHIDE_COSTING_DETAILS, HIDE_LAST_PURCHASE_PRICE, HIDE_LOCATION, HIDE_DELIVERY_BRANCH, HIDE_DELIVERY_LOCATION, HIDE_TAX_CONFIG_SELECTION, HIDE_WHT_CONFIG_SELECTION, HIDE_UNIT_PRICE_STD_PRICING_SCHEMEHide the Costing Details tab, the last-purchase-price hint, the location and delivery selectors, the tax and withholding-tax selectors and the pricing-scheme picker
Serial numbersENABLE_DRAFT_LOCK_SERIAL_NUMBER_CHECKINGChecks, while a line is being saved, whether another draft already holds the serial number. (Strictly it fails the first proof — the applet’s own model does not declare it — but the shared screen renders it for every applet and this applet sends it to the server, so it behaves as the others in this table)
After FINALENABLE_AUTO_POPUPOpens the printable PDF automatically after a successful FINAL; without a default printable it shows No Default Printable Selected instead

Each HIDE_* key is paired in code with a SHOW_* client-side permission — the control is hidden only when the setting is on and the permission is absent. For this applet that per-role escape hatch does not exist: see Feature visibility and permissions.

Keys read at runtime with no control on the shared screen. Nineteen keys are read by the applet but have nowhere to be set from the Application Settings screen for this applet code:

  • Seven tab-hide keys — HIDE_DELIVERY_DETAILS_TAB, HIDE_MAIN_PAYMENT_TAB, HIDE_MAIN_ARAP_TAB, HIDE_POSTING_TAB, HIDE_TRACE_DOCUMENT_TAB, HIDE_DOC_LINK_TAB, HIDE_DEPARTMENT_HDR_TAB — plus HIDE_KO_FOR_TAB. The shared screen does not offer tab toggles for this applet.
  • HIDE_CURRENCY, HIDE_BASE_CURRENCY, ENABLE_MULTIPLE_KO, DEFAULT_COUNTRY, DEFAULT_CUST_TYPE, DEFAULT_CURRENCY. The last three pre-fill a supplier created inline from the document; no screen of this applet writes them (Default Selection writes branch, location and company only), so they are support-set or absent.
  • PRINTABLE, DEFAULT_BRANCH, DEFAULT_LOCATION and DEFAULT_COMPANY, which are set on the other settings screens below rather than on Application Settings.

They keep whatever value the tenant already holds. On a tenant that has never saved Application Settings they are simply absent, so every gated tab renders.

Default Selection (applet-wide) has two controls, Default Branch and Default Location, and writes three keys: DEFAULT_BRANCH, DEFAULT_LOCATION and DEFAULT_COMPANY — the company is derived from the branch you pick, and picking a branch also pre-fills the location from that branch’s MAIN_LOCATION. The branch list is restricted to the branches your TNT_API_DOC_INTERNAL_PURCHASE_CONSIGNMENT_INVOICE_READ_TGT_GUID target allows, unless you are a tenant admin or owner, in which case it is unrestricted. RESET clears all three to null.

Personalization → Default Selection overrides the applet-wide values for one user and adds a third control, Default Item Search Item Type (DEFAULT_ITEM_SEARCH_ITEM_TYPE). It saves, but nothing reads it: the only lines that would apply it to the add-line item search are commented out, so the search returns the same items whatever you pick.

Printable Format Settings manages the printable formats offered to SINGLE/MULTIPLE PRINT and to the after-FINAL pop-up. Printing runs through the INTERNAL_PURCHASE_ORDER_PRINT_SERVICE Jasper service, so the format must be one that service can render.

Document behaviour settings

BehaviourGoverned byEffect
FINAL button visibleHIDE_GENDOC_FINAL_BUTTON off, document ACTIVE, posting status empty or DRAFT, and no line failed serial validationSends { posting_status: 'FINAL' }
DISCARD button visibleHIDE_GENDOC_DISCARD_BUTTON off, document ACTIVE, posting status empty or DRAFTSets the document to DISCARDED
VOID button visibleHIDE_GENDOC_VOID_BUTTON off and posting status FINALSends { posting_status: 'VOID' }
Print after FINALENABLE_AUTO_POPUP on and PRINTABLE setOpens the PDF in a new window
Fields locked after FINALnot configurableOnce posting status is FINAL, or status is anything but ACTIVE, SAVE and the line editors are disabled

There is no approval flow on this document: the applet has no approval tab, no approval settings and no workflow designer, and the shared screen renders no approval controls for this applet code. See document approval for what “approval” means elsewhere in the product.

Settings in other applets that control this applet

SettingWhere it is setEffect here
Knock Off ConfigurationOrganisation → Company → Knock Off ConfigurationDecides whether the KO For grid finds anything, and which of the four per-line KO By / KO For tab pairs render
Default GL codes per transaction codeChart of AccountsEvery GL code the journal resolves; two of them throw when missing
Item consignment and item-type flagsDoc Item MaintenanceWhat the add-line item search returns (DEFAULT_ITEM_SEARCH_ITEM_TYPE is saved but not applied)
Company posting configurationOrganisation → CompanyWhether the journal processor runs for this document type at all

Feature visibility and permissions

The applet checks 43 client-side permission codes — SHOW_GENDOC_FINAL_BUTTON, SHOW_GENDOC_VOID_BUTTON, SHOW_GENDOC_DISCARD_BUTTON, SHOW_DOCUMENT_DELETE_BUTTON, SHOW_TRANSACTION_DATE, SHOW_DOC_NO_TENANT / _COMPANY / _BRANCH, SHOW_INTERCOMPANY_PI_SCREEN and one SHOW_* counterpart for each hideable line and ARAP column.

None of them is defined for this applet, so no role, team or user can be granted any of them and every SHOW_* check comes out false. In practice that means each HIDE_* setting is absolute: switch it on and the control is gone for everyone, with no per-role exception.

Server-side permissions are unaffected. The applet requests TNT_API_DOC_INTERNAL_PURCHASE_CONSIGNMENT_INVOICE_READ_TGT_GUID, …_CREATE_TGT_GUID, …_UPDATE_TGT_GUID, TNT_TENANT_ADMIN and TNT_TENANT_OWNER at start-up; the create button and the SAVE button are disabled without create and update permission respectively, and the branch lists on Default Selection and the KO For grid are filtered by the read permission’s branch targets. A …_DELETE_TGT_GUID definition exists on the backend but the applet never asks for it.

Fields

Main Details

The form also carries External Remarks, and, when their settings allow, Delivery Branch and Delivery Location with an Apply to Lines button that copies them onto every line.

FieldMeaningRequiredNotes
Doc Short Code, Doc No (Tenant) / (Company) / (Branch)CSGINV and the three running numbers—Shown only once the document exists: the create form has none of them, so you learn the number after CREATE. Read-only; each number hidden by its HIDE_SERVER_DOC_n setting and shown per role by SHOW_DOC_NO_* — which cannot be granted, see above
Client Doc Short Code, Client Doc 1–5 NoReference numbers carried by the document—Read-only here and shown only once the document exists, so you cannot type your own reference into them on this form — use Reference. Hidden by HIDE_CLIENT_DOC_TYPE and HIDE_CLIENT_DOC_1…_5
BranchThe branch the document belongs toYesAlso drives the location list, sets the company and fills Currency and Base Currency from the branch’s currency
LocationThe stock locationYesTrap: HIDE_LOCATION hides this box but it stays required. With it hidden and no Default Location set under Default Selection, CREATE stays greyed out and nothing on screen says why
PurchaserThe employee responsible for the billNoLists employees, narrowed to the employee categories held in the applet’s settings, if any. Trap: Credit Terms, Credit Limit and Permit No are stored with the bill only while a Purchaser is chosen; with Purchaser empty they are dropped on save without a message. See the one-unit check below the table
Transaction DateThe document date—Defaults to today and can be changed from the calendar until the document is FINAL
Credit TermsOne of the supplier’s credit terms—The list is empty until a supplier is chosen on Account, then offers that supplier’s terms; a supplier with exactly one is filled in for you. Stored as text on the bill
Credit LimitOne of the supplier’s credit-limit entries—Filled the same way as Credit Terms and stored as text. Nothing in this applet compares the bill with it, so if a consignor’s limit matters, whoever finalises the bill checks the consignor’s outstanding balance against it first
Due DateNot on this form—The input is switched off in the applet, and nothing in the save or FINAL path works one out from Credit Terms, so the bill carries no due date of its own. Whoever schedules supplier payments takes the date from the consignor’s own invoice and its terms, and checks it against the payment run; do not wait for this document to warn you
ReferenceFree text—Becomes the reference number on the journal this bill posts, so it is what you will search for in the ledger. Knock-off from a Consignment GRN copies the GRN’s Reference, Remarks and External Remarks onto the bill: replace the GRN’s reference with the consignor’s invoice number before FINAL. Trap: as read, deleting the text of Reference, Remarks or External Remarks does not clear it — the previous value is kept
RemarksFree text—Becomes the journal’s remarks and the description on its tax, supplier and consignment lines. External Remarks does not reach the journal
Permit NoImport/export permit reference—Hidden by HIDE_PERMIT_NO; stored only while a Purchaser is chosen (see Purchaser)
Base CurrencyThe branch’s currency, for display—Read-only and hidden by HIDE_BASE_CURRENCY. Read, not run: the box is left out of what the form saves, and the applet saves MYR as the base currency whatever it shows. For a company whose currency is MYR that changes nothing. If yours is not, a bill in your own currency is treated as foreign — SAVE refuses it with The currency rate cannot be ZERO. until you enter a rate, and a rate of 1 then gives the right figures
CurrencyThe document currencyMarked *Starts as the branch’s currency. Choosing a supplier resets the rate to 0 and can switch the bill to the currency on the supplier’s record, and a knock-off from a GRN copies the GRN’s currency without its rate — so look at Currency and Currency Rate again after either. Changing Currency by hand fetches a live rate; choosing a supplier does not. Clearing the box keeps the previous currency
Currency RateUnits of the document currency per one unit of base currency (1 MYR = 0.2194 USD, not 4.558)—The live-rate button fetches it that way, the base-currency figure in brackets beside the line totals is the amount ÷ this rate, and at FINAL the base-currency copy that carries the posting divides by it. Locked by CANNOT_EDIT_CURRENCY_RATE and at FINAL. SAVE refuses 0 when the document currency differs from base; CREATE and FINAL do not — see the caution below
Tracking IDLogistics tracking reference—Hidden by HIDE_TRACKING_ID. As read, a saved Tracking ID shows as an empty box when you reopen the bill but is kept; typing a new one replaces it, and it cannot be cleared
A foreign-currency bill with a rate of 0 posts its amounts unconverted. Read, not run: at FINAL a bill whose currency differs from base is copied into base currency by dividing by the rate, and that copy is what posts. With a rate of 0 no copy is made, and the journal carries the document-currency amounts in the ledger’s currency — a USD 1,000 bill from a regional distributor posts as MYR 1,000 instead of about MYR 4,558, with no error. SAVE catches a zero rate; CREATE, FINAL on the edit form and bulk FINAL on the listing do not, and a supplier pick or a GRN knock-off can leave the rate at 0. Whoever finalises a foreign-currency bill opens it first and checks Currency Rate is not 0. Check it with one small bill on a test supplier before relying on this: finalise it with the rate at 0 and compare the journal on Trace Document with the bill’s total. If a bill has already posted unconverted, VOID it and raise it again with the rate filled in.

Check the Purchaser trap with one bill. Leave Purchaser empty, pick a Credit Terms value and type a Permit No, CREATE, then reopen the bill. If both boxes are empty, the trap holds on your tenant: choose a Purchaser, fill them again and SAVE.

Account

Three sub-tabs. Entity Details shows Entity Id (required), Entity Name, Status, Entity Type, Identity Type, ID Number, Currency, Email, Description and Phone Number, all populated from the selected supplier. Bill To and Ship To hold the two addresses.

Line items

A line starts from an item picked in the item search, which fills Item Code (read-only) and the unit of measure.

FieldMeaningRequiredNotes
Item NameCopied from the item—Editable. The line keeps its own copy of the name, so an edit here changes this line only and not the item master
UOMUnit of measure—Comes with the item; picking another unit takes that unit’s ratio to base. Trap: the UOM picker is hidden together with the pricing-scheme picker by HIDE_UNIT_PRICE_STD_PRICING_SCHEME, so hiding the scheme also stops anyone changing the unit — the line keeps the item’s unit
UOM to base ratioConversion factor—Hidden by HIDE_UOM_TO_BASE_RATIO
Pricing SchemePrice list to apply—Hidden by HIDE_UNIT_PRICE_STD_PRICING_SCHEME
Unit Price STD (inclusive of tax) and the other seven unit-price variantsLine pricingYes (at least one)Each hidden by its own HIDE_UNIT_PRICE_* key
Quantity BaseQuantity billedYesHidden by HIDE_QTY_BASE
Unit Discount / Discount AmountLine discounts—Hidden by HIDE_UNIT_DISCOUNT, HIDE_UNIT_DISCOUNT_UOM_EXCL_TAX, HIDE_DISCOUNT_AMOUNT_EXCL_TAX
Tax codeLine tax—Hidden by HIDE_TAX_CONFIG_SELECTION
Withholding taxLine WHT—Hidden by HIDE_WHT_CONFIG_SELECTION
Location / Delivery Branch / Delivery LocationLine-level overrides—Hidden by HIDE_LOCATION, HIDE_DELIVERY_BRANCH, HIDE_DELIVERY_LOCATION
RemarksLine note—Becomes the description of this line’s purchase line in the journal. The header Remarks describes the tax, supplier and consignment lines

The line grid totals Total Txn Amount and Total SST/VAT/GST Amount above it.

Lifecycle and effects

Posting statusMeaningAllowed next
empty / DRAFTSaved and editableFINAL, or DISCARDED
FINALPosted; header and lines lockedVOID
VOIDReversed by the void processors—
DISCARDED (document status)Abandoned draft—

FINAL is sent from the edit form or from the listing’s bulk FINAL as a posting-status update { posting_status: 'FINAL' }. Pressing FINAL on a document that is already FINAL shows This document has been posted. VOID first checks the document’s own links: if any ACTIVE link joins this document to an INTERNAL_PURCHASE_RETURN, the applet refuses with The invoice has already been linked with a purchase return; pressing VOID on a document that is not FINAL shows This document has not been finalized yet. Both are client-side guards.

What posting does:

ItemValue
Document typeINTERNAL_PURCHASE_CONSIGNMENT_INVOICE, short code CSGINV
DirectionMoney owed to the consignor; no stock movement — every line is forced to no stock movement, whatever the screen sends
The journalItem and tax lines debit PURCHASE / INPUT_TAX (discounts → PURCHASE_DISCOUNT, returns → PURCHASE_RETURN). The balancing supplier line credits the supplier’s AR/AP account (CREDITOR by default). Then a second, self-balancing pair: debit CONSIGNMENT_LIABILITY, credit CONSIGNMENT_STOCK, both for the document total. It uses the ordinary purchase journal mapping
Which GL codeLine GL → header GL → the item’s company default → company default, for the purchase and tax lines. CONSIGNMENT_LIABILITY and CONSIGNMENT_STOCK come only from the company default GL codes and each fails with MISSING_DEFAULT_GL_CODE: <code> when unmapped. The creditor mapping fails the same way
StockNone. No inventory transaction line, no balance change
What VOID reversesThe void jobs your tenant has switched on reverse the journal, reopen knocked-off GRN lines and reverse contras; the document is removed from the e-invoice queue and from historical aging. There are no stock lines to reverse

Two consequences worth knowing. First, a Consignment GRN posts credit CONSIGNMENT_LIABILITY / debit CONSIGNMENT_STOCK; this document posts exactly the opposite pair, which is how the consignment holding is cleared as stock is bought. If a company is missing either default GL code, the GRN and the billing document both still go FINAL — the codes are read by the posting that runs afterwards, which fails — naming the code, or with NO_JOURNAL_CREATED on a GRN whose stock lines found no code — and leaves the document FINAL with no journal. Financial Report › Error Checking › Trace Document on that document reports Missing Journal; map the code first, then Resolve it there. Second, because the document total drives that pair, billing a part of a GRN clears only that part of the holding — the rest stays as consignment stock against consignment liability until it is billed or returned.

Related applets

Troubleshooting

SymptomCauseFix
KO For → Consignment Purchase GRN grid is empty although finalised consignment GRNs existThe company has no enabled knock-off flow from INTERNAL_PURCHASE_CONSIGNMENT_GRN to INTERNAL_PURCHASE_CONSIGNMENT_INVOICE, so the GRNs were never opened for billingEnable the flow in Organisation → Company → Knock Off Configuration, then re-finalise or ask support to repair the open lines
KO For grid goes empty as soon as you use its advanced searchThe advanced search looks for ordinary goods-received notes while the grid lists consignment GRNs, so the two never overlapClear the search and filter with the grid’s own column filters instead
The selected document contains a different entity/branch compared to the previous documentA second KO row was picked whose supplier or branch differs from the firstRaise one billing document per supplier and branch
Document is FINAL, Trace Document → Journal Txn is empty, and the journal job shows MISSING_DEFAULT_GL_CODE: CONSIGNMENT_LIABILITY or : CONSIGNMENT_STOCKNeither code falls back to a line or header GL code — both come only from the company default GL codes, and the job fails when either is absent. FINAL has already succeededMap both in Chart of Accounts, then Financial Report › Error Checking › Trace Document → Resolve
Document is FINAL and the journal job shows MISSING_DEFAULT_GL_CODE naming a creditor codeThe supplier’s AR/AP type resolves to a transaction code that has no company default GL codeMap it, or correct the supplier’s AR/AP type, then re-run the job from Trace Document
Document is FINAL and the journal job shows TOTAL_DEBITS_AND_TOTAL_CREDITS_NOT_BALANCESA purchase or tax line could not resolve any GL code (line, header, item-company link and company default all empty) and was silently dropped from the journal, and the principal has no AR/AP type, so no creditor line absorbed itSet the GL code on the line, on the item-company link, or as a company default, then re-run the job from Trace Document
No error, but trade creditors no longer agrees with the creditor ageing, and purchases or input tax are short by the same amountA line resolved no GL code and was left out of the journal; the principal’s line was built from the lines that remained, so it absorbed the amount and the journal posted. The billing is FINAL with a journal, so Trace Document finds nothing, and the principal statement and ageing (built from documents) look right. Before go-live, check every code this billing uses has a company default, or every item its ownSet the GL code on the line, on the item-company link, or as a company default, then repost the affected billings from Trace Document
This document has been posted on pressing FINALThe document is already FINALRefresh the listing
This document has not been finalized yet on pressing VOIDThe posting status is not FINALUse DISCARD for a draft
The invoice has already been linked with a purchase return on pressing VOIDAn ACTIVE document link joins this document to an INTERNAL_PURCHASE_RETURNVoid the purchase return first
The currency rate cannot be ZERO. on SAVEThe document currency differs from the base currency and the rate is 0Enter a rate, or clear CANNOT_EDIT_CURRENCY_RATE if the field is locked
No Default Printable Selected after a successful FINALENABLE_AUTO_POPUP is on but no PRINTABLE default is setSet one under Settings → Printable Format Settings
SINGLE/MULTIPLE PRINT is greyed outSame cause — the button is disabled while PRINTABLE is unsetAs above
The Issue Link tab always shows one row of sample dataThe tab is a mock with fixed dataIgnore the tab; it does nothing
A HIDE_* setting hides a field for everyone including administratorsThe paired SHOW_* client-side permission is not defined for this applet, so it can never be grantedSwitch the setting back off; there is no per-role exception
No tab-hide toggles on Application SettingsThe shared screen does not offer tab toggles for this appletThe settings keep whatever value the tenant already holds; there is no supported way to set them from the screen
Knock Off Settings cannot be found in the settings menuIt has no menu entryUse Organisation → Company → Knock Off Configuration, which is what the tabs actually read

Related documentation

Last updated on