Interface FulfillmentPricingProvider

All Known Implementing Classes:
BandedFulfillmentPricingProvider, FixedPriceFulfillmentPricingProvider

public interface FulfillmentPricingProvider
Main extension interface to allow third-party integrations to respond to fulfillment pricing
Author:
Phillip Verheyden
  • Method Details

    • calculateCostForFulfillmentGroup

      FulfillmentGroup calculateCostForFulfillmentGroup(FulfillmentGroup fulfillmentGroup) throws org.broadleafcommerce.common.vendor.service.exception.FulfillmentPriceException
      Calculates the total cost for this FulfillmentGroup. Specific configurations for calculating this cost can come from FulfillmentGroup.getFulfillmentOption(). This method is invoked during the pricing workflow and will only be called if canCalculateCostForFulfillmentGroup(FulfillmentGroup, FulfillmentOption) returns true. This should call FulfillmentGroup.setShippingPrice(org.broadleafcommerce.common.money.Money) to set the shipping price on fulfillmentGroup
      Parameters:
      fulfillmentGroup - - the FulfillmentGroup to calculate costs for
      Returns:
      the modified FulfillmentGroup with correct pricing. This is typically fulfillmentGroup after it has been modified
      Throws:
      org.broadleafcommerce.common.vendor.service.exception.FulfillmentPriceException
    • canCalculateCostForFulfillmentGroup

      boolean canCalculateCostForFulfillmentGroup(FulfillmentGroup fulfillmentGroup, FulfillmentOption option)
      Whether or not this processor can provide a cost calculate for the given FulfillmentGroup and the given FulfillmentOption. This is not invoked directly by any workflow, but could instead be invoked via a controller that wants to display pricing to a user before the user actually picks a FulfillmentOption. The controller would inject an instance of FulfillmentPricingService and thus indirectly invoke this method for a particular option.
      Parameters:
      fulfillmentGroup -
      option - - the candidate option a user might select based on the estimate
      Returns:
      true if this processor can estimate the costs, false otherwise
    • estimateCostForFulfillmentGroup

      FulfillmentEstimationResponse estimateCostForFulfillmentGroup(FulfillmentGroup fulfillmentGroup, Set<FulfillmentOption> options) throws org.broadleafcommerce.common.vendor.service.exception.FulfillmentPriceException
      Estimates the cost for the fulfilling the given fulfillment group Estimates the cost for the fulfilling the given fulfillment group with the given options. The response should not include prices that the implementor of this interface cannot respond to. So, if the invoker of this method passes in several types of fulfillment options, the response should only contain prices for the fulfillment options that will would cause a call to canCalculateCostForFulfillmentGroup(org.broadleafcommerce.core.order.domain.FulfillmentGroup, org.broadleafcommerce.core.order.domain.FulfillmentOption) to return true. This method may return null or it may return a non-null response with an empty map, indicating that no price estimate was available for the options given. This method SHOULD NOT throw an exception if it encounters a FulfillmentOption that it can not price. It should simply ignore that option.
      Parameters:
      fulfillmentGroup - - the group to estimate fulfillment costs for
      options - - the candidate options that a user might select
      Returns:
      a DTO that represents pricing information that might be added to the fulfillment cost of fulfillmentGroup when calculateCostForFulfillmentGroup(FulfillmentGroup) is invoked during the pricing workflow
      Throws:
      org.broadleafcommerce.common.vendor.service.exception.FulfillmentPriceException