org.broadleafcommerce.core.offer.service.processor.OrderOfferProcessor Maven / Gradle / Ivy
/*
* Copyright 2008-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.broadleafcommerce.core.offer.service.processor;
import org.broadleafcommerce.core.offer.dao.OfferDao;
import org.broadleafcommerce.core.offer.domain.Offer;
import org.broadleafcommerce.core.offer.service.discount.domain.PromotableCandidateOrderOffer;
import org.broadleafcommerce.core.offer.service.discount.domain.PromotableItemFactory;
import org.broadleafcommerce.core.offer.service.discount.domain.PromotableOrder;
import org.broadleafcommerce.core.order.dao.OrderItemDao;
import java.util.List;
import java.util.Map;
/**
*
* @author jfischer
*
*/
public interface OrderOfferProcessor extends BaseProcessor {
public void filterOrderLevelOffer(PromotableOrder promotableOrder, List qualifiedOrderOffers, Offer offer);
public Boolean executeExpression(String expression, Map vars);
/**
* Executes the appliesToOrderRules in the Offer to determine if this offer
* can be applied to the Order, OrderItem, or FulfillmentGroup.
*
* @param offer
* @param order
* @return true if offer can be applied, otherwise false
*/
public boolean couldOfferApplyToOrder(Offer offer, PromotableOrder promotableOrder);
public List removeTrailingNotCombinableOrderOffers(List candidateOffers);
/**
* 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.
*
* @param orderOffers a sorted list of CandidateOrderOffer
* @param order the Order to apply the CandidateOrderOffers
*/
public void applyAllOrderOffers(List orderOffers, PromotableOrder promotableOrder);
public PromotableItemFactory getPromotableItemFactory();
public void setPromotableItemFactory(PromotableItemFactory promotableItemFactory);
/**
* Takes the adjustments and PriceDetails from the passed in PromotableOrder and transfers them to the
* actual order first checking to see if they already exist.
*
* @param promotableOrder
*/
public void synchronizeAdjustmentsAndPrices(PromotableOrder promotableOrder);
/**
* Set the offerDao (primarily for unit testing)
*/
public void setOfferDao(OfferDao offerDao);
/**
* Set the orderItemDao (primarily for unit testing)
*/
public void setOrderItemDao(OrderItemDao orderItemDao);
}