Overview
Inventory management framework provides a flexible and non-restrictive data entry mechanism. The fundamental data objects that are responsible for stock management are fulfilment centre (FC) (a.k.a. warehouse) and SKU inventory . Fulfilment centre allows to define a logical or physical location of the inventory whereas SKU inventory specifies the quantity and SKU code to which this quantity relates to 3.7.0+ together with fulfilment options. Thus it is possible to manage inventory for SKU that is not yet part of the catalog, i.e. non-restrictive data entry. This allows business user to effectively manage inventory and PIM separately from each other.
Each shop can be assigned one or more fulfilment centres thus providing the link between the inventory and SKU that are available in a given shop.
The overall depiction of the inventory management can be seen in the figure below:
Fulfilment centre management
Fulfilment centres (FC) are used to define a logical or physical location of the inventory depending on how the business manages their inventory. Example of a logical location could be "Discontinued stock items" or "Used items for sale". Using a separate FC would allow to logically separate these kind of products which can aid later on in configuring FC specific pricing, adjust content or email content to reflect some of the specifics of the items.
For businesses that manage inventory through own ERP system(s) it is recommended to create FC per each data feed.
For businesses that would like to manage inventory within the platform it is recommended to create FCs that represent physical locations to track inventory levels more effectively including any logical FCs which may have different pricing requirements or content specific requirements.
In order to add FC a code, name must be specified and optionally a location and additional fulfilment options.
Additional configurations allow to adjust the behaviour at the checkout:
- Standard stock default lead time - defines standard time required to prepare the order before it is shipped if all items in order delivery are available. This will influence approximate delivery date calculation.
- Backorder stock default lead time - defines backorder time required to prepare the order before it is shipped if any items in order delivery are not currently available (backorder). This will influence approximate delivery date calculation.
- Partial deliveries available - controlled whether partial shipment are available and deliveries can be split further by availability
- Force separate delivery for each item 4.1.0 - forces separate delivery for all items in the order fulfilled by given centre
- Force separate delivery for backorder item 4.1.0 - forces separate delivery for out of stock or unavailable items in the order fulfilled by given centre
Inventory management
SKU inventory records are managed per FC using the inventory management section. This section provides various searching options to find specific SKU inventory record.
In order to add an inventory record the minimum requirement is to fill in SKU code and quantity on stock.
Quantity represents the actual quantity of given SKU in stock. "Reserved" represents the quantity of SKU, which is currently required to fulfil orders that are "in progress". Therefore available to sell quantity (ATS) is "ATS = Quantity - Reserved" subject to the availability mode set on the inventory record.
When editing inventory record it is only possible to adjust the quantity to indicate a different level of stock. Reserved quantities can only be manipulated automatically by order state machine.
Availability configuration encompasses type and date range. The date range allows to define when the product starts being available (i.e. Available from) and when it is taken off the sales (i.e. Available to). These dates define the period when product is visible on the storefront. Availability type defines how inventory is handled for this products. The following types are available:
Availability type | Date range | Behaviour |
---|---|---|
Standard | available from < now < available to | Product must have enough items in stock for the order to be placed. Standard products that are fully out of stock will not appear in frontend. Multi SKU products that has at least one SKU in stock are considered in stock If you require behaviour for not allowing to buy out of stock items but still show them in searches use Back order with ProductAvailabilityStrategyBackorderInStockOnly configuration enabled for shop that requires this behaviour |
Always | available from < now < available to | Stock is completely ignored. This type is used for digital products or when inventory management is not important (i.e. there is always more than enough) |
Showroom | available from < now < available to | Cannot be purchased. These products are for customers to have a look and read about. Showroom items are usually prototypes, or could be items that will be soon available (e.g. fashion collection for next season). This type of product is more for raising interest and advertisement purposes |
Back order | available from < now < available to | Products that can be purchased even if there is not enough items in stock. The assumption is that the shop can re-stock and fulfil the order If you require behaviour for not allowing to buy out of stock items but still show them in searches enable ProductAvailabilityStrategyBackorderInStockOnly configuration for shop that requires this behaviour |
Pre-order 3.6.0 | now < available to | Products that have not yet been released. The assumption is that the shop can re-stock and fulfil the orders after product release date. Orders with pre-ordered items are kept in 'in progress' state until release date has passed at which point they are treated as back orders. |
Release 3.7.0+ is release date for products on pre-order. In earlier versions this was controlled via "Pre-order" availability, which reverted to "Back-order" mode after release date. Now availability can be set independently and release date in the future results in "Pre-order" products. Orders with pre-ordered items are kept in 'in progress' state until release date has passed at which point they are treated in accordance to availability mode.
Orderable quantity configuration consists of minimum, maximum and step quantity that allow to set quantity constraints on a particular product. For example heavy weight items may have a maximum quantity cap to prevent customers ordering amounts that cannot be physically delivered. Minimum quantity can be set for cheap items, so that a minimum amount must be ordered, which is useful when you have minimum transaction fee on the payment gateway. Minimum amount is especially useful for back order type items where shop logistics managers can set a threshold which makes it feasible to order another batch. Step quantity is effective when items are sold as packages. Consider fabrics that are sold in rolls of 20 meters. Shop manager can set step quantity to 20 so that customer will only be able to choose 20, 40, 60 etc thus preventing them from ordering less than a full roll.
It is recommended that most of the inventory management will be done via manual or automatic import process.
Inventory behaviour customisation
Since 3.5.0+ it is possible to configure Inventory availability resolution provider via configuration. Your custom modules can be injected via extension points and then activated via system configurations (System > Configurations).
For example use of Restriction on Backorder stock can be configured like so:
SHOP10.productAvailabilityStrategy=productAvailabilityStrategyBackorderInStockOnly
Order splitting
FCs have direct impact on how order is formed and fulfilled. If order contains items from multiple FCs the platform automatically performs order splitting per FC.
This allows:
- For each FC to fulfil their part of the order (i.e. delivery) on their own terms (available shipping methods and lead times, available payment methods) and provide automatic updates (in case of auto integrations) to progress deliveries in isolation.
- Provide automatic order exports to FC with items relevant only to specific delivery