Inventory management
Inventory granularity
Inventory dimensions
In Hubble, Inventory is tracked with a low granularity, which includes the 5 below dimensions:
- SKU: basic unit to track stock, representing a similar version of a commercial product (see SKU definition on Wikipedia)
- Warehouse: represents a place where is stored the physical stock
- Owner: reason to dedicate stock for a specific sales channel, or a business unit who owns the stock
- Lot or S/N: if the stock is tracked by production lot or production serial numbers
- Expiry date: if the stock has an expiry or best before date
The stock given for a set of these 5 dimensions is called a Stock Line. A Stock Line is then the lowest granularity of stock tracking in Hubble.
Inventory positions
A Stock Line is composed within 4 stock positions:
- Incoming: an inbound order is created, but the stock is not received yet.
- Available: stock is available for sales.
- Allocated: an outbound order is created and the stock is reserved for such order.
- Blocked: the stock is blocked for some reason (damaged, expired), hence not available for sales.
Stock on hand is the stock counted inside the 4 walls of a warehouse. Therefore is it the sum of Available, Allocated and Blocked
Example
| SKU | Warehouse | Owner | Lot or S/N | Expiry date | Incoming | Available | Allocated | Blocked | Stock on Hand |
|---|---|---|---|---|---|---|---|---|---|
| A001 | Bonded Warehouse | Common | L2023001 | 01/08/2025 | 100 | 178 | 20 | 2 | 200 |
| A001 | Non-bonded Warehouse | B2C stock | L2023001 | 01/08/2029 | 0 | 50 | 12 | 0 | 62 |
| A001 | Non-bonded Warehouse | B2B stock | L2023001 | 01/08/2029 | 0 | 120 | 0 | 0 | 120 |
| B001 | Bonded Warehouse | Common | L2023087 | 01/03/2027 | 1200 | 0 | 0 | 0 | 0 |
The above stock has 4 stock lines.
- SKU A001 (3 lines) is:
- in Bonded warehouse, with incoming quantities (100 from factory for example), allocated quantities (20 for an export order for example) and locked quantities (2 pieces were damaged on the last reception)
- in Non-bonded warehouse
- part of the stock is dedicated to to B2C, and 12 pieces are reserved for some ecom orders not shipped yet
- part of the stock is dedicated to to B2B, all orders have been shipped.
- SKU B001 is a new SKU, with 1200 pieces expected from the factory
Inventory Transactions
A transaction records a stock change, and any stock change will be recorded by a transaction.
A transaction is directly linked to a Stock Line, and therefore will record a change on a given SKU, warehouse, owner, lot or S/N and expiry date.
The recorded change could be either a move from a position to another one, either an adjustment on one of the position (plus or minus).
Transactions are frozen data: transactions are written once by Hubble, and can never be changed later on.
The movements between positions could be due to one of the below scenarios.
Order flow
For a typical order flow, IN and OUT from a warehouse:
- When an inbound order is created, the stock is tracked as incoming to warehouse: + Incoming
- When an inbound order is received, the stock becomes available for sales: - Incoming & + Available
- When an outbound order is created, the stock is allocated: - Available & + Allocated
- When an outbound order is shipped, the stock is removed from Hubble: - Allocated
As exceptions:
- When an inbound order is cancelled, the stock is untracked from incoming: - Incoming
- When an outbound order is cancelled, the stock is de-allocated: - Allocated & + Available
Stock management
In case of stock management outside of order flow:
- Positive adjustment: if some stock is found during stock-take: + Available
- Negative adjustment: If some stock is lost during stock-take, some stock need to be destroyed (defective), ... : - Available
- Block stock: The stock can't be sold temporarily or definitively (ex: quarantine, damaged, expired, end of season, ...): - Available & + Blocked
- Release stock: The sock can be back to sales (ex: end of quarantine) - Available
- Change dimension: It is also possible to have changes directly in the Available stock, in case of one of the dimension has to be changed, because of a wrong input at receiving:
- SKU change
- Owner change
- Lot change
- Expiry date change
For more practical example of Stock Transactions, check a real example here