org.broadleafcommerce.core.offer.service
Class OfferServiceUtilitiesImpl

java.lang.Object
  extended by org.broadleafcommerce.core.offer.service.OfferServiceUtilitiesImpl
All Implemented Interfaces:
OfferServiceUtilities

@Service(value="blOfferServiceUtilities")
public class OfferServiceUtilitiesImpl
extends Object
implements OfferServiceUtilities

Author:
bpolster

Field Summary
protected  OfferServiceExtensionManager extensionManager
           
protected  OfferDao offerDao
           
protected  PromotableItemFactory promotableItemFactory
           
 
Constructor Summary
OfferServiceUtilitiesImpl()
           
 
Method Summary
protected  boolean adjustmentIsNotGoodEnoughToBeApplied(PromotableCandidateItemOffer itemOffer, PromotableOrderItemPriceDetail detail)
          The adjustment might not be better than the sale price.
 void applyAdjustmentsForItemPriceDetails(PromotableCandidateItemOffer itemOffer, List<PromotableOrderItemPriceDetail> itemPriceDetails)
          Takes in a list of PromotableOrderItemPriceDetails and applies adjustments for all of the discounts that match the passed in offer.
 void applyOrderItemAdjustment(PromotableCandidateItemOffer itemOffer, PromotableOrderItemPriceDetail itemPriceDetail)
          Used by applyAdjustments to create an OrderItemAdjustment from a CandidateOrderOffer and associates the OrderItemAdjustment to the OrderItem.
 Map<Long,OrderItemPriceDetailAdjustment> buildItemDetailAdjustmentMap(OrderItemPriceDetail itemDetail)
          Builds a map from itemDetails for adjustment processing.
 List<OrderItem> 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.
 Map<OrderItem,PromotableOrderItem> buildPromotableItemMap(PromotableOrder promotableOrder)
          Builds a map from orderItem to promotableOrderItem.
 OrderItem findRelatedQualifierRoot(OrderItem relatedQualifier)
          Given an orderItem, finds the top most parent order item.
 OfferDao getOfferDao()
           
protected  Comparator<PromotableOrderItemPriceDetail> getPromotableItemComparator(boolean applyToSalePrice)
           
 PromotableItemFactory getPromotableItemFactory()
           
 boolean itemOfferCanBeApplied(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.
 int markQualifiersForCriteria(PromotableCandidateItemOffer itemOffer, OfferItemCriteria itemCriteria, List<PromotableOrderItemPriceDetail> priceDetails)
          Returns the number of qualifiers marked for the passed in itemCriteria
 int markRelatedQualifiersAndTargetsForItemCriteria(PromotableCandidateItemOffer itemOffer, PromotableOrder order, OrderItemHolder orderItemHolder, OfferItemCriteria itemCriteria, List<PromotableOrderItemPriceDetail> priceDetails, ItemOfferMarkTargets itemOfferMarkTargets)
          Returns the number of targets marked for the passed in itemCriteria
 int markTargetsForCriteria(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 itemCriteria
 void removeUnmatchedPriceDetails(Map<Long,? extends OrderItemPriceDetail> unmatchedDetailsMap, Iterator<? extends OrderItemPriceDetail> pdIterator)
          Removes price details from the iterator that are contained in the passed in map.
 void removeUnmatchedQualifiers(Map<Long,? extends OrderItemQualifier> unmatchedQualifiersMap, Iterator<? extends OrderItemQualifier> qIterator)
          Removes qualifiers from the iterator that are contained in the passed in map.
 void setOfferDao(OfferDao offerDao)
           
 void setPromotableItemFactory(PromotableItemFactory promotableItemFactory)
           
 void sortQualifierItemDetails(List<PromotableOrderItemPriceDetail> itemPriceDetails, boolean applyToSalePrice)
          Used in ItemOfferProcessorImpl.applyItemQualifiersAndTargets(PromotableCandidateItemOffer, PromotableOrder) Allow for customized sorting for which qualifier items should be attempted to be used first for a promotion.
 void sortTargetItemDetails(List<PromotableOrderItemPriceDetail> itemPriceDetails, boolean applyToSalePrice)
          Used in ItemOfferProcessorImpl.applyItemQualifiersAndTargets(PromotableCandidateItemOffer, PromotableOrder) Allow for customized sorting for which qualifier items should be attempted to be used first for a promotion.
protected  void updateItemAdjustment(OrderItemPriceDetailAdjustment itemAdjustment, PromotableOrderItemPriceDetailAdjustment promotableAdjustment)
           
 void updatePriceDetail(OrderItemPriceDetail itemDetail, PromotableOrderItemPriceDetail promotableDetail)
          Updates the passed in price detail and its associated adjustments.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

promotableItemFactory

protected PromotableItemFactory promotableItemFactory

offerDao

protected OfferDao offerDao

extensionManager

protected OfferServiceExtensionManager extensionManager
Constructor Detail

OfferServiceUtilitiesImpl

public OfferServiceUtilitiesImpl()
Method Detail

sortTargetItemDetails

public void sortTargetItemDetails(List<PromotableOrderItemPriceDetail> itemPriceDetails,
                                  boolean applyToSalePrice)
Description copied from interface: OfferServiceUtilities
Used in ItemOfferProcessorImpl.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:
sortTargetItemDetails in interface OfferServiceUtilities

sortQualifierItemDetails

public void sortQualifierItemDetails(List<PromotableOrderItemPriceDetail> itemPriceDetails,
                                     boolean applyToSalePrice)
Description copied from interface: OfferServiceUtilities
Used in ItemOfferProcessorImpl.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:
sortQualifierItemDetails in interface OfferServiceUtilities

getPromotableItemComparator

protected Comparator<PromotableOrderItemPriceDetail> getPromotableItemComparator(boolean applyToSalePrice)

findRelatedQualifierRoot

public OrderItem findRelatedQualifierRoot(OrderItem relatedQualifier)
Description copied from interface: OfferServiceUtilities
Given an orderItem, finds the top most parent order item.

Specified by:
findRelatedQualifierRoot in interface OfferServiceUtilities
Returns:

itemOfferCanBeApplied

public boolean itemOfferCanBeApplied(PromotableCandidateItemOffer itemOffer,
                                     List<PromotableOrderItemPriceDetail> details)
Description copied from interface: OfferServiceUtilities
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.

Specified by:
itemOfferCanBeApplied in interface OfferServiceUtilities
Returns:

markQualifiersForCriteria

public int markQualifiersForCriteria(PromotableCandidateItemOffer itemOffer,
                                     OfferItemCriteria itemCriteria,
                                     List<PromotableOrderItemPriceDetail> priceDetails)
Description copied from interface: OfferServiceUtilities
Returns the number of qualifiers marked for the passed in itemCriteria

Specified by:
markQualifiersForCriteria in interface OfferServiceUtilities
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: OfferServiceUtilities
Returns the number of targets marked for the passed in itemCriteria

Specified by:
markTargetsForCriteria in interface OfferServiceUtilities
Returns:

markRelatedQualifiersAndTargetsForItemCriteria

public int markRelatedQualifiersAndTargetsForItemCriteria(PromotableCandidateItemOffer itemOffer,
                                                          PromotableOrder order,
                                                          OrderItemHolder orderItemHolder,
                                                          OfferItemCriteria itemCriteria,
                                                          List<PromotableOrderItemPriceDetail> priceDetails,
                                                          ItemOfferMarkTargets itemOfferMarkTargets)
Description copied from interface: OfferServiceUtilities
Returns the number of targets marked for the passed in itemCriteria

Specified by:
markRelatedQualifiersAndTargetsForItemCriteria in interface OfferServiceUtilities
Returns:

applyAdjustmentsForItemPriceDetails

public void applyAdjustmentsForItemPriceDetails(PromotableCandidateItemOffer itemOffer,
                                                List<PromotableOrderItemPriceDetail> itemPriceDetails)
Description copied from interface: OfferServiceUtilities
Takes in a list of PromotableOrderItemPriceDetails and applies adjustments for all of the discounts that match the passed in offer.

Specified by:
applyAdjustmentsForItemPriceDetails in interface OfferServiceUtilities

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: OfferServiceUtilities
Used by applyAdjustments to create an OrderItemAdjustment from a CandidateOrderOffer and associates the OrderItemAdjustment to the OrderItem.

Specified by:
applyOrderItemAdjustment in interface OfferServiceUtilities

buildOrderItemList

public List<OrderItem> buildOrderItemList(Order order)
Description copied from interface: OfferServiceUtilities
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.

Specified by:
buildOrderItemList in interface OfferServiceUtilities
Returns:

buildPromotableItemMap

public Map<OrderItem,PromotableOrderItem> buildPromotableItemMap(PromotableOrder promotableOrder)
Description copied from interface: OfferServiceUtilities
Builds a map from orderItem to promotableOrderItem.

Specified by:
buildPromotableItemMap in interface OfferServiceUtilities
Returns:

buildItemDetailAdjustmentMap

public Map<Long,OrderItemPriceDetailAdjustment> buildItemDetailAdjustmentMap(OrderItemPriceDetail itemDetail)
Description copied from interface: OfferServiceUtilities
Builds a map from itemDetails for adjustment processing.

Specified by:
buildItemDetailAdjustmentMap in interface OfferServiceUtilities
Returns:

updatePriceDetail

public void updatePriceDetail(OrderItemPriceDetail itemDetail,
                              PromotableOrderItemPriceDetail promotableDetail)
Description copied from interface: OfferServiceUtilities
Updates the passed in price detail and its associated adjustments.

Specified by:
updatePriceDetail in interface OfferServiceUtilities

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: OfferServiceUtilities
Removes price details from the iterator that are contained in the passed in map.

Specified by:
removeUnmatchedPriceDetails in interface OfferServiceUtilities

removeUnmatchedQualifiers

public void removeUnmatchedQualifiers(Map<Long,? extends OrderItemQualifier> unmatchedQualifiersMap,
                                      Iterator<? extends OrderItemQualifier> qIterator)
Description copied from interface: OfferServiceUtilities
Removes qualifiers from the iterator that are contained in the passed in map.

Specified by:
removeUnmatchedQualifiers in interface OfferServiceUtilities

getPromotableItemFactory

public PromotableItemFactory getPromotableItemFactory()

setPromotableItemFactory

public void setPromotableItemFactory(PromotableItemFactory promotableItemFactory)

getOfferDao

public OfferDao getOfferDao()

setOfferDao

public void setOfferDao(OfferDao offerDao)


Copyright © 2013. All Rights Reserved.