Inventory

Stock that agrees with the ledger

Stock and books diverge when they are two systems politely kept in step. Here a stock movement *is* a posting: the valuation layer and the ledger entry are written in the same transaction, so they cannot disagree.

What is in it

What inventory covers

Valuation that survives a reversal

FIFO or weighted average per item, held as explicit valuation layers. Reversing a movement unwinds the layers it created — which is exactly where systems that store a single running average quietly go wrong.

Batches and expiry

In the business modes that keep batches — pharmacy, pharma distribution, supermarket, hospital and lab — batch numbers and expiry dates are recorded as stock is received, with a register of what has expired and what expires within 30, 90 and 180 days, valued at cost, and the batch to sell next for each item.

Reorder and slow-moving

Reorder levels per item against real consumption. Slow and non-moving stock is derived from the last movement date, so the report tells you what is genuinely sitting still.

Manufacturing and job work

Bills of material with wastage, what a production run needs, and production recorded at what actually went into it plus overheads. Material sent out for job work is tracked until it comes back, with the days it has been out.

Checkable

What backs each claim

Where in the product, or in the repository, you can go and see it for yourself.

Stock movement and ledger entry share one transaction
postVoucher()
Reversal unwinds valuation layers
Integration tests

What it deliberately does not do

  • A sale does not yet record which batch it came from, so “sell this batch next” is advice, not something enforced at billing.
  • Landed cost — spreading freight and duty over a receipt — is built in the engine but has no screen yet.

Guides

Step by step: inventory

Try inventory against real books.

Create an account and try it with made-up figures first. Free while in preview, with no card.

Stock that agrees with the ledger · Falcon