Best Practices
These 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. Control stock with permissions, because nothing else will
There is no approval on a transfer, an adjustment, a conversion or a count, and the one inventory document the approval engine nominally covers — Stock Requisition — has no way to submit against a setting. The whole of your control is who holds which permission.
Four rights are worth deciding by name rather than by role template:
| Right | Why it is dangerous |
|---|---|
| Finalise a Stock Adjustment | It writes stock off and posts to the profit and loss account. This is the shrinkage number |
| The Reset Moving Average menus | They change inventory value on the balance sheet and cost of sales on the income statement |
| Finalise a Transfer Out | Stock leaves a branch and is counted nowhere until somebody receives it |
| Close a stock take session | It fixes the count that the adjustment will be based on |
Give the first two to as few people as the business can tolerate, and separate the sending and receiving ends of a transfer so one person cannot do both.
2. Decide the receiving pair once, and write it down
Purchase Order → GRN → Invoice books the stock, or Purchase Order → GRN Stock In books the stock → invoice books only the money. One pair or the other, for the whole tenant.
Mixing them double-counts every receipt, and it does it silently: both documents finalise, both look right, and the balance is twice what is on the shelf. The next count finds it, months later, as a variance nobody can explain.
The same distinction exists on the sales side between a plain Sales GIN and a Sales GIN Stock Out.
3. Count rolling, not annually, and count into a tolerance
The stock take session was built for a shop that does not stop: it carries a tolerance band that allows for movements during the count, and an Android companion app with an offline mode for counting in a back store.
Use that. A weekly rolling count of the fast-moving categories at each branch finds a discrepancy while somebody still remembers the week it happened. An annual full count finds twelve months of accumulated differences at once and attributes all of them to nothing.
And remember the count changes nothing. Build the adjustment step into the procedure explicitly, with a named person, or the variances stay on a report forever.
The product gives you the band and the report. It gives you no count sheet, no schedule and no blind mode, so the rest of a controlled count is run by people: the plan, sheets that are issued and collected, counters who cannot see the expected figure, a recount before any variance is accepted, and a finaliser who did not count. Counting Stock and Deciding What a Difference Means sets each one out, with the check that tells you it worked.
4. Use a distinct GL code per adjustment reason, one document per reason
The adjustment document has no reason code that reaches the ledger. The account is the only place a reason survives, so it is the only way to tell damage from theft from a count correction.
The screen puts the GL code on the header (once the setting that shows it is on), and it applies to every line, so raise one document per reason. A file import can put a different code on each line. Agree three or four accounts, and your shrinkage analysis becomes a general-ledger enquiry, not a spreadsheet exercise.
5. Watch the transfer queue, weekly
A Transfer Out with no matching Transfer In is stock counted at neither location. It is invisible in both branches’ balances and it will surface as a double variance at the next count.
The transfer applet’s Details listing shows quantity sent, received and outstanding per line. Anything outstanding more than a few days is either goods that never arrived or a Transfer In nobody raised. Both need a person, not a report.
6. Set minimum and maximum levels on every new location, on day one
A new branch with no levels does not drop out of view. It shows up in the wrong way, and nothing tells you, because nothing fails.
- Stock Replenishment reads the minimum and maximum held for each item at each location. With
none set, the level counts as zero, so the branch’s reorder quantity is zero. In a purchase-order
run it still appears, with a line for zero. In a transfer run it is worse: a transfer line that
asks for zero is given the source location’s whole ledger quantity instead. So when a new
branch such as
GS-PEN-05goes into a transfer run with no levels, it gets the largest proposal in the run, and an event-created run turns that into a transfer document by itself. Before you generate, check Quantity To Approve on every transfer line whose location needed nothing, including any location with no level at all, and see Stock Replenishment. - Stock Level Monitoring does not read per-location levels at all. Its optimal and maximum levels are set per item category on the template, and they apply at every location the template watches. It skips an item only at a location that holds no balance record for that item. That is usually an item the branch has never received, and that is the item most likely to be short. A new branch’s alert covers only what it has already stocked.
Adding the levels belongs in the same checklist as opening the location. The item master’s Stock Min Max Import screen loads them in bulk. Put the location on the monitoring template’s Locations tab in the same pass. For the branch’s first weeks, check its opening range against the plan by hand, because the alert cannot warn about an item the branch has never held.
7. Do not promise “real-time” and do not promise a costing method
Two claims to avoid in implementation conversations, because both will be checked:
- The balance updates through background processors after FINAL, not inside the button press. On a busy day it lags by moments. It is fast; it is not instantaneous.
- Do not promise that one costing method is used everywhere. Screens decide for themselves: the stock take variance report always shows the moving average. The one choice the business makes is the company’s Inventory Closing Base On, which values closing stock at month end and is moving average if nobody sets it. See Step 2 of Closing the Month on Stock.
8. Expect availability to exceed balance sometimes
Available is balance plus a signed adjustment for open documents, so goods received but not yet invoiced push it above the physical figure. This is correct and people will report it as a bug.
Answer it with the Stock Availability Details screen, which lists the documents behind the adjustment by type. Every unexplained availability figure is explainable in two clicks; teach that before the first support ticket rather than after it.
9. Fix a wrong balance with a document, never by asking for a data change
There is no screen that sets a balance, and there should not be. The correction is a Stock Adjustment, which leaves a ledger line, a journal and an audit trail. A backend data change leaves none of the three, breaks the ledger chain that backdating and voiding depend on, and makes the next reconciliation impossible.
The one exception worth knowing: if a finalised document never reached the balance at all, the cause is usually the item link, not the balance. Check that before raising anything.