Class ExternalInventoryProvider
java.lang.Object
com.broadleafcommerce.orderoperation.service.provider.external.AbstractExternalProvider
com.broadleafcommerce.orderoperation.service.provider.external.ExternalInventoryProvider
- All Implemented Interfaces:
InventoryProvider
public class ExternalInventoryProvider
extends AbstractExternalProvider
implements InventoryProvider
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final String
protected static final String
static final String
Represents the hard inventory reservation type, typically used after an order is placed.Fields inherited from class com.broadleafcommerce.orderoperation.service.provider.external.AbstractExternalProvider
ENTITY_NOT_FOUND, RSQL_FILTER_PARAM
-
Constructor Summary
ConstructorsConstructorDescriptionExternalInventoryProvider
(org.springframework.web.reactive.function.client.WebClient webClient, com.fasterxml.jackson.databind.ObjectMapper objectMapper, com.broadleafcommerce.common.extension.TypeFactory typeFactory, ExternalInventoryProperties properties) -
Method Summary
Modifier and TypeMethodDescriptionprotected Optional<SkuInventoryReservationRequest>
buildInventoryReservationRequest
(@NonNull com.broadleafcommerce.order.client.domain.Order order, @NonNull com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected SkuInventoryReservationRequestGroup
buildSkuInventoryReservationRequestGroup
(@NotNull com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected ExternalInventoryProperties
protected String
getReservationUri
(com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Return the POST URI for Inventory Reservations.protected String
protected String
getSkuReferenceFieldType
(@NonNull com.broadleafcommerce.order.client.domain.Order order, @NonNull com.broadleafcommerce.order.client.domain.OrderFulfillment orderFulfillment, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to determine the sku reference field type on inventory calls.protected Optional<SkuInventoryReservationRequestGroup>
populateInventoryReservationRequestGroup
(@NotNull com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, Map<String, com.broadleafcommerce.order.client.domain.OrderItem> orderItemMap, Map<String, String> availabilityFailures, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected boolean
postProcessReservationResponse
(@NonNull com.broadleafcommerce.order.client.domain.Order order, @NonNull com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, SkuInventoryReservationResponse reservationResponse, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) boolean
reserveInventory
(@NonNull com.broadleafcommerce.order.client.domain.Order order, @NonNull com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Reserves inventory for the givenOrderFulfillment
.Methods inherited from class com.broadleafcommerce.orderoperation.service.provider.external.AbstractExternalProvider
addOffsetOrPageNumber, buildNotFoundException, executeRequest, getHeaders, getObjectMapper, getTypeFactory, getWebClient, isEntityNotFound, pageableToParams
-
Field Details
-
HARD_RESERVATION
Represents the hard inventory reservation type, typically used after an order is placed.- See Also:
-
DEFAULT_RESERVATION_REQUEST_TYPE
- See Also:
-
DEFAULT_SKU_REF_FIELD_TYPE
- See Also:
-
-
Constructor Details
-
ExternalInventoryProvider
public ExternalInventoryProvider(org.springframework.web.reactive.function.client.WebClient webClient, com.fasterxml.jackson.databind.ObjectMapper objectMapper, com.broadleafcommerce.common.extension.TypeFactory typeFactory, ExternalInventoryProperties properties)
-
-
Method Details
-
reserveInventory
public boolean reserveInventory(@NonNull @NonNull com.broadleafcommerce.order.client.domain.Order order, @NonNull @NonNull com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:InventoryProvider
Reserves inventory for the givenOrderFulfillment
.- Specified by:
reserveInventory
in interfaceInventoryProvider
- Parameters:
order
- the order associated to the fulfillmentfulfillment
- the fulfillment to reserve inventory forcontextInfo
- context information around sandbox and multitenant state.- Returns:
- true, if the inventory was successfully reserved
-
buildInventoryReservationRequest
protected Optional<SkuInventoryReservationRequest> buildInventoryReservationRequest(@NonNull @NonNull com.broadleafcommerce.order.client.domain.Order order, @NonNull @NonNull com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
populateInventoryReservationRequestGroup
protected Optional<SkuInventoryReservationRequestGroup> populateInventoryReservationRequestGroup(@NotNull @NotNull com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, Map<String, com.broadleafcommerce.order.client.domain.OrderItem> orderItemMap, Map<String, String> availabilityFailures, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
buildSkuInventoryReservationRequestGroup
protected SkuInventoryReservationRequestGroup buildSkuInventoryReservationRequestGroup(@NotNull @NotNull com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
getSkuReferenceFieldType
protected String getSkuReferenceFieldType(@NonNull @NonNull com.broadleafcommerce.order.client.domain.Order order, @NonNull @NonNull com.broadleafcommerce.order.client.domain.OrderFulfillment orderFulfillment, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to determine the sku reference field type on inventory calls. SkuInventory records can be looked up or reference by a number of field types, including:
SKU_CODE - Identifies a catalog item by a unique SKU code
SKU_EXTERNAL_ID - An ID in another 1st or 3rd party system (e.g. in an ERP)
SKU_CODE - Arbitrary SKU code UPC - Universal Product
Code EAN - European Article Number (aka International Article Number)
GTIN - Global Trade Item Number
The default is SKU_CODE.- Parameters:
order
- the order for the fulfillmentorderFulfillment
- the fulfillment being reservedcontextInfo
- context information surrounding sandboxing/multitenant state- Returns:
- the sku reference field type
-
postProcessReservationResponse
protected boolean postProcessReservationResponse(@NonNull @NonNull com.broadleafcommerce.order.client.domain.Order order, @NonNull @NonNull com.broadleafcommerce.order.client.domain.OrderFulfillment fulfillment, SkuInventoryReservationResponse reservationResponse, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
getReservationUri
protected String getReservationUri(@Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Return the POST URI for Inventory Reservations.- Parameters:
contextInfo
- context information surrounding sandboxing/multitenant state- Returns:
- the inventory reservation uri
-
getServiceClient
-
getProperties
-