Class SpecificItemChoice

java.lang.Object
com.broadleafcommerce.catalog.domain.product.option.SpecificItemChoice
All Implemented Interfaces:
Serializable

public class SpecificItemChoice extends Object implements Serializable
When a ItemChoice is determined to be a DefaultItemChoiceTargetType.SPECIFIC_PRODUCTS or DefaultItemChoiceTargetType.SPECIFIC_VARIANTS, this holds the relationship that the customer should select from
Author:
Phillip Verheyden (phillipuniverse)
See Also:
  • Constructor Details

    • SpecificItemChoice

      public SpecificItemChoice()
  • Method Details

    • getUnderlyingSku

      @Nullable public String getUnderlyingSku()
      Returns the SKU for the underlying item of this choice. If the type is DefaultSpecificItemChoiceType.PRODUCT this will be the Product.getSku() of the product. If the type is DefaultSpecificItemChoiceType.VARIANT this will be the Variant.getSku() of the variant.
      Returns:
      The SKU for the underlying item of this choice
      Since:
      Catalog Service 2.1.5, Release Train 2.1.5
    • getUnderlyingPricingKey

      @Nullable public String getUnderlyingPricingKey()
      Returns the pricing key for underlying product of this choice if applicable. If the type is DefaultSpecificItemChoiceType.PRODUCT this will be the Product.getPricingKey() of the product. Otherwise, it is null.
      Returns:
      The pricing key for underlying product of this choice if applicable
      Since:
      Catalog Service 2.1.5, Release Train 2.1.5
    • getUnderlyingDefaultTerm

      @Nullable public ProductTerm getUnderlyingDefaultTerm()
      Returns the default ProductTerm for the underlying item of this choice. If the type is DefaultSpecificItemChoiceType.PRODUCT this will be the Product.getDefaultTerm() of the product. If the type is DefaultSpecificItemChoiceType.VARIANT this will be the Variant.getDefaultTerm() of the variant.
      Returns:
      The default ProductTerm for the underlying item of this choice
      Since:
      Catalog Service 2.1.5, Release Train 2.1.5
    • getDefaultPrice

      public javax.money.MonetaryAmount getDefaultPrice()
    • getDefaultUnderlyingPrice

      public javax.money.MonetaryAmount getDefaultUnderlyingPrice()
      Returns the default price for the underlying item of this choice.
      Returns:
      The default price for the underlying item of this choice
      Since:
      Catalog Service 2.1.5, Release Train 2.1.5
    • getType

      public String getType()
      Whether or not this item holds a product or a variant that the customer can select from
      Returns:
      the type of this addon item
      See Also:
    • getProduct

      public Product getProduct()
      If the type is DefaultSpecificItemChoiceType.PRODUCT this holds the product for this choice
      Returns:
      the product representing this choice, or null if type is not DefaultSpecificItemChoiceType.PRODUCT
    • getVariant

      public Variant getVariant()
      If the type is DefaultSpecificItemChoiceType.VARIANT this holds the variant for this choice
      Returns:
      the variant representing this choice, or null if type is not DefaultSpecificItemChoiceType.VARIANT
      See Also:
      • variantParentProductId
    • getVariantParentProductId

      public String getVariantParentProductId()
      This field contains the id of the parent product of the specified variant if the type is DefaultSpecificItemChoiceType.VARIANT.

      This field is necessary because variants are a sub-resource of product and thus API callers cannot fetch them purely by variant id alone.

      Returns:
      the id of the parent product of the variant
      See Also:
      • variant
    • getNameOverride

      public String getNameOverride()
      When displaying this choice to a customer, an optional override for the display the customer should see. If {@link null}, the product or variant name is used for display
      Returns:
      the override of the display of the name to the customer. If null, the variant or product name should be used
    • isDiscountAllowed

      public boolean isDiscountAllowed()
      Dictates whether or not discounts are allowed to be applied to this add-on.
      Returns:
      true if discounts are allowed to be applied to this add-on, false otherwise
    • isPriceOverridden

      public boolean isPriceOverridden()
      Whether this item choice's price is overridden, via the direct overridePrice or a price data targeting its pricingKey. This serves validation and metadata purposes.
      Since:
      Catalog Services 2.3.0, ReleaseTrain 2.3.0
    • getOverridePrice

      public javax.money.MonetaryAmount getOverridePrice()

      The price of this explicit selection. If no pricing is specified here, the price of the target product, variant will be used.

      If the ItemChoice.getOverridePrice() is set, that will override any price set here and this price should be ignored

      Returns:
      the explicit price of this choice or null if the product/variant price should be used, or if the override price exists on the ItemChoice
    • getPricingKey

      public String getPricingKey()
      System-wide unique identifier to configure specific pricing for the choice. Relevant if pricing data is managed in a separate system or data store, like the Broadleaf pricing services. Only relevant when ItemChoice.getOverridePrice() is null.
      Returns:
      a unique key to identify this choice, null if there is no external system this should be linked to for pricing data
    • getAsset

      public SpecificItemChoiceAsset getAsset()
      The asset for this selection. Intended to override the asset normally shown for the product or variant specifically in the context of this relationship.
      Returns:
      asset information for this explicit selection
      See Also:
    • getVariantPricingOverrides

      public List<SpecificItemVariantPricing> getVariantPricingOverrides()
      Pricing overrides if specific variants of the main product this item belongs to are added to the cart.
      Returns:
      Pricing overrides if specific variants of the main product are added to the cart.
    • setType

      public void setType(String type)
      Whether or not this item holds a product or a variant that the customer can select from
      Parameters:
      type - the type of item this is, usually from DefaultSpecificItemChoiceType
      See Also:
    • setProduct

      public void setProduct(Product product)
      If the type is DefaultSpecificItemChoiceType.PRODUCT this holds the product for this choice
      Parameters:
      product - the product representing this choice
    • setVariant

      public void setVariant(Variant variant)
      If the type is DefaultSpecificItemChoiceType.VARIANT this holds the variant for this choice
      Parameters:
      variant - the variant representing this choice
      See Also:
      • variantParentProductId
    • setVariantParentProductId

      public void setVariantParentProductId(String variantParentProductId)
      This field contains the id of the parent product of the specified variant if the type is DefaultSpecificItemChoiceType.VARIANT.

      This field is necessary because variants are a sub-resource of product and thus API callers cannot fetch them purely by variant id alone.

      Parameters:
      variantParentProductId - the id of the parent product of the variant
      See Also:
      • variant
    • setNameOverride

      public void setNameOverride(String nameOverride)
      When displaying this choice to a customer, an optional override for the display the customer should see. If {@link null}, the product or variant name is used for display
      Parameters:
      nameOverride - what the customer should see for this choice
    • setDiscountAllowed

      public void setDiscountAllowed(boolean discountAllowed)
      Dictates whether or not discounts are allowed to be applied to this add-on.
      Parameters:
      discountAllowed - true if discounts are allowed to be applied to this add-on, false otherwise
    • setPriceOverridden

      public void setPriceOverridden(boolean priceOverridden)
      Whether this item choice's price is overridden, via the direct overridePrice or a price data targeting its pricingKey. This serves validation and metadata purposes.
      Since:
      Catalog Services 2.3.0, ReleaseTrain 2.3.0
    • setOverridePrice

      public void setOverridePrice(javax.money.MonetaryAmount overridePrice)

      The price of this explicit selection. If no pricing is specified here, the price of the target product, variant will be used.

      If the ItemChoice.getOverridePrice() is set, that will override any price set here and this price should be ignored

      Parameters:
      overridePrice - the price of this choice
    • setPricingKey

      public void setPricingKey(String pricingKey)
      System-wide unique identifier to configure specific pricing for the choice. Relevant if pricing data is managed in a separate system or data store, like the Broadleaf pricing services. Only relevant when ItemChoice.getOverridePrice() is null.
      Parameters:
      pricingKey - a unique key to identify this choice (usually a UUID)
    • setAsset

      public void setAsset(SpecificItemChoiceAsset asset)
      The asset for this selection. Intended to override the asset normally shown for the product or variant specifically in the context of this relationship.
      Parameters:
      asset - asset information for this explicit selection
      See Also:
    • setVariantPricingOverrides

      public void setVariantPricingOverrides(List<SpecificItemVariantPricing> variantPricingOverrides)
      Pricing overrides if specific variants of the main product this item belongs to are added to the cart.
      Parameters:
      variantPricingOverrides - Pricing overrides if specific variants of the main product are added to the cart.
    • 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