Class ExternalPricingProvider

    • Constructor Detail

      • ExternalPricingProvider

        public ExternalPricingProvider​(org.springframework.web.reactive.function.client.WebClient webClient,
                                       com.fasterxml.jackson.databind.ObjectMapper objectMapper,
                                       com.broadleafcommerce.common.extension.TypeFactory typeFactory,
                                       CartItemPricingUtils cartItemPricingUtils,
                                       ExternalPricingProperties properties,
                                       UserTargetGenerationService userTargetGenerationService)
    • Method Detail

      • retrievePrices

        public <C extends com.broadleafcommerce.cart.client.domain.CartItem> List<C> retrievePrices​(@NonNull
                                                                                                    @NonNull Collection<C> cartItems,
                                                                                                    @NonNull
                                                                                                    @NonNull Locale locale,
                                                                                                    @NonNull
                                                                                                    @NonNull javax.money.CurrencyUnit currency,
                                                                                                    @Nullable
                                                                                                    com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: PricingProvider
        Retrieve and attach prices for the provided cart items.
        Specified by:
        retrievePrices in interface PricingProvider
        Parameters:
        cartItems - The cart items that we are pricing.
        locale - The locale to use to match prices.
        currency - The currency to use to match prices.
        contextInfo - Context information around sandbox and multitenant state.
        Returns:
        The cart items with prices attached.
      • getServiceClient

        protected String getServiceClient()
      • getTotalQuantityForTargetIdMap

        protected <C extends com.broadleafcommerce.cart.client.domain.CartItem> Map<String,​Integer> getTotalQuantityForTargetIdMap​(@NonNull
                                                                                                                                         @NonNull Collection<C> cartItems)
        Creates a map of the SKU or pricing key of an underlying item from a cart item to the total quantity of that item across all cart items. That is to say, if multiple of the same product are in the cart as separate line items, this method will return the combined quantity for that product as if it had only one line item.
        Type Parameters:
        C - Type of the CartItem in case of extensions
        Parameters:
        cartItems - Items in the cart
        Returns:
        A map of the SKU or pricing key of an underlying item from a cart item to the total quantity of that item across all cart items.
      • buildPriceContextHeader

        protected String buildPriceContextHeader​(@NonNull
                                                 @NonNull com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext)
      • getPriceContext

        protected com.broadleafcommerce.pricing.client.domain.context.PriceContext getPriceContext​(Locale locale,
                                                                                                   javax.money.CurrencyUnit currency)
      • getPriceInfoContext

        protected com.broadleafcommerce.pricing.client.domain.context.PriceInfoContext getPriceInfoContext​(Set<com.broadleafcommerce.pricing.client.domain.PriceableTarget> priceableTargets)
      • attachPricingToCartItem

        protected <P extends com.broadleafcommerce.pricing.client.domain.PriceInfo> void attachPricingToCartItem​(@NonNull
                                                                                                                 @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                                                                                 @NonNull
                                                                                                                 @NonNull Collection<P> priceInfos,
                                                                                                                 @Nullable
                                                                                                                 String variantId)
      • attachPricingToCartItem

        protected <P extends com.broadleafcommerce.pricing.client.domain.PriceInfo> void attachPricingToCartItem​(@NonNull
                                                                                                                 @NonNull com.broadleafcommerce.cart.client.domain.CartItem cartItem,
                                                                                                                 @NonNull
                                                                                                                 @NonNull Collection<P> priceInfos)
      • isDependentItem

        protected boolean isDependentItem​(com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      • addUserTargets

        protected void addUserTargets​(@NonNull
                                      @NonNull com.broadleafcommerce.pricing.client.domain.context.PriceContext priceContext)
        Add customer and customer segment user targets to PriceContext.getUserTargets(). Uses the current authentication token to determine principal and details.
        Parameters:
        priceContext - The priceContext to add user targets to