@Service(value="blOfferService") public class OfferServiceImpl extends Object implements OfferService
Modifier and Type | Field and Description |
---|---|
protected CustomerOfferDao |
customerOfferDao |
protected EntityDuplicator |
duplicator |
protected javax.persistence.EntityManager |
em |
protected OfferServiceExtensionManager |
extensionManager |
protected FulfillmentGroupOfferProcessor |
fulfillmentGroupOfferProcessor |
protected ItemOfferProcessor |
itemOfferProcessor |
protected OfferAuditService |
offerAuditService |
protected OfferCodeDao |
offerCodeDao |
protected OfferDao |
offerDao |
protected EntityDuplicateModifier<Offer> |
offerDuplicateModifier |
protected OrderOfferProcessor |
orderOfferProcessor |
protected OrderService |
orderService |
protected PromotableItemFactory |
promotableItemFactory |
protected SandBoxHelper |
sandBoxHelper |
protected StreamingTransactionCapableUtil |
transUtil |
Constructor and Description |
---|
OfferServiceImpl() |
Modifier and Type | Method and Description |
---|---|
Order |
applyAndSaveFulfillmentGroupOffersToOrder(List<Offer> offers,
Order order) |
Order |
applyAndSaveOffersToOrder(List<Offer> offers,
Order order)
Apply offers to order.
|
void |
applyFulfillmentGroupOffersToOrder(List<Offer> offers,
Order order)
Deprecated.
|
void |
applyOffersToOrder(List<Offer> offers,
Order order)
Deprecated.
|
List<OfferCode> |
buildOfferCodeListForCustomer(Customer customer)
Deprecated.
|
List<OfferCode> |
buildOfferCodeListForCustomer(Order order)
Attempts to resolve a list of offer codes associated explicitly with the customer.
|
List<Offer> |
buildOfferListForOrder(Order order)
Creates a list of offers that applies to this order.
|
Boolean |
deleteOfferCode(OfferCode code) |
Offer |
duplicate(Long originalOfferId)
Make a production copy of an offer.
|
List<Offer> |
findAllOffers()
Returns all offers
|
Offer |
findOfferById(Long offerId) |
OfferCode |
findOfferCodeById(Long id)
Lookup an OfferCode by its id
|
List<OfferCode> |
findOfferCodesByIds(Collection<Long> ids) |
CustomerOfferDao |
getCustomerOfferDao() |
FulfillmentGroupOfferProcessor |
getFulfillmentGroupOfferProcessor() |
ItemOfferProcessor |
getItemOfferProcessor() |
OfferCodeDao |
getOfferCodeDao() |
OfferDao |
getOfferDao() |
Map<Offer,OfferCode> |
getOffersRetrievedFromCodes(List<OfferCode> codes,
Set<Offer> appliedOffers)
Given a list of offer codes and a set of offers, return a map of of offer codes that are keyed by the offer that was
applied to the order
|
Map<Offer,OfferCode> |
getOffersRetrievedFromCodes(Order order)
|
OrderOfferProcessor |
getOrderOfferProcessor() |
OrderService |
getOrderService() |
PromotableItemFactory |
getPromotableItemFactory() |
Set<Offer> |
getUniqueOffersFromOrder(Order order)
Returns a set of offers that have been used for this order by checking adjustments on the different levels like
FulfillmentGroups and OrderItems.
|
List<OfferCode> |
lookupAllOfferCodesByCode(String code)
Lookup all OfferCodes by code.
|
List<Offer> |
lookupAllOffersByCode(String code)
Lookup all offers by code.
|
protected List<Offer> |
lookupAutomaticDeliveryOffers()
Private method used to retrieve all offers with automaticallyAdded set to true
|
Offer |
lookupOfferByCode(String code)
Creates a list of offers that applies to this order.
|
OfferCode |
lookupOfferCodeByCode(String code)
Lookup OfferCode by code.
|
protected List<CustomerOffer> |
lookupOfferCustomerByCustomer(Customer customer)
Private method used to retrieve all offers assigned to this customer.
|
protected List<OfferCode> |
refreshOfferCodesIfApplicable(Order order)
For enterprise installations, this will refresh any OfferCodes found to be out-of-date with
current sandbox status.
|
protected List<OfferCode> |
removeOutOfDateOfferCodes(List<OfferCode> offerCodes)
Removes all out of date offerCodes based on the offerCode and its offer's start and end
date.
|
Offer |
save(Offer offer)
Save a new offer or updates an existing offer
|
OfferCode |
saveOfferCode(OfferCode offerCode)
Saves a new Offer or updates an existing Offer that belongs to an OfferCode, then saves or updates the OfferCode
|
void |
setCustomerOfferDao(CustomerOfferDao customerOfferDao) |
void |
setFulfillmentGroupOfferProcessor(FulfillmentGroupOfferProcessor fulfillmentGroupOfferProcessor) |
void |
setItemOfferProcessor(ItemOfferProcessor itemOfferProcessor) |
void |
setOfferCodeDao(OfferCodeDao offerCodeDao) |
void |
setOfferDao(OfferDao offerDao) |
void |
setOrderOfferProcessor(OrderOfferProcessor orderOfferProcessor) |
void |
setOrderService(OrderService orderService) |
void |
setPromotableItemFactory(PromotableItemFactory promotableItemFactory) |
protected boolean |
verifyAdjustments(Order order,
boolean beforeSave) |
boolean |
verifyMaxCustomerUsageThreshold(Customer customer,
Offer offer)
Deprecated.
|
boolean |
verifyMaxCustomerUsageThreshold(Customer customer,
OfferCode code)
Deprecated.
|
boolean |
verifyMaxCustomerUsageThreshold(Order order,
Offer offer)
Validates that the Customer to whom an Order belongs has not exceeded the max uses for the
passed in offer.
|
boolean |
verifyMaxCustomerUsageThreshold(Order order,
OfferCode code)
Validates that the given OfferCode has not reached its maximum number of usages.
|
protected CustomerOfferDao customerOfferDao
protected OfferCodeDao offerCodeDao
protected OfferAuditService offerAuditService
protected OfferDao offerDao
protected OrderOfferProcessor orderOfferProcessor
protected ItemOfferProcessor itemOfferProcessor
protected FulfillmentGroupOfferProcessor fulfillmentGroupOfferProcessor
protected PromotableItemFactory promotableItemFactory
protected OfferServiceExtensionManager extensionManager
protected OrderService orderService
protected SandBoxHelper sandBoxHelper
protected javax.persistence.EntityManager em
protected StreamingTransactionCapableUtil transUtil
protected EntityDuplicator duplicator
protected EntityDuplicateModifier<Offer> offerDuplicateModifier
public List<Offer> findAllOffers()
OfferService
findAllOffers
in interface OfferService
@Transactional(value="blTransactionManager") public Offer save(Offer offer)
OfferService
save
in interface OfferService
@Transactional(value="blTransactionManager") public OfferCode saveOfferCode(OfferCode offerCode)
OfferService
saveOfferCode
in interface OfferService
public Offer lookupOfferByCode(String code)
lookupOfferByCode
in interface OfferService
code
- public OfferCode lookupOfferCodeByCode(String code)
OfferService
lookupOfferCodeByCode
in interface OfferService
code
- the codepublic List<Offer> lookupAllOffersByCode(String code)
OfferService
lookupAllOffersByCode
in interface OfferService
code
- the codepublic List<OfferCode> lookupAllOfferCodesByCode(String code)
OfferService
lookupAllOfferCodesByCode
in interface OfferService
code
- the codepublic List<Offer> buildOfferListForOrder(Order order)
buildOfferListForOrder
in interface OfferService
order
- public List<OfferCode> buildOfferCodeListForCustomer(Order order)
OfferService
buildOfferCodeListForCustomer
in interface OfferService
@Deprecated public List<OfferCode> buildOfferCodeListForCustomer(Customer customer)
OfferService
buildOfferCodeListForCustomer
in interface OfferService
protected List<CustomerOffer> lookupOfferCustomerByCustomer(Customer customer)
customer
- protected List<Offer> lookupAutomaticDeliveryOffers()
protected List<OfferCode> removeOutOfDateOfferCodes(List<OfferCode> offerCodes)
offerCodes
- protected List<OfferCode> refreshOfferCodesIfApplicable(Order order)
order
- the order to check@Transactional(value="blTransactionManager") public Order applyAndSaveOffersToOrder(List<Offer> offers, Order order) throws PricingException
OfferService
applyAndSaveOffersToOrder
in interface OfferService
offers
- the offersorder
- the orderPricingException
protected boolean verifyAdjustments(Order order, boolean beforeSave)
@Transactional(value="blTransactionManager") @Deprecated public void applyOffersToOrder(List<Offer> offers, Order order) throws PricingException
OfferService
applyOffersToOrder
in interface OfferService
PricingException
@Transactional(value="blTransactionManager") @Deprecated public void applyFulfillmentGroupOffersToOrder(List<Offer> offers, Order order) throws PricingException
applyFulfillmentGroupOffersToOrder
in interface OfferService
PricingException
@Transactional(value="blTransactionManager") public Order applyAndSaveFulfillmentGroupOffersToOrder(List<Offer> offers, Order order) throws PricingException
applyAndSaveFulfillmentGroupOffersToOrder
in interface OfferService
PricingException
public boolean verifyMaxCustomerUsageThreshold(Order order, Offer offer)
OfferService
Validates that the Customer to whom an Order belongs has not exceeded the max uses for the passed in offer. This method will take into account if the Offer has already been applied to the Order so as not to prevent the Offer from applying to new items added to the Order by a CRS.
This condition could pass if the system allows two concurrent carts for the same customer.
The condition will fail at order submission time when the VerifyCustomerMaxOfferUsesActivity
runs (if that activity is configured as part of the checkout workflow.)
This method only checks offers who have a max_customer_uses value that is greater than zero. By default offers can be used as many times as the customer's order qualifies.
This method offers no protection against systems that allow customers to create multiple ids in the system.
verifyMaxCustomerUsageThreshold
in interface OfferService
order
- the order the offer is to be applied tooffer
- the offer to check@Deprecated public boolean verifyMaxCustomerUsageThreshold(Customer customer, Offer offer)
OfferService
Validates that the passed in customer has not exceeded the max uses for the passed in offer.
This condition could pass if the system allows two concurrent carts for the same customer.
The condition will fail at order submission time when the VerifyCustomerMaxOfferUsesActivity
runs (if that activity is configured as part of the checkout workflow.)
This method only checks offers who have a max_customer_uses value that is greater than zero. By default offers can be used as many times as the customer's order qualifies.
This method offers no protection against systems that allow customers to create multiple ids in the system.
verifyMaxCustomerUsageThreshold
in interface OfferService
customer
- the customer attempting to use the offeroffer
- the offer to checkpublic boolean verifyMaxCustomerUsageThreshold(Order order, OfferCode code)
OfferService
Validates that the given OfferCode has not reached its maximum number of usages.
This method will also delegate to OfferService.verifyMaxCustomerUsageThreshold(Order, Offer)
for the code's Offer and the passed in Order's Customer.
verifyMaxCustomerUsageThreshold
in interface OfferService
order
- the order the offer is to be applied tocode
- the code to check@Deprecated public boolean verifyMaxCustomerUsageThreshold(Customer customer, OfferCode code)
OfferService
Validates that the given OfferCode has not reached its maximum number of usages. This method will also delegate to
OfferService.verifyMaxCustomerUsageThreshold(Order, Offer)
for the code's Offer and the passed in Customer.
verifyMaxCustomerUsageThreshold
in interface OfferService
customer
- the customer attempting to use the codecode
- the code to checkpublic Set<Offer> getUniqueOffersFromOrder(Order order)
OfferService
getUniqueOffersFromOrder
in interface OfferService
public Map<Offer,OfferCode> getOffersRetrievedFromCodes(Order order)
OfferService
Offer
s that were retrieved from OfferCode
s. More explicitly,
this will look at all of the offers that have been used by looking at a given Order
's adjustments and then
match those up with the codes from Order.getAddedOfferCodes()
.getOffersRetrievedFromCodes
in interface OfferService
Offer
to the OfferCode
that was used to obtain itpublic Map<Offer,OfferCode> getOffersRetrievedFromCodes(List<OfferCode> codes, Set<Offer> appliedOffers)
OfferService
getOffersRetrievedFromCodes
in interface OfferService
@Transactional(value="blTransactionManager") public Boolean deleteOfferCode(OfferCode code)
deleteOfferCode
in interface OfferService
@Transactional(value="blTransactionManager") public Offer duplicate(Long originalOfferId)
OfferService
duplicate
in interface OfferService
public CustomerOfferDao getCustomerOfferDao()
getCustomerOfferDao
in interface OfferService
public void setCustomerOfferDao(CustomerOfferDao customerOfferDao)
setCustomerOfferDao
in interface OfferService
public OfferCodeDao getOfferCodeDao()
getOfferCodeDao
in interface OfferService
public void setOfferCodeDao(OfferCodeDao offerCodeDao)
setOfferCodeDao
in interface OfferService
public OfferDao getOfferDao()
getOfferDao
in interface OfferService
public void setOfferDao(OfferDao offerDao)
setOfferDao
in interface OfferService
public OrderOfferProcessor getOrderOfferProcessor()
getOrderOfferProcessor
in interface OfferService
public void setOrderOfferProcessor(OrderOfferProcessor orderOfferProcessor)
setOrderOfferProcessor
in interface OfferService
public ItemOfferProcessor getItemOfferProcessor()
getItemOfferProcessor
in interface OfferService
public void setItemOfferProcessor(ItemOfferProcessor itemOfferProcessor)
setItemOfferProcessor
in interface OfferService
public FulfillmentGroupOfferProcessor getFulfillmentGroupOfferProcessor()
getFulfillmentGroupOfferProcessor
in interface OfferService
public void setFulfillmentGroupOfferProcessor(FulfillmentGroupOfferProcessor fulfillmentGroupOfferProcessor)
setFulfillmentGroupOfferProcessor
in interface OfferService
public PromotableItemFactory getPromotableItemFactory()
getPromotableItemFactory
in interface OfferService
public void setPromotableItemFactory(PromotableItemFactory promotableItemFactory)
setPromotableItemFactory
in interface OfferService
public OfferCode findOfferCodeById(Long id)
OfferService
findOfferCodeById
in interface OfferService
id
- the offer idpublic List<OfferCode> findOfferCodesByIds(Collection<Long> ids)
findOfferCodesByIds
in interface OfferService
public OrderService getOrderService()
getOrderService
in interface OfferService
public void setOrderService(OrderService orderService)
setOrderService
in interface OfferService
public Offer findOfferById(Long offerId)
findOfferById
in interface OfferService
Copyright © 2019. All rights reserved.