# How the inventory model works

What move lines are, how quantity types are calculated, and why the numbers you see are always current.

Source: https://support.toolingmetrics.com/en/inventory/overview/inventory-model/
Updated: 2026-10-29

Every number you see in Tooling Metrics inventory — on-hand, forecast, in-circulation — is derived from the same underlying record: the **move line**. Understanding how move lines work explains why the system behaves the way it does, and why you can trust the numbers.

## Everything is a move line

When an item moves — received into stock, transferred between locations, picked for a job, returned from a machine, scrapped — Tooling Metrics records a move line. A move line is immutable: it captures what moved, how much, from where, to where, and when. Nothing is ever deleted; the history is permanent.

This design means:
- Inventory quantities are always computed from the sum of move lines, not stored as a single editable number
- You can always reconstruct the full history of any item or location
- Concurrent operations cannot create double-entries or race conditions

## Quantity types

Tooling Metrics tracks three quantity types per item, each derived from move lines in different states:

### On-hand

The physical quantity currently in storage at a location. On-hand updates the moment a move line is **completed** — when a pick list line is confirmed, a restock line is checked off, or a scrap is processed.

On-hand is what the warehouse actually holds right now.

### Forecast

The quantity expected to be on-hand after all pending operations complete. Forecast includes on-hand plus any move lines in **pending** or **in-progress** state — incoming purchase restocks, initiated transfers, and open pick lists not yet confirmed.

Forecast answers: *if everything currently in progress completes as planned, what will I have?*

This is what the Inventory Scheduler uses to decide whether a replenishment request is needed. If forecast is above the stock rule's Threshold Quantity, no request is created — even if on-hand is temporarily low due to a restock in progress.

### In-circulation

Items that have been picked for machine use but not yet returned. These are physically in the shop — on a workbench, in a machine crib, or being assembled — but are not in a storage location.

In-circulation = items picked − items returned.

This quantity matters for valuation: in-circulation items have been consumed from storage and usage cost has been posted against them. They are still tracked as the organization's assets until they are returned or scrapped.

## Operation types and their effect on quantities

| Operation | On-hand | Forecast | In-circulation |
|---|---|---|---|
| Purchase Restock (pending) | — | ↑ | — |
| Purchase Restock (completed) | ↑ | ↑ | — |
| Pick List (pending) | — | ↓ | — |
| Pick List (completed) | ↓ | ↓ | ↑ |
| Transfer (pending) | — | moves | — |
| Transfer (completed) | moves | moves | — |
| Return List (completed) | ↑ | ↑ | ↓ |
| Scrap (completed) | ↓ | ↓ | — |
| Inventory Adjustment | ↑/↓ | ↑/↓ | — |

*"moves" = decreases at source location, increases at destination location*

## Why numbers might look surprising

**On-hand is low but nothing was picked:** A pending pick list is reducing forecast but not yet on-hand. The pick list will complete when the operator confirms it.

**On-hand is zero but items are in the shop:** Items were picked and are in-circulation. They are not lost — they are at a machine or on a workbench.

**Forecast is higher than on-hand:** A purchase restock is pending. When the inventory team completes the put-away, on-hand will catch up to forecast.

**Replenishment was not triggered even though on-hand is below the threshold:** The scheduler uses forecast, not on-hand. If a restock is pending that will bring forecast above the Threshold Quantity, no additional purchase request is needed.
