Interface FulfillmentOption

All Superinterfaces:
MultiTenantCloneable<FulfillmentOption>, Serializable
All Known Subinterfaces:
BandedPriceFulfillmentOption, BandedWeightFulfillmentOption, FixedPriceFulfillmentOption
All Known Implementing Classes:
BandedPriceFulfillmentOptionImpl, BandedWeightFulfillmentOptionImpl, FixedPriceFulfillmentOptionImpl, FulfillmentOptionImpl

public interface FulfillmentOption extends Serializable, MultiTenantCloneable<FulfillmentOption>
A FulfillmentOption is used to hold information about a particular type of Fulfillment implementation. Third-party fulfillment implementations should extend this to provide their own configuration options particular to that implementation. For instance, a UPS shipping calculator might want an admin user to be able to specify which type of UPS shipping this FulfillmentOption represents.

This entity will be presented to the user to allow them to specify which shipping they want. A possible scenario is that say a site can ship with both UPS and Fedex. They will import both the Fedex and UPS third-party modules, each of which will have a unique definition of FulfillmentOption (for instance, FedexFulfillmentOption and UPSFulfillmentOption). Let's say the site can do 2-day shipping with UPS, and next-day shipping with Fedex. What they would do in the admin is create an instance of FedexFulfillmentOption entity and give it the name "Overnight" (along with any needed Fedex configuration properties), then create an instance of UPSFulfillmentOption and give it the name "2 Day". When the user goes to check out, they will then see a list with "Overnight" and "2 day" in it. A FulfillmentPricingProvider can then be used to estimate the fulfillment cost (and calculate the fulfillment cost) for that particular option.

FulfillmentOptions are also inherently related to FulfillmentProcessors, in that specific types of FulfillmentOption implementations should also have a FulfillmentPricingProvider that can handle operations (estimation and calculation) for pricing a FulfillmentGroup. Typical third-party implementations of this paradigm would have a 1 FulfillmentOption entity implementation and 1 FulfillmentPricingProvider implementation for that particular service.

Note: even though the default Broadleaf implementation of this is non-abstract (FulfillmentOptionImpl), it is very rare that you would actually want to instantiate a raw FulfillmentOptionImpl rather than using a subclass of this.

Author:
Phillip Verheyden
  • Method Details

    • getId

      Long getId()
    • setId

      void setId(Long id)
    • getName

      String getName()
      Gets the name displayed to the user when they selected the FulfillmentOption for their order. This might be "2-day" or "Super-saver shipping"
      Returns:
      the display name for this option
    • setName

      void setName(String name)
      Set the display name for this option that will be shown to the user to select from such as "2-day" or "Express" or "Super-saver shipping"
      Parameters:
      name - - the display name for this option
    • getLongDescription

      String getLongDescription()
      Gets the long description for this option which can be shown to the user to provide more information about the option they are selecting. An example might be that this is shipped the next business day or that it requires additional processing time
      Returns:
      the description to display to the user
    • setLongDescription

      void setLongDescription(String longDescription)
      Sets the long description for this option to show to the user when they select an option for fulfilling their order
      Parameters:
      longDescription - - the description to show to the user
    • getUseFlatRates

      Boolean getUseFlatRates()
      Tells the FulfillmentPricingProvider whether it should try to use the flat rate cost for a Sku rather than try to factor that Sku into its shipping calculation. This defaults to true
      Returns:
      true if the FulfillmentPricingProvider should use the flat rate on a Sku when it's available rather than try to calculate shipping for it, false otherwise. Default value is true
    • setUseFlatRates

      void setUseFlatRates(Boolean useFlatRates)
      Tells the FulfillmentPricingProvider whether it should try to use the flat rate cost for a Sku rather than try to factor that Sku into its shipping calculation
      Parameters:
      useFlatRates -
    • getFulfillmentType

      FulfillmentType getFulfillmentType()
      Gets the type of fulfillment that this option supports
      Returns:
      the type of this option
    • setFulfillmentType

      void setFulfillmentType(FulfillmentType fulfillmentType)
      Sets the type of fulfillment that this option supports
      Parameters:
      fulfillmentType -
    • getTaxCode

      String getTaxCode()
      Returns taxCode of option
      Returns:
    • setTaxCode

      void setTaxCode(String taxCode)
      Sets the taxCode of the particular option
      Parameters:
      taxCode -
    • getTaxable

      Boolean getTaxable()
      Returns if option is taxable
      Returns:
    • setTaxable

      void setTaxable(Boolean taxable)
      Sets taxability of option
      Parameters:
      taxable -