Stock
This module is about where the goods are right now and what they are worth. Everything else — receipts, shipments, movements, stocktakes — is just a way of changing those two answers while leaving a trail that can explain any figure later.
The idea everything else follows from: every movement is written into the item history — in batches, with quantity and cost — and it is the history that explains any stock figure. The system also keeps the current balance as a separate number in item statuses, for speed: documents add to it and subtract from it when posted. But the truth is in the history: if the number has parted ways with it, there is a document that explains the difference.
Video walkthrough: Stock in ERPJS step by step — new item, opening stock, stock movement, stocktake.
The route: how goods pass through stock
Supplier → Goods receipt → [+] balance and the batch's cost
↓
Movement between locations (cost is preserved)
↓
Customer ← Shipment ← [−] balance, cost taken by FIFO
The shortest working cycle looks like this:
- Goods receipt — the goods arrived. The document puts them on the balance sheet and fixes the batch's cost. It does NOT create a debt to the supplier — that is what the vendor invoice does.
- Add Costs — if there was freight, duty or broker's fees. This document comes BEFORE the goods receipt: the costs are spread over the goods in it, and the receipt is created from it («Create incoming») already at the full batch cost. A posted receipt is not changed by additional costs after the fact: if the goods are already in stock without them, the sale will write off the earlier, understated cost.
- Shipment — the goods went to the customer. Here the system works out the cost by FIFO — the very figure your profit reports will show.
- Movements, write-offs, returns — everything that happens between those two points.
Once a period the cycle is closed by a stocktake: count by hand, and the Stocktaking comparison service compares the count with the books and turns the differences into documents — surpluses into a goods receipt, shortages into a write-off.
What is worth understanding
The system works out cost, not a person. On every issue the oldest batch with a non-zero balance is taken, the required quantity comes off it, and the next batch is used if needed. So the same item can carry different costs in two shipments — that is not an error, that is FIFO.
Item history is the source of truth. Item statuses show the balance "right now" and exist for speed; the history explains where it came from. When the figures disagree, look into the history and find the document that made it part ways with the status: there is no service that would rebuild status balances from the history (FIFO recalculation only carries shipment costs into invoices).
A stock document reaches the ledger. A receipt debits the inventory account, a shipment writes the cost into expenses. Which accounts exactly and where they come from is set out in the documents' own articles; the general rules live in Account Usage.
Serial numbers are a separate layer. If an item is tracked by serial or batch numbers, every movement also writes a serial number status. That answers "where is this particular device" — not "how many are in stock" but "which one is with whom".
Where to start in a new database
- Locations — at least one; the card holds the inventory account.
- Units and Item Groups — an item card cannot be saved without a unit; the group supplies the item's accounts (without it they come from the location or from the "Account Usage" setting) and picks the code range.
- Items — the catalogue; plus barcodes and commodity codes if you need them.
- Serial Number Range for Items — how codes are generated; Items Setting — the default unit and VAT for a new card.
- The first goods receipt — and stock is alive.
Opening balances are entered with the same receipt (leaving the supplier empty). The Import Initial Data service does not enter balances: it loads the starter kit of references and settings into a new company.
Common tasks
| You need | Where to go |
|---|---|
| see balances per location | Location Report |
| understand where a cost came from | Item History |
| find items whose free stock is below the minimum quantity | Stock Shortages Report |
| count stock and fix the differences | Stocktakes + Stocktaking comparison |
| change the value of stock without moving it | Stock Revaluation |
| close the period so nobody edits it afterwards | Closing changes |
| load many items at once | Xlsx Import |
Everything in the module
Movement documents: Goods Receipts · Shipments · Stock Movements · Stock Depreciations (write-offs) · Returns To Vendor · Returns From Customer · Stocktakes · Stock Revaluation · Add Costs · Service Stock Movements · Internal Orders (a request for a movement; does not move stock)
References: Items · Locations · Service Locations · Item Groups · Item Classifications · Classification Types · Brands · Units · Barcodes · CN Codes · Service Items
Delivery: Waybill · Carriers · Delivery Terms · Shipments Mode
Settings: Items Setting · Serial Number Range for Items · Serial Number Range · Labels Print Setting · Return Items Setting · Items Receipts Currency Rate · Main warehouse · Internal Order Settings
Reports: Items Receipts Report · Shipments Report · Returns Report · Returns To Supplier Report · Stock Movement Report · Location Report · Item History · Item Status Report · Stock Shortages Report · Inventory Accounting Form · Stocktaking comparison · Cost Price Difference Report · Customs clearance status report · Service Items Report
Maintenance: Inventory worksheet builder · Stocktaking comparison · Xlsx Import · Xlsx Export
Where to look next
- Purchase orders — what arrives at the warehouse tomorrow.
- Sales orders — what leaves it.
- Production — where stock is both the input and the result.
- Prices — what you sell all this for.