Configuration
Almost every “the stock went somewhere I did not expect” case comes from one of five things: an item that is not a stock item (a service, or an alias that points at no inventory item), a line with no location, a stale branch default, a missing GL code, 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.
1. Items — and the link that decides whether anything happens at all
| What | Where | Why |
|---|---|---|
| The inventory item — the stock-keeping record | Inventory Item Maintenance | The stock balance is keyed by inventory item, not by the item you put on a document |
| The item’s tracking type — plain, serial, batch, bin | Doc Item Maintenance — the Sub Item Type field on the create screen | Decides which sub-balances the ledger keeps and which sub-tabs appear on every document line. It locks at the item’s first save |
| The document item, and its link to an inventory item | Doc Item Maintenance | This is the switch. Only lines whose item resolves to a basic or alias inventory item (or a serialised coupon) reach the ledger |
| Units of measure, and the multi-UOM conversions | Inventory Item Maintenance | The ledger stores a base quantity; a document line in cartons is converted to it |
Serial and batch tracking is chosen when the item is created — the Sub Item Type field on the Doc Item Maintenance create screen — and locks at the item’s first save, long before any receipt. It cannot be switched on later: an item created with the wrong tracking is replaced with a new item code, and the stock is moved across to it.
2. Companies, locations, and the branch default that catches everyone
| What | Where | If it is wrong |
|---|---|---|
| Companies, branches and locations | Organization | Locations must be ACTIVE to be selectable on a transfer |
| The branch’s default location | Organization | It is the last fallback when a line names no location. A stale default silently collects stock |
| A stock-in-transit location per company | Organization | Stock transfers park quantity here between Transfer Out and Transfer In |
The location on a ledger line is the first of: the line’s delivery location, the line’s store, the header’s store, the branch’s default location. Most mis-located stock is a line that fell through to a default that nobody had looked at since go-live — often a location that has since been deactivated.
3. Decide the receiving pair, once, for the whole tenant
This is a configuration decision even though it does not look like one, and getting it wrong double-counts every receipt.
| 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 | the GRN Stock In | the invoice books only the money |
Pick one. Never use a GRN Stock In and a stock-booking purchase invoice for the same goods. The same distinction exists on the sales side between a plain Sales GIN and a Sales GIN Stock Out.
4. GL codes — only for the adjustment journal
Only one document this module owns posts a journal, and these are the codes it resolves against.
| Default GL code | Set in | If it is missing |
|---|---|---|
STOCK_ADJUSTMENT | Chart of Account → Companies → Default GL Codes | The adjustment saves and finalises but the journal is not posted. The quantity moves and the value does not |
STOCK_BALANCE | same | same |
COGS | same | same |
A GL code on an adjustment line (or on the header) takes precedence over the company default, which is how a damage write-off and a shrinkage write-off can be coded differently.
5. Minimum and maximum levels, if you want alerts or replenishment
| What | Where |
|---|---|
| Per-location minimum and maximum levels | Inventory Item Maintenance → the item’s Location tab, or its Stock Min Max Import screen for bulk |
| The same levels, seeded from a run | Stock Replenishment |
Two consumers use them:
- The min/max e-mail, a scheduler job set up in Inventory Item Maintenance under Settings › Email Notification, lists the item × location rows below the minimum or above the maximum.
- Stock Replenishment computes how far each item × location is below its level and raises Purchase Orders or Outbound Stock Transfers.
Stock Level Monitoring does not read these levels. It compares stock with an optimal and a maximum value set per category on its own template.
6. The warehouse floor, if you run one
The Warehouse Management System applet is optional and has its own structure to build before it can be used:
- Warehouses, each with its layout nodes — the map of spaces.
- Containers — the pallets, totes and cages stock physically sits in.
- Pickers — the entities registered to pick in that warehouse.
- WMS item maintenance, categories and category groups — the applet keeps its own item view.
Then inbound runs Receiving Doc → Processing Queue → Putaway, and outbound runs Picking Queue → Picking List → Packing List, with the packing list converted into a document at the end. Nothing in the applet writes a ledger line itself; the document it converts into does.
7. Transfer and adjustment settings worth knowing
| Setting | Applet | What it does |
|---|---|---|
| Disallow negative stock for basic item (validate stock balance) | Stock Transfer | Shows the item’s balance on the line, and has FINAL pressed inside an outbound document refuse more than the sending location holds. Off by default. FINAL on rows selected in a listing, and FINAL on any inbound, check the balance whatever it says |
| Reset MA date locked to today | Stock Adjustment | Stops a backdated cost reset, which would re-project the whole chain |
| Spreadsheet view versus standard view | Stock Transfer | Grid entry for bulk lines, one-line-at-a-time for serial and bin detail |
| Aging Period Settings | Stock Report | The columns of the Stock Aging Report. Month columns by default. Selecting an aging-period definition stores it together with its type, so a day-type definition switches the report to that definition’s day ranges. Clearing the selection switches back to months. There is no day mode without a definition |
8. Permissions — your only control
There is no approval on any inventory document. The Stock Requisition applet shows Approval Settings screens, but it has no approval tab on the document, no request screen and no history screen, so a setting created there cannot be used from it today.
That makes the permission set the whole of your control. Decide deliberately who holds:
- Finalise on Stock Adjustment — the right to write stock off. Supervisors only.
- The Reset Moving Average menus — they change the balance sheet and cost of sales. Finance only.
- Finalise on Stock Transfer, separately at the sending and receiving ends.
- Close a stock take session.
- The cost columns on Stock Balance and Stock Availability. Note that the client-side permissions for these are not seeded in the Stock Balance applet, so its cost columns are visible to anyone who can open the grid; the only way to hide them there is to withhold the read permission on the data.
What success looks like
Fifteen minutes, one item, five checks:
- Receive one unit at branch
GS-KV-01through whichever receiving pair you chose, and finalise it. The Stock Balance grid shows +1 at the location you expected — not at a branch default. - Open Stock Availability for that item. Balance and available agree, because there are no open documents yet.
- Raise a Transfer Out to
GS-KV-02, finalise it. The sending location is −1, the receiving location is unchanged, and the line is in the Queue. - Raise a Transfer In against the queue, finalise it.
GS-KV-02is +1 and the queue is empty. - Raise an Adjust-Out of 1 at
GS-KV-02, finalise it. The balance is 0 and a journal exists debitingSTOCK_ADJUSTMENTand creditingSTOCK_BALANCE.
If step 5 moves the quantity but posts no journal, the GL defaults in §4 are missing.
Common mistakes
| Mistake | Symptom |
|---|---|
| A stock item set up as a service, or an alias that points at no inventory item (an unlinked basic item is linked for you when it posts) | Finalised documents never reach the balance, with no error |
| A GRN Stock In and a stock-booking purchase invoice for the same goods | Every receipt counted twice |
| Line with no location, branch default stale or deactivated | Stock accumulates in a location nobody uses |
STOCK_ADJUSTMENT / STOCK_BALANCE not mapped | Quantity moves, value does not; the balance sheet drifts from the stock report |
| Item created with the wrong Sub Item Type | The field is locked from the first save, so serial tracking cannot be added later; the fix is a new item code with the right tracking and a move of the stock across |
| Expecting a stock take to correct the balance | The count report is produced and nothing changes until somebody raises an adjustment |
| Expecting an approval on a transfer or write-off | There is none. Whoever holds the finalise permission can do it, immediately |