org.broadleafcommerce.core.offer.service.processor
Class OrderOfferProcessorImpl
java.lang.Object
org.broadleafcommerce.core.offer.service.processor.AbstractBaseProcessor
org.broadleafcommerce.core.offer.service.processor.OrderOfferProcessorImpl
- All Implemented Interfaces:
- BaseProcessor, OrderOfferProcessor
- Direct Known Subclasses:
- FulfillmentGroupOfferProcessorImpl, ItemOfferProcessorImpl
@Service(value="blOrderOfferProcessor")
public class OrderOfferProcessorImpl
- extends AbstractBaseProcessor
- implements OrderOfferProcessor
- Author:
- jfischer
|
Method Summary |
boolean |
applyAllOrderOffers(List<PromotableCandidateOrderOffer> orderOffers,
PromotableOrder order)
Private method that takes a list of sorted CandidateOrderOffers and determines if each offer can be
applied based on the restrictions (stackable and/or combinable) on that offer. |
protected void |
applyOrderOffer(PromotableOrder order,
PromotableCandidateOrderOffer orderOffer)
Private method used by applyAllOrderOffers to create an OrderAdjustment from a CandidateOrderOffer
and associates the OrderAdjustment to the Order. |
protected boolean |
compareAndAdjustOrderAndItemOffers(PromotableOrder order,
boolean orderOffersApplied)
|
void |
compileOrderTotal(PromotableOrder order)
|
boolean |
couldOfferApplyToOrder(Offer offer,
PromotableOrder order)
Private method which executes the appliesToOrderRules in the Offer to determine if this offer
can be applied to the Order, OrderItem, or FulfillmentGroup. |
protected boolean |
couldOfferApplyToOrder(Offer offer,
PromotableOrder order,
PromotableFulfillmentGroup fulfillmentGroup)
Private method which executes the appliesToOrderRules in the Offer to determine if this offer
can be applied to the Order, OrderItem, or FulfillmentGroup. |
protected boolean |
couldOfferApplyToOrder(Offer offer,
PromotableOrder order,
PromotableOrderItem discreteOrderItem)
Private method which executes the appliesToOrderRules in the Offer to determine if this offer
can be applied to the Order, OrderItem, or FulfillmentGroup. |
protected boolean |
couldOfferApplyToOrder(Offer offer,
PromotableOrder order,
PromotableOrderItem discreteOrderItem,
PromotableFulfillmentGroup fulfillmentGroup)
Private method which executes the appliesToOrderRules in the Offer to determine if this offer
can be applied to the Order, OrderItem, or FulfillmentGroup. |
protected PromotableCandidateOrderOffer |
createCandidateOrderOffer(PromotableOrder order,
List<PromotableCandidateOrderOffer> qualifiedOrderOffers,
Offer offer)
|
void |
filterOrderLevelOffer(PromotableOrder order,
List<PromotableCandidateOrderOffer> qualifiedOrderOffers,
Offer offer)
|
void |
gatherCart(PromotableOrder promotableOrder)
|
protected void |
gatherFulfillmentGroupLinkedBundleOrderItems(Order order)
|
protected void |
gatherFulfillmentGroupLinkedDiscreteOrderItem(List<DiscreteOrderItem> itemsToRemove,
Map<String,Object[]> gatheredItem,
FulfillmentGroupItem fgItem,
DiscreteOrderItem orderItem,
String extraIdentifier)
|
protected void |
gatherFulfillmentGroupLinkedDiscreteOrderItems(Order order)
|
protected void |
gatherOrderLinkedBundleOrderItems(Order order)
|
protected void |
gatherOrderLinkedDiscreteOrderItem(List<DiscreteOrderItem> itemsToRemove,
Map<String,OrderItem> gatheredItem,
DiscreteOrderItem orderItem,
String extraIdentifier)
|
protected void |
gatherOrderLinkedDiscreteOrderItems(Order order)
|
protected String |
getBundleOrderItemIdentifier(BundleOrderItem bundleOrderItem)
|
CartService |
getCartService()
|
FulfillmentGroupItemDao |
getFulfillmentGroupItemDao()
|
OfferDao |
getOfferDao()
|
OrderItemService |
getOrderItemService()
|
PromotableItemFactory |
getPromotableItemFactory()
|
protected PromotableFulfillmentGroup |
getTargetFulfillmentGroup(PromotableOrder order,
OrderItem key)
|
void |
initializeBundleSplitItems(PromotableOrder order)
|
void |
initializeSplitItems(PromotableOrder order)
|
protected void |
mergeSplitBundleOrderItems(PromotableOrder order)
|
protected void |
mergeSplitDiscreteOrderItems(PromotableOrder order)
|
protected void |
mergeSplitItems(PromotableOrder order)
|
List<PromotableCandidateOrderOffer> |
removeTrailingNotCombinableOrderOffers(List<PromotableCandidateOrderOffer> candidateOffers)
|
void |
setCartService(CartService cartService)
|
void |
setFulfillmentGroupItemDao(FulfillmentGroupItemDao fulfillmentGroupItemDao)
|
void |
setOfferDao(OfferDao offerDao)
|
void |
setOrderItemService(OrderItemService orderItemService)
|
void |
setPromotableItemFactory(PromotableItemFactory promotableItemFactory)
|
| Methods inherited from class org.broadleafcommerce.core.offer.service.processor.AbstractBaseProcessor |
checkForItemRequirements, clearAllNonFinalizedQuantities, clearOffersandAdjustments, couldOfferApplyToCustomer, couldOfferApplyToOrderItems, couldOrderItemMeetOfferRequirement, executeExpression, filterOffers, finalizeQuantities, removeInvalidCustomerOffers, removeOutOfDateOffers |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
offerDao
protected OfferDao offerDao
cartService
protected CartService cartService
orderItemService
protected OrderItemService orderItemService
fulfillmentGroupItemDao
protected FulfillmentGroupItemDao fulfillmentGroupItemDao
promotableItemFactory
protected PromotableItemFactory promotableItemFactory
OrderOfferProcessorImpl
public OrderOfferProcessorImpl()
filterOrderLevelOffer
public void filterOrderLevelOffer(PromotableOrder order,
List<PromotableCandidateOrderOffer> qualifiedOrderOffers,
Offer offer)
- Specified by:
filterOrderLevelOffer in interface OrderOfferProcessor
couldOfferApplyToOrder
public boolean couldOfferApplyToOrder(Offer offer,
PromotableOrder order)
- Private method which executes the appliesToOrderRules in the Offer to determine if this offer
can be applied to the Order, OrderItem, or FulfillmentGroup.
- Specified by:
couldOfferApplyToOrder in interface OrderOfferProcessor
- Parameters:
offer - order -
- Returns:
- true if offer can be applied, otherwise false
couldOfferApplyToOrder
protected boolean couldOfferApplyToOrder(Offer offer,
PromotableOrder order,
PromotableOrderItem discreteOrderItem)
- Private method which executes the appliesToOrderRules in the Offer to determine if this offer
can be applied to the Order, OrderItem, or FulfillmentGroup.
- Parameters:
offer - order - discreteOrderItem -
- Returns:
- true if offer can be applied, otherwise false
couldOfferApplyToOrder
protected boolean couldOfferApplyToOrder(Offer offer,
PromotableOrder order,
PromotableFulfillmentGroup fulfillmentGroup)
- Private method which executes the appliesToOrderRules in the Offer to determine if this offer
can be applied to the Order, OrderItem, or FulfillmentGroup.
- Parameters:
offer - order - fulfillmentGroup -
- Returns:
- true if offer can be applied, otherwise false
couldOfferApplyToOrder
protected boolean couldOfferApplyToOrder(Offer offer,
PromotableOrder order,
PromotableOrderItem discreteOrderItem,
PromotableFulfillmentGroup fulfillmentGroup)
- Private method which executes the appliesToOrderRules in the Offer to determine if this offer
can be applied to the Order, OrderItem, or FulfillmentGroup.
- Parameters:
offer - order - discreteOrderItem - fulfillmentGroup -
- Returns:
- true if offer can be applied, otherwise false
createCandidateOrderOffer
protected PromotableCandidateOrderOffer createCandidateOrderOffer(PromotableOrder order,
List<PromotableCandidateOrderOffer> qualifiedOrderOffers,
Offer offer)
removeTrailingNotCombinableOrderOffers
public List<PromotableCandidateOrderOffer> removeTrailingNotCombinableOrderOffers(List<PromotableCandidateOrderOffer> candidateOffers)
- Specified by:
removeTrailingNotCombinableOrderOffers in interface OrderOfferProcessor
applyAllOrderOffers
public boolean applyAllOrderOffers(List<PromotableCandidateOrderOffer> orderOffers,
PromotableOrder order)
- Private method that takes a list of sorted CandidateOrderOffers and determines if each offer can be
applied based on the restrictions (stackable and/or combinable) on that offer. OrderAdjustments
are create on the Order for each applied CandidateOrderOffer. An offer with stackable equals false
cannot be applied to an Order that already contains an OrderAdjustment. An offer with combinable
equals false cannot be applied to the Order if the Order already contains an OrderAdjustment.
- Specified by:
applyAllOrderOffers in interface OrderOfferProcessor
- Parameters:
orderOffers - a sorted list of CandidateOrderOfferorder - the Order to apply the CandidateOrderOffers
- Returns:
- true if order offer applied; otherwise false
initializeBundleSplitItems
public void initializeBundleSplitItems(PromotableOrder order)
- Specified by:
initializeBundleSplitItems in interface OrderOfferProcessor
initializeSplitItems
public void initializeSplitItems(PromotableOrder order)
- Specified by:
initializeSplitItems in interface OrderOfferProcessor
compareAndAdjustOrderAndItemOffers
protected boolean compareAndAdjustOrderAndItemOffers(PromotableOrder order,
boolean orderOffersApplied)
gatherCart
public void gatherCart(PromotableOrder promotableOrder)
- Specified by:
gatherCart in interface OrderOfferProcessor
gatherOrderLinkedBundleOrderItems
protected void gatherOrderLinkedBundleOrderItems(Order order)
throws PricingException
- Throws:
PricingException
gatherOrderLinkedDiscreteOrderItems
protected void gatherOrderLinkedDiscreteOrderItems(Order order)
throws PricingException
- Throws:
PricingException
gatherFulfillmentGroupLinkedBundleOrderItems
protected void gatherFulfillmentGroupLinkedBundleOrderItems(Order order)
throws PricingException
- Throws:
PricingException
gatherFulfillmentGroupLinkedDiscreteOrderItems
protected void gatherFulfillmentGroupLinkedDiscreteOrderItems(Order order)
throws PricingException
- Throws:
PricingException
getBundleOrderItemIdentifier
protected String getBundleOrderItemIdentifier(BundleOrderItem bundleOrderItem)
gatherOrderLinkedDiscreteOrderItem
protected void gatherOrderLinkedDiscreteOrderItem(List<DiscreteOrderItem> itemsToRemove,
Map<String,OrderItem> gatheredItem,
DiscreteOrderItem orderItem,
String extraIdentifier)
gatherFulfillmentGroupLinkedDiscreteOrderItem
protected void gatherFulfillmentGroupLinkedDiscreteOrderItem(List<DiscreteOrderItem> itemsToRemove,
Map<String,Object[]> gatheredItem,
FulfillmentGroupItem fgItem,
DiscreteOrderItem orderItem,
String extraIdentifier)
applyOrderOffer
protected void applyOrderOffer(PromotableOrder order,
PromotableCandidateOrderOffer orderOffer)
- Private method used by applyAllOrderOffers to create an OrderAdjustment from a CandidateOrderOffer
and associates the OrderAdjustment to the Order.
- Parameters:
orderOffer - a CandidateOrderOffer to apply to an Order
mergeSplitItems
protected void mergeSplitItems(PromotableOrder order)
mergeSplitDiscreteOrderItems
protected void mergeSplitDiscreteOrderItems(PromotableOrder order)
throws PricingException
- Throws:
PricingException
mergeSplitBundleOrderItems
protected void mergeSplitBundleOrderItems(PromotableOrder order)
throws PricingException
- Throws:
PricingException
getTargetFulfillmentGroup
protected PromotableFulfillmentGroup getTargetFulfillmentGroup(PromotableOrder order,
OrderItem key)
compileOrderTotal
public void compileOrderTotal(PromotableOrder order)
- Specified by:
compileOrderTotal in interface OrderOfferProcessor
getOfferDao
public OfferDao getOfferDao()
- Specified by:
getOfferDao in interface OrderOfferProcessor
setOfferDao
public void setOfferDao(OfferDao offerDao)
- Specified by:
setOfferDao in interface OrderOfferProcessor
getCartService
public CartService getCartService()
- Specified by:
getCartService in interface OrderOfferProcessor
setCartService
public void setCartService(CartService cartService)
- Specified by:
setCartService in interface OrderOfferProcessor
getOrderItemService
public OrderItemService getOrderItemService()
- Specified by:
getOrderItemService in interface OrderOfferProcessor
setOrderItemService
public void setOrderItemService(OrderItemService orderItemService)
- Specified by:
setOrderItemService in interface OrderOfferProcessor
getFulfillmentGroupItemDao
public FulfillmentGroupItemDao getFulfillmentGroupItemDao()
- Specified by:
getFulfillmentGroupItemDao in interface OrderOfferProcessor
setFulfillmentGroupItemDao
public void setFulfillmentGroupItemDao(FulfillmentGroupItemDao fulfillmentGroupItemDao)
- Specified by:
setFulfillmentGroupItemDao in interface OrderOfferProcessor
getPromotableItemFactory
public PromotableItemFactory getPromotableItemFactory()
- Specified by:
getPromotableItemFactory in interface OrderOfferProcessor
setPromotableItemFactory
public void setPromotableItemFactory(PromotableItemFactory promotableItemFactory)
- Specified by:
setPromotableItemFactory in interface OrderOfferProcessor
Copyright © 2012. All Rights Reserved.