|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.broadleafcommerce.core.offer.service.processor.AbstractBaseProcessor
org.broadleafcommerce.core.offer.service.processor.OrderOfferProcessorImpl
org.broadleafcommerce.core.offer.service.processor.ItemOfferProcessorImpl
@Service(value="blItemOfferProcessor") public class ItemOfferProcessorImpl
Filter and apply order item offers.
| Field Summary | |
|---|---|
protected static org.apache.commons.logging.Log |
LOG
|
| Fields inherited from class org.broadleafcommerce.core.offer.service.processor.OrderOfferProcessorImpl |
|---|
offerDao, offerServiceUtilities, orderItemDao, promotableItemFactory |
| Fields inherited from class org.broadleafcommerce.core.offer.service.processor.AbstractBaseProcessor |
|---|
extensionManager, offerTimeZoneProcessor |
| Constructor Summary | |
|---|---|
ItemOfferProcessorImpl()
|
|
| Method Summary | |
|---|---|
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)
|
| Methods inherited from class org.broadleafcommerce.core.offer.service.processor.AbstractBaseProcessor |
|---|
checkForItemRequirements, clearAllNonFinalizedQuantities, couldOfferApplyToCustomer, couldOfferApplyToOrderItems, couldOfferApplyToRequestDTO, couldOfferApplyToTimePeriod, couldOrderItemMeetOfferRequirement, executeExpression, filterOffers, finalizeQuantities, getOfferTimeZoneProcessor, meetsItemQualifierSubtotal, removeInvalidCustomerOffers, removeInvalidRequestOffers, removeOutOfDateOffers, removeTimePeriodOffers, setOfferTimeZoneProcessor, splitDetailsIfNecessary |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface org.broadleafcommerce.core.offer.service.processor.OrderOfferProcessor |
|---|
applyAllOrderOffers, couldOfferApplyToOrder, executeExpression, filterOrderLevelOffer, getPromotableItemFactory, removeTrailingNotCombinableOrderOffers, setOfferDao, setOrderItemDao, setPromotableItemFactory, synchronizeAdjustmentsAndPrices |
| Methods inherited from interface org.broadleafcommerce.core.offer.service.processor.BaseProcessor |
|---|
filterOffers |
| Field Detail |
|---|
protected static final org.apache.commons.logging.Log LOG
| Constructor Detail |
|---|
public ItemOfferProcessorImpl()
| Method Detail |
|---|
public void filterItemLevelOffer(PromotableOrder order,
List<PromotableCandidateItemOffer> qualifiedItemOffers,
Offer offer)
ItemOfferProcessor
filterItemLevelOffer in interface ItemOfferProcessororder - the BLC orderqualifiedItemOffers - the container list for any qualified offersoffer - the offer in question
protected PromotableCandidateItemOffer createCandidateItemOffer(List<PromotableCandidateItemOffer> qualifiedItemOffers,
Offer offer,
PromotableOrder promotableOrder)
qualifiedItemOffers - the container list for candidate item offersoffer - the offer in question
public void applyAllItemOffers(List<PromotableCandidateItemOffer> itemOffers,
PromotableOrder order)
ItemOfferProcessor
applyAllItemOffers in interface ItemOfferProcessoritemOffers - a sorted list of CandidateItemOffer
protected 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 ItemOfferProcessor
protected 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 ItemOfferProcessor
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||