Class OfferServiceUtilitiesImpl
java.lang.Object
org.broadleafcommerce.core.offer.service.OfferServiceUtilitiesImpl
- All Implemented Interfaces:
OfferServiceUtilities
@Service("blOfferServiceUtilities")
public class OfferServiceUtilitiesImpl
extends Object
implements OfferServiceUtilities
- Author:
- bpolster
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected GenericEntityServiceprotected OfferServiceExtensionManagerprotected static final org.apache.commons.logging.Logprotected OfferDaoprotected PromotableItemFactoryprotected final PromotableOfferUtility -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected booleanadjustmentIsNotGoodEnoughToBeApplied(PromotableCandidateItemOffer itemOffer, PromotableOrderItemPriceDetail detail) The adjustment might not be better than the sale price.voidapplyAdjustmentsForItemPriceDetails(PromotableCandidateItemOffer itemOffer, List<PromotableOrderItemPriceDetail> itemPriceDetails) Takes in a list ofPromotableOrderItemPriceDetails and applies adjustments for all of the discounts that match the passed in offer.voidapplyOrderItemAdjustment(PromotableCandidateItemOffer itemOffer, PromotableOrderItemPriceDetail itemPriceDetail) Used by applyAdjustments to create an OrderItemAdjustment from a CandidateOrderOffer and associates the OrderItemAdjustment to the OrderItem.buildItemDetailAdjustmentMap(OrderItemPriceDetail itemDetail) Builds a map from itemDetails for adjustment processing.buildOrderItemList(Order order) Builds the list of order-items at the level they are being priced which includes splitting bundles that are being priced at the item level.buildPromotableItemMap(PromotableOrder promotableOrder) Builds a map from orderItem to promotableOrderItem.findRelatedQualifierRoot(OrderItem relatedQualifier) Given an orderItem, finds the top most parent order item.protected Comparator<PromotableOrderItemPriceDetail>getPromotableItemComparator(boolean applyToSalePrice) booleanisAddOnOrderItem(OrderItem orderItem) Determines whether or not theOrderItemwas added by a Product Add-OnbooleanitemOfferCanBeApplied(PromotableCandidateItemOffer itemOffer, List<PromotableOrderItemPriceDetail> details) Return false if a totalitarian or non-combinable offer has already been applied or if this offer is totalitarian or non-combinable and this order already has adjustments applied.intmarkQualifiersForCriteria(PromotableCandidateItemOffer itemOffer, OfferItemCriteria itemCriteria, List<PromotableOrderItemPriceDetail> priceDetails) Returns the number of qualifiers marked for the passed in itemCriteriaintmarkRelatedQualifiersAndTargetsForItemCriteria(PromotableCandidateItemOffer itemOffer, PromotableOrder order, OrderItemHolder orderItemHolder, OfferItemCriteria itemCriteria, List<PromotableOrderItemPriceDetail> priceDetails, ItemOfferMarkTargets itemOfferMarkTargets) Returns the number of targets marked for the passed in itemCriteriaintmarkTargetsForCriteria(PromotableCandidateItemOffer itemOffer, OrderItem relatedQualifier, boolean checkOnly, Offer promotion, OrderItem relatedQualifierRoot, OfferItemCriteria itemCriteria, List<PromotableOrderItemPriceDetail> priceDetails, int targetQtyNeeded) Returns the number of targets marked for the passed in itemCriteriabooleanmarkTargetsForOfferPriceData(PromotableCandidateItemOffer itemOffer, OrderItem relatedQualifier, boolean checkOnly, Offer promotion, OrderItem relatedQualifierRoot, OfferPriceData offerPriceData, List<PromotableOrderItemPriceDetail> priceDetails) protected booleanorderMeetsProvidedSubtotalRequirement(Offer offer, HashMap<OfferItemCriteria, List<PromotableOrderItem>> promotableOrderItems, Money minSubTotal) booleanorderMeetsQualifyingSubtotalRequirements(PromotableOrder order, Offer offer, HashMap<OfferItemCriteria, List<PromotableOrderItem>> qualifiersMap) Determines whether or not anPromotableOrdermeets the qualifying subtotal requirement of anOfferbooleanorderMeetsSubtotalRequirements(PromotableOrder order, Offer offer) Determines whether or not anPromotableOrdermeets the subtotal requirement of anOfferbooleanorderMeetsTargetSubtotalRequirements(PromotableOrder order, Offer offer, HashMap<OfferItemCriteria, List<PromotableOrderItem>> targetsMap) Determines whether or not anPromotableOrdermeets the target subtotal requirement of anOffervoidremoveUnmatchedPriceDetails(Map<Long, ? extends OrderItemPriceDetail> unmatchedDetailsMap, Iterator<? extends OrderItemPriceDetail> pdIterator) Removes price details from the iterator that are contained in the passed in map.voidremoveUnmatchedQualifiers(Map<Long, ? extends OrderItemQualifier> unmatchedQualifiersMap, Iterator<? extends OrderItemQualifier> qIterator) Removes qualifiers from the iterator that are contained in the passed in map.voidsetGenericEntityService(GenericEntityService entityService) voidsetOfferDao(OfferDao offerDao) voidsetPromotableItemFactory(PromotableItemFactory promotableItemFactory) voidsortQualifierItemDetails(List<PromotableOrderItemPriceDetail> itemPriceDetails, boolean applyToSalePrice) Used inItemOfferProcessorImpl.applyItemQualifiersAndTargets(PromotableCandidateItemOffer, PromotableOrder)Allow for customized sorting for which qualifier items should be attempted to be used first for a promotion.voidsortTargetItemDetails(List<PromotableOrderItemPriceDetail> itemPriceDetails, boolean applyToSalePrice) Used inItemOfferProcessorImpl.applyItemQualifiersAndTargets(PromotableCandidateItemOffer, PromotableOrder)Allow for customized sorting for which qualifier items should be attempted to be used first for a promotion.protected voidupdateItemAdjustment(OrderItemPriceDetailAdjustment itemAdjustment, PromotableOrderItemPriceDetailAdjustment promotableAdjustment) voidupdatePriceDetail(OrderItemPriceDetail itemDetail, PromotableOrderItemPriceDetail promotableDetail) Updates the passed in price detail and its associated adjustments.
-
Field Details
-
LOG
protected static final org.apache.commons.logging.Log LOG -
promotableOfferUtility
-
promotableItemFactory
-
offerDao
-
extensionManager
-
entityService
-
-
Constructor Details
-
OfferServiceUtilitiesImpl
-
-
Method Details
-
sortTargetItemDetails
public void sortTargetItemDetails(List<PromotableOrderItemPriceDetail> itemPriceDetails, boolean applyToSalePrice) Description copied from interface:OfferServiceUtilitiesUsed inItemOfferProcessorImpl.applyItemQualifiersAndTargets(PromotableCandidateItemOffer, PromotableOrder)Allow for customized sorting for which qualifier items should be attempted to be used first for a promotion.Default behavior is to sort descending, so higher-value items are attempted to be discounted first.
- Specified by:
sortTargetItemDetailsin interfaceOfferServiceUtilities
-
sortQualifierItemDetails
public void sortQualifierItemDetails(List<PromotableOrderItemPriceDetail> itemPriceDetails, boolean applyToSalePrice) Description copied from interface:OfferServiceUtilitiesUsed inItemOfferProcessorImpl.applyItemQualifiersAndTargets(PromotableCandidateItemOffer, PromotableOrder)Allow for customized sorting for which qualifier items should be attempted to be used first for a promotion.Default behavior is to sort descending, so higher-value items are attempted to be qualified first.
- Specified by:
sortQualifierItemDetailsin interfaceOfferServiceUtilities
-
getPromotableItemComparator
protected Comparator<PromotableOrderItemPriceDetail> getPromotableItemComparator(boolean applyToSalePrice) -
findRelatedQualifierRoot
Description copied from interface:OfferServiceUtilitiesGiven an orderItem, finds the top most parent order item.- Specified by:
findRelatedQualifierRootin interfaceOfferServiceUtilities- Returns:
-
itemOfferCanBeApplied
public boolean itemOfferCanBeApplied(PromotableCandidateItemOffer itemOffer, List<PromotableOrderItemPriceDetail> details) Description copied from interface:OfferServiceUtilitiesReturn false if a totalitarian or non-combinable offer has already been applied or if this offer is totalitarian or non-combinable and this order already has adjustments applied.- Specified by:
itemOfferCanBeAppliedin interfaceOfferServiceUtilities- Returns:
-
markQualifiersForCriteria
public int markQualifiersForCriteria(PromotableCandidateItemOffer itemOffer, OfferItemCriteria itemCriteria, List<PromotableOrderItemPriceDetail> priceDetails) Description copied from interface:OfferServiceUtilitiesReturns the number of qualifiers marked for the passed in itemCriteria- Specified by:
markQualifiersForCriteriain interfaceOfferServiceUtilities- Returns:
-
markTargetsForCriteria
public int markTargetsForCriteria(PromotableCandidateItemOffer itemOffer, OrderItem relatedQualifier, boolean checkOnly, Offer promotion, OrderItem relatedQualifierRoot, OfferItemCriteria itemCriteria, List<PromotableOrderItemPriceDetail> priceDetails, int targetQtyNeeded) Description copied from interface:OfferServiceUtilitiesReturns the number of targets marked for the passed in itemCriteria- Specified by:
markTargetsForCriteriain interfaceOfferServiceUtilities- Returns:
-
markTargetsForOfferPriceData
public boolean markTargetsForOfferPriceData(PromotableCandidateItemOffer itemOffer, OrderItem relatedQualifier, boolean checkOnly, Offer promotion, OrderItem relatedQualifierRoot, OfferPriceData offerPriceData, List<PromotableOrderItemPriceDetail> priceDetails) - Specified by:
markTargetsForOfferPriceDatain interfaceOfferServiceUtilities
-
markRelatedQualifiersAndTargetsForItemCriteria
public int markRelatedQualifiersAndTargetsForItemCriteria(PromotableCandidateItemOffer itemOffer, PromotableOrder order, OrderItemHolder orderItemHolder, OfferItemCriteria itemCriteria, List<PromotableOrderItemPriceDetail> priceDetails, ItemOfferMarkTargets itemOfferMarkTargets) Description copied from interface:OfferServiceUtilitiesReturns the number of targets marked for the passed in itemCriteria- Specified by:
markRelatedQualifiersAndTargetsForItemCriteriain interfaceOfferServiceUtilities- Returns:
-
applyAdjustmentsForItemPriceDetails
public void applyAdjustmentsForItemPriceDetails(PromotableCandidateItemOffer itemOffer, List<PromotableOrderItemPriceDetail> itemPriceDetails) Description copied from interface:OfferServiceUtilitiesTakes in a list ofPromotableOrderItemPriceDetails and applies adjustments for all of the discounts that match the passed in offer.- Specified by:
applyAdjustmentsForItemPriceDetailsin interfaceOfferServiceUtilities
-
isAddOnOrderItem
Description copied from interface:OfferServiceUtilitiesDetermines whether or not theOrderItemwas added by a Product Add-On- Specified by:
isAddOnOrderItemin interfaceOfferServiceUtilities- Returns:
-
adjustmentIsNotGoodEnoughToBeApplied
protected boolean adjustmentIsNotGoodEnoughToBeApplied(PromotableCandidateItemOffer itemOffer, PromotableOrderItemPriceDetail detail) The adjustment might not be better than the sale price.- Parameters:
itemOffer-detail-- Returns:
-
applyOrderItemAdjustment
public void applyOrderItemAdjustment(PromotableCandidateItemOffer itemOffer, PromotableOrderItemPriceDetail itemPriceDetail) Description copied from interface:OfferServiceUtilitiesUsed by applyAdjustments to create an OrderItemAdjustment from a CandidateOrderOffer and associates the OrderItemAdjustment to the OrderItem.- Specified by:
applyOrderItemAdjustmentin interfaceOfferServiceUtilities- Parameters:
itemOffer- a CandidateOrderOffer to apply to an Order
-
buildOrderItemList
Description copied from interface:OfferServiceUtilitiesBuilds the list of order-items at the level they are being priced which includes splitting bundles that are being priced at the item level.- Specified by:
buildOrderItemListin interfaceOfferServiceUtilities- Returns:
-
buildPromotableItemMap
Description copied from interface:OfferServiceUtilitiesBuilds a map from orderItem to promotableOrderItem.- Specified by:
buildPromotableItemMapin interfaceOfferServiceUtilities- Returns:
-
buildItemDetailAdjustmentMap
public Map<Long,OrderItemPriceDetailAdjustment> buildItemDetailAdjustmentMap(OrderItemPriceDetail itemDetail) Description copied from interface:OfferServiceUtilitiesBuilds a map from itemDetails for adjustment processing.- Specified by:
buildItemDetailAdjustmentMapin interfaceOfferServiceUtilities- Returns:
-
updatePriceDetail
public void updatePriceDetail(OrderItemPriceDetail itemDetail, PromotableOrderItemPriceDetail promotableDetail) Description copied from interface:OfferServiceUtilitiesUpdates the passed in price detail and its associated adjustments.- Specified by:
updatePriceDetailin interfaceOfferServiceUtilities
-
updateItemAdjustment
protected void updateItemAdjustment(OrderItemPriceDetailAdjustment itemAdjustment, PromotableOrderItemPriceDetailAdjustment promotableAdjustment) -
removeUnmatchedPriceDetails
public void removeUnmatchedPriceDetails(Map<Long, ? extends OrderItemPriceDetail> unmatchedDetailsMap, Iterator<? extends OrderItemPriceDetail> pdIterator) Description copied from interface:OfferServiceUtilitiesRemoves price details from the iterator that are contained in the passed in map.- Specified by:
removeUnmatchedPriceDetailsin interfaceOfferServiceUtilities
-
removeUnmatchedQualifiers
public void removeUnmatchedQualifiers(Map<Long, ? extends OrderItemQualifier> unmatchedQualifiersMap, Iterator<? extends OrderItemQualifier> qIterator) Description copied from interface:OfferServiceUtilitiesRemoves qualifiers from the iterator that are contained in the passed in map.- Specified by:
removeUnmatchedQualifiersin interfaceOfferServiceUtilities
-
orderMeetsQualifyingSubtotalRequirements
public boolean orderMeetsQualifyingSubtotalRequirements(PromotableOrder order, Offer offer, HashMap<OfferItemCriteria, List<PromotableOrderItem>> qualifiersMap) Description copied from interface:OfferServiceUtilitiesDetermines whether or not anPromotableOrdermeets the qualifying subtotal requirement of anOffer- Specified by:
orderMeetsQualifyingSubtotalRequirementsin interfaceOfferServiceUtilities- Returns:
- boolean
-
orderMeetsTargetSubtotalRequirements
public boolean orderMeetsTargetSubtotalRequirements(PromotableOrder order, Offer offer, HashMap<OfferItemCriteria, List<PromotableOrderItem>> targetsMap) Description copied from interface:OfferServiceUtilitiesDetermines whether or not anPromotableOrdermeets the target subtotal requirement of anOffer- Specified by:
orderMeetsTargetSubtotalRequirementsin interfaceOfferServiceUtilities- Returns:
-
orderMeetsProvidedSubtotalRequirement
protected boolean orderMeetsProvidedSubtotalRequirement(Offer offer, HashMap<OfferItemCriteria, List<PromotableOrderItem>> promotableOrderItems, Money minSubTotal) -
orderMeetsSubtotalRequirements
Description copied from interface:OfferServiceUtilitiesDetermines whether or not anPromotableOrdermeets the subtotal requirement of anOffer- Specified by:
orderMeetsSubtotalRequirementsin interfaceOfferServiceUtilities- Returns:
- boolean
-
getPromotableItemFactory
-
setPromotableItemFactory
-
getOfferDao
-
setOfferDao
-
getGenericEntityService
-
setGenericEntityService
-