java.lang.Object
com.broadleafcommerce.order.client.domain.OrderItem
All Implemented Interfaces:
com.broadleafcommerce.data.tracking.core.ContextStateAware, Serializable

public class OrderItem extends Object implements Serializable, com.broadleafcommerce.data.tracking.core.ContextStateAware
An item in an Order. Contains information related to pricing, quantity, and external object references.
See Also:
  • Constructor Details

    • OrderItem

      public OrderItem()
  • Method Details

    • getRecurringPeriodTypeWithDependentItems

      public Optional<String> getRecurringPeriodTypeWithDependentItems()
      Since:
      Order Client 2.0.3
    • getRecurringPriceWithDependentItems

      public javax.money.MonetaryAmount getRecurringPriceWithDependentItems()
      Since:
      Order Client 2.0.3
    • getRecurringSubtotalWithDependentItems

      public javax.money.MonetaryAmount getRecurringSubtotalWithDependentItems()
      Since:
      Order Client 2.0.3
    • getRecurringAdjustmentsTotalWithDependentItems

      public javax.money.MonetaryAmount getRecurringAdjustmentsTotalWithDependentItems()
      Since:
      Order Client 2.0.3
    • getRecurringTotalWithDependentItems

      public javax.money.MonetaryAmount getRecurringTotalWithDependentItems()
      Since:
      Order Client 2.0.3
    • getCurrency

      protected javax.money.CurrencyUnit getCurrency()
      Since:
      Order Client 2.0.3
    • getId

      public String getId()
      The context ID of the order.
      Returns:
      the context ID of the order
    • getOrder

      public Order getOrder()
      The owning order of this item.
      Returns:
      the order that owns this item
    • getName

      public String getName()
      The name of this item. Typically derived from the product or sku name.
      Returns:
      The name of this item. Typically derived from the product or sku name.
    • getUri

      public String getUri()
      The navigable uri of the corresponding catalog entry (e.g. product) for this order item.
      Returns:
      The navigable uri of the corresponding catalog entry (e.g. product) for this order item.
    • getQuantity

      public int getQuantity()
      The number of this item in the Order.
      Returns:
      The number of this item in the Order.
    • isOverridePriceFlag

      public boolean isOverridePriceFlag()
      Whether the price of this OrderItem was specifically overridden, whether from a CSR or an automatic process.
      Returns:
      Whether the price of this OrderItem was specifically overridden, whether from a CSR or an automatic process.
    • getPriceListId

      public String getPriceListId()
      The id of the price list used to get the pricing for this OrderItem.
      Returns:
      The id of the price list used to get the pricing for this OrderItem.
    • getUnitPrice

      public javax.money.MonetaryAmount getUnitPrice()
      The individual unit price for an OrderItem.
      Returns:
      The individual unit price for an OrderItem.
    • getUnitPriceType

      public String getUnitPriceType()
      The type of the unit price for an OrderItem. Typically "salePrice", "standardPrice", or "basePrice".
      Returns:
      The type of the unit price for an OrderItem.
    • getAdjustmentsTotal

      public javax.money.MonetaryAmount getAdjustmentsTotal()
      The total adjustment price for all adjustments of an OrderItem.
      Returns:
      The total adjustment price for all adjustments of a OrderItem.
    • getSubtotal

      public javax.money.MonetaryAmount getSubtotal()
      The subtotal price of this OrderItem. Typically calculated from getUnitPrice() * getQuantity().
      Returns:
      The subtotal price of this OrderItem.
    • getTotal

      public javax.money.MonetaryAmount getTotal()
      The total price of this OrderItem. Typically calculated from getSubtotal() - getAdjustmentsTotal().
      Returns:
      The total price of this OrderItem.
    • getProratedOrderAdjustments

      public javax.money.MonetaryAmount getProratedOrderAdjustments()
      The amount prorated to this item from order adjustments.
      Returns:
      the amount prorated to this item from order adjustments
    • getRefundAmount

      public javax.money.MonetaryAmount getRefundAmount()
      The pre-calculated merchandise amount to refund when this OrderItem is returned.

      By default, the proratedOrderAdjustments are included. For example, if this item has an amount of $10 and has a prorated order adjustment of $2, the refund amount would be $8.

      Returns:
      The pre-calculated merchandise amount to refund when this OrderItem is returned
    • getRecurringPrice

      public com.broadleafcommerce.order.common.domain.RecurringPriceDetail getRecurringPrice()
      This is the recurring price if any from the same source as the unitPrice. The recurring price is used for subscriptions and is not expected to be charged at checkout typically.
      Returns:
      This is the recurring price if any from the same source as the unitPrice.
      Since:
      Order Client 2.0.3
      See Also:
      • termDurationType
      • termDurationLength
    • getRecurringPriceTypeOverride

      public String getRecurringPriceTypeOverride()
      Overrides unitPriceType for the recurringPrice in cases where they must diverge. Usually only in Offer use cases where an offer cannot apply to a sale recurring price but can apply to the standard recurring price and we need to leave the upfront price as the sale price—or vice versa.
      Since:
      Order Client 2.0.3
    • getUsagePrice

      public com.broadleafcommerce.order.common.domain.UsagePriceDetail getUsagePrice()
      This is the usage price if any from the same source as the unitPrice. The usage price represents a charge when an item is used, e.g., when using minutes above the base allowance. This is generally just information from a Cart's perspective.
      Returns:
      This is the usage price if any from the same source as the unitPrice.
      Since:
      Order Client 2.0.3
    • getTermDurationLength

      public Integer getTermDurationLength()
      The length of the terms, e.g., if this is 36 and termDurationType is MONTHS, then the recurringPrice should be charged for 36 months.
      Since:
      Order Client 2.0.3
      See Also:
      • termDurationType
      • recurringPrice
    • getTermDurationType

      public String getTermDurationType()
      The term duration type, e.g. DAYS, WEEKS, MONTHS, YEARS.
      Since:
      Order Client 2.0.3
      See Also:
      • termDurationLength
      • recurringPrice
    • getPricingStrategy

      public String getPricingStrategy()
      The pricing strategy for this item.
      Returns:
      the pricing strategy for this item.*
    • getVariantId

      public String getVariantId()
      The id to the corresponding variant for this item.
      Returns:
      The id to the corresponding variant for this item.
    • getProductId

      public String getProductId()
      The id to the corresponding product for this item.
      Returns:
      The id to the corresponding product for this item.
    • getCategoryIds

      public Set<String> getCategoryIds()
      The ids to the corresponding categories for this item's product. Used for validating item choice configuration and offers.
      Returns:
      The ids to the corresponding categories for this item's product.
    • getProductTags

      public List<String> getProductTags()
      The list of simple labels used to categorize the corresponding product for this item.
      Returns:
      The list of simple labels used to categorize the corresponding product for this item.
    • getSku

      public String getSku()
      Represents a SKU code, similar to productId or variantId, except this is a unified, unique concept across both products and variants.
      Returns:
      The SKU (or SKU code) for a product or variant
    • getImageAsset

      public ImageAssetRef getImageAsset()
      The image asset for this item, usually sourced from the product.
      Returns:
      The image asset for this item.
    • isDiscountable

      public boolean isDiscountable()

      Whether or not this item can be applied to any offers or promotions.

      Defaults to true

      Returns:
      whether or not this item can be applied to any offers or promotions
    • getVendorRef

      public String getVendorRef()
      A reference to the corresponding vendor for this item.
      Returns:
      A reference to the corresponding vendor for this item.
    • getMerchandisingContext

      public String getMerchandisingContext()
      Defines the merchandising context of the item to signify where it is added from.

      This field is intended to be used for items added from SELECTOR products, which allows for the possibility of targeting the items for discounts based on the fact that they came from the SELECTOR product.

      Returns:
      The context of the item signifying where it's added from
    • getBrandId

      public String getBrandId()
      The id to the corresponding data driven enum for this item's product's brand. Used for validating offers.
      Returns:
      the id to the corresponding data driven enum for this item's product's brand
    • getMerchandisingTypeId

      public String getMerchandisingTypeId()
      The id to the corresponding data driven enum for this item's product's merchandising type. Used for validating offers.
      Returns:
      the id to the corresponding data driven enum for this item's product's merchandising type
    • getTargetDemographicId

      public String getTargetDemographicId()
      The id to the corresponding data driven enum for this item's product's target demographic. Used for validating offers.
      Returns:
      the id to the corresponding data driven enum for this item's product's target demographic
    • getDependentOrderItems

      public List<OrderItem> getDependentOrderItems()
      OrderItems that depend on this OrderItem. Also could be called "child items".
      Returns:
      OrderItems that depend on this OrderItem. Also could be called "child items".
    • getItemAdjustments

      public List<com.broadleafcommerce.order.common.domain.Adjustment> getItemAdjustments()
      Adjustments to item pricing that should be applied to getSubtotal().
      Returns:
      Adjustments to item pricing that should be applied to getSubtotal().
    • getAttributes

      public Map<String,Object> getAttributes()
      Miscellaneous attributes for this item.
      Returns:
      Miscellaneous attributes for this item.
    • getInternalAttributes

      public Map<String,Object> getInternalAttributes()
      Miscellaneous internal attributes for this item. Distinguished from getAttributes() in that this map is used for attributes that assist in the internal working of Broadleaf MicroServices. For example, attributes to help with pricing of dependent items.
      Returns:
      Miscellaneous internal attributes for this item.
    • getAttributeChoices

      public Map<String,com.broadleafcommerce.order.common.domain.AttributeChoiceValue> getAttributeChoices()
      Attribute choices for this item driven by product options, where each key is the attributeName from an attribute choice.
      Returns:
      Attribute choices for this item driven by product options, where each key is the attributeName from an attribute choice.
    • getOverrideDetails

      public List<com.broadleafcommerce.order.common.domain.OverrideDetail> getOverrideDetails()
      List of details about any price overrides which have been performed on this item.
      Returns:
      List of details about any price overrides which have been performed on this item.
    • getType

      public String getType()
      The type of this item. See DefaultOrderItemTypes.
      Returns:
      the type of this item
    • getContextState

      public com.broadleafcommerce.data.tracking.core.filtering.business.domain.ContextState getContextState()
      A subset of Tracking information to expose the context state for this object.
      Specified by:
      getContextState in interface com.broadleafcommerce.data.tracking.core.ContextStateAware
      Returns:
      a subset of Tracking information to expose the context state for this object
    • setId

      public void setId(String id)
      The context ID of the order.
      Parameters:
      id - the context ID of the order
    • setOrder

      public void setOrder(Order order)
      The owning order of this item.
      Parameters:
      order - the order that should own this item
    • setName

      public void setName(String name)
      The name of this item. Typically derived from the product or sku name.
      Parameters:
      name - The name of this item. Typically derived from the product or sku name.
    • setUri

      public void setUri(String uri)
      The navigable uri of the corresponding catalog entry (e.g. product) for this order item.
      Parameters:
      uri - The navigable uri of the corresponding catalog entry (e.g. product) for this order item.
    • setQuantity

      public void setQuantity(int quantity)
      The number of this item in the Order.
      Parameters:
      quantity - The number of this item in the Order.
    • setOverridePriceFlag

      public void setOverridePriceFlag(boolean overridePriceFlag)
      Whether the price of this OrderItem was specifically overridden, whether from a CSR or an automatic process.
      Parameters:
      overridePriceFlag - Whether the price of this OrderItem was specifically overridden, whether from a CSR or an automatic process.
    • setPriceListId

      public void setPriceListId(String priceListId)
      The id of the price list used to get the pricing for this OrderItem.
      Parameters:
      priceListId - The id of the price list used to get the pricing for this OrderItem.
    • setUnitPrice

      public void setUnitPrice(javax.money.MonetaryAmount unitPrice)
      The individual unit price for an OrderItem.
      Parameters:
      unitPrice - The individual unit price for an OrderItem.
    • setUnitPriceType

      public void setUnitPriceType(String unitPriceType)
      The type of the unit price for an OrderItem. Typically "salePrice", "standardPrice", or "basePrice".
      Parameters:
      unitPriceType - The type of the unit price for an OrderItem.
    • setAdjustmentsTotal

      public void setAdjustmentsTotal(javax.money.MonetaryAmount adjustmentsTotal)
      The total adjustment price for all adjustments of an OrderItem.
      Parameters:
      adjustmentsTotal - The total adjustment price for all adjustments of an OrderItem.
    • setSubtotal

      public void setSubtotal(javax.money.MonetaryAmount subtotal)
      The subtotal price of this OrderItem. Typically calculated from getUnitPrice() * getQuantity().
      Parameters:
      subtotal - The subtotal price of this OrderItem.
    • setTotal

      public void setTotal(javax.money.MonetaryAmount total)
      The total price of this OrderItem. Typically calculated from getSubtotal() - getAdjustmentsTotal().
      Parameters:
      total - The total price of this OrderItem.
    • setProratedOrderAdjustments

      public void setProratedOrderAdjustments(javax.money.MonetaryAmount proratedOrderAdjustments)
      The amount prorated to this item from order adjustments.
      Parameters:
      proratedOrderAdjustments - the amount prorated to this item from order adjustments
    • setRefundAmount

      public void setRefundAmount(javax.money.MonetaryAmount refundAmount)
      The pre-calculated merchandise amount to refund when this OrderItem is returned.

      By default, the proratedOrderAdjustments are included. For example, if this item has an amount of $10 and has a prorated order adjustment of $2, the refund amount would be $8.

      Parameters:
      refundAmount - The pre-calculated merchandise amount to refund when this OrderItem is returned
    • setRecurringPrice

      public void setRecurringPrice(com.broadleafcommerce.order.common.domain.RecurringPriceDetail recurringPrice)
      This is the recurring price if any from the same source as the unitPrice. The recurring price is used for subscriptions and is not expected to be charged at checkout typically.
      Parameters:
      recurringPrice - This is the recurring price if any from the same source as the unitPrice
      Since:
      Order Client 2.0.3
      See Also:
      • termDurationType
      • termDurationLength
    • setRecurringPriceTypeOverride

      public void setRecurringPriceTypeOverride(String recurringPriceTypeOverride)
      Overrides unitPriceType for the recurringPrice in cases where they must diverge. Usually only in Offer use cases where an offer cannot apply to a sale recurring price but can apply to the standard recurring price and we need to leave the upfront price as the sale price—or vice versa.
      Since:
      Order Client 2.0.3
    • setUsagePrice

      public void setUsagePrice(com.broadleafcommerce.order.common.domain.UsagePriceDetail usagePrice)
      This is the usage price if any from the same source as the unitPrice. The usage price represents a charge when an item is used, e.g., when using minutes above the base allowance. This is generally just information from a Cart's perspective.
      Parameters:
      usagePrice - This is the usage price if any from the same source as the unitPrice
      Since:
      Order Client 2.0.3
    • setTermDurationLength

      public void setTermDurationLength(Integer termDurationLength)
      The length of the terms, e.g., if this is 36 and termDurationType is MONTHS, then the recurringPrice should be charged for 36 months.
      Since:
      Order Client 2.0.3
      See Also:
      • termDurationType
      • recurringPrice
    • setTermDurationType

      public void setTermDurationType(String termDurationType)
      The term duration type, e.g. DAYS, WEEKS, MONTHS, YEARS.
      Since:
      Order Client 2.0.3
      See Also:
      • termDurationLength
      • recurringPrice
    • setPricingStrategy

      public void setPricingStrategy(String pricingStrategy)
      The pricing strategy for this item.
      Parameters:
      pricingStrategy - the pricing strategy for this item.
    • setVariantId

      public void setVariantId(String variantId)
      The id to the corresponding variant for this item.
      Parameters:
      variantId - The id to the corresponding variant for this item.
    • setProductId

      public void setProductId(String productId)
      The id to the corresponding product for this item.
      Parameters:
      productId - The id to the corresponding product for this item.
    • setCategoryIds

      public void setCategoryIds(Set<String> categoryIds)
      The ids to the corresponding categories for this item's product. Used for validating item choice configuration and offers.
      Parameters:
      categoryIds - The ids to the corresponding categories for this item's product.
    • setProductTags

      public void setProductTags(List<String> productTags)
      The list of simple labels used to categorize the corresponding product for this item.
      Parameters:
      productTags - The list of simple labels used to categorize the corresponding product for this item.
    • setSku

      public void setSku(String sku)
      Represents a SKU code, similar to productId or variantId, except this is a unified, unique concept across both products and variants.
      Parameters:
      sku - The SKU (or SKU code) for a product or variant
    • setImageAsset

      public void setImageAsset(ImageAssetRef imageAsset)
      The image asset for this item, usually sourced from the product.
      Parameters:
      contentUrl - The image asset for this item.
    • setDiscountable

      public void setDiscountable(boolean discountable)

      Whether or not this item can be applied to any offers or promotions.

      Defaults to true

      Parameters:
      discountable - whether or not this item can be applied to any offers or promotions
    • setVendorRef

      public void setVendorRef(String vendorRef)
      A reference to the corresponding vendor for this item.
      Parameters:
      vendorRef - A reference to the corresponding vendor for this item.
    • setMerchandisingContext

      public void setMerchandisingContext(String merchandisingContext)
      Defines the merchandising context of the item to signify where it is added from.

      This field is intended to be used for items added from SELECTOR products, which allows for the possibility of targeting the items for discounts based on the fact that they came from the SELECTOR product.

      Parameters:
      merchandisingContext - The context of the item signifying where it's added from
    • setBrandId

      public void setBrandId(String brandId)
      The id to the corresponding data driven enum for this item's product's brand. Used for validating offers.
      Parameters:
      brandId - the id to the corresponding data driven enum for this item's product's brand
    • setMerchandisingTypeId

      public void setMerchandisingTypeId(String merchandisingTypeId)
      The id to the corresponding data driven enum for this item's product's merchandising type. Used for validating offers.
      Parameters:
      merchandisingTypeId - the id to the corresponding data driven enum for this item's product's merchandising type
    • setTargetDemographicId

      public void setTargetDemographicId(String targetDemographicId)
      The id to the corresponding data driven enum for this item's product's target demographic. Used for validating offers.
      Parameters:
      targetDemographicId - the id to the corresponding data driven enum for this item's product's target demographic
    • setDependentOrderItems

      public void setDependentOrderItems(List<OrderItem> dependentOrderItems)
      OrderItems that depend on this OrderItem. Also could be called "child items".
      Parameters:
      dependentOrderItems - OrderItems that depend on this OrderItem. Also could be called "child items".
    • setItemAdjustments

      public void setItemAdjustments(List<com.broadleafcommerce.order.common.domain.Adjustment> itemAdjustments)
      Adjustments to item pricing that should be applied to getSubtotal().
      Parameters:
      itemAdjustments - Adjustments to item pricing that should be applied to getSubtotal().
    • setAttributes

      public void setAttributes(Map<String,Object> attributes)
      Miscellaneous attributes for this item.
      Parameters:
      attributes - Miscellaneous attributes for this item.
    • setInternalAttributes

      public void setInternalAttributes(Map<String,Object> internalAttributes)
      Miscellaneous internal attributes for this item. Distinguished from getAttributes() in that this map is used for attributes that assist in the internal working of Broadleaf MicroServices. For example, attributes to help with pricing of dependent items.
      Parameters:
      internalAttributes - Miscellaneous internal attributes for this item.
    • setAttributeChoices

      public void setAttributeChoices(Map<String,com.broadleafcommerce.order.common.domain.AttributeChoiceValue> attributeChoices)
      Attribute choices for this item driven by product options, where each key is the attributeName from an attribute choice.
      Parameters:
      attributeChoices - Attribute choices for this item driven by product options, where each key is the attributeName from an attribute choice.
    • setOverrideDetails

      public void setOverrideDetails(List<com.broadleafcommerce.order.common.domain.OverrideDetail> overrideDetails)
      List of details about any price overrides which have been performed on this item.
      Parameters:
      overrideDetails - List of details about any price overrides which have been performed on this item.
    • setType

      public void setType(String type)
      The type of this item. See DefaultOrderItemTypes.
      Parameters:
      type - the type of the item
    • setContextState

      public void setContextState(com.broadleafcommerce.data.tracking.core.filtering.business.domain.ContextState contextState)
      A subset of Tracking information to expose the context state for this object.
      Specified by:
      setContextState in interface com.broadleafcommerce.data.tracking.core.ContextStateAware
      Parameters:
      contextState - a subset of Tracking information to expose the context state for this object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • canEqual

      protected boolean canEqual(Object other)
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object