Most Powerful Open Source ERP

How to use the Stock tab: Current, Available and Future

How to use to use the Stock Tab, what the three columns current, available and future count and what happens when you click on one of those numbers
  • Last Update:2026-08-12
  • Version:001
  • Language:en

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.

The Views panel of a Product with the Stock entry selected

 

2. Choosing the report parameters

The parameter fields of the Stock report: Site, Owner, Metric Type, Quantity Unit

  • 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

The Stock tab after pressing Update, showing the stock 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.

Close up of the stock matrix with the Current, Available and Future columns

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

Movement history opened from the Current cell, 144 movements, all in current states

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

Available → 145 movements

Movement history opened from the Available cell, 145 movements, with an additional Confirmed line

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

Movement history opened from the Future cell, 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.