Skip to content

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:

  1. 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.
  2. 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.
  3. Shipment — the goods went to the customer. Here the system works out the cost by FIFO — the very figure your profit reports will show.
  4. 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

  1. Locations — at least one; the card holds the inventory account.
  2. 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.
  3. Items — the catalogue; plus barcodes and commodity codes if you need them.
  4. Serial Number Range for Items — how codes are generated; Items Setting — the default unit and VAT for a new card.
  5. 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