Class VirtualFulfillmentPricingProvider
- java.lang.Object
-
- com.broadleafcommerce.shipping.service.integrations.virtual.VirtualFulfillmentPricingProvider
-
- All Implemented Interfaces:
FulfillmentPricingProvider
public class VirtualFulfillmentPricingProvider extends Object implements FulfillmentPricingProvider
-
-
Constructor Summary
Constructors Constructor Description VirtualFulfillmentPricingProvider(com.fasterxml.jackson.databind.ObjectMapper objectMapper, com.broadleafcommerce.common.extension.TypeFactory typeFactory, VirtualFulfillmentPricingProperties virtualShipProps)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected com.broadleafcommerce.shipping.domain.FulfillmentOptionPricedResponsebuildFulfillmentOptionPricedResponse(@NonNull javax.money.MonetaryAmount price, @NonNull Map<com.broadleafcommerce.shipping.domain.FulfillmentPricingItem,javax.money.MonetaryAmount> itemToPriceMap, @NonNull VirtualFulfillmentPricingOption fulfillmentOption, boolean isEstimate)Builds aFulfillmentOptionPricedResponsewith the given inputs.protected Map<com.broadleafcommerce.shipping.domain.FulfillmentPricingItem,javax.money.MonetaryAmount>buildItemToPriceMap(@NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request, @NonNull VirtualFulfillmentPricingOption option, @NonNull javax.money.CurrencyUnit currency)Builds a map ofFulfillmentPricingItemsto the calculated prices.com.broadleafcommerce.shipping.domain.FulfillmentOptionPricedResponsecalculateCostForFulfillmentGroup(com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request)Calculate shipping for a request that includes a specified fulfillment option.protected com.broadleafcommerce.shipping.domain.FulfillmentOptionPricedResponsecalculateCostForFulfillmentGroupInternal(@NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request, boolean isEstimate)Calculates the shipping costs of the fulfillment items based on the fulfillment option on the request.protected javax.money.MonetaryAmountcalculateFixedPriceForItem(@NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item, @NonNull VirtualFulfillmentPricingOption option, @NonNull javax.money.CurrencyUnit currency)Calculates the fixed price for the fulfillment item, i.e.protected javax.money.MonetaryAmountcalculateFulfillmentGroupPriceBeforeAdjustments(@NonNull VirtualFulfillmentPricingOption option, @NonNull javax.money.CurrencyUnit currency)Calculates the fixed fulfillment price per fulfillment group.protected javax.money.MonetaryAmountcalculatePercentageBasedPriceForItem(@NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item, @NonNull VirtualFulfillmentPricingOption option, @NonNull javax.money.CurrencyUnit currency)protected javax.money.MonetaryAmountcalculatePercentageBasedPriceForItems(@NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item, @NonNull VirtualFulfillmentPricingOption option, @NonNull javax.money.CurrencyUnit currency)protected javax.money.MonetaryAmountcalculatePriceForItem(@NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item, @NonNull VirtualFulfillmentPricingOption option, @NonNull javax.money.CurrencyUnit currency)Deprecated.protected javax.money.MonetaryAmountcalculatePriceForItems(@NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item, @NonNull VirtualFulfillmentPricingOption option, @NonNull javax.money.CurrencyUnit currency)Calculates the price for a fulfillment items.booleancanCalculateCostForOption(String fulfillmentOptionName)Whether this provider has knowledge of the provided option and thus can provide cost information for it.booleancanProvidePricedFulfillmentOptions(com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest fulfillmentPricingRequest)Whether this provider can provide fulfillment options based on the "fulfillmentPricingRequest"com.broadleafcommerce.shipping.domain.FulfillmentOptionPricedResponseestimateCostForFulfillmentGroup(com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request)Estimate shipping for a request that includes a specified fulfillment option.protected VirtualFulfillmentPricingOptiongetDefaultVirtualFulfillmentPricingOption(@NonNull javax.money.CurrencyUnit currency)Builds aVirtualFulfillmentPricingOptionwith fields initialized to typical values.protected javax.money.MonetaryAmountgetMonetaryAmount(javax.money.CurrencyUnit expectedCurrency, Set<com.broadleafcommerce.shipping.domain.FulfillmentPriceAmount> fulfillmentPriceAmounts)Find the corresponding price for the expected currency, otherwise return zero.protected com.fasterxml.jackson.databind.ObjectMappergetObjectMapper()protected com.broadleafcommerce.common.extension.TypeFactorygetTypeFactory()protected VirtualFulfillmentPricingConfiggetVirtualFulfillmentPricingConfig()protected VirtualFulfillmentPricingPropertiesgetVirtualShipProps()voidinit()Reads in the configuration file defined byVirtualFulfillmentPricingProperties.getConfigPath()and initializesvirtualFulfillmentPricingConfigto the result.List<com.broadleafcommerce.shipping.domain.FulfillmentOptionPricedResponse>providePricedFulfillmentOptions(com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request)Retrieve all possible priced fulfillment options for the provided request.protected javax.money.CurrencyUnitresolveCurrency(com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.broadleafcommerce.shipping.service.integrations.FulfillmentPricingProvider
getFulfillmentOptionPricingResponses
-
-
-
-
Constructor Detail
-
VirtualFulfillmentPricingProvider
public VirtualFulfillmentPricingProvider(com.fasterxml.jackson.databind.ObjectMapper objectMapper, com.broadleafcommerce.common.extension.TypeFactory typeFactory, VirtualFulfillmentPricingProperties virtualShipProps)
-
-
Method Detail
-
init
@PostConstruct public void init()
Reads in the configuration file defined byVirtualFulfillmentPricingProperties.getConfigPath()and initializesvirtualFulfillmentPricingConfigto the result.- Throws:
UncheckedIOException- Thrown when there is an error while reading the configuration file or converting its contents into aVirtualFulfillmentPricingConfig.IllegalStateException- Thrown when there is not configuration file defined byVirtualFulfillmentPricingProperties.getConfigPath().
-
providePricedFulfillmentOptions
public List<com.broadleafcommerce.shipping.domain.FulfillmentOptionPricedResponse> providePricedFulfillmentOptions(com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request)
Description copied from interface:FulfillmentPricingProviderRetrieve all possible priced fulfillment options for the provided request. Intended to be used to display options to the customer for selection.- Specified by:
providePricedFulfillmentOptionsin interfaceFulfillmentPricingProvider- Parameters:
request- The request for which to calculate shipping and return options.- Returns:
- All possible priced fulfillment options for the provided request.
-
canProvidePricedFulfillmentOptions
public boolean canProvidePricedFulfillmentOptions(com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest fulfillmentPricingRequest)
Description copied from interface:FulfillmentPricingProviderWhether this provider can provide fulfillment options based on the "fulfillmentPricingRequest"- Specified by:
canProvidePricedFulfillmentOptionsin interfaceFulfillmentPricingProvider- Parameters:
fulfillmentPricingRequest- The request used to identify relevant fulfillment options- Returns:
- Whether this provider can provide fulfillment options based on the "fulfillmentPricingRequest"
-
calculateCostForFulfillmentGroup
public com.broadleafcommerce.shipping.domain.FulfillmentOptionPricedResponse calculateCostForFulfillmentGroup(com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request)
Description copied from interface:FulfillmentPricingProviderCalculate shipping for a request that includes a specified fulfillment option.- Specified by:
calculateCostForFulfillmentGroupin interfaceFulfillmentPricingProvider- Parameters:
request- The request for which to calculate shipping.- Returns:
- Response object with calculated shipping cost for the provided request.
-
canCalculateCostForOption
public boolean canCalculateCostForOption(String fulfillmentOptionName)
Description copied from interface:FulfillmentPricingProviderWhether this provider has knowledge of the provided option and thus can provide cost information for it.- Specified by:
canCalculateCostForOptionin interfaceFulfillmentPricingProvider- Parameters:
fulfillmentOptionName- The option to consider whether this provider can calculate cost information.- Returns:
- Whether this provider has knowledge of the provided option and thus can provide cost information for it.
-
estimateCostForFulfillmentGroup
public com.broadleafcommerce.shipping.domain.FulfillmentOptionPricedResponse estimateCostForFulfillmentGroup(com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request)
Description copied from interface:FulfillmentPricingProviderEstimate shipping for a request that includes a specified fulfillment option.- Specified by:
estimateCostForFulfillmentGroupin interfaceFulfillmentPricingProvider- Parameters:
request- The request for which to estimate shipping.- Returns:
- Response object with estimated shipping cost for the provided request.
-
calculateCostForFulfillmentGroupInternal
protected com.broadleafcommerce.shipping.domain.FulfillmentOptionPricedResponse calculateCostForFulfillmentGroupInternal(@NonNull @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request, boolean isEstimate)Calculates the shipping costs of the fulfillment items based on the fulfillment option on the request. Handles the shared logic ofcalculateCostForFulfillmentGroup(FulfillmentPricingRequest)andestimateCostForFulfillmentGroup(FulfillmentPricingRequest).- Parameters:
request- The request for which to calculate shippingisEstimate- Whether or not the shipping should be estimated- Returns:
- fulfillment price information for request based on the fulfillment option.
-
buildItemToPriceMap
protected Map<com.broadleafcommerce.shipping.domain.FulfillmentPricingItem,javax.money.MonetaryAmount> buildItemToPriceMap(@NonNull @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request, @NonNull @NonNull VirtualFulfillmentPricingOption option, @NonNull @NonNull javax.money.CurrencyUnit currency)
Builds a map ofFulfillmentPricingItemsto the calculated prices.- Parameters:
request- The request for which to calculate shippingoption- The fulfillment option to use to calculate pricing for therequest- Returns:
- a map of
FulfillmentPricingItemsto the calculated prices.
-
calculatePriceForItem
@Deprecated protected javax.money.MonetaryAmount calculatePriceForItem(@NonNull @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item, @NonNull @NonNull VirtualFulfillmentPricingOption option, @NonNull @NonNull javax.money.CurrencyUnit currency)
Deprecated.Calculates the price for a fulfillment item. By default this means the price for a single unit rather than all like units, i.e.,FulfillmentPricingItem.getUnitPrice()is used notFulfillmentPricingItem.getSubtotal().- Parameters:
item- TheFulfillmentPriceInfoitem to be pricedoption- The applicableVirtualFulfillmentPricingOptionfor theitem- Returns:
- the price for a fulfillment item.
-
calculatePriceForItems
protected javax.money.MonetaryAmount calculatePriceForItems(@NonNull @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item, @NonNull @NonNull VirtualFulfillmentPricingOption option, @NonNull @NonNull javax.money.CurrencyUnit currency)Calculates the price for a fulfillment items. By default this means the price for all units, i.e.,FulfillmentPricingItem.getMerchandiseTotalAmount().- Parameters:
item- TheFulfillmentPriceInfoitem to be pricedoption- The applicableVirtualFulfillmentPricingOptionfor theitem- Returns:
- the price for a fulfillment items.
-
calculateFixedPriceForItem
protected javax.money.MonetaryAmount calculateFixedPriceForItem(@NonNull @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item, @NonNull @NonNull VirtualFulfillmentPricingOption option, @NonNull @NonNull javax.money.CurrencyUnit currency)Calculates the fixed price for the fulfillment item, i.e. the price per item plus any flat rates for this item.- Parameters:
item- TheFulfillmentPriceInfoitem to be pricedoption- The applicableVirtualFulfillmentPricingOptionfor theitem- Returns:
- the fixed price for a fulfillment item.
-
calculatePercentageBasedPriceForItem
@Deprecated protected javax.money.MonetaryAmount calculatePercentageBasedPriceForItem(@NonNull @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item, @NonNull @NonNull VirtualFulfillmentPricingOption option, @NonNull @NonNull javax.money.CurrencyUnit currency)
Deprecated.Calculates the fulfillment price based on the percentage rate per item.- Parameters:
item- TheFulfillmentPriceInfoitem to be pricedoption- The applicableVirtualFulfillmentPricingOptionfor theitem- Returns:
- the percentage rate price for a fulfillment item.
-
calculatePercentageBasedPriceForItems
protected javax.money.MonetaryAmount calculatePercentageBasedPriceForItems(@NonNull @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item, @NonNull @NonNull VirtualFulfillmentPricingOption option, @NonNull @NonNull javax.money.CurrencyUnit currency)
-
calculateFulfillmentGroupPriceBeforeAdjustments
protected javax.money.MonetaryAmount calculateFulfillmentGroupPriceBeforeAdjustments(@NonNull @NonNull VirtualFulfillmentPricingOption option, @NonNull @NonNull javax.money.CurrencyUnit currency)Calculates the fixed fulfillment price per fulfillment group.- Parameters:
option- The applicableVirtualFulfillmentPricingOptionfor the fulfillment group- Returns:
- the fixed fulfillment price per fulfillment group
-
getMonetaryAmount
protected javax.money.MonetaryAmount getMonetaryAmount(javax.money.CurrencyUnit expectedCurrency, @Nullable Set<com.broadleafcommerce.shipping.domain.FulfillmentPriceAmount> fulfillmentPriceAmounts)Find the corresponding price for the expected currency, otherwise return zero.- Parameters:
expectedCurrency- The expected currency to find a price forfulfillmentPriceAmounts- The list of prices to search against- Returns:
- the corresponding price for the expected currency, otherwise return zero
-
buildFulfillmentOptionPricedResponse
protected com.broadleafcommerce.shipping.domain.FulfillmentOptionPricedResponse buildFulfillmentOptionPricedResponse(@NonNull @NonNull javax.money.MonetaryAmount price, @NonNull @NonNull Map<com.broadleafcommerce.shipping.domain.FulfillmentPricingItem,javax.money.MonetaryAmount> itemToPriceMap, @NonNull @NonNull VirtualFulfillmentPricingOption fulfillmentOption, boolean isEstimate)Builds aFulfillmentOptionPricedResponsewith the given inputs.- Parameters:
price- The value to set forFulfillmentOptionPricedResponse.getFulfillmentPriceCalculated().itemToPriceMap- Map ofFulfillmentPricingItemsto their fulfillment pricesfulfillmentOption- TheFulfillmentOptionthat forms the basis of the responseisEstimate- Whether this is for estimating the fulfillment pricing- Returns:
- a
FulfillmentOptionPricedResponsefor the given inputs.
-
getDefaultVirtualFulfillmentPricingOption
protected VirtualFulfillmentPricingOption getDefaultVirtualFulfillmentPricingOption(@NonNull @NonNull javax.money.CurrencyUnit currency)
Builds aVirtualFulfillmentPricingOptionwith fields initialized to typical values.- Returns:
- a
VirtualFulfillmentPricingOptionwith fields initialized to typical values.
-
resolveCurrency
protected javax.money.CurrencyUnit resolveCurrency(com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request)
-
getObjectMapper
protected com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()
-
getTypeFactory
protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()
-
getVirtualShipProps
protected VirtualFulfillmentPricingProperties getVirtualShipProps()
-
getVirtualFulfillmentPricingConfig
protected VirtualFulfillmentPricingConfig getVirtualFulfillmentPricingConfig()
-
-