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 Summary
Modifier and TypeMethodDescriptionvoid
applyAdjustments
(EnhancedOrder order, OfferProcessingContext processingContext) Applies the offers to the order in a way that gives the best discount for the customer based on possible permutations.com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse
executeOnOrderAndContext
(EnhancedOrder order, 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.getCandidateOffers
(EnhancedOrder order, 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.com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse
modifyEvaluateOffersResponse
(com.broadleafcommerce.promotion.offer.client.web.context.discounts.OrderResponse response, EnhancedOrder order, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Hook point to add custom logic for the evaluate offer response.void
Populates all of theEnhancedProratedOfferAdjustments
for anyOffer
that has aDiscount.getTargetType()
ofDiscountTargetType.FULFILLMENT_GROUP
and add them onto the individual discountablefulfillment items
, as well as populatingEnhancedFulfillmentGroup.getProratedFulfillmentAdjustments()
.void
populateProratedItemAdjustments
(EnhancedOrder order, OfferProcessingContext context) For anyOffer
that has aDiscount.prorationType
ofProrationType.TARGET_AND_QUALIFIER
, this will populate all of theProratedItemOfferAdjustments
on theLineItemOfferDetails
mostly for the sake of reporting instruments.void
populateProratedOrderAdjustments
(EnhancedOrder order, OfferProcessingContext context) Populates all of theEnhancedProratedOfferAdjustments
for anyOffer
that has aDiscount.getTargetType()
ofDiscountTargetType.ORDER
and add them onto the individual discountableorder line items
.
-
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 offercontextInfo
- 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 orderorder
- context information around the offercontextInfo
- 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 forOffer
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 offercontextInfo
- 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 anyOffer
that has aDiscount.prorationType
ofProrationType.TARGET_AND_QUALIFIER
, this will populate all of theProratedItemOfferAdjustments
on theLineItemOfferDetails
mostly for the sake of reporting instruments.- Parameters:
order
- theEnhancedOrder
whoseLineItems
might haveProratedItemOfferAdjustments
-
populateProratedOrderAdjustments
@NonNull void populateProratedOrderAdjustments(@NonNull EnhancedOrder order, OfferProcessingContext context) Populates all of theEnhancedProratedOfferAdjustments
for anyOffer
that has aDiscount.getTargetType()
ofDiscountTargetType.ORDER
and add them onto the individual discountableorder line items
.- Parameters:
order
- theEnhancedOrder
to populate the order offer adjustment prorations
-
populateProratedFulfillmentGroupAdjustments
Populates all of theEnhancedProratedOfferAdjustments
for anyOffer
that has aDiscount.getTargetType()
ofDiscountTargetType.FULFILLMENT_GROUP
and add them onto the individual discountablefulfillment items
, as well as populatingEnhancedFulfillmentGroup.getProratedFulfillmentAdjustments()
.- Parameters:
order
- theEnhancedOrder
to populate the fulfillment group offer adjustment prorations
-