How to use the Stock tab: Current, Available and Future
Every resource in ERP5 — a Product, a Component — carries a Stock tab. It is not an ordinary view but a report: a small parameter dialog on top, and below it a matrix with one line per warehouse and three quantity columns, Current, Available and Future.
This guide shows how to open the tab, what the three columns actually count, and what happens when you click on one of the numbers.
1. Opening the tab
Open a Product or a Component, open the Views panel on the left and choose Stock.

2. Choosing the report parameters

- Site — restrict the report to one warehouse category (
node_category). Left empty, the report lists every node at which this resource has ever moved.
- Owner — restrict to a section category (
section_category), i.e. the legal entity that owns the stock.
- Metric Type and Quantity Unit — convert the quantities into another unit before they are displayed.
- Some instances add a Ledger selector here.
Press Update to recompute. The listbox remembers the selection you used last time, so when you come back to the tab you may already see the numbers of your previous run — press Update again after changing a parameter.
3. Reading the matrix

There is one line per combination of Warehouse, Owner and Variation. The blue Total line at the bottom is a separate statistic computed over the whole report, not the sum of the page you are looking at.

Note that the lines are not restricted to your own sites. Every node at which a movement was booked appears here, including suppliers and customers — which is why some of those lines carry negative quantities: goods left that node in the books without a matching counter-booking.
4. What the three columns mean
All three columns run the same stock query. They only differ in which workflow states the movements are allowed to be in.
ERP5 sorts workflow states into four groups. A state joins a group through the state_type property of the Workflow State, and getPortalCurrentInventoryStateList() and its siblings collect those states across all workflows into one flat set of state references. On a typical ERP5 confiug instance the groups are:
| Group |
States on this instance |
Typical document and state |
future_inventory |
auto_planned, ordered, planned |
Purchase Order / Sale Order in Planned or Order Placed |
reserved_inventory |
confirmed, ready |
Purchase / Sale Packing List in Confirmed or Ready |
transit_inventory |
started |
Packing List in Shipped |
current_inventory |
acknowledged, delivered, stopped |
Packing List in Received or Delivered |
With those groups, the three columns are defined as follows.
- Current — movements in the current and transit states, with
omit_transit=1. The flag makes transit movements count only as an outgoing movement: goods that have been shipped have already left the sending node, but have not yet arrived at the receiving one.
- Available — Current, minus the outgoing movements in the reserved states (
omit_input=1). This is the quantity you can still promise to somebody else.
- Future — everything: future, reserved, transit and current states together, with no transit or reservation special case.
Consequently Available is never above Current, while Future can be either above or below it, depending on whether more is on order than is reserved.
5. Clicking on a cell
Every number in the matrix is a link. Clicking it opens the Movement History of the same warehouse, owner and variation, filtered to exactly the states of the column you clicked. These are the parameters that are actually handed over, read from this instance:
Current simulation_state: [acknowledged, delivered, stopped, started]
omit_transit: 1
transit_simulation_state: [started]
Available simulation_state: [acknowledged, delivered, stopped, started]
omit_transit: 1
transit_simulation_state: [started]
reserved_kw: {simulation_state: [confirmed, ready],
transit_simulation_state: [started],
omit_input: 1}
Future simulation_state: [auto_planned, ordered, planned, started,
confirmed, ready,
acknowledged, delivered, stopped]
This mapping is built by InventoryBrain.getListItemParamDict(), so it is the same in every ERP5 report that uses inventory brains.
6. A worked example
In the matrix above, the line Nexedi Stock reads Current 8, Available 7, Future 13. Clicking each of the three numbers gives:
Current → 144 movements

Sorted by date descending, every line is in a current state (Delivered, Received, Recorded).
Available → 145 movements

One line more than Current: the top row, quantity -1, state Confirmed. That is a reserved outgoing movement, and it is exactly the difference between the two columns: 8 − 1 = 7.
Future → 146 movements

One line more again — a movement in a future state, further down the list, worth +6. The arithmetic closes: 8 − 1 + 6 = 13.
The record count in the listbox header (Movements (1 - 20 / N)) is the fastest way to confirm that the three columns really apply different filters. Sorting by Date descending helps, because the movements that make the columns differ are normally the most recent ones.
7. Things to watch out for
- The state groups are instance configuration, not a constant. Before you rely on the table above, check your own instance with
getPortalCurrentInventoryStateList(), getPortalReservedInventoryStateList(), getPortalTransitInventoryStateList() and getPortalFutureInventoryStateList(). An instance with customised trade workflows can easily have submitted, approved or to_manufacture in the future group.
- A group is a flat set of state ids across all workflows. If a state id such as
stopped is marked current_inventory in one workflow, every document sitting in a state with that id counts as current stock — whatever workflow it belongs to.
- Negative lines are normal for nodes that are not your own sites.