Class EnhancedLineItem
java.lang.Object
com.broadleafcommerce.promotion.offer.web.context.EnhancedLineItem
- All Implemented Interfaces:
com.broadleafcommerce.promotion.offer.client.web.context.LineItem,Serializable
- Direct Known Subclasses:
EnhancedFulfillmentLineItem,EnhancedOrderLineItem
public class EnhancedLineItem
extends Object
implements com.broadleafcommerce.promotion.offer.client.web.context.LineItem, Serializable
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionjavax.money.MonetaryAmountcalculateTotalAdjustmentValue(boolean useSaleAdjustments) javax.money.MonetaryAmountcalculateTotalWithAdjustments(List<LineItemOfferDetail> details, boolean excludeDiscountedItemsFromTotal) This method can be used to pass in a list of previously computedLineItemOfferDetailsto produce an adjusted total.protected booleancreateNewDetail(com.broadleafcommerce.common.extension.TypeFactory offerFactory, int quantity) Creates a newLineItemOfferDetailfor this item.booleanvoidSetsgetFinalPrice()to theaverage priceof each item, which includes adjustments.javax.money.MonetaryAmountjavax.money.MonetaryAmountgetAdjustedTotalWithoutFutureCredits(boolean useSalePriceIfPresent) javax.money.MonetaryAmountjavax.money.CurrencyUnitReturns "ANY" for null or empty string segments; otherwise, returns the value of #getSegment.javax.money.MonetaryAmountThe final price, including adjustments, for a single merchandising item represented by this order line item.javax.money.MonetaryAmountjavax.money.MonetaryAmountjavax.money.MonetaryAmountjavax.money.MonetaryAmountgetId()DTOs containing information aboutoffersapplicable to this item.ReturnisOnSale()as a Boolean for use in rule builders.javax.money.MonetaryAmountgetPrice(boolean useSalePrice) Convenience method to get either thegetSalePrice()orgetStandardPrice()depending on the flag.List<com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedOfferAdjustment>Prorated offer adjustment information for this line item.intjavax.money.MonetaryAmountSegments can be used to restrict offers.javax.money.MonetaryAmountjavax.money.MonetaryAmountGets the total combined price of this order item, including any adjustments.javax.money.MonetaryAmountjavax.money.MonetaryAmountgetTotalPriceWithoutAdjustments(boolean useSalePriceIfPresent) javax.money.MonetaryAmountjavax.money.MonetaryAmountjavax.money.MonetaryAmountbooleaninthashCode()voidinitializePriceDetails(com.broadleafcommerce.common.extension.TypeFactory offerFactory) Ensures that anLineItemOfferDetailis present so that the offer engine engages correctly.booleanWhether this item is an Add-on/dependant type, that is, an item that cannot be sold or fulfilled on its own but as a child of another item.booleanbooleanisOnSale()booleanprotected voidmergeDetails(LineItemOfferDetail firstDetail, LineItemOfferDetail secondDetail) voidMerges any priceDetails that share the same orderAdjustments.voidRemoves allLineItemOfferDetailsexcept the first, which just gets reset.voidresetPriceDetails(com.broadleafcommerce.common.extension.TypeFactory offerFactory) Clears allofferDetailsand re-initializes them.voidsetAttributes(Map<String, Object> attributes) voidsetCurrency(javax.money.CurrencyUnit currency) voidsetDiscountable(boolean discountable) voidsetFinalPrice(javax.money.MonetaryAmount finalPrice) The final price, including adjustments, for a single merchandising item represented by this order line item.voidsetFulfillmentGroupRef(String fulfillmentGroupRef) voidsetFulfillmentPrice(javax.money.MonetaryAmount fulfillmentPrice) voidMatches the line number unless the line number isn't available in which case it will represent a uuid.voidsetLineNumber(String lineNumber) voidsetOfferDetails(List<LineItemOfferDetail> offerDetails) DTOs containing information aboutoffersapplicable to this item.voidsetProratedAdjustments(List<com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedOfferAdjustment> proratedAdjustments) Prorated offer adjustment information for this line item.voidsetQuantity(int quantity) voidsetSalePrice(javax.money.MonetaryAmount salePrice) voidsetSegment(String segment) Segments can be used to restrict offers.voidsetStandardPrice(javax.money.MonetaryAmount standardPrice) voidsetSubscription(boolean isSubscription) toString()Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface com.broadleafcommerce.promotion.offer.client.web.context.LineItem
getServiceLevel
-
Constructor Details
-
EnhancedLineItem
public EnhancedLineItem()
-
-
Method Details
-
getUnadjustedSalePrice
public javax.money.MonetaryAmount getUnadjustedSalePrice()- Returns:
- the
getSalePrice()if present with no adjustments, otherwise thegetStandardPrice().
-
getTotalStandardPrice
public javax.money.MonetaryAmount getTotalStandardPrice()- Returns:
getStandardPrice()multiplied bygetQuantity().
-
getPrice
public javax.money.MonetaryAmount getPrice(boolean useSalePrice) Convenience method to get either thegetSalePrice()orgetStandardPrice()depending on the flag. IfsalePrice == null, then returnsgetStandardPrice()no matter the value of the flag.- Parameters:
useSalePrice- whether to returngetSalePrice()if it exists orgetStandardPrice()()}- Returns:
- either the
getSalePrice()orgetStandardPrice()depending on the flag
-
isDependent
public boolean isDependent()Whether this item is an Add-on/dependant type, that is, an item that cannot be sold or fulfilled on its own but as a child of another item. By default, this looks for an attribute called"itemType"with a value of"addOn". It also checks for the present of a"merchandisingContext"attribute, although this is not guaranteed to be set.- Returns:
- Whether this item is an Add-on/dependant type
-
calculateTotalWithAdjustmentsAsDouble
-
calculateTotalWithAdjustments
public javax.money.MonetaryAmount calculateTotalWithAdjustments()- Returns:
- the item total including all
LineItemOfferDetail.getAdjustments().
-
calculateTotalWithAdjustments
public AmountQtyTuple calculateTotalWithAdjustments(List<LineItemOfferDetail> details, boolean excludeDiscountedItemsFromTotal) This method can be used to pass in a list of previously computedLineItemOfferDetailsto produce an adjusted total. Pass in true for the second parameter to exclude items with discounted quantities from the total.- Parameters:
details-excludeDiscountedItemsFromTotal-- Returns:
-
isOnSale
public boolean isOnSale()- Returns:
- whether this item has a sale price and that it is less than the standard price
-
getOnSale
ReturnisOnSale()as a Boolean for use in rule builders.- Returns:
-
resetPriceDetails
public void resetPriceDetails(@NonNull com.broadleafcommerce.common.extension.TypeFactory offerFactory) Clears allofferDetailsand re-initializes them.- Parameters:
offerFactory- theTypeFactoryto use to create any newLineItemOfferDetailsduring re-initialization.
-
initializePriceDetails
public void initializePriceDetails(@NonNull com.broadleafcommerce.common.extension.TypeFactory offerFactory) Ensures that anLineItemOfferDetailis present so that the offer engine engages correctly.- Parameters:
offerFactory- theTypeFactoryto use to create a newLineItemOfferDetail
-
createNewDetail
public LineItemOfferDetail createNewDetail(@NonNull com.broadleafcommerce.common.extension.TypeFactory offerFactory, int quantity) Creates a newLineItemOfferDetailfor this item.- Parameters:
offerFactory- theTypeFactoryto use to create any newLineItemOfferDetailsquantity- the item quantity to associate with the new detail- Returns:
- the new
LineItemOfferDetail
-
mergeLikeDetails
public void mergeLikeDetails()Merges any priceDetails that share the same orderAdjustments. -
getFinalTotalAdjustmentValue
public javax.money.MonetaryAmount getFinalTotalAdjustmentValue()- Returns:
- the total of all
adjustmentsnot including dependent items
-
getFutureCreditAdjustmentValue
public javax.money.MonetaryAmount getFutureCreditAdjustmentValue() -
calculateTotalAdjustmentValue
public javax.money.MonetaryAmount calculateTotalAdjustmentValue(boolean useSaleAdjustments) -
resetOfferDetails
public void resetOfferDetails()Removes allLineItemOfferDetailsexcept the first, which just gets reset. -
finalizePrice
public void finalizePrice()SetsgetFinalPrice()to theaverage priceof each item, which includes adjustments. -
getAveragePrice
public javax.money.MonetaryAmount getAveragePrice()- Returns:
- the total combined price of this order item, including any orderAdjustments but not
dependent items, divided by
getQuantity().
-
getTotalPriceWithoutAdjustments
public javax.money.MonetaryAmount getTotalPriceWithoutAdjustments()- Returns:
- the price without adjustments multiplied by the quantity of items, using the sale price if present.
-
getTotalPriceWithoutAdjustments
public javax.money.MonetaryAmount getTotalPriceWithoutAdjustments(boolean useSalePriceIfPresent) -
getUnitPriceWithoutAdjustments
public javax.money.MonetaryAmount getUnitPriceWithoutAdjustments()- Returns:
- the unit price without adjustments without multiplying it by the quantity using the sale price if present.
-
getTotalPrice
public javax.money.MonetaryAmount getTotalPrice()Gets the total combined price of this order item, including any adjustments.- Returns:
- the total combined price of this order item, including any adjustments.
-
mergeDetails
-
getFutureCredits
public javax.money.MonetaryAmount getFutureCredits() -
getAdjustedTotalWithoutFutureCredits
public javax.money.MonetaryAmount getAdjustedTotalWithoutFutureCredits() -
getAdjustedTotalWithoutFutureCredits
public javax.money.MonetaryAmount getAdjustedTotalWithoutFutureCredits(boolean useSalePriceIfPresent) -
getId
-
hasAdjustments
public boolean hasAdjustments() -
getEffectiveSegment
Returns "ANY" for null or empty string segments; otherwise, returns the value of #getSegment.- Returns:
- the effective segment
-
getCurrency
public javax.money.CurrencyUnit getCurrency() -
getLineNumber
- Specified by:
getLineNumberin interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
getStandardPrice
public javax.money.MonetaryAmount getStandardPrice()- Specified by:
getStandardPricein interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
getSalePrice
public javax.money.MonetaryAmount getSalePrice()- Specified by:
getSalePricein interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
getFulfillmentPrice
public javax.money.MonetaryAmount getFulfillmentPrice() -
getQuantity
public int getQuantity()- Specified by:
getQuantityin interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
isDiscountable
public boolean isDiscountable()- Specified by:
isDiscountablein interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
isSubscription
public boolean isSubscription()- Specified by:
isSubscriptionin interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
getAttributes
- Specified by:
getAttributesin interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
getSegment
Segments can be used to restrict offers. Common examples include segmenting an order by vendor or by store (a.k.a. banner). For applications that do not use segments at all, this value can be left null or set to ANY. The method getEffectiveSegment() will convert null or empty string to "ANY" This field works with theOffer#getRestrictedToSegments- See Also:
-
getFulfillmentGroupRef
-
getFinalPrice
public javax.money.MonetaryAmount getFinalPrice()The final price, including adjustments, for a single merchandising item represented by this order line item.- Returns:
- The final price, including adjustments, for a single merchandising item represented by this order line item.
-
getOfferDetails
DTOs containing information aboutoffersapplicable to this item.- Returns:
- DTOs containing information about
offersapplicable to this item.
-
getProratedAdjustments
public List<com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedOfferAdjustment> getProratedAdjustments()Prorated offer adjustment information for this line item.This is typically used to communicate the adjustments prorated to this item from order-level or fulfillment group-level offer adjustments.
- Returns:
- DTOs containing prorated offer adjustment information for this line item
-
setCurrency
public void setCurrency(javax.money.CurrencyUnit currency) -
setLineNumber
- Specified by:
setLineNumberin interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
setStandardPrice
public void setStandardPrice(javax.money.MonetaryAmount standardPrice) - Specified by:
setStandardPricein interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
setSalePrice
public void setSalePrice(javax.money.MonetaryAmount salePrice) - Specified by:
setSalePricein interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
setFulfillmentPrice
public void setFulfillmentPrice(javax.money.MonetaryAmount fulfillmentPrice) -
setQuantity
public void setQuantity(int quantity) - Specified by:
setQuantityin interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
setDiscountable
public void setDiscountable(boolean discountable) - Specified by:
setDiscountablein interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
setSubscription
public void setSubscription(boolean isSubscription) - Specified by:
setSubscriptionin interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
setAttributes
- Specified by:
setAttributesin interfacecom.broadleafcommerce.promotion.offer.client.web.context.LineItem
-
setSegment
Segments can be used to restrict offers. Common examples include segmenting an order by vendor or by store (a.k.a. banner). For applications that do not use segments at all, this value can be left null or set to ANY. The method getEffectiveSegment() will convert null or empty string to "ANY" This field works with theOffer#getRestrictedToSegments- See Also:
-
setFulfillmentGroupRef
-
setFinalPrice
public void setFinalPrice(javax.money.MonetaryAmount finalPrice) The final price, including adjustments, for a single merchandising item represented by this order line item.- Parameters:
finalPrice- The final price, including adjustments, for a single merchandising item represented by this order line item.
-
setOfferDetails
DTOs containing information aboutoffersapplicable to this item.- Parameters:
offerDetails- DTOs containing information aboutoffersapplicable to this item.
-
setProratedAdjustments
public void setProratedAdjustments(List<com.broadleafcommerce.promotion.offer.client.web.context.info.ProratedOfferAdjustment> proratedAdjustments) Prorated offer adjustment information for this line item.This is typically used to communicate the adjustments prorated to this item from order-level or fulfillment group-level offer adjustments.
- Parameters:
proratedAdjustments- DTOs containing prorated offer adjustment information for this line item
-
setId
Matches the line number unless the line number isn't available in which case it will represent a uuid. -
toString
-
equals
-
canEqual
-
hashCode
public int hashCode()
-