Configuration
Almost every “the invoice did not post” or “the picker is empty” case in this module comes from one of five things: a supplier with the wrong AR/AP type, a company missing a default GL code, a knock-off row that was never configured, an item that is not a stock item, or the wrong document in the receiving pair. This page sets those up in dependency order and names the symptom each gap produces.
The order below is a dependency order, not a rule the product enforces. Out of sequence simply means you meet the failures later — usually at the first FINAL on a purchase invoice.
1. Suppliers — and the one field that decides where the money posts
| What | Where | Why |
|---|---|---|
| The supplier record | Supplier | Every purchase document names a supplier entity. It must exist before the requisition, not after |
Its AR/AP type — AP_TRADE or AP_OTHER | Supplier → Main | This decides the creditor account. AP_TRADE resolves to the company’s CREDITOR default, AP_OTHER to CREDITOR_NON_TRADE. A supplier set up with the wrong type posts to the wrong account, silently, on every invoice |
| Credit terms | Supplier → Credit Term Listing | Offered on the purchase invoice, which stores them only when Purchaser is filled. No due date is written — the invoice has none — and nothing enforces a limit: these are records for your buyers, not rules |
| Self-billed e-Invoice flag, TIN and identity | Supplier | Read by the purchase documents that can submit self-billed e-Invoices |
| Supplier Login — the link from a portal login to this supplier | Supplier → Supplier Login | The prerequisite for every supplier-access applet. Without it the supplier signs in and sees nothing |
MISSING_DEFAULT_GL_CODE: CREDITOR (or …: CREDITOR_NON_TRADE). The message names the code the supplier’s AR/AP type resolved to, and
the company has no default for it. Either the type is wrong on the supplier or the default is
missing in §3.2. Items — and the link that decides whether stock moves at all
| What | Where | Why |
|---|---|---|
| The document item you put on a purchase line | Doc Item Maintenance | The line’s item |
| Its link to an inventory item | Doc Item Maintenance | This is the switch. Only lines whose item resolves to an inventory item reach the stock ledger. A basic item with no link is linked for you the first time it posts. A service item, or an alias that points at no inventory item, on a purchase invoice posts the money and moves nothing — no error |
| The stock-keeping record and its tracking type | Inventory Item Maintenance; the tracking type is the Sub Item Type on the Doc Item Maintenance create screen | Serial, batch or bin tracking decides which sub-tabs appear on every purchase line. It is chosen when the item is created and locks at the item’s first save, so decide it then |
| Purchase prices per supplier | Doc Item Maintenance → the item’s price per supplier; Pricebook | Where the unit price on a purchase order line comes from; you can override it on the line |
| The Consignment Item flag | Doc Item Maintenance | Only flagged items appear in the consignment GRN and GIN item search |
| GL code on the item, for non-stock spend | Doc Item Maintenance | A line whose item carries a GL code posts there instead of the company PURCHASE default — how rent lands in rent and not in purchases |
3. Company default GL codes — every posting resolves against these
Set under Chart of Account → Companies → Default GL Codes. A missing code never stops FINAL: it shows up afterwards, in the journal — as a failed posting for the supplier codes, and as a journal that posts wrong for the purchase and tax codes.
| Default GL code | Needed by | If it is missing |
|---|---|---|
CREDITOR / CREDITOR_NON_TRADE | Every document that credits or debits a supplier — invoice, both notes, return, refund note, payment voucher, consignment GIN | FINAL succeeds; the posting job fails afterwards with MISSING_DEFAULT_GL_CODE: CREDITOR and the document sits FINAL with no journal — Error Checking › Trace Document → Resolve |
PURCHASE | Invoice and No Stock In invoice lines without their own GL code; debit and credit notes | No message at all, and the journal still posts. The line is left out and the supplier’s creditor line is built from what remains: a RM 1,060 supplier invoice (RM 1,000 of laptops, RM 60 SST) posts as debit input tax RM 60, credit trade creditors RM 60. Purchases are RM 1,000 short, and once you pay the supplier RM 1,060, trade creditors carries a RM 1,000 debit. How you would notice: the payable GL account stops agreeing with the creditor ageing; the supplier statement and ageing are built from documents and look right, and Trace Document finds nothing because a journal exists. Only a supplier with no AR/AP type fails loudly — no creditor line, TOTAL_DEBITS_AND_TOTAL_CREDITS_NOT_BALANCES |
INPUT_TAX | Any purchase line carrying tax | The same: the tax line is left out and trade creditors takes it. On the invoice above, debit purchases RM 1,000, credit trade creditors RM 1,000; the RM 60 you can claim back is in no GL account, and after payment trade creditors carries a RM 60 debit |
PURCHASE_RETURN | Purchase returns and negative lines | The same, on the return. (PURCHASE_DISCOUNT is not read when the journal is built.) Before go-live, check that every purchase, return and tax code has a company default, or every item its own |
INVENTORY_NOT_INVOICED, CREDITOR_NOT_INVOICED | Only the GRN Stock In → No Stock In pair | GRN Stock In: the document goes FINAL and the stock is posted, and only the journal job fails — the receipt is in stock with no accrual behind it. No Stock In invoice: FINAL succeeds too; its posting job fails with MISSING_DEFAULT_GL_CODE naming the code, and the invoice sits FINAL with no journal |
CONSIGNMENT_STOCK, CONSIGNMENT_LIABILITY | Consignment GRN, Consignment Return, Consignment Billing | FINAL succeeds at both ends of the consignment cycle and the posting job fails afterwards: MISSING_DEFAULT_GL_CODE: CONSIGNMENT_LIABILITY (or CONSIGNMENT_STOCK on the billing), or NO_JOURNAL_CREATED on a GRN whose stock lines found no code at all. The document sits FINAL with no journal. A GL code on the line is ignored for these types |
FOREX_GAIN, FOREX_LOSS, SETTLEMENT_CHARGES | Settlement differences and bank charges on a payment voucher | Nothing fails at FINAL. With no SETTLEMENT_CHARGES code the charge line is left out and the supplier’s line absorbs it, so the journal posts with the bank charge in trade creditors. With no FOREX_GAIN / FOREX_LOSS code, the gain or loss — written when a foreign-currency invoice is knocked off against its payment — has no line and no forex journal is written; Ledger And Journal › Error Checking › Missing Journal Forex Gain Loss is where it shows |
PURCHASE
default. Tax lines always use INPUT_TAX. For the consignment types and GRN Stock In the line’s own
code is skipped and resolution starts at the header.4. Tax codes, currencies and the bank
| What | Where | Why |
|---|---|---|
| Input tax codes | Tax Configuration | The tax column on every purchase line. GadgetSphere is SST-registered; the code your supplier charges goes on the line |
| Exchange rates | Forex | A purchase order or invoice in USD needs a rate. A foreign-currency document is finalised as a base-currency shadow that carries the posting; CANNOT_EDIT_CURRENCY_RATE locks the rate to the fetched value |
| Cashbooks and settlement methods | Cashbook; the document applets’ Branch Settings | Each settlement method is linked to a cashbook whose GL code is the credit side of a payment. A method with no cashbook does not stop the voucher at FINAL: the voucher goes FINAL and its posting job then fails with MISSING_CASHBOOK: STL_MTHD, leaving it with no journal |
5. Companies, branches, locations — and the knock-off rows
| What | Where | If it is wrong |
|---|---|---|
| Companies, branches, locations | Organization | Branch and location are the only unconditionally required header fields on a purchase invoice |
| The branch default location | Organization | The last fallback when a purchase line names no location. Stock booked by an invoice with no line location lands here |
| Knock Off Configuration — one row per source → target document pair | Organization → Company → Knock Off Config | Decides whether FINAL creates open-queue rows for that pair. No Purchase Requisition → Purchase Order row means finalised requisitions that no order can find; no Consignment Purchase Order → Consignment GRN row means the consignment GRN’s KO For tab is empty |
| Fiscal period locks | Organization | A transaction date in a month locked at LOCK_TXN or LOCK_ALL rejects the document at FINAL; LOCK_GL stops manual journals only. Consignment GRNs are not exempt |
| The company’s e-Invoice status | Organization | Once ENABLED, the purchase invoice’s own screen hides VOID, but the listing’s VOID still voids an ordinary purchase invoice (a self-billed one is refused either way) — so decide whether your correction path is a void or a credit or debit note, and tell the team which |
6. Decide the receiving pair, once, for the whole company
This is a configuration decision even though it does not look like one.
| If your flow is | The stock arrives on | And the other document |
|---|---|---|
| Purchase Order → Purchase GRN → Purchase Invoice | the purchase invoice | the GRN records the receipt and moves nothing |
| Purchase Order → Purchase GRN Stock In → Purchase Invoice No Stock In | the GRN Stock In | the invoice books only the money and clears the accrual |
Pick one. Choose the second pair if you need goods available for sale before the supplier’s bill arrives, and map the two accrual codes in §3 first. Never use a GRN Stock In and a stock-booking purchase invoice for the same goods; never use a plain GRN and a No Stock In invoice. Both mistakes are silent. Then give the applets for the pair you did not choose to nobody.
7. Approvals — optional, and only on two documents here
Skip this section on a first implementation. Nothing in the module requires anyone’s sign-off until you build it, and building it changes nothing about what a document can do.
| Setup task | Where | What it actually does |
|---|---|---|
Approval Setting for INTERNAL_PURCHASE_ORDER or INTERNAL_PURCHASE_REQUISITION | The Purchase Order or Purchase Requisition applet → Settings → Approval Settings | Names the submitter designation and the levels. Each level’s Min Approval Amount decides whether that level is required for a given document amount |
| Branch Designation and the employees under it, each with an approval level | Same applets → Settings → Branch Designation | This is where approvers actually come from. The setting names none |
| Employees with a job title matching the submitter designation, and an e-mail | Employee | The submitter’s designation is resolved from their job title; approvers are e-mailed and see their queue only if their login has an employee record under the same e-mail |
| Approval Monitor rule PR → PO, Is Document Conversion Required | Purchase Order → Settings → Approval Monitor | Refuses to submit an order for approval unless it was built from a requisition. Applies at submit, not at FINAL |
Three submit-time errors stop a submission: the submitter designation has no branch-designation row, no approver is linked to it, or fewer approver levels exist than the setting requires. Once submitted, completion sets FINAL; a pending request never blocks a manual FINAL. Full setup in Document Approvals.
8. Printable formats
Each document applet’s Settings → Printable Format Settings needs a default template before the Export tab or the listing’s print buttons do anything; without one the button is disabled or the applet reports No Default Printable Selected. Set it for the purchase order at minimum — it is the document you send to a supplier.
9. The supplier’s window, if you use it
- Invite the supplier’s user from the Supplier applet’s Supplier Login tab. The link is written when they follow the e-mailed invitation, together with the applet catalogues and roles the invitation carried. Invitation links do not expire.
- Grant that login the supplier-access applets it should see — the Purchase Order, GRN, Invoice, Credit Note and Return Supplier Access applets, the Blanket Purchase Order Supplier Access applet, or Supplier Delivery Order.
- Only FINAL documents appear in the read-only applets (returns at any status). A draft order is invisible to the supplier until it is finalised.
10. Permissions — your only control
There is no approval on a receipt, an invoice, a payment, a return or either note. Decide deliberately who holds:
- Finalise on Purchase Invoice — the right to book stock and create a liability. This is the control that “three-way matching” would have been. Give it to the people who check the supplier’s paper, and to nobody who keys orders.
- Finalise on Purchase Order — the right to commit the company to a supplier. If a spending threshold matters, this permission enforces it; the approval engine does not.
- Finalise on Payment Voucher — money leaving the bank.
- Finalise on Purchase Return and Purchase Debit Note — the right to reduce a supplier’s balance.
- Edit the currency rate (
EDIT_CURRENCY_RATE) — on foreign-currency purchases. - The
SHOW_*client-side permissions that reopen hidden menus, cost columns and the VOID button per user. Several purchasing applets check permissions that are not seeded in the registry, so aHIDE_*setting on those is all-or-nothing; the applet pages say which.
Separate the three roles: the person who orders, the person who receives, and the person who books the bill. The knock-off chain records who did each step; it does not stop one person doing all three.
What success looks like
Fifteen minutes, one order, five checks — the same run as the Standard Procurement Workflow:
- Raise a purchase order for 10 units to branch
GS-KV-01and finalise it. The lines appear in the Purchase Order Queue. - Receive it on the document your receiving pair uses and finalise. On the standard pair, Stock
Availability shows the 10 as GRN quantity and the balance is unchanged; on the Stock In pair the
balance is +10 and a journal exists debiting
INVENTORY_NOT_INVOICED. - Open the invoice applet for your pair, knock the receipt off on KO For, finalise. The Posting tab shows Journal posted, and Inventory posted on the standard pair.
- The order’s queue row is gone; the supplier shows the invoice as outstanding in the Creditor Report.
- Pay it on a Payment Voucher with one payment line, contra the invoice, finalise. The supplier’s balance is nil and the cashbook has one transaction line.
If step 3 stops with MISSING_DEFAULT_GL_CODE, the code named in the message is missing from §3.
Common mistakes
| Mistake | Symptom |
|---|---|
| Supplier’s AR/AP type wrong | Invoices post to the wrong creditor account, or fail with MISSING_DEFAULT_GL_CODE: CREDITOR_NON_TRADE |
| A default GL code missing | The first document that needs it goes FINAL with no journal, and its posting job fails naming the code (a GRN Stock In still posts its stock). The document’s Posting tab and Trace Document show it |
| No Knock Off Configuration row for a pair | The downstream KO For picker is empty although the source is FINAL |
| Document item is a service, or an alias that points at no inventory item (an unlinked basic item is linked for you at posting) | The invoice posts the money; stock never moves; no error |
| A GRN Stock In and a stock-booking purchase invoice for the same goods | Every receipt counted twice |
| Tax captured on both documents of the Stock In pair | The two accrual accounts never clear by exactly the tax amount |
| Expecting approval to stop an order | It does not. Whoever holds the finalise permission can post it, request pending or not |
| Consignment GL codes not mapped | The consignment GRN and the billing both go FINAL with no journal; the posting job fails naming the code. Financial Report › Error Checking › Trace Document on it reports Missing Journal, and Resolve repeats the message until the codes are mapped |
| Item created without serial tracking | The item screen locks the Sub Item Type from the item’s first save, so serial tracking cannot be switched on later from there; the fix is a new item code with the right tracking |
| Supplier Login not linked | The supplier signs in to an empty portal |