Fluent Commerce Logo
Docs
Sign In

Reference behaviour: Inventory Batch, Inventory Position and Inventory Quantity (Quantities)with RESERVED & SALE

Essential knowledge

Authors:

Nandha Balaguru, Randy Chan

Changed on:

22 Apr 2025

Overview

Reference behaviour: Inventory Batch, Inventory Position and Inventory Quantity (Quantities)with RESERVED & SALE

Key points

  • This article will give a good understanding of Last On Hand and how OMS calculates the Inventory On Hand quantity.  
  • Covers how inventory quantity values are handled during the batch process.
  • For the Virtual Catalogue and Virtual Positions, please refer to the training articles.


Initial inventory is loaded into the system. It sets the base physical stock in OMS, representing the actual available inventory at that point which is 150 units.

No alt provided

Upsert payload would look as below:

No alt provided

After the batch inventory event had been processed, the IQ with the type LAST_ON_HAND was updated to 170. The IP on hand qty has also been updated to 170, and the same for IP Stock on Hand:

No alt provided


Next, create an order for this SKU with a quantity of 3 units.This action will trigger the creation of a fulfilment with 3 quantities in the

`AWAITING_WAVE`
status.

No alt provided

In the Inventory Position Screen, an ACTIVE RESERVED IQ has been created with qty = -3 against the fulfilment (the fulfilment ID is part of the IQ ref). As you can see, the IP on hand is now 167. (LAST ON HAND: 170 + RESERVED: -3)

No alt provided

The next step is to process the fulfilment.  So log on to Fluent STORE, create Wave and pick confirm the fulfilment:

No alt provided

After pick confirmation is completed, the filled quantity is updated in the fulfilment line section:

No alt provided


Order has been fully picked. The 3 units are no longer reserved but have now been physically moved from base stock. Upon pick confirmation, the reservation becomes

`INACTIVE`
, and a corresponding
`SALE`
record is made ACTIVE to reflect that the stock has officially transitioned from "
`reserved`
" to "
`sale`
."

No alt provided


Now, let's demonstrate how SALE IQ and RESERVED IQ behave when a new batch inventory upsert is sent to OMS.  

First, create a new order with 5 units:

No alt provided

Fulfilment created successfully:

No alt provided

In the Inventory Position Screen, a new RESERVED ACTIVE was created against the fulfilment. The latest IP on hand is 162.Active records are considered for the On-Hand Qty calculation 

No alt provided

Imagine that the store has not picked up the fulfilment overnight, and a nightly inventory sync is triggered with OMS.
In this case, the inventory quantity for the SKU at this location should be reported as 167.(LAST_ON_HAND should always reflect available including the reserved quantities when communicated to OMS.).

No alt provided

After the batch inventory event is processed:

  •  The LAST_ON_HAND IQ is updated to 167.  
  • The IP on-hand is 162. 
  • The SALE IQ is made INACTIVE.

OMS recalculates stock on hand with batch loads and inactivates past SALE records because they represent quantities that are picked & packed and are no longer part of the available stock. Active reservations remain untouched, as they represent the fulfilments which are not picked & packed.

No alt provided


Nandha Balaguru

Nandha Balaguru

Contributors:
Randy Chan