Spryker allows to define several storage locations in which the products are being stored. For a product we can have associated multiple stock product entries associated, each of them associated to a storage location.
A product is associated to at least one stock product. Stocks cannot be attached to abstract products ( only to concrete products) A stock can indicate that the product associated to it is never out of stock by using a specific flag.
Calculating the current stock for a product
A product quantity from a stock is being reserved when an order containing it is being processed. The state machine is doing this job of reserving stocks by setting the reserved flag. In order to calculate the available stock, it’s taken into account the maintained stock ( the sum of stocks from each storage location) but also the currently processed orders.