Class BandedFulfillmentPricingProvider

    • Constructor Detail

      • BandedFulfillmentPricingProvider

        public BandedFulfillmentPricingProvider​(com.fasterxml.jackson.databind.ObjectMapper objectMapper,
                                                com.broadleafcommerce.common.extension.TypeFactory typeFactory,
                                                BandedFulfillmentPricingProperties bandedProps,
                                                WeightCalculationService weightCalculationService)
    • Method Detail

      • calculateCostForFulfillmentGroup

        public com.broadleafcommerce.shipping.domain.FulfillmentOptionPricedResponse calculateCostForFulfillmentGroup​(@NonNull
                                                                                                                      @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest fulfillmentPricingRequest)
        Description copied from interface: FulfillmentPricingProvider
        Calculate shipping for a request that includes a specified fulfillment option.
        Specified by:
        calculateCostForFulfillmentGroup in interface FulfillmentPricingProvider
        Parameters:
        fulfillmentPricingRequest - The request for which to calculate shipping.
        Returns:
        Response object with calculated shipping cost for the provided request.
      • canCalculateCostForOption

        public boolean canCalculateCostForOption​(@NonNull
                                                 @NonNull String fulfillmentOptionName)
        Description copied from interface: FulfillmentPricingProvider
        Whether this provider has knowledge of the provided option and thus can provide cost information for it.
        Specified by:
        canCalculateCostForOption in interface FulfillmentPricingProvider
        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​(@NonNull
                                                                                                                     @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request)
        Description copied from interface: FulfillmentPricingProvider
        Estimate shipping for a request that includes a specified fulfillment option.
        Specified by:
        estimateCostForFulfillmentGroup in interface FulfillmentPricingProvider
        Parameters:
        request - The request for which to estimate shipping.
        Returns:
        Response object with estimated shipping cost for the provided request.
      • providePricedFulfillmentOptions

        public List<com.broadleafcommerce.shipping.domain.FulfillmentOptionPricedResponse> providePricedFulfillmentOptions​(@NonNull
                                                                                                                           @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request)
        Description copied from interface: FulfillmentPricingProvider
        Retrieve all possible priced fulfillment options for the provided request. Intended to be used to display options to the customer for selection.
        Specified by:
        providePricedFulfillmentOptions in interface FulfillmentPricingProvider
        Parameters:
        request - The request for which to calculate shipping and return options.
        Returns:
        All possible priced fulfillment options for the provided request.
      • buildItemToPriceMap

        protected Map<com.broadleafcommerce.shipping.domain.FulfillmentPricingItem,​javax.money.MonetaryAmount> buildItemToPriceMap​(@NonNull
                                                                                                                                         @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest request,
                                                                                                                                         @NonNull
                                                                                                                                         @NonNull BandedFulfillmentPricingOption option,
                                                                                                                                         @NonNull
                                                                                                                                         @NonNull FulfillmentOptionBand band)
        Builds a map of FulfillmentPricingItems to the calculated prices.
        Parameters:
        request - The request for which to calculate shipping
        option - The fulfillment option to use to calculate pricing for the request
        band - The band from option appropriate for the items being priced
        Returns:
        a map of FulfillmentPricingItems to the calculated prices.
      • 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 BandedFulfillmentPricingOption fulfillmentOption,
                                                                                                                             boolean isEstimate)
        Builds a FulfillmentOptionPricedResponse with the given inputs.
        Parameters:
        price - The value to set for FulfillmentOptionPricedResponse.getFulfillmentPriceCalculated().
        itemToPriceMap - Map of FulfillmentPricingItems to their fulfillment prices
        fulfillmentOption - The FulfillmentOption that forms the basis of the response
        isEstimate - Whether this is for estimating the fulfillment pricing
        Returns:
        a FulfillmentOptionPricedResponse for the given inputs.
      • calculateFulfillmentGroupPriceBeforeAdjustments

        protected javax.money.MonetaryAmount calculateFulfillmentGroupPriceBeforeAdjustments​(@NonNull
                                                                                             @NonNull FulfillmentOptionBand band,
                                                                                             javax.money.CurrencyUnit expectedCurrency)
      • 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 for
        fulfillmentPriceAmounts - The list of prices to search against
        Returns:
        the corresponding price for the expected currency, otherwise return zero
      • calculatePriceForItems

        protected javax.money.MonetaryAmount calculatePriceForItems​(@NonNull
                                                                    @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item,
                                                                    @NonNull
                                                                    @NonNull BandedFulfillmentPricingOption option,
                                                                    @NonNull
                                                                    @NonNull FulfillmentOptionBand band,
                                                                    @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 - The FulfillmentPriceInfo item to be priced
        option - The applicable BandedFulfillmentPricingOption for the item
        band - The applicable band from the option for the item
        Returns:
        the price for a fulfillment items.
      • calculateFixedPriceForItem

        protected javax.money.MonetaryAmount calculateFixedPriceForItem​(@NonNull
                                                                        @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item,
                                                                        @NonNull
                                                                        @NonNull BandedFulfillmentPricingOption option,
                                                                        @NonNull
                                                                        @NonNull FulfillmentOptionBand band,
                                                                        @NonNull
                                                                        @NonNull javax.money.CurrencyUnit currency)
      • calculatePercentageRateForItem

        @Deprecated
        protected javax.money.MonetaryAmount calculatePercentageRateForItem​(@NonNull
                                                                            @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item,
                                                                            @NonNull
                                                                            @NonNull FulfillmentOptionBand band,
                                                                            @NonNull
                                                                            @NonNull javax.money.CurrencyUnit currency)
        Deprecated.
      • calculatePercentageRateForItems

        protected javax.money.MonetaryAmount calculatePercentageRateForItems​(@NonNull
                                                                             @NonNull com.broadleafcommerce.shipping.domain.FulfillmentPricingItem item,
                                                                             @NonNull
                                                                             @NonNull FulfillmentOptionBand band,
                                                                             @NonNull
                                                                             @NonNull javax.money.CurrencyUnit currency)
      • preRequest

        protected void preRequest​(com.broadleafcommerce.shipping.domain.FulfillmentPricingRequest fulfillmentPricingRequest)
      • getObjectMapper

        protected com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()
      • getTypeFactory

        protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()