CRS uses the derived availability status for determining if a SKU is in stock, out of stock, or backorderable. To determine if a SKU is preorderable, however, the StoreInventoryManager class implements custom logic based on CRS-specific properties of the product item type. These custom properties are preorderable, useInventoryForPreorder, and preorderEndDate.

The logic works like this:

 
loading table of contents...