Class DefaultSkuInventorySummaryService<T extends SkuInventoryAvailabilitySummary>
- Type Parameters:
T
-
- All Implemented Interfaces:
SkuInventorySummaryService<T>
SkuInventory
.- Author:
- Kelly Tisdell (ktisdell)
-
Constructor Summary
ConstructorDescriptionDefaultSkuInventorySummaryService
(SkuFieldReferenceTypeUtility skuFieldReferenceTypeUtility, SkuInventoryAvailabilityStrategy<? extends SkuInventory> skuInventoryAvailabilityStrategy, SkuInventoryRepository<com.broadleafcommerce.data.tracking.core.Trackable> skuInventoryRepository, com.broadleafcommerce.common.extension.TypeFactory typeFactory) -
Method Summary
Modifier and TypeMethodDescriptionprotected InventoryTransactionService<InventoryTransaction>
getQuantitySoftReservedByReferenceNumber
(Collection<String> referenceNumbers, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Gets a map of quantity from existing soft reservations by reference numbers.protected SkuFieldReferenceTypeUtility
protected SkuInventoryAvailabilityStrategy<? extends SkuInventory>
getSkuInventoryAvailabilityStrategy
(com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected SkuInventoryRepository<com.broadleafcommerce.data.tracking.core.Trackable>
protected com.broadleafcommerce.common.extension.TypeFactory
readConsolidatedAvailability
(Set<String> skuCodes, int minQuantityAvailable, Optional<Boolean> forShip, Optional<Boolean> forPickup, Optional<Boolean> inStore, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Returns the consolidated availability based on what is requested.readConsolidatedInventoryQuantities
(Set<String> skuCodes, Optional<Boolean> forShip, Optional<Boolean> forPickup, Optional<Boolean> inStore, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Returns aMap
of quantities available.readInventoryAvailability
(String skuRefFieldTpe, String skuReference, int minQuantityAvailable, Optional<Boolean> forShip, Optional<Boolean> forPickup, Optional<Boolean> inStore, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) readInventoryAvailability
(String skuRefFieldTpe, Map<String, Integer> skuReferenceQuantities, String inventoryLocationId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Reads inventory summary data, typically for browsing of SKUs or Products by a particular inventory location.readInventoryAvailability
(String skuRefFieldTpe, Map<String, Integer> skuReferenceQuantities, Optional<Boolean> forShip, Optional<Boolean> forPickup, Optional<Boolean> inStore, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Reads inventory summary data, typically for browsing of SKUs or Products.readInventoryAvailability
(List<SkuInventoryAvailabilityRequest> availabilityRequests, String skuRefFieldTpe, Optional<Boolean> forShip, Optional<Boolean> forPickup, Optional<Boolean> inStore, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Reads inventory summary data based on the givenSkuInventoryAvailabilityRequests
.void
setInventoryTransactionService
(InventoryTransactionService<InventoryTransaction> inventoryTransactionService)
-
Constructor Details
-
DefaultSkuInventorySummaryService
public DefaultSkuInventorySummaryService(SkuFieldReferenceTypeUtility skuFieldReferenceTypeUtility, SkuInventoryAvailabilityStrategy<? extends SkuInventory> skuInventoryAvailabilityStrategy, SkuInventoryRepository<com.broadleafcommerce.data.tracking.core.Trackable> skuInventoryRepository, com.broadleafcommerce.common.extension.TypeFactory typeFactory)
-
-
Method Details
-
readInventoryAvailability
public List<T> readInventoryAvailability(@NonNull String skuRefFieldTpe, @NonNull Map<String, Integer> skuReferenceQuantities, @NonNull Optional<Boolean> forShip, @NonNull Optional<Boolean> forPickup, @NonNull Optional<Boolean> inStore, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:SkuInventorySummaryService
Reads inventory summary data, typically for browsing of SKUs or Products.- Specified by:
readInventoryAvailability
in interfaceSkuInventorySummaryService<T extends SkuInventoryAvailabilitySummary>
- Returns:
-
readInventoryAvailability
public List<T> readInventoryAvailability(@NonNull List<SkuInventoryAvailabilityRequest> availabilityRequests, @NonNull String skuRefFieldTpe, @NonNull Optional<Boolean> forShip, @NonNull Optional<Boolean> forPickup, @NonNull Optional<Boolean> inStore, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:SkuInventorySummaryService
Reads inventory summary data based on the givenSkuInventoryAvailabilityRequests
.Existing soft reservations are excluded if
SkuInventoryAvailabilityRequest.getReferenceNumber()
is passed in. For example, if a SKU has total of 2 available and 1 is reserved for userA, and userA checks inventory availability for a quantity of 2 for the same SKU. The existing soft reservation is excluded from the check in this case, effectively making this request to check for an additional quantity of 1 to be available. However, if userB sends the same request to check availability for a quantity of 2 for the same SKU, it would return unavailable since only 1 is available as the other one is reserved for userA.- Specified by:
readInventoryAvailability
in interfaceSkuInventorySummaryService<T extends SkuInventoryAvailabilitySummary>
- Parameters:
availabilityRequests
- the list ofSkuInventoryAvailabilityRequests
to processskuRefFieldTpe
- the type of the sku ref fieldforShip
- indicates if the SKU should be available for shippingforPickup
- indicates if the SKU should be available for pickupinStore
- indicates if the SKU should be available in storecontextInfo
- the ContextInfo of the request- Returns:
-
readInventoryAvailability
public List<T> readInventoryAvailability(String skuRefFieldTpe, Map<String, Integer> skuReferenceQuantities, String inventoryLocationId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:SkuInventorySummaryService
Reads inventory summary data, typically for browsing of SKUs or Products by a particular inventory location.- Specified by:
readInventoryAvailability
in interfaceSkuInventorySummaryService<T extends SkuInventoryAvailabilitySummary>
- Returns:
-
readInventoryAvailability
public T readInventoryAvailability(String skuRefFieldTpe, String skuReference, int minQuantityAvailable, Optional<Boolean> forShip, Optional<Boolean> forPickup, Optional<Boolean> inStore, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) - Specified by:
readInventoryAvailability
in interfaceSkuInventorySummaryService<T extends SkuInventoryAvailabilitySummary>
- Returns:
-
readConsolidatedAvailability
public List<ConsolidatedInventoryAvailability> readConsolidatedAvailability(Set<String> skuCodes, int minQuantityAvailable, Optional<Boolean> forShip, Optional<Boolean> forPickup, Optional<Boolean> inStore, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:SkuInventorySummaryService
Returns the consolidated availability based on what is requested. This is typically used by other, aggregate services, such as Search Services, to indicate if a SKU is available for search or filtering purposes. Callers will typically setContextInfo.setIgnoreNarrowing(boolean)
to true so that all availability is returned for the tenant and all associated applications.- Specified by:
readConsolidatedAvailability
in interfaceSkuInventorySummaryService<T extends SkuInventoryAvailabilitySummary>
- Parameters:
skuCodes
- A Set of values associated with the skuCode field onSkuRef
minQuantityAvailable
- The minimum quantity requested for all SKUs queriedforShip
- Indicates if the SKU should be available for shippingforPickup
- Indicates if the SKU should be available for pickupinStore
- Indicates if the SKU should be available in storecontextInfo
- The ContextInfo of the request.- Returns:
-
readConsolidatedInventoryQuantities
public Map<String,Long> readConsolidatedInventoryQuantities(@NonNull Set<String> skuCodes, @NonNull Optional<Boolean> forShip, @NonNull Optional<Boolean> forPickup, @NonNull Optional<Boolean> inStore, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:SkuInventorySummaryService
Returns aMap
of quantities available. The Map has a key that represents the SKU with a value that represents the quantity available for that SKU.- Specified by:
readConsolidatedInventoryQuantities
in interfaceSkuInventorySummaryService<T extends SkuInventoryAvailabilitySummary>
- Parameters:
skuCodes
- the sku codesforShip
- whether this inventory can be shippedforPickup
- whether this inventory can be picked upinStore
- whether this inventory is for in store- Returns:
-
getQuantitySoftReservedByReferenceNumber
protected Map<String,Integer> getQuantitySoftReservedByReferenceNumber(Collection<String> referenceNumbers, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Gets a map of quantity from existing soft reservations by reference numbers.The only time when there are 2 soft reservations for the same reference number would be for serialized SKUs, as the same reservation is done for the parent. In this case, only one of the soft reservations is counted to prevent double counting the soft reserved quantities.
- Parameters:
referenceNumbers
- the reference numbers to look forcontextInfo
- context information related to multitenancy- Returns:
- a map of quantity from existing soft reservations by reference numbers
-
getSkuInventoryAvailabilityStrategy
protected SkuInventoryAvailabilityStrategy<? extends SkuInventory> getSkuInventoryAvailabilityStrategy(com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
getSkuFieldReferenceTypeUtility
-
getSkuInventoryRepository
@NonNull protected SkuInventoryRepository<com.broadleafcommerce.data.tracking.core.Trackable> getSkuInventoryRepository() -
getTypeFactory
@NonNull protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory() -
getInventoryTransactionService
-
setInventoryTransactionService
@Autowired public void setInventoryTransactionService(InventoryTransactionService<InventoryTransaction> inventoryTransactionService)
-