Interface OfferEngineService

All Known Implementing Classes:
DefaultOfferEngineService

public interface OfferEngineService
This serves as the entry and exist points for the offer engine, which takes in an order and context then determines what offers can apply before calculating the best possible permutation of offers and applying them.
Author:
Chad Harchar (charchar)
  • Method Details

    • getCandidateOffers

      @NonNull CandidateOffers getCandidateOffers(@NonNull EnhancedOrder order, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Determines all of the candidate offers that can apply to the provided order for the given context.
      Parameters:
      order - context information around the offer
      contextInfo - Context information around sandbox and multitenant state.
      Returns:
      The list of offers that can apply to the provided order and context.
    • modifyEvaluateOffersResponse

      com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse modifyEvaluateOffersResponse(@NonNull com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse response, @NonNull EnhancedOrder order, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Hook point to add custom logic for the evaluate offer response.
      Parameters:
      response - a response DTO that details the adjustments and their discounts applied to the order
      order - context information around the offer
      contextInfo - context information around sandbox and multitenant state
      Returns:
      the modified response DTO that details the adjustments and their discounts applied to the order
    • applyAdjustments

      void applyAdjustments(@NonNull EnhancedOrder order, @NonNull OfferProcessingContext processingContext)
      Applies the offers to the order in a way that gives the best discount for the customer based on possible permutations.
      Parameters:
      order - the order to be considered for Offer discounts.
      processingContext - all permutations of orders that can be considered for the order
    • executeOnOrderAndContext

      com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse executeOnOrderAndContext(@NonNull EnhancedOrder order, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      For the provided order and context, determines the candidate offers and applies them to the order in the permutation that gives the best discount.
      Parameters:
      order - context information around the offer
      contextInfo - Context information around sandbox and multitenant state.
      Returns:
      A response DTO that details the adjustments and their discounts applied to the order
    • populateProratedItemAdjustments

      @NonNull void populateProratedItemAdjustments(@NonNull EnhancedOrder order, OfferProcessingContext context)
      For any Offer that has a Discount.prorationType of ProrationType.TARGET_AND_QUALIFIER, this will populate all of the ProratedItemOfferAdjustments on the LineItemOfferDetails mostly for the sake of reporting instruments.
      Parameters:
      order - the EnhancedOrder whose LineItems might have ProratedItemOfferAdjustments
    • populateProratedOrderAdjustments

      @NonNull void populateProratedOrderAdjustments(@NonNull EnhancedOrder order, OfferProcessingContext context)
      Populates all of the EnhancedProratedOfferAdjustments for any Offer that has a Discount.getTargetType() of DiscountTargetType.ORDER and add them onto the individual discountable order line items.
      Parameters:
      order - the EnhancedOrder to populate the order offer adjustment prorations
    • populateProratedFulfillmentGroupAdjustments

      @NonNull void populateProratedFulfillmentGroupAdjustments(@NonNull EnhancedOrder order)
      Populates all of the EnhancedProratedOfferAdjustments for any Offer that has a Discount.getTargetType() of DiscountTargetType.FULFILLMENT_GROUP and add them onto the individual discountable fulfillment items, as well as populating EnhancedFulfillmentGroup.getProratedFulfillmentAdjustments().
      Parameters:
      order - the EnhancedOrder to populate the fulfillment group offer adjustment prorations