atg.commerce.pricing
Class PriceRangeShippingCalculator

java.lang.Object
  extended by atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
      extended by atg.nucleus.GenericService
          extended by atg.commerce.pricing.ShippingCalculatorImpl
              extended by atg.commerce.pricing.DoubleRangeShippingCalculator
                  extended by atg.commerce.pricing.PriceRangeShippingCalculator
All Implemented Interfaces:
ShippingPricingCalculator, NameContextBindingListener, NameContextElement, NameResolver, AdminableService, ApplicationLogging, atg.nucleus.logging.ApplicationLoggingSender, atg.nucleus.logging.TraceApplicationLogging, VariableArgumentApplicationLogging, ComponentNameResolver, Service, ServiceListener, java.util.EventListener

public class PriceRangeShippingCalculator
extends DoubleRangeShippingCalculator

A shipping calculator that determines the shipping price based on the subtotal of all the items in the shipping group. The service is configured through the ranges property. With the given array of price range configurations (format: low:high:price) the service parses the values into their double format for use in calculating shipping costs.

For example:

 ranges=00.00:15.99:4.50,\
        16.00:30.99:6.00,\
        31.00:40.99:7.25,\
        41.00:MAX_VALUE:10.00
 
Note: the keyword MAX_VALUE indicates a top end

If the property addAmount is true then instead of setting the price quote amount to the value of the amount property, the calculator adds the amount to the current amount in the price quote. This can be used to configure a "surcharge" calculator, which increases the shipping price.

The shippingMethod property should be set to the name of a particular delivery process. For example: UPS Ground, UPS 2-day or UPS Next Day.

If the ignoreShippingMethod property is true, then this calculator does not expose a shipping method name (through getAvailableMethods). In addition this calculator will always attempt to perform pricing. This option is available if the user is not given a choice of different shipping methods.


Field Summary
static java.lang.String CLASS_VERSION
          Class version string
 
Fields inherited from class atg.commerce.pricing.DoubleRangeShippingCalculator
mAmounts, MAX_VALUE_KEY, mHighRanges, mLowRanges, TOKEN
 
Fields inherited from class atg.nucleus.GenericService
SERVICE_INFO_KEY
 
Fields inherited from interface atg.nucleus.logging.TraceApplicationLogging
DEFAULT_LOG_TRACE_STATUS
 
Fields inherited from interface atg.nucleus.logging.ApplicationLogging
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS
 
Constructor Summary
PriceRangeShippingCalculator()
          Constructs an instanceof PriceRangeShippingCalculator
 
Method Summary
protected  double getRangeComparisonValue(Order pOrder, ShippingGroup pShippingGroup)
          Return the value which should be used as a comparison between the range values
protected  double getRangeComparisonValue(ShippingGroup pShippingGroup)
          Deprecated.  
protected  double getSubTotal(Order pOrder, ShippingGroup pShippingGroup)
          Return the sub total of all the items in the shipping group.
 
Methods inherited from class atg.commerce.pricing.DoubleRangeShippingCalculator
doStartService, getAmount, getRanges, initializeRanges, setRanges
 
Methods inherited from class atg.commerce.pricing.ShippingCalculatorImpl
getAmount, getAvailableMethods, getPricingTools, getShippingMethod, haveItemsToShip, isAddAmount, isIgnoreShippingMethod, performPricing, priceShippingGroup, priceShippingPriceInfo, resetShippingPriceInfo, setAddAmount, setIgnoreShippingMethod, setPricingTools, setShippingMethod
 
Methods inherited from class atg.nucleus.GenericService
addLogListener, createAdminServlet, doStopService, getAbsoluteName, getAdminServlet, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, reResolveThis, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
 
Methods inherited from class atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLASS_VERSION

public static java.lang.String CLASS_VERSION
Class version string

Constructor Detail

PriceRangeShippingCalculator

public PriceRangeShippingCalculator()
Constructs an instanceof PriceRangeShippingCalculator

Method Detail

getRangeComparisonValue

protected double getRangeComparisonValue(ShippingGroup pShippingGroup)
                                  throws PricingException
Deprecated. 

Return the value which should be used as a comparison between the range values

Specified by:
getRangeComparisonValue in class DoubleRangeShippingCalculator
Parameters:
pShippingGroup - the group that should be inspected for a value which falls between configured range values.
Returns:
the subtotal for all the items in the shipping group
Throws:
PricingException - if there was a problem discovering the range comparison value

getRangeComparisonValue

protected double getRangeComparisonValue(Order pOrder,
                                         ShippingGroup pShippingGroup)
                                  throws PricingException
Return the value which should be used as a comparison between the range values

Overrides:
getRangeComparisonValue in class DoubleRangeShippingCalculator
pShippingGroup - the group that should be inspected for a value which falls between configured range values.
Returns:
the subtotal for all the items in the shipping group
Throws:
PricingException - if there was a problem discovering the range comparison value

getSubTotal

protected double getSubTotal(Order pOrder,
                             ShippingGroup pShippingGroup)
Return the sub total of all the items in the shipping group. If order is null, then the subtotal is calculated by summing the ItemPriceInfo values for the items in the shipping group. (Warning: This will not take order level discounts into consideration) If order is not null, then it is used to get the given shipping group's subtotal from the order's OrderPriceInfo and used as the sub total. (This DOES take order level discounts into consideration.)