@Service(value="blItemOfferProcessor") public class ItemOfferProcessorImpl extends OrderOfferProcessorImpl implements ItemOfferProcessor, ItemOfferMarkTargets
| Modifier and Type | Field and Description |
|---|---|
protected static org.apache.commons.logging.Log |
LOG |
offerDao, offerServiceUtilities, orderItemDao, promotableItemFactoryextensionManager, offerTimeZoneProcessor| Constructor and Description |
|---|
ItemOfferProcessorImpl() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
applyAdjustments(PromotableOrder order,
PromotableCandidateItemOffer itemOffer)
The itemOffer has been qualified and prior methods added PromotionDiscount objects onto the ItemPriceDetail.
|
void |
applyAllItemOffers(List<PromotableCandidateItemOffer> itemOffers,
PromotableOrder order)
Private method that takes a list of sorted CandidateItemOffers and determines if each offer can be
applied based on the restrictions (stackable and/or combinable) on that offer.
|
void |
applyAndCompareOrderAndItemOffers(PromotableOrder order,
List<PromotableCandidateOrderOffer> qualifiedOrderOffers,
List<PromotableCandidateItemOffer> qualifiedItemOffers) |
protected void |
applyItemOffer(PromotableOrder order,
PromotableCandidateItemOffer itemOffer) |
protected Boolean |
applyItemOfferExtension(PromotableOrder order,
PromotableCandidateItemOffer itemOffer)
Call out to extension managers.
|
protected void |
applyItemQualifiersAndTargets(PromotableCandidateItemOffer itemOffer,
PromotableOrder order) |
protected void |
applyLegacyAdjustments(PromotableOrder order,
PromotableCandidateItemOffer itemOffer)
Legacy adjustments use the stackable flag instead of item qualifiers and targets
|
protected List<List<PromotableCandidateItemOffer>> |
buildItemOfferPermutations(List<PromotableCandidateItemOffer> offers)
This method could be overridden to potentially run all permutations of offers.
|
protected List<PromotableOrderItemPriceDetail> |
buildPriceDetailListFromOrderItems(List<PromotableOrderItem> items) |
protected void |
calculatePotentialSavings(List<PromotableCandidateItemOffer> itemOffers,
PromotableOrder order)
This method determines the potential savings for each item offer as if it was the only item offer being applied.
|
protected Money |
calculatePotentialSavingsForOrderItem(PromotableCandidateItemOffer itemOffer,
PromotableOrderItem item,
int quantity)
Provide an opportunity to for modules to override the potentialSavingsCalculation
|
protected void |
chooseSaleOrRetailAdjustments(PromotableOrder order)
Some promotions can only apply to the retail price.
|
protected PromotableCandidateItemOffer |
createCandidateItemOffer(List<PromotableCandidateItemOffer> qualifiedItemOffers,
Offer offer,
PromotableOrder promotableOrder)
Create a candidate item offer based on the offer in question and a specific order item
|
protected void |
determineBestPermutation(List<PromotableCandidateItemOffer> itemOffers,
PromotableOrder order) |
void |
filterItemLevelOffer(PromotableOrder order,
List<PromotableCandidateItemOffer> qualifiedItemOffers,
Offer offer)
Review an item level offer against the list of discountable items from the order.
|
void |
filterOffers(PromotableOrder order,
List<Offer> filteredOffers,
List<PromotableCandidateOrderOffer> qualifiedOrderOffers,
List<PromotableCandidateItemOffer> qualifiedItemOffers) |
protected boolean |
isTotalitarianOfferAppliedToAnyItem(PromotableOrder order) |
protected boolean |
markQualifiers(PromotableCandidateItemOffer itemOffer,
PromotableOrder order)
Loop through ItemCriteria and mark qualifiers required to give the promotion to 1 or more targets.
|
protected void |
markQualifiersAndTargets(PromotableOrder order,
PromotableCandidateItemOffer itemOffer) |
protected boolean |
markRelatedQualifiersAndTargets(PromotableCandidateItemOffer itemOffer,
PromotableOrder order)
When the
Offer.getRequiresRelatedTargetAndQualifiers() flag is set to true, we must make sure that we
identify qualifiers and targets together, as they must be related to each other based on the
OrderItem.getParentOrderItem() / OrderItem.getChildOrderItems() attributes. |
protected boolean |
markTargets(PromotableCandidateItemOffer itemOffer,
PromotableOrder order,
OrderItem relatedQualifier) |
boolean |
markTargets(PromotableCandidateItemOffer itemOffer,
PromotableOrder order,
OrderItem relatedQualifier,
boolean checkOnly)
Loop through ItemCriteria and mark targets that can get this promotion to give the promotion to 1 or more targets.
|
protected void |
mergePriceDetails(PromotableOrder order)
Checks to see if any priceDetails need to be combined and if so, combines them.
|
protected boolean |
offerListStartsWithNonCombinable(List<PromotableCandidateItemOffer> offerList) |
protected boolean |
offerMeetsSubtotalRequirements(PromotableOrder order,
PromotableCandidateItemOffer itemOffer) |
protected void |
restPriceDetails(PromotableOrderItem item) |
applyAllOrderOffers, applyOrderOffer, buildItemPriceDetailKey, buildPromFulfillmentAdjMap, buildPromotableDetailsMap, buildPromotableFulfillmentGroupMap, buildPromotableOrderAdjustmentsMap, buildPromotableQualifiersMap, compareAndAdjustOrderAndItemOffers, couldOfferApplyToOrder, couldOfferApplyToOrder, couldOfferApplyToOrder, couldOfferApplyToOrder, createCandidateOrderOffer, filterOrderLevelOffer, getOfferServiceUtilities, getPromotableItemFactory, processMatchingDetails, removeTrailingNotCombinableOrderOffers, setOfferDao, setOfferServiceUtilities, setOrderItemDao, setPromotableItemFactory, synchronizeAdjustmentsAndPrices, synchronizeFulfillmentGroupAdjustments, synchronizeFulfillmentGroups, synchronizeItemPriceDetails, synchronizeItemQualifiers, synchronizeOrderAdjustments, synchronizeOrderItemscheckForItemRequirements, clearAllNonFinalizedQuantities, couldOfferApplyToCustomer, couldOfferApplyToOrderItems, couldOfferApplyToRequestDTO, couldOfferApplyToTimePeriod, couldOrderItemMeetOfferRequirement, executeExpression, filterOffers, finalizeQuantities, getOfferTimeZoneProcessor, meetsItemQualifierSubtotal, removeInvalidCustomerOffers, removeInvalidRequestOffers, removeOutOfDateOffers, removeTimePeriodOffers, setOfferTimeZoneProcessor, splitDetailsIfNecessaryclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitapplyAllOrderOffers, couldOfferApplyToOrder, executeExpression, filterOrderLevelOffer, getPromotableItemFactory, removeTrailingNotCombinableOrderOffers, setOfferDao, setOrderItemDao, setPromotableItemFactory, synchronizeAdjustmentsAndPricesfilterOfferspublic void filterItemLevelOffer(PromotableOrder order, List<PromotableCandidateItemOffer> qualifiedItemOffers, Offer offer)
ItemOfferProcessorfilterItemLevelOffer in interface ItemOfferProcessororder - the BLC orderqualifiedItemOffers - the container list for any qualified offersoffer - the offer in questionprotected PromotableCandidateItemOffer createCandidateItemOffer(List<PromotableCandidateItemOffer> qualifiedItemOffers, Offer offer, PromotableOrder promotableOrder)
qualifiedItemOffers - the container list for candidate item offersoffer - the offer in questionpublic void applyAllItemOffers(List<PromotableCandidateItemOffer> itemOffers, PromotableOrder order)
ItemOfferProcessorapplyAllItemOffers in interface ItemOfferProcessoritemOffers - a sorted list of CandidateItemOfferprotected boolean offerMeetsSubtotalRequirements(PromotableOrder order, PromotableCandidateItemOffer itemOffer)
protected boolean isTotalitarianOfferAppliedToAnyItem(PromotableOrder order)
protected void applyAdjustments(PromotableOrder order, PromotableCandidateItemOffer itemOffer)
order - itemOffer - protected void applyLegacyAdjustments(PromotableOrder order, PromotableCandidateItemOffer itemOffer)
order - itemOffer - protected Boolean applyItemOfferExtension(PromotableOrder order, PromotableCandidateItemOffer itemOffer)
order - itemOffer - protected void applyItemOffer(PromotableOrder order, PromotableCandidateItemOffer itemOffer)
protected void chooseSaleOrRetailAdjustments(PromotableOrder order)
order - protected void mergePriceDetails(PromotableOrder order)
order - protected void applyItemQualifiersAndTargets(PromotableCandidateItemOffer itemOffer, PromotableOrder order)
protected List<PromotableOrderItemPriceDetail> buildPriceDetailListFromOrderItems(List<PromotableOrderItem> items)
protected boolean markQualifiers(PromotableCandidateItemOffer itemOffer, PromotableOrder order)
itemOffer - order - protected boolean markTargets(PromotableCandidateItemOffer itemOffer, PromotableOrder order, OrderItem relatedQualifier)
public boolean markTargets(PromotableCandidateItemOffer itemOffer, PromotableOrder order, OrderItem relatedQualifier, boolean checkOnly)
markTargets in interface ItemOfferMarkTargetsitemOffer - order - protected boolean markRelatedQualifiersAndTargets(PromotableCandidateItemOffer itemOffer, PromotableOrder order)
Offer.getRequiresRelatedTargetAndQualifiers() flag is set to true, we must make sure that we
identify qualifiers and targets together, as they must be related to each other based on the
OrderItem.getParentOrderItem() / OrderItem.getChildOrderItems() attributes.itemOffer - order - public void filterOffers(PromotableOrder order, List<Offer> filteredOffers, List<PromotableCandidateOrderOffer> qualifiedOrderOffers, List<PromotableCandidateItemOffer> qualifiedItemOffers)
filterOffers in interface ItemOfferProcessorprotected Money calculatePotentialSavingsForOrderItem(PromotableCandidateItemOffer itemOffer, PromotableOrderItem item, int quantity)
itemOffer - item - quantity - protected void calculatePotentialSavings(List<PromotableCandidateItemOffer> itemOffers, PromotableOrder order)
itemOffers - order - protected void markQualifiersAndTargets(PromotableOrder order, PromotableCandidateItemOffer itemOffer)
protected boolean offerListStartsWithNonCombinable(List<PromotableCandidateItemOffer> offerList)
protected List<List<PromotableCandidateItemOffer>> buildItemOfferPermutations(List<PromotableCandidateItemOffer> offers)
offers - protected void restPriceDetails(PromotableOrderItem item)
protected void determineBestPermutation(List<PromotableCandidateItemOffer> itemOffers, PromotableOrder order)
public void applyAndCompareOrderAndItemOffers(PromotableOrder order, List<PromotableCandidateOrderOffer> qualifiedOrderOffers, List<PromotableCandidateItemOffer> qualifiedItemOffers)
applyAndCompareOrderAndItemOffers in interface ItemOfferProcessorCopyright © 2014. All Rights Reserved.