Skip to content
Stock Management Guide

Stock Management Guide

By the end of this guide your first goods receipt will land in the right location, appear on the stock balance, and carry a cost you can defend. It takes about an hour for one company, and it is an hour you only spend once — almost every long-running stock problem in BigLedger traces back to one of the six decisions below being made by accident.

The most important of them is Step 1, and it is not the one people expect. A document line only moves stock if its item is linked to an inventory item. Get that wrong and everything else works perfectly while the balance never changes.

Meet GadgetSphere

GadgetSphere Sdn Bhd sells consumer electronics from 22 branches. Head office is setting up stock tracking for the Klang Valley branches first: GS-KV-01 through GS-KV-12. About 5,200 items — some serialised (phones, laptops), some not (cables, cases), some not stock at all (extended warranty, delivery charge).

Before you start

You need:

Step 1: Decide what is actually stock, and link it

Master Data > Inventory Item Maintenance, then Master Data > Doc Item Maintenance

There are two item records and they do different jobs:

  • The inventory item is the stock-keeping record. The balance is keyed by it.
  • The document item is what you put on an invoice, order or transfer line.

Stock moves only when a document line’s item resolves to a basic or alias inventory item. A service item, a charge, or an item with no inventory link is silently ignored by the stock processor — the document finalises, the journal posts, and no ledger line is written.

So for GadgetSphere:

WhatInventory item?Result
A flagship smartphoneYes, basicMoves stock
A charging cableYes, basicMoves stock
The same cable sold under a second codeYes, aliasMoves stock, against the basic item’s balance
Extended warrantyNo — service itemNo stock movement, ever
Delivery chargeNo — service itemNo stock movement, ever
The symptom to recognise later: a finalised invoice, GRN Stock In or return that never appears in the stock balance. Nine times out of ten the item is not linked, or is not a basic or alias item. It is not the document, and it is not the processor. Check the link first, every time.

Step 2: Set serial, batch and bin tracking before the first receipt

Master Data > Inventory Item Maintenance > the item > tracking type

For each item, decide:

  • Plain — a quantity is all you need. Cables, cases, chargers.
  • Serial — every unit has an identity. Phones, laptops, anything with a warranty.
  • Batch — units arrive in lots with dates. Rare for electronics, essential for anything with an expiry.
  • Bin — you care which shelf, not just which location.
Do this before the item’s first receipt. Turning serial tracking on later leaves every unit already in stock untracked, and there is no retrofit. For GadgetSphere that means deciding the smartphone and laptop categories are serialised before the first GRN, not after the first warranty claim.

Tracking type changes the shape of every document line for that item — serial, batch and bin sub-tabs appear on transfers, adjustments, invoices and counts — so it also changes how long a receipt takes to key. Serialise what you need to trace and nothing else.

Step 3: Set up locations, and check the branch default

Master Data > Organization

Three things:

  1. Locations, one per physical place stock sits. They must be ACTIVE to be selectable on a transfer.
  2. The branch’s default location. This is the one that catches people.
  3. A stock-in-transit location per company, which transfers park quantity in between despatch and receipt.

When BigLedger writes a ledger line it decides the location in this order: the line’s delivery location, then the line’s store, then the header’s store, then the branch’s default location.

A stale branch default silently collects stock. If a line names no location — and plenty do not — the quantity lands on the branch default. Set it deliberately when you open a branch, and check it whenever a location is deactivated. “Stock in a location nobody uses” is almost always this.

Step 4: Decide which document books the receipt — and tell everybody

This is the decision that, made inconsistently, doubles your stock.

If your flow isThe stock arrives onAnd the other document
Purchase Order → Purchase GRN → Purchase Invoicethe purchase invoicethe GRN records the receipt and moves nothing
Purchase Order → Purchase GRN Stock In → Purchase Invoicethe GRN Stock Inthe invoice books only the money

A plain Purchase GRN carries quantity signum 0. It is a receipt note, not a stock movement. GRN Stock In is a different document type with signum +1, and it also posts the goods-received / invoice-received accrual.

Pick one pair for the whole tenant, write it down, and train the receiving staff on it. Using a GRN Stock In and a stock-booking purchase invoice for the same goods counts every unit twice, and nothing warns you — both documents finalise and both look right.

The same distinction exists on the sales side between a plain Sales GIN (inert) and a Sales GIN Stock Out (signum −1).

Step 5: Map the three GL codes — the finance half

Master Data > Chart of Account > Companies > Default GL Codes

Only one document this module owns posts a journal: the Stock Adjustment. It needs three company defaults:

STOCK_ADJUSTMENT · STOCK_BALANCE · COGS

If they are missing, an adjustment still saves and still finalises — the quantity moves and the value does not, because the journal is written by a background posting job after FINAL and it is that job that fails, silently. You find out at month end, when the stock value report and the balance sheet have drifted apart with no obvious cause — or sooner, by running Trace Document in the Financial Report applet on the adjustment: its Missing Journal check fails, and Resolve posts the journal once the mapping exists.

While finance is here, agree the reason codes. An adjustment line can carry its own GL code, which overrides the default. That is the only way to tell damage from theft from a count variance, because the document has no reason-code engine that reaches the ledger. Three or four codes is usually enough.

Transfers, conversions, counts, requisitions and reservations post no journal at all, so they need no mapping. Value never leaves the balance sheet on a transfer — the receiving location takes the company’s cost.

Step 6: Load your opening balances

Inventory > Stock Adjustment > File Import

Opening stock comes in as an Adjust-In. For a go-live with thousands of items, use File Import rather than keying documents; for a handful, a single adjustment document with one line per item is fine.

For each line you need the item, the location, the quantity and the unit cost. The cost matters as much as the quantity: it seeds the moving average, and every sale from then on takes its cost of goods sold from that average.

Then reconcile before you go any further:

  1. Export the Stock Balance grid.
  2. Compare the total value against the inventory figure in your opening trial balance.
  3. Where they differ, fix it with another adjustment — never by asking for a data change.
Get the opening cost right on day one. Correcting it later means Reset Moving Average, which changes inventory value on the balance sheet and cost of sales on the income statement. It is a finance action, not a warehouse one, and it should be rare.

Step 7: Set minimum and maximum levels

Master Data > Inventory Item Maintenance > the item > Location tab, or its Stock Min Max Import screen for bulk.

Levels are per item per location. Two things consume them:

A location with no levels is invisible to both, and nothing fails to tell you so. Put “set the min/max levels” in the same checklist as opening a branch.

What success looks like

Fifteen minutes, one item, five checks:

  1. Receive one unit at GS-KV-01 using whichever receiving pair you chose in Step 4, and finalise it. Open Stock Balance: the balance is +1 at the location you expected, not at a branch default.
  2. The MA Price column shows the cost you paid, not zero.
  3. Open Stock Availability for the same item. Balance and available agree, because nothing is open yet.
  4. Raise an Adjust-Out of 1 and finalise it. The balance is back to 0.
  5. Open the general ledger. There is a journal debiting STOCK_ADJUSTMENT and crediting STOCK_BALANCE.

If step 1 shows nothing, go back to Step 1 — the item link. If step 5 shows nothing, go back to Step 5 — the GL defaults.

Common mistakes

MistakeWhat you seeFix
Document item not linked to an inventory itemFinalised documents never reach the balance, no error anywhereLink it in Doc Item Maintenance, then re-post
Serial tracking switched on after the first receiptUnits already in stock have no serials and never willDecide before the first GRN; there is no retrofit
A GRN Stock In and a stock-booking purchase invoice for the same goodsEvery receipt counted twice; found months later at a countPick one pair, tenant-wide
Branch default location stale or deactivatedStock accumulates somewhere nobody looksFix the default, then move the quantity with a transfer or adjustment
STOCK_ADJUSTMENT / STOCK_BALANCE not mappedQuantity moves, value does not; balance sheet driftsMap them, then Resolve each affected adjustment in Trace Document
Opening balances loaded with no costEvery sale shows 100% gross profitReset Moving Average, and get finance to sign it off
Expecting an approval before a write-offThere is none. Whoever can finalise, doesRestrict the finalise permission instead

Related documentation

Last updated on