The SwitchingInventoryManager component determines which InventoryManager to use in ASA. If a location is not specified, the existing StoreInventoryManager that extends the RepositoryInventoryManager is used. When a specific location is used and the inventory at a specific location is requested, the SIMInventoryManager is used.
An example configuration:
# /atg/commerce/inventory/InventoryManager.properties $class=atg.projects.store.mobile.inventory.SwitchingInventoryManager # in-store items will use the new SIMInventoryManager inStoreInventoryManager=/atg/.../SIMInventoryManager # online items will use the existing atg.projects.store.inventory.StoreInventoryManager component onlineInventoryManager=/atg/.../RepositoryInventoryManager
A coding example:
LocationInventoryManager determineInventoryManager(String pID, String pLocationID) {
// if a location is specified, use the SIMInventoryManager
if (pLocationID != null) return getInStoreInventoryManager();
// no location specified means the item is being shipped from the "online warehouse"
// return the
return getOnlineInventoryManager();
}
public int purchase (String pId, long pHowMany, String pLocationId) {
return determineInventoryManager(pId, pLocationId()).purchase(pId, pHowMany, pLocationId);
}
