Interface InventoryProcessor
- All Superinterfaces:
BusinessObject,BusinessProcessor
- All Known Implementing Classes:
BasicInventoryProcessor
Interface for business logic methods having to do with SKUs and inventory.
CartProcessor employs an
instance implementing InventoryProcessor when inventory needs
to be processed.
When the application needs to create an instance that implements
InventoryProcessor,
BusinessObjectFactory
finds the name of the Java class to instantiate from the
"inventoryProcessorImplementer" setting in the
appComponents.properties file.
The default "inventoryProcessorImplementer" is
BasicInventoryProcessor.
-
Method Summary
Modifier and TypeMethodDescriptiondefineInventorySettings(Product product, Collection attributeSKUCollection) Inspects a Product and returns a Map of useful variables related to the state of the product's inventory.processAddItems(Collection orderItems) Processes inventory as newOrderItems are added to a user's cart.processInventory(Collection orderItems, Map productSettings, Collection matchingSkus, String decrementBehavior) Generically processes inventory, returning a Map with information about items and skus.processOnCheckout(Map parameters) Checks inventory for a user's cart during checkout.processOrderComplete(Map parameters) Processes inventory for a user's cart as an order is completed.Methods inherited from interface com.softslate.commerce.businessobjects.core.BusinessObject
initializeMethods inherited from interface com.softslate.commerce.businessobjects.core.BusinessProcessor
getAppComponents, getAppSettings, getBusinessObjectFactory, getDaoFactory, getEventBus, getInjector, getSettings, getUser, setAppComponents, setAppSettings, setBusinessObjectFactory, setDaoFactory, setEventBus, setInjector, setSettings, setUser, utils
-
Method Details
-
processAddItems
Processes inventory as newOrderItems are added to a user's cart. Decrements inventory levels (in the memory objects) if products are set to be decremented upon being added to a cart. (Objects are updated in the database byBasicCartProcessor.processAddItems(Collection), which is what calls this method.)The default implementation of this method does the following:
- Loads the inventory settings in effect for each of the products
corresponding to the
OrderItems being added. - Calls
BaseBusinessProcessor.loadMatchingSkus(Collection, Collection, Collection)to load the skus corresponding to theOrderItems. - Calls
processInventory(Collection, Map, Collection, String)to process the inventory. - Removes any order items that were rejected because one of their corresponding SKUs are out of stock.
- Adjusts the quantities of any order items whose quantities exceed the quantity in stock.
- Calls
CartProcessor.processQuantities(Collection)to update the cart with the new quantities.
- Parameters:
orderItems- TheCollectionofOrderItemobjects being added to the cart.- Returns:
- A
Mapcontaining results of the processing. In the default implementation, theMapis the same as the one returned byprocessInventory(Collection, Map, Collection, String)(which this method calls). - Throws:
Exception- See Also:
- Loads the inventory settings in effect for each of the products
corresponding to the
-
processOnCheckout
Checks inventory for a user's cart during checkout. This step takes places as the user passes through checkout, but before submitting payment information. Makes sure that if products are to be decremented on checkout, no skus are out of stock. Inventory does not get decremented with this method.The default implementation of this method largely follows the same steps as
processAddItems(Collection).- Parameters:
parameters- The most recent parameters submitted by the user.- Returns:
- A
Mapcontaining results of the processing. In the default implementation, theMapis the same as the one returned byprocessInventory(Collection, Map, Collection, String)(which this method calls). - Throws:
Exception- See Also:
-
processOrderComplete
Processes inventory for a user's cart as an order is completed. This step takes place after a successful payment processing. Inventory is decremented at this point for products set to be decremented on checkout.- Parameters:
parameters- The most recent parameters submitted by the user.- Returns:
- A
Mapcontaining results of the processing. In the default implementation, theMapis the same as the one returned byprocessInventory(Collection, Map, Collection, String)(which this method calls). - Throws:
Exception
-
processInventory
Map processInventory(Collection orderItems, Map productSettings, Collection matchingSkus, String decrementBehavior) throws Exception Generically processes inventory, returning a Map with information about items and skus. Does not change the order items being checked.- Parameters:
orderItems- ACollectionofOrderItemobjects being processed.productSettings- AMapofCollectionsrepresenting the inventory settings in effect for the products in theOrderItems.matchingSkus- ACollectionofMaps representing all the SKUs associated with theOrderItems.decrementBehavior- AStringrepresenting when inventory is to be decremented. Either "onAddingToCart" or "onOrderCompletion".- Returns:
- A
Mapcontaining results of the processing. In the default implementation, the keys of theMapinclude:skusToDecrement: ACollectionofMaps, each representing aSKUthat is to be decremented as result of the processing.decrementedSKUs: AMapwhose keys areOrderItemobjects and whose values are comma-separatedStrings representing the ids of theSKUobjects corresponding to theOrderItemthat are to be decremented. (Used to populate theOrderItem'sdescrementedSKUsproperty.)rejectedOrderItems: ACollectionofOrderItemobjects that have been removed from the user's cart due to their being out of stock.adjustedQuantities: AMapwhose keys areOrderItemobjects and whose values areStrings representing theOrderItems new quantity, after being adjusted because not enough inventory is available.newOOSSKUs: ACollectionofMaps, each representing aSKUthat has just reached its out of stock level as result of the processing.productsToDeactivate: ACollectionofStrings, each representing the id of aProductobject that should now be deactivated because aSKUassociated with it has just gone out of stock.lowStockEmails: ACollectionofMaps, each representing aSKUthat has reached its 'low stock' level, and should trigger a low stock email as a result.
- Throws:
Exception
-
defineInventorySettings
Inspects a Product and returns a Map of useful variables related to the state of the product's inventory.- Parameters:
product-attributeSKUCollection- An optional Collection of attribute-only SKUs used to define the inventory settings that are returned.- Returns:
- A Map of variables related to the product's inventory.
-