Inventory Workflow
Which document actually takes stock out? In this folder, fewer than the names suggest. Of the twenty applet pages here, five cover a document that writes to the stock ledger today, three of those five post a journal, and the rest count, ask, hold, plan, print or look. This page is for whoever has to pick the right screen — the stock controller, a branch manager, the accounts person — and it answers one thing per applet: what changes when you press FINAL there, and what stays as it was.
The mechanics behind every row are on Inventory Module; the sales, purchase and POS paperwork that moves stock is on Related Applets. This page routes; follow the link for the reason.
What each applet writes, and whose screen it is
A document moves stock only if the server gives its type a non-zero quantity sign, and the backend fixes the sign; the applet has no say in it. When you press FINAL, the document is marked and a posting job is queued; the stock job then writes one signed line per item to the stock ledger, and a separate journal job posts to the general ledger where the type has one. FINAL is over before either runs, so a document can say FINAL while its journal failed — how a FINAL reaches the balance.
| Applet | Whose screen | Stock ledger | General ledger and other modules | Where it stops |
|---|---|---|---|---|
| Stock Transfer | Sending and receiving locations of one company | Out of the sender into the company’s in-transit location; in at the receiver on a second document | No journal. The receiving location’s cost seeds from its own history | The receiver gets nothing until the inbound is FINAL |
| Stock Adjustment | Stock controller; finance for Reset Moving Average | Up or down at one location | Journal: stock adjustment against stock balance. Reset MA posts its own | FINAL does not check the GL codes; the journal job does, afterwards |
| Consignee Stock Transfer | Whoever places your stock on a partner’s shelf | Both ends in one document | No journal; the stock stays yours at cost | Billing the consignee happens on a sales invoice, not here |
| Consignment GRN (Internal) | Receiving, for stock a supplier still owns | In | Consignment stock against consignment liability, where your company posts it | Ownership does not pass here; it passes when the stock is sold and billed |
| Consignment GIN (Internal) | Whoever issues consignment stock back out | Out | Through the ordinary purchase and creditor accounts, not the consignment ones | No void; correct it with a Consignment GRN |
| Stock Conversion | Branch or warehouse re-packing and kitting | Built to, but on 2026-10-10 nothing is connected to its posting run, so FINAL moves no stock | No journal | Even once connected, no cost passes from components to the kit |
| Stock Take | Counters, the supervisor who closes the session, audit | Nothing | Nothing | It never changes a balance; a Stock Adjustment does |
| Stock Reservation | Sales or warehouse staff holding stock for a customer | Nothing; it writes the reserved column that availability subtracts | Nothing | Nothing checks a hold against what is on hand |
| Stock Requisition (Internal) | A branch asking another location for stock | Nothing | Nothing; a transfer is raised against it | Its approval settings have no effect today |
| Stock Replenishment | Purchasing and inventory planners | Nothing itself | Raises purchase orders or stock transfers, which move stock in their own applets | A scheduled run raises its orders and transfers without showing errors |
| Stock Level Monitoring | The people on its e-mail list | Nothing | An e-mail | Nothing displays a run’s result; the e-mail is the result |
| Warehouse Management System | Warehouse staff and supervisors | Nothing | Creates draft delivery orders and stock transfers from packing lists | A picking list reserves nothing |
| Goods Delivery Note (Internal) | Whoever hands goods to the customer | Nothing | Knocks off the order’s open lines | Stock leaves on the stock-out document raised alongside it |
| Inbound Delivery Order (Internal) | Receiving, as a paper trail | Nothing | Nothing | Not in the Applet Store; stock comes in on a GRN Stock In or purchase invoice |
| Driver Delivery Order | The driver set on the delivery order | Nothing | Edits vehicle, date and slot on delivery orders raised elsewhere | It creates nothing and sets nothing to FINAL |
| Non Stock and Trade In | Store team reselling trade-ins; finance | Its own per-serial register, outside the stock ledger | Closed at month end through its own default GL codes | Its units appear in Stock Availability and in no stock report |
| Barcode Generator | Whoever prints labels | Nothing; it reads nothing either | Nothing | Templates are saved to your login, not shared |
| Stock Balance, Stock Availability, Stock Report | Everyone who asks “how many?” | Read only | Read only | A wrong figure is fixed by a document, never on these screens |
Related Applets - Stock Balance is the index of every document type that writes the balance, including those in other folders.
Which one to pick
| You want to | Use | Rather than |
|---|---|---|
| Record what is on the shelf | Stock Take, then a Stock Adjustment for each difference you accept | An adjustment with no count behind it, which leaves no record of counted beside system |
| Move stock between two locations of one company | Stock Transfer — an outbound and an inbound, so a split delivery is received in parts (one transfer, two lorries) | Consignee Stock Transfer, which is for your stock on someone else’s shelf |
| Sell from the hub’s stock on a branch’s invoice | No transfer at all: the Delivery Location on the invoice’s lines decides where the stock check and the stock-out happen | Transferring stock in for one sale and back if it does not sell |
| Move stock between two companies of the group | A sale and a purchase between them (which of two neighbours) | Stock Transfer, which posts no journal and carries no tax |
| Turn components into a kit at one location | Stock Adjustments, out of the components and into the kit, while conversion is unconnected — and whenever the kit must carry the components’ cost | Stock Conversion, which today moves nothing |
| Hold stock for one customer | Stock Reservation, released when the sale is made | A hold left to expire: where the expiry job runs, it leaves the listing and keeps lowering availability |
| Ask another branch for stock | Stock Requisition, then the transfer raised against it | Expecting the requisition to move anything; the transfer does |
| Be told when stock is low, or act on it | Stock Level Monitoring tells; Stock Replenishment raises the orders | Expecting either to move stock |
| Take in stock a supplier still owns | Consignment GRN | A GRN Stock In, which books it as received and owed to the supplier |
The Delivery Location row is the one most groups miss. A small mall unit that keeps its laptops at the Klang Valley hub sells one on its own invoice with the delivery location set to the hub, and the stock check reads the hub’s eleven rather than the shop’s none. The same field, saved with a location nobody chose, is why a branch is refused for stock that is on its own shelf — check it before you transfer anything in. The scenario and its cautions are on Related Applets.
Where the three stock figures come from
| Figure | Where you see it | How it is made |
|---|---|---|
| Balance | Stock Balance; the Stock Balance column on a line picker | Stored. Updated by the stock job after a stock-moving document’s FINAL; a back-dated document re-chains it |
| Available | Stock Availability | Not stored. Recomputed each time you ask: the balance, plus a signed amount for open orders and receipts, less reservations. It can be higher than the balance |
| Reserved | Stock Availability, from the balance row | Stored. Written by a reservation, and by sales orders, job orders and packing orders that hold stock |
| Balance as at a past date | Stock Report, Historical Stock Balance | Read live from the stock ledger when you run it, not from a nightly copy |
So the balance and available disagree whenever an order is open, and that is correct; a stock report agrees with the balance sheet’s stock account only under six conditions (stock report versus the stock account). Which of the twelve reports answers which question is on Inventory Reports.
When the wrong applet was used
| What you see | Why | What to do |
|---|---|---|
| “My count and the stock report still disagree after a stock take.” | A count measures the gap and writes nothing | Raise a Stock Adjustment for each variance you accept (counting and variances) |
| The conversion says FINAL and Stock Balance has not moved | Its posting run has no job connected to it | Record the movement with Stock Adjustments and leave the conversion as the record of what you meant (Stock Conversion) |
| A Goods Delivery Note, Inbound Delivery Order or Stock Requisition is FINAL and the stock is where it was | Its quantity sign is 0 | Raise the document that moves stock: a stock-out or invoice, a GRN Stock In or purchase invoice, or a transfer |
| Head office sent it and the branch cannot find it | The outbound is FINAL and nothing has received it; it sits in the in-transit location | What sits in transit |
| A reservation expired but availability is still low | Where the expiry job runs, it deletes an expired reservation without releasing it | Release a reservation before it expires (Stock Reservation) |
| A consignment GIN landed on the ordinary creditor and purchase accounts | That is the mapping the GIN posts through; the GRN and the Consignment Return use the consignment accounts | Decide whether the GIN or a Consignment Return suits the case before you post |
The module’s longer table, starting from what you see, is When stock looks wrong.
How you know a document moved stock
Open Stock Report, Stock Movement Report, for the item and the location, and filter by the document’s Server Doc Type. A document that moved stock is listed with its number, its quantity in or out and the running balance after it. If it is not there, it moved nothing, whatever its status says — and the first table above names the sibling that would have. For an adjustment, also confirm its journal under Ledger and Journal, Error Checking > Missing Journal: step 3 of the month-end check.
Where these applets sit
- Must exist first: the inventory item and its link from the sellable item (only lines that resolve to an inventory item reach the ledger), the branch’s default location, and the company’s stock adjustment and stock balance default GL codes. Without the outbound-to-inbound document-flow row, nobody can receive a transfer through KO For. The list is on what must exist first.
- Downstream: Month End Processing takes closing stock from this ledger to write cost of sales; the marketplace quantity is derived from the balance minus open marketplace orders (what a stock movement sets off).
- Siblings in other folders: the documents that take stock in and out on a sale or a purchase are in Sales Workflow and Purchase Workflow.
- Blast radius: a company with no stock balance default GL code still moves stock on every adjustment, posts no journal for any adjustment that carries a value, and Month End Processing writes no cost of sales for it (what one wrong setting reaches).
- Used together: stock take with adjustment; outbound transfer with inbound through KO For; requisition with transfer; replenishment with purchase order.