Best Practices
These are the practices that follow from the mechanics on Core concepts. Where a control you might expect does not exist, that is said plainly rather than worked around.
1. Treat the credit limit as information, and the blacklist as the control
The credit limit is a check in two screens, not a control on the server. With the credit-limit setting on, the Sales Order and Sales Invoice screens refuse FINAL once the customer’s limit in that company, less what they owe that company and less open delivery-queue amounts, is used up; a document that arrives any other way, a cash bill and a delivery order are never measured. If a customer must not be sold to, blacklist them — the server rejects their sales invoices, sales orders and outbound delivery orders (and cash bills at the till) at FINAL, whichever screen or integration raised them.
Be aware it does not cover quotations, returns, credit notes or debit notes, so a blacklisted customer can still be quoted.
2. Control discounts with permissions, because nothing else will
There is no approval step on any sales document. A discount or a price below the floor is released by a permission held by the person doing it, not by a routed request. Decide deliberately who holds those permissions, because the alternative is not a safer default — it is everyone holding everything.
3. Reverse with the right document, or your shelf and ledger will drift
- Wrong invoice, nothing moved yet → VOID.
- Goods coming back → Sales Return. Stock comes in and the sale is reversed.
- Price wrong, no goods moving → Sales Credit Note. It has quantity signum 0, so it puts nothing back on the shelf. If goods did come back, you need a return as well.
- Money and goods both going back → Sales Refund Note.
Set up return reasons before go-live. Until you add codes, the Reason drop-down is empty and your returns carry no explanation — which is exactly the field you will want when you audit them.
4. Spot-check that finalised invoices have journals
An invoice can sit at FINAL with no journal behind it when the receivable code (DEBTOR) is unmapped —
the posting job fails after FINAL — and nothing on the invoice screen says so; Financial Report → Error
Checking → Trace Document is where it shows. An unmapped SALES or OUTPUT_TAX is quieter: the
journal posts without that line and trade debtors takes the amount, so Trace Document finds nothing and
the customer statement and ageing (built from documents) look right. Compare the receivable GL account
with the debtor ageing weekly — a gap between them is the sign — and before go-live check that every
sales, return and tax code has a company default. The day-to-day reconciliations are on the
Point of Sale module.
5. Watch availability, not just balance
Available stock sitting well below the balance means open FINAL sales orders that will never ship. Close or void those lines. Nobody does this on a schedule and everybody wishes they had.
6. Do not build a process on things that are not there
Three habits worth naming so nobody designs around them:
- Do not design a sign-off workflow. There is none for sales documents, and the document will finalise whatever a diagram says.
- Do not rely on a reservation as a lock. It is opt-in, and the bin-pinned path has a known defect. Use it as a note to colleagues.
- Do not expect a Sales GIN to move stock. It does not. Use the sales invoice, which does.