Class ExternalOfferProvider

    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      void applyOffers​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, boolean runOrderAndItemOffers, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Handles requests against the Offer Engine to retrieve and apply discounts for a Cart and its contents.
      void applyOffers​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Handles requests against the Offer Engine to retrieve and apply discounts for a Cart and its contents.
      protected com.broadleafcommerce.order.common.domain.Adjustment buildAdjustment​(com.broadleafcommerce.promotion.offer.client.web.context.info.OfferRef myItemOffer, com.broadleafcommerce.promotion.offer.client.web.context.info.Adjustment offerAdjustment)  
      protected com.broadleafcommerce.order.common.domain.Adjustment buildItemAdjustment​(com.broadleafcommerce.promotion.offer.client.web.context.info.Adjustment offerAdjustment, boolean isForFulfillment)
      Builds an Adjustment based on the given parameters for a CartItem or FulfillmentItem.
      protected com.broadleafcommerce.order.common.domain.OfferItemDetail buildOfferItemDetails​(com.broadleafcommerce.promotion.offer.client.web.context.info.OfferItemDetail offerItemDetail)
      Builds an OfferItemDetail from the given OfferItemDetail.
      protected com.broadleafcommerce.order.common.domain.OfferRef buildOfferRef​(com.broadleafcommerce.promotion.offer.client.web.context.info.OfferRef clientOfferRef)  
      protected com.broadleafcommerce.promotion.offer.client.web.context.OrderDto<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentGroupDto<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentLineItemDto>> buildOrderDto​(com.broadleafcommerce.cart.client.domain.Cart cart, boolean runOrderAndItemOffers, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)  
      protected com.broadleafcommerce.order.common.domain.ProratedOfferAdjustment buildProratedOrderAdjustment​(com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedOfferAdjustment clientAdjustment)
      Builds an ProratedOfferAdjustment based on the given ProratedOfferAdjustment.
      protected com.broadleafcommerce.order.common.domain.Voucher buildVoucher​(com.broadleafcommerce.promotion.offer.client.web.context.info.Voucher voucher)
      Builds a Voucher from the given Voucher.
      protected com.broadleafcommerce.promotion.offer.client.web.context.Destination convertAddressToDestination​(@NonNull com.broadleafcommerce.order.common.domain.Address address)
      Converts an Address to a Destination.
      protected com.broadleafcommerce.promotion.offer.client.web.context.CustomerContext createCustomerContext()
      Create a CustomerContext and add customer and customer segments.
      protected List<com.broadleafcommerce.order.common.domain.Adjustment> getAdjustments​(List<com.broadleafcommerce.promotion.offer.client.web.context.info.Adjustment> adjustments)  
      protected List<com.broadleafcommerce.order.common.domain.Adjustment> getCartItemAdjustmentsToAdd​(com.broadleafcommerce.promotion.offer.client.web.context.discounts.ItemResponseDetail<? extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto> itemResponseDetail)
      Gets a list of Adjustments for a CartItem based on the given ItemResponseDetail.
      protected CartOperationServiceOfferUtils getCartOpsServiceOfferUtils()  
      protected CartTotalsCalculator getCartTotalsCalculator()  
      String getCodeUsabilityType​(@NonNull String code, @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Determines the usability type of the promo code in the context of the given cart.
      protected List<com.broadleafcommerce.order.common.domain.Adjustment> getFulfillmentItemAdjustmentsToAdd​(com.broadleafcommerce.promotion.offer.client.web.context.discounts.ItemResponseDetail<? extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto> itemResponseDetail)
      Gets a list of Adjustments for a FulfillmentItem based on the given ItemResponseDetail.
      protected Object getProductType​(com.broadleafcommerce.cart.client.domain.CartItem cartItem)  
      protected List<com.broadleafcommerce.order.common.domain.ProratedOfferAdjustment> getProratedOrderAdjustmentsToAdd​(com.broadleafcommerce.promotion.offer.client.web.context.discounts.ItemResponse<? extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto> orderItemResponse)
      Gets a list of ProratedOfferAdjustments for a CartItem based on the given ItemResponse.
      protected String getServiceClient()  
      protected Optional<javax.money.MonetaryAmount> getStandardPrice​(com.broadleafcommerce.cart.client.domain.CartItem cartItem)  
      protected UserTargetGenerationService getUserTargetGenerationService()  
      protected List<com.broadleafcommerce.order.common.domain.Voucher> getVouchers​(List<com.broadleafcommerce.promotion.offer.client.web.context.info.Voucher> vouchers)  
      protected boolean hasSalePrice​(com.broadleafcommerce.cart.client.domain.CartItem cartItem)  
      protected boolean hasStandardPrice​(com.broadleafcommerce.cart.client.domain.CartItem cartItem)  
      protected com.broadleafcommerce.promotion.offer.client.web.context.Codes populateCodes​(com.broadleafcommerce.cart.client.domain.Cart cart)  
      protected void populateDependentLineItemDto​(List<com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> lineItems, com.broadleafcommerce.cart.client.domain.CartItem cartItem)  
      protected com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentGroupDto<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentLineItemDto> populateFulfillmentGroupDto​(Map<String,​com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> lineItemIdMap, com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup)  
      protected List<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentGroupDto<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentLineItemDto>> populateFulfillmentGroupDtos​(List<com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> lineItems, com.broadleafcommerce.cart.client.domain.Cart cart)  
      protected com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentLineItemDto populateFulfillmentLineItemDto​(Map<String,​com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> lineItemIdMap, com.broadleafcommerce.cart.client.domain.FulfillmentItem fulfillmentItem)  
      protected com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto populateLineItemDto​(com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      Returns a populated OrderLineItemDto from given CartItem.
      protected void populateLineItemDto​(List<com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> lineItems, com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      Deprecated.
      in favor of populateLineItemDto(CartItem) for simpler client extension
      protected List<com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> populateLineItems​(com.broadleafcommerce.cart.client.domain.Cart cart)  
      protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto>
      void
      processFreeGiftOffers​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse<T> orderResponse)  
      void setCartOpsServiceOfferUtils​(CartOperationServiceOfferUtils cartOpsServiceOfferUtils)  
      protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto>
      void
      updateCartAdjustments​(com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse<T> orderResponse, boolean didRunOrderAndItemOffers)
      Updates the cart, items, and fulfillment groups and items with the discount adjustments contained in the response from the offer engine.
      protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto>
      void
      updateCartForFulfillmentOffers​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse<T> orderResponse)
      Updates fulfillment groups and items with adjustments after the offer engine has processed the order.
      protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto>
      void
      updateCartForOrderAndOrderItemOffers​(@NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse<T> orderResponse)
      Updates order and order items with adjustments after the offer engine has processed the order.
      protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto>
      void
      updateCartItem​(com.broadleafcommerce.promotion.offer.client.web.context.discounts.ItemResponse<T> orderItemResponse, com.broadleafcommerce.cart.client.domain.CartItem cartItem)  
      protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto>
      void
      updateFulfillmentGroup​(com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.promotion.offer.client.web.context.discounts.FulfillmentGroupResponse<T> fgResponse, com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup)  
      protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto>
      void
      updateFulfillmentItem​(com.broadleafcommerce.cart.client.domain.Cart cart, com.broadleafcommerce.promotion.offer.client.web.context.discounts.ItemResponse<T> itemResponse, com.broadleafcommerce.cart.client.domain.FulfillmentItem fulfillmentItem)  
      com.broadleafcommerce.promotion.offer.client.web.context.OfferAndOfferCodeUsageValidationResult validateOfferAndOfferCodeUsages​(com.broadleafcommerce.cart.client.domain.Cart cart, List<String> offerCodes, List<String> offerIds, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Retrieve validation information regarding the cart's usage of the provided offers and offer codes to determine if the usage is still valid.
    • Constructor Detail

      • ExternalOfferProvider

        public ExternalOfferProvider​(org.springframework.web.reactive.function.client.WebClient webClient,
                                     com.fasterxml.jackson.databind.ObjectMapper objectMapper,
                                     com.broadleafcommerce.common.extension.TypeFactory typeFactory,
                                     ExternalOfferProperties properties,
                                     UserTargetGenerationService userTargetGenerationService,
                                     CartTotalsCalculator cartTotalsCalculator)
    • Method Detail

      • applyOffers

        public void applyOffers​(@NonNull
                                @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                @Nullable
                                com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: OfferProvider
        Handles requests against the Offer Engine to retrieve and apply discounts for a Cart and its contents. This method should apply all kinds of offers applicable to the contents including all order, order item, fulfillment, and fulfillment item offers.

        To control whether order and order item offers are applied use OfferProvider.applyOffers(Cart, boolean, ContextInfo) and set `runOrderAndItemOffers` as desired. Set it to false if you only want to run fulfillment and fulfillment item offers. By default, fulfillment pricing occurs after order and order items have been priced and their offers applied since fulfillment pricing and promotions can depend on the price of the merchandise being fulfilled.

        Specified by:
        applyOffers in interface OfferProvider
        Parameters:
        cart - The Cart whose contents to send to the offer engine for evaluation
        contextInfo - Additional sandbox and tenancy info
      • applyOffers

        public void applyOffers​(@NonNull
                                @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                boolean runOrderAndItemOffers,
                                @Nullable
                                com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: OfferProvider
        Handles requests against the Offer Engine to retrieve and apply discounts for a Cart and its contents. Allows specifying whether order and order item offers will be applied in the calculation. Set runOrderAndItemOffers to false if you only want to run fulfillment and fulfillment item offers.

        By default, fulfillment pricing occurs after order and order items have been priced and their offers applied since fulfillment pricing and promotions can depend on the price of the merchandise being fulfilled. Thus, when fulfillment offers are processed, order and order item offers should not also be reprocessed or the results can be incorrect—this also makes the request run faster since only fulfillment will be considered.

        Specified by:
        applyOffers in interface OfferProvider
        Parameters:
        cart - The Cart whose contents to send to the offer engine for evaluation
        runOrderAndItemOffers - Whether to have the Offer Engine run order and order item level offers. Set this to false if you only want to run fulfillment and fulfillment item offers. By default, fulfillment pricing occurs after order and order items have been priced and their offers applied since fulfillment pricing and promotions can depend on the price of the merchandise being fulfilled.
        contextInfo - Additional sandbox and tenancy info
      • getCodeUsabilityType

        public String getCodeUsabilityType​(@NonNull
                                           @NonNull String code,
                                           @NonNull
                                           @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                           @Nullable
                                           com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: OfferProvider
        Determines the usability type of the promo code in the context of the given cart. Possible values are defined in CodeUsabilityType and include whether the code is usable, cannot be used because it has reached its max uses limit, or cannot be used because it does not match any offers (may be a campaign code or some other type in this case).
        Specified by:
        getCodeUsabilityType in interface OfferProvider
        Parameters:
        code - The promo code to apply to cart
        cart - The Cart that promo code is to be applied to
        contextInfo - Additional sandbox and tenancy info
        Returns:
        The usability type
        See Also:
        CodeUsabilityType
      • validateOfferAndOfferCodeUsages

        public com.broadleafcommerce.promotion.offer.client.web.context.OfferAndOfferCodeUsageValidationResult validateOfferAndOfferCodeUsages​(com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                                                                                               List<String> offerCodes,
                                                                                                                                               List<String> offerIds,
                                                                                                                                               @Nullable
                                                                                                                                               com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: OfferProvider
        Retrieve validation information regarding the cart's usage of the provided offers and offer codes to determine if the usage is still valid.
        Specified by:
        validateOfferAndOfferCodeUsages in interface OfferProvider
        Parameters:
        cart - The cart against which to validate offer and code uses.
        offerCodes - The codes to check for validity.
        offerIds - The offer ids to check for validity.
        contextInfo - Context information around sandbox and multitenant state.
        Returns:
        A validation result that holds information about which offer & offer code usages are invalid and why
      • buildOrderDto

        protected com.broadleafcommerce.promotion.offer.client.web.context.OrderDto<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentGroupDto<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentLineItemDto>> buildOrderDto​(com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                                                                                                                                                                                                                 boolean runOrderAndItemOffers,
                                                                                                                                                                                                                                                                 @Nullable
                                                                                                                                                                                                                                                                 com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      • populateLineItems

        protected List<com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> populateLineItems​(com.broadleafcommerce.cart.client.domain.Cart cart)
      • populateFulfillmentGroupDtos

        protected List<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentGroupDto<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentLineItemDto>> populateFulfillmentGroupDtos​(List<com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> lineItems,
                                                                                                                                                                                                                   com.broadleafcommerce.cart.client.domain.Cart cart)
      • populateCodes

        protected com.broadleafcommerce.promotion.offer.client.web.context.Codes populateCodes​(com.broadleafcommerce.cart.client.domain.Cart cart)
      • getProductType

        @Nullable
        protected Object getProductType​(com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      • populateDependentLineItemDto

        protected void populateDependentLineItemDto​(List<com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> lineItems,
                                                    com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      • populateLineItemDto

        @Deprecated
        protected void populateLineItemDto​(List<com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> lineItems,
                                           com.broadleafcommerce.cart.client.domain.CartItem cartItem)
        Deprecated.
        in favor of populateLineItemDto(CartItem) for simpler client extension
        Populates an OrderLineItemDto from given CartItem and adds it to the given list of OrderLineItemDtos.
        Parameters:
        lineItems - the list of OrderLineItemDtos to add the populated OrderLineItemDto to
        cartItem - the CartItem to populate an OrderLineItemDto from
      • populateLineItemDto

        protected com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto populateLineItemDto​(com.broadleafcommerce.cart.client.domain.CartItem cartItem)
        Returns a populated OrderLineItemDto from given CartItem.
        Parameters:
        cartItem - the CartItem to populate an OrderLineItemDto from
        Returns:
        populated OrderLineItemDto from given CartItem
      • populateFulfillmentGroupDto

        protected com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentGroupDto<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentLineItemDto> populateFulfillmentGroupDto​(Map<String,​com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> lineItemIdMap,
                                                                                                                                                                                                            com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup)
      • convertAddressToDestination

        protected com.broadleafcommerce.promotion.offer.client.web.context.Destination convertAddressToDestination​(@NonNull
                                                                                                                   @NonNull com.broadleafcommerce.order.common.domain.Address address)
        Converts an Address to a Destination.
        Parameters:
        address - Address to be converted
        Returns:
        the Destination from the Address.
      • populateFulfillmentLineItemDto

        protected com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentLineItemDto populateFulfillmentLineItemDto​(Map<String,​com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> lineItemIdMap,
                                                                                                                                 com.broadleafcommerce.cart.client.domain.FulfillmentItem fulfillmentItem)
      • hasStandardPrice

        protected boolean hasStandardPrice​(com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      • hasSalePrice

        protected boolean hasSalePrice​(com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      • getStandardPrice

        protected Optional<javax.money.MonetaryAmount> getStandardPrice​(com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      • updateCartAdjustments

        protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto> void updateCartAdjustments​(com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                                                                                                      com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse<T> orderResponse,
                                                                                                                                                      boolean didRunOrderAndItemOffers)
        Updates the cart, items, and fulfillment groups and items with the discount adjustments contained in the response from the offer engine. This will take into account whether order and order item adjustments were calculated or fulfillment and fulfillment item ones in order to avoid overwriting the wrong ones.

        Fulfillment offers cannot be applied until after regular fulfillment pricing occurs, which cannot be calculated until after non-fulfillment subtotals and adjustments are calculated since fulfillment pricing is usually based on merchandise totals. Therefore, which part of the flow we're in needs to be determined since not all adjustments are calculated at the same time and we do not want to overwrite the previously calculated adjustments with null or 0 values. This determination is done using the didRunOrderAndItemOffers flag.

        Type Parameters:
        T - The specific type of ProratedItemOfferAdjustmentDto being used in the OrderResponse
        Parameters:
        cart - The cart containing the fulfillment groups being discounted
        orderResponse - The response from the offer engine after processing the cart to determine applicable discounts
        didRunOrderAndItemOffers - Indicates whether fulfillment or merchandise (order/item) adjustments have just been calculated
      • updateCartForFulfillmentOffers

        protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto> void updateCartForFulfillmentOffers​(@NonNull
                                                                                                                                                               @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                                                                                                               @NonNull
                                                                                                                                                               @NonNull com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse<T> orderResponse)
        Updates fulfillment groups and items with adjustments after the offer engine has processed the order. This is separated from updateCartForOrderAndOrderItemOffers(com.broadleafcommerce.cart.client.domain.Cart, com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse<T>) since fulfillment offers cannot be applied until after regular fulfillment pricing occurs, which cannot be calculated until after non-fulfillment subtotals and adjustments are calculated since fulfillment pricing is usually based on merchandise totals.
        Type Parameters:
        T - The specific type of ProratedItemOfferAdjustmentDto being used in the OrderResponse
        Parameters:
        cart - The cart containing the fulfillment groups being discounted
        orderResponse - The response from the offer engine after processing the cart to determine applicable discounts
      • updateCartForOrderAndOrderItemOffers

        protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto> void updateCartForOrderAndOrderItemOffers​(@NonNull
                                                                                                                                                                     @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                                                                                                                     @NonNull
                                                                                                                                                                     @NonNull com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse<T> orderResponse)
        Updates order and order items with adjustments after the offer engine has processed the order. This is separated from updateCartForFulfillmentOffers(com.broadleafcommerce.cart.client.domain.Cart, com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse<T>) since fulfillment offers cannot be applied until after regular fulfillment pricing occurs, which cannot be calculated until after non-fulfillment subtotals and adjustments are calculated since fulfillment pricing is usually based on merchandise totals.
        Type Parameters:
        T - The specific type of ProratedItemOfferAdjustmentDto being used in the OrderResponse
        Parameters:
        cart - The cart and its items being discounted
        orderResponse - The response from the offer engine after processing the cart to determine applicable discounts
      • processFreeGiftOffers

        protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto> void processFreeGiftOffers​(@NonNull
                                                                                                                                                      @NonNull com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                                                                                                      @NonNull
                                                                                                                                                      @NonNull com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse<T> orderResponse)
      • updateFulfillmentGroup

        protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto> void updateFulfillmentGroup​(com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                                                                                                       com.broadleafcommerce.promotion.offer.client.web.context.discounts.FulfillmentGroupResponse<T> fgResponse,
                                                                                                                                                       com.broadleafcommerce.cart.client.domain.FulfillmentGroup fulfillmentGroup)
      • getAdjustments

        protected List<com.broadleafcommerce.order.common.domain.Adjustment> getAdjustments​(List<com.broadleafcommerce.promotion.offer.client.web.context.info.Adjustment> adjustments)
      • getVouchers

        protected List<com.broadleafcommerce.order.common.domain.Voucher> getVouchers​(List<com.broadleafcommerce.promotion.offer.client.web.context.info.Voucher> vouchers)
      • buildVoucher

        protected com.broadleafcommerce.order.common.domain.Voucher buildVoucher​(com.broadleafcommerce.promotion.offer.client.web.context.info.Voucher voucher)
        Builds a Voucher from the given Voucher.
        Parameters:
        voucher - the Voucher to build the Voucher from
        Returns:
        a Voucher from the given Voucher
      • updateFulfillmentItem

        protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto> void updateFulfillmentItem​(com.broadleafcommerce.cart.client.domain.Cart cart,
                                                                                                                                                      com.broadleafcommerce.promotion.offer.client.web.context.discounts.ItemResponse<T> itemResponse,
                                                                                                                                                      com.broadleafcommerce.cart.client.domain.FulfillmentItem fulfillmentItem)
      • updateCartItem

        protected <T extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto> void updateCartItem​(com.broadleafcommerce.promotion.offer.client.web.context.discounts.ItemResponse<T> orderItemResponse,
                                                                                                                                               com.broadleafcommerce.cart.client.domain.CartItem cartItem)
      • getCartItemAdjustmentsToAdd

        protected List<com.broadleafcommerce.order.common.domain.Adjustment> getCartItemAdjustmentsToAdd​(com.broadleafcommerce.promotion.offer.client.web.context.discounts.ItemResponseDetail<? extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto> itemResponseDetail)
        Gets a list of Adjustments for a CartItem based on the given ItemResponseDetail.
        Parameters:
        itemResponseDetail - the ItemResponseDetail to build the Adjustments from
        Returns:
        a list of Adjustments for a CartItem based on the given ItemResponseDetail
      • getFulfillmentItemAdjustmentsToAdd

        protected List<com.broadleafcommerce.order.common.domain.Adjustment> getFulfillmentItemAdjustmentsToAdd​(com.broadleafcommerce.promotion.offer.client.web.context.discounts.ItemResponseDetail<? extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto> itemResponseDetail)
        Gets a list of Adjustments for a FulfillmentItem based on the given ItemResponseDetail.
        Parameters:
        itemResponseDetail - the ItemResponseDetail to build the Adjustments from
        Returns:
        a list of Adjustments for a FulfillmentItem based on the given ItemResponseDetail
      • buildOfferRef

        protected com.broadleafcommerce.order.common.domain.OfferRef buildOfferRef​(com.broadleafcommerce.promotion.offer.client.web.context.info.OfferRef clientOfferRef)
      • buildAdjustment

        protected com.broadleafcommerce.order.common.domain.Adjustment buildAdjustment​(com.broadleafcommerce.promotion.offer.client.web.context.info.OfferRef myItemOffer,
                                                                                       com.broadleafcommerce.promotion.offer.client.web.context.info.Adjustment offerAdjustment)
      • buildItemAdjustment

        protected com.broadleafcommerce.order.common.domain.Adjustment buildItemAdjustment​(com.broadleafcommerce.promotion.offer.client.web.context.info.Adjustment offerAdjustment,
                                                                                           boolean isForFulfillment)
        Builds an Adjustment based on the given parameters for a CartItem or FulfillmentItem.
        Parameters:
        offerAdjustment - the Adjustment to build it from
        isForFulfillment - whether the adjustment is for fulfillment item
        Returns:
        an Adjustment based on the given parameters for a CartItem or FulfillmentItem
      • buildOfferItemDetails

        protected com.broadleafcommerce.order.common.domain.OfferItemDetail buildOfferItemDetails​(com.broadleafcommerce.promotion.offer.client.web.context.info.OfferItemDetail offerItemDetail)
        Builds an OfferItemDetail from the given OfferItemDetail.
        Parameters:
        offerItemDetail - the OfferItemDetail to build the OfferItemDetail from
        Returns:
        an OfferItemDetail from the given OfferItemDetail
      • getProratedOrderAdjustmentsToAdd

        protected List<com.broadleafcommerce.order.common.domain.ProratedOfferAdjustment> getProratedOrderAdjustmentsToAdd​(com.broadleafcommerce.promotion.offer.client.web.context.discounts.ItemResponse<? extends com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedItemOfferAdjustmentDto> orderItemResponse)
        Gets a list of ProratedOfferAdjustments for a CartItem based on the given ItemResponse.
        Parameters:
        orderItemResponse - the ItemResponse to build the ProratedOfferAdjustments from
        Returns:
        a list of ProratedOfferAdjustments for a CartItem based on the given ItemResponse
      • buildProratedOrderAdjustment

        protected com.broadleafcommerce.order.common.domain.ProratedOfferAdjustment buildProratedOrderAdjustment​(com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedOfferAdjustment clientAdjustment)
        Builds an ProratedOfferAdjustment based on the given ProratedOfferAdjustment.
        Parameters:
        clientAdjustment - the ProratedOfferAdjustment to build it from
        Returns:
        an ProratedOfferAdjustment based on the given ProratedOfferAdjustment
      • createCustomerContext

        protected com.broadleafcommerce.promotion.offer.client.web.context.CustomerContext createCustomerContext()
        Create a CustomerContext and add customer and customer segments. Uses the current authentication token to determine principal and details.
        Returns:
        The created CustomerContext
      • getServiceClient

        protected String getServiceClient()