com.ibm.commerce.order.calculation
Class CalculationHelper

java.lang.Object
  |
  +--com.ibm.commerce.order.calculation.CalculationHelper

public class CalculationHelper
extends java.lang.Object

This class defines various helper methods used by the Calculation Framework.


Field Summary
static java.lang.String COPYRIGHT
          The IBM copyright notice field.
 
Constructor Summary
protected CalculationHelper()
          Constructor for CalculationHelper.
 
Method Summary
 void applyCalculationUsages( OrderItemAccessBean[] aabOrderItems, java.lang.String astrCurrency, java.util.HashMap ahshCustomProperties, CommandContext commandContext)
          This method is called by OrderPrepare/PrepareOrder to apply all calculation usages enabled in the store.
 void applyCalculationUsages( OrderItemAccessBean[] aabOrderItems, java.lang.String astrCurrency, java.util.HashMap ahshCustomProperties, java.util.Set aEnabledUsageIds, java.util.Set aDisabledUsageIds, CommandContext commandContext)
          This method is called by OrderPrepare/PrepareOrder to apply all calculation usages enabled in the store.
 int compare(java.lang.Comparable[] c1, java.lang.Comparable[] c2)
          Compares 2 arrays of Comparables.
 int compare(java.lang.Comparable c1, java.lang.Comparable c2)
          Compares 2 Comparables.
 boolean containsAny(java.lang.Object[] a1, java.lang.Object[] a2)
          Returns whether the first array contains any element in the second array.
 java.math.BigDecimal convertMonetaryValue(java.math.BigDecimal adValue1, java.lang.String astrCurrency1, java.lang.String astrCurrency2, CommandContext commandContext)
          This method converts the monetary value from one currency to another using the forward conversion rate.
 java.math.BigDecimal convertMonetaryValueR(java.math.BigDecimal adValue1, java.lang.String astrCurrency1, java.lang.String astrCurrency2, CommandContext commandContext)
          This method converts the monetary value from one currency to another using the backward conversion rate.
 java.math.BigDecimal convertQuantityValue(java.math.BigDecimal adValue1, java.lang.String astrUnit1, java.lang.String astrUnit2)
          This method converts the quantity value from one unit to another.
 void correctZeroBoundaryCrossings( Item[] aItems, java.math.BigDecimal[] adAdjustments, java.lang.String astrCurrency, CommandContext commandContext)
          This method is called by DiscountCalculationCodeApply to correct discounts that cross the zero boundary.
protected  boolean correctZeroBoundaryCrossingsIteration( Item[] aItems, java.math.BigDecimal[] adAdjustments)
          This method represents a single iteration in the "correct zero boundary crossing" algorithm.
 java.math.BigDecimal[] destructiveAdd(java.math.BigDecimal[] adValues1, java.math.BigDecimal[] adValues2)
          Returns the sum of 2 BigDecimal arrays.
 java.math.BigDecimal divide(java.math.BigDecimal ad1, java.math.BigDecimal ad2)
          Returns ad1.divide(ad2, 20, BigDecimal.ROUND_HALF_UP).
 void finalizeCalculationUsages( OrderAccessBean aabOrder, OrderItemAccessBean[] aabOrderItems, java.lang.String astrCurrency, java.util.HashMap ahshCustomProperties, CommandContext commandContext)
          This method is called by OrderProcess/ProcessOrder to apply all calculation usages enabled in the store.
 void finalizeCalculationUsages( OrderAccessBean aabOrder, OrderItemAccessBean[] aabOrderItems, java.lang.String astrCurrency, java.util.HashMap ahshCustomProperties, java.util.Set aEnabledUsageIds, java.util.Set aDisabledUsageIds, CommandContext commandContext)
          This method is called by OrderProcess/ProcessOrder to apply all calculation usages enabled by the store.
 int findMax(java.math.BigDecimal[] e)
          Returns the index of the largest value in a BigDecimal array.
 int findMin(java.math.BigDecimal[] e)
          Returns the index of the smallest value in a BigDecimal array.
 java.lang.Integer getCodeId(java.lang.Integer anRuleId)
          Returns the CalculationCode ID of the specified CalculationRule.
static  CalculationHelper getInstance()
          Returns an instance of this class.
 java.lang.Long[] getProductAndItemIds(java.lang.Long anCatalogEntryId)
          Returns the parent product of an item and the item itself.
 java.lang.Long[] getProductOrItemIds(java.lang.Long anCatalogEntryId)
          Returns the parent product of an item.
 java.math.BigDecimal getQuantity(java.lang.Long anCatalogEntryId, java.math.BigDecimal adNormalizedQuantity, java.lang.String astrUnit)
          Returns the quantity value represented by the specified normalized quantity.
 java.math.BigDecimal getRoundingMultiple(java.lang.String astrCurrency, CommandContext commandContext)
          Returns the rounding multiple of the specified currency.
 java.math.BigDecimal getRoundingMultiple(java.lang.String astrCurrency, java.lang.String astrNumberUsage, CommandContext commandContext)
          Returns the rounding multiple of the specified currency.
 java.lang.Integer getStoreGroupId(java.lang.Integer anStoreId)
          Returns the StoreGroup ID of the specified Store.
 java.math.BigDecimal getTaxableAdjustmentTotal(java.lang.Long anOrderItemId, java.lang.Integer anTaxCategoryId)
          Returns the taxable adjustment total of the specified OrderItem and TaxCategory.
 java.util.Map getTaxableAdjustmentTotals( Item[] aItems, java.lang.Integer anTaxCategoryId, java.util.HashMap ahshCustomProperties)
          Returns the taxable adjustment total of the specified Items and TaxCategory.
 java.lang.Integer[] getTaxCategoryIds( StoreAccessBean aabStore, java.lang.Integer anUsageId)
          Returns the tax categories of a particular calculation usage: Calculation Usage Tax Categories sales tax all sales tax categories shipping tax all shipping tax categories other null
 java.math.BigDecimal getWeight(java.lang.Long anCatalogEntryId, java.math.BigDecimal adNormalizedQuantity, java.lang.String astrUnit)
          Returns the weight value represented by the specified normalized quantity.
 void initializeCalculationUsages( OrderAccessBean aabOrder, OrderItemAccessBean[] aabOrderItems, java.lang.String astrCurrency, java.util.HashMap ahshCustomProperties, CommandContext commandContext)
          This method is called by OrderPrepare/PrepareOrder to initialize all calculation usages enabled by the store.
 void initializeCalculationUsages( OrderAccessBean aabOrder, OrderItemAccessBean[] aabOrderItems, java.lang.String astrCurrency, java.util.HashMap ahshCustomProperties, java.util.Set aEnabledUsageIds, java.util.Set aDisabledUsageIds, CommandContext commandContext)
          This method is called by OrderPrepare/PrepareOrder to initialize all calculation usages enabled by the store.
 boolean isCurrentUserInMemberGroup(java.lang.Long anMemberGroupId, CommandContext commandContext)
           
 boolean isEffective(CalculationCodeAccessBean aabCode, java.sql.Timestamp aTimestamp)
          Returns whether a CalculationCode is effective at the specified time.
 boolean isPublished(CalculationCodeAccessBean aabCode)
          Returns whether a CalculationCode is published.
 CalculationCodeAccessBean[] merge(CalculationCodeAccessBean[] aabCodes1, CalculationCodeAccessBean[] aabCodes2)
          Merges 2 CalculationCode arrays into a single array with no duplicate element.
 java.math.BigDecimal[] remapValues( Item[] aItems1, java.math.BigDecimal[] adValues1, Item[] aItems2)
          Returns a BigDecimal array adValues2 such that, if aItems1[i] == aItems2[j], then adValues1[i] == adValues2[j].
 void round(java.math.BigDecimal[] a, java.lang.String astrCurrency, CommandContext commandContext)
          Rounds a BigDecimal array using the "fudging" algorithm.
 void round(java.math.BigDecimal[] a, java.lang.String astrCurrency, java.lang.String astrNumberUsage, CommandContext commandContext)
          Rounds a BigDecimal array using the "fudging" algorithm.
 java.math.BigDecimal round(java.math.BigDecimal adValue, java.lang.String astrCurrency, CommandContext commandContext)
          Rounds a monetary value in the specified currency.
 java.math.BigDecimal round(java.math.BigDecimal adValue, java.lang.String astrCurrency, java.lang.String astrNumberUsage, CommandContext commandContext)
          Rounds a monetary value in the specified currency.
 java.math.BigDecimal[] spread(java.math.BigDecimal adValue, java.math.BigDecimal[] adWeights)
          Spreads a value using the specified mathematical weights.
 java.math.BigDecimal sum(java.math.BigDecimal[] adValues)
          Sums the elements of a BigDecimal array.
 void summarizeCalculationUsages( OrderAccessBean aabOrder, SubOrderAccessBean[] aabSubOrders, OrderItemAccessBean[] aabOrderItems, java.lang.String astrCurrency, java.util.HashMap ahshCustomProperties, CommandContext commandContext)
          This method is called by OrderPrepare/PrepareOrder to summarize all calculation usages enabled by the store.
 void summarizeCalculationUsages( OrderAccessBean aabOrder, SubOrderAccessBean[] aabSubOrders, OrderItemAccessBean[] aabOrderItems, java.lang.String astrCurrency, java.util.HashMap ahshCustomProperties, java.util.Set aEnabledUsageIds, java.util.Set aDisabledUsageIds, CommandContext commandContext)
          This method is called by OrderPrepare/PrepareOrder to summarize all calculation usages enabled by the store.
 java.lang.String toString(java.lang.Object[] a)
          Returns the string representation of the specified array.
  SubOrderAccessBean[] updateSubOrders(java.lang.Long anOrderId, OrderItemAccessBean[] aabOrderItems)
          This method is called by OrderPrepare/PrepareOrder to update the suborder totals of an order.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail
public static final java.lang.String COPYRIGHT
The IBM copyright notice field.
See Also:
Constant Field Values
Constructor Detail

CalculationHelper

protected CalculationHelper()
Constructor for CalculationHelper.
Method Detail

applyCalculationUsages

public void applyCalculationUsages(OrderItemAccessBean[] aabOrderItems,
                                   java.lang.String astrCurrency,
                                   java.util.HashMap ahshCustomProperties,
CommandContext commandContext)
                            throws ECException
This method is called by OrderPrepare/PrepareOrder to apply all calculation usages enabled in the store.
Parameters:
aabOrderItems - the OrderItems.
astrCurrency - the (Order) currency.
ahshCustomProperties - the custom properties. Key: property name (String). Value: property value (Object).
commandContext - the command context.
Throws:
ECException

compare

public int compare(java.lang.Comparable[] c1,
                   java.lang.Comparable[] c2)
Compares 2 arrays of Comparables. The algorithm is as follows:
  1. if both arrays are null, return 0
  2. if only c1 is null, return -1
  3. if only c2 is null, return 1
  4. compare each pair of elements using compare(Comparable, Comparable) and return the first non-zero result
  5. return c1.length - c2.length
Parameters:
c1 - the first array.
c2 - the second array.
Returns:
the comparison result.

compare

public int compare(java.lang.Comparable c1,
                   java.lang.Comparable c2)
Compares 2 Comparables. Null is considered to be the smallest.
Parameters:
c1 - the first Comparable.
c2 - the second Comparable.
Returns:
the comparison result.

containsAny

public boolean containsAny(java.lang.Object[] a1,
                           java.lang.Object[] a2)
Returns whether the first array contains any element in the second array.
Parameters:
a1 - the first array.
a2 - the second array.
Returns:
true if the first array does contain an element in the second array.

convertMonetaryValue

public java.math.BigDecimal convertMonetaryValue(java.math.BigDecimal adValue1,
                                                 java.lang.String astrCurrency1,
                                                 java.lang.String astrCurrency2,
CommandContext commandContext)
                                          throws ECException
This method converts the monetary value from one currency to another using the forward conversion rate.
Parameters:
adValue1 - the original monetary value.
astrCurrency1 - the original currency.
astrCurrency2 - the target currency.
commandContext - the command context.
Returns:
the monetary value converted to the target currency.
Throws:
ECException

convertMonetaryValueR

public java.math.BigDecimal convertMonetaryValueR(java.math.BigDecimal adValue1,
                                                  java.lang.String astrCurrency1,
                                                  java.lang.String astrCurrency2,
CommandContext commandContext)
                                           throws ECException
This method converts the monetary value from one currency to another using the backward conversion rate.
Parameters:
adValue1 - the original monetary value.
astrCurrency1 - the original currency.
astrCurrency2 - the target currency.
commandContext - the command context.
Returns:
the monetary value converted to the target currency.
Throws:
ECException

convertQuantityValue

public java.math.BigDecimal convertQuantityValue(java.math.BigDecimal adValue1,
                                                 java.lang.String astrUnit1,
                                                 java.lang.String astrUnit2)
                                          throws ECException
This method converts the quantity value from one unit to another.
Parameters:
adValue1 - the original quantity value.
Returns:
the quantity value converted to the target unit.
Throws:
ECException

correctZeroBoundaryCrossings

public void correctZeroBoundaryCrossings(Item[] aItems,
                                         java.math.BigDecimal[] adAdjustments,
                                         java.lang.String astrCurrency,
CommandContext commandContext)
                                  throws ECException
This method is called by DiscountCalculationCodeApply to correct discounts that cross the zero boundary.
Parameters:
aItems - the Items.
adAdjustments - the adjustments to be corrected.
astrCurrency - the currency which the adjustments are in.
commandContext - the commandContext.
Throws:
ECException

correctZeroBoundaryCrossingsIteration

protected boolean correctZeroBoundaryCrossingsIteration(Item[] aItems,
                                                        java.math.BigDecimal[] adAdjustments)
                                                 throws ECException
This method represents a single iteration in the "correct zero boundary crossing" algorithm.
Returns:
true if additional iterations are not necessary.
Throws:
ECException

destructiveAdd

public java.math.BigDecimal[] destructiveAdd(java.math.BigDecimal[] adValues1,
                                             java.math.BigDecimal[] adValues2)
Returns the sum of 2 BigDecimal arrays. The source arrays will be modified and reused.
Parameters:
adValues1 - the first BigDecimal array.
adValues2 - the second BigDecimal array.
Returns:
the sum of the 2 BigDecimal arrays.

divide

public java.math.BigDecimal divide(java.math.BigDecimal ad1,
                                   java.math.BigDecimal ad2)
Returns ad1.divide(ad2, 20, BigDecimal.ROUND_HALF_UP).
Parameters:
ad1 - the first BigDecimal.
ad2 - the second BigDecimal.
Returns:
ad1.divide(ad2, 20, BigDecimal.ROUND_HALF_UP).

finalizeCalculationUsages

public void finalizeCalculationUsages(OrderAccessBean aabOrder,
OrderItemAccessBean[] aabOrderItems,
                                      java.lang.String astrCurrency,
                                      java.util.HashMap ahshCustomProperties,
CommandContext commandContext)
                               throws ECException
This method is called by OrderProcess/ProcessOrder to apply all calculation usages enabled in the store.
Parameters:
aabOrder - the Order.
aabOrderItems - the OrderItems.
astrCurrency - the (Order) currency.
ahshCustomProperties - the custom properties. Key: property name (String). Value: property value (Object).
commandContext - the command context.
Throws:
ECException

findMax

public int findMax(java.math.BigDecimal[] e)
Returns the index of the largest value in a BigDecimal array.
Parameters:
e - the BigDecimal array.
Returns:
the index.

findMin

public int findMin(java.math.BigDecimal[] e)
Returns the index of the smallest value in a BigDecimal array.
Parameters:
e - the BigDecimal array.
Returns:
the index.

getCodeId

public java.lang.Integer getCodeId(java.lang.Integer anRuleId)
                            throws ECException
Returns the CalculationCode ID of the specified CalculationRule.
Parameters:
anRuleId - the CalculationRule ID.
Returns:
the CalculationCode ID.
Throws:
ECException

getInstance

public static CalculationHelper getInstance()
Returns an instance of this class.
Returns:
an instance of this class.

getProductAndItemIds

public java.lang.Long[] getProductAndItemIds(java.lang.Long anCatalogEntryId)
                                      throws ECException
Returns the parent product of an item and the item itself.
Parameters:
anCatalogEntryId - the CatalogEntry ID of the item.
Returns:
the CatalogEntry IDs of the item and its parent product.
Throws:
ECException

getProductOrItemIds

public java.lang.Long[] getProductOrItemIds(java.lang.Long anCatalogEntryId)
                                     throws ECException
Returns the parent product of an item. If it does not have one, returns the item itself.
Parameters:
anCatalogEntryId - the CatalogEntry ID of the item.
Returns:
the CatalogEntry IDs of the item or its parent product.
Throws:
ECException

getQuantity

public java.math.BigDecimal getQuantity(java.lang.Long anCatalogEntryId,
                                        java.math.BigDecimal adNormalizedQuantity,
                                        java.lang.String astrUnit)
                                 throws ECException
Returns the quantity value represented by the specified normalized quantity.
Parameters:
anCatalogEntryId - the CatalogEntry ID.
adNormalizedQuantity - the normalized quantity.
astrUnit - the target unit.
Returns:
the quantity value converted to the target unit.
Throws:
ECException

getRoundingMultiple

public java.math.BigDecimal getRoundingMultiple(java.lang.String astrCurrency,
CommandContext commandContext)
                                         throws ECException
Returns the rounding multiple of the specified currency.
Parameters:
astrCurrency - the currency.
commandContext - the command context.
Returns:
the rounding multiple.
Throws:
ECException

getStoreGroupId

public java.lang.Integer getStoreGroupId(java.lang.Integer anStoreId)
                                  throws ECException
Returns the StoreGroup ID of the specified Store.
Parameters:
anStoreId - the Store ID.
Returns:
the StoreGroup ID.
Throws:
ECException

getTaxableAdjustmentTotal

public java.math.BigDecimal getTaxableAdjustmentTotal(java.lang.Long anOrderItemId,
                                                      java.lang.Integer anTaxCategoryId)
                                               throws ECException
Returns the taxable adjustment total of the specified OrderItem and TaxCategory.
Parameters:
anOrderItemId - the OrderItem ID.
anTaxCategoryId - the TaxCategory ID.
Returns:
the taxable adjustment total.
Throws:
ECException

getTaxCategoryIds

public java.lang.Integer[] getTaxCategoryIds(StoreAccessBean aabStore,
                                             java.lang.Integer anUsageId)
                                      throws ECException
Returns the tax categories of a particular calculation usage:
Calculation Usage Tax Categories
sales tax all sales tax categories
shipping tax all shipping tax categories
other null
Parameters:
aabStore - the Store.
anUsageId - the CalculationUsage ID.
Returns:
the TaxCategory IDs.
Throws:
ECException

getWeight

public java.math.BigDecimal getWeight(java.lang.Long anCatalogEntryId,
                                      java.math.BigDecimal adNormalizedQuantity,
                                      java.lang.String astrUnit)
                               throws ECException
Returns the weight value represented by the specified normalized quantity.
Parameters:
anCatalogEntryId - the CatalogEntry ID.
adNormalizedQuantity - the normalized quantity.
astrUnit - the target unit.
Returns:
the weight value converted to the target unit.
Throws:
ECException

initializeCalculationUsages

public void initializeCalculationUsages(OrderAccessBean aabOrder,
OrderItemAccessBean[] aabOrderItems,
                                        java.lang.String astrCurrency,
                                        java.util.HashMap ahshCustomProperties,
CommandContext commandContext)
                                 throws ECException
This method is called by OrderPrepare/PrepareOrder to initialize all calculation usages enabled by the store.
Parameters:
aabOrder - the Order.
aabOrderItems - the OrderItems.
astrCurrency - the (Order) currency.
ahshCustomProperties - the custom properties. Key: property name (String). Value: property value (Object).
commandContext - the command context.
Throws:
ECException

isCurrentUserInMemberGroup

public boolean isCurrentUserInMemberGroup(java.lang.Long anMemberGroupId,
CommandContext commandContext)
                                   throws ECException
ECException

isEffective

public boolean isEffective(CalculationCodeAccessBean aabCode,
                           java.sql.Timestamp aTimestamp)
                    throws ECException
Returns whether a CalculationCode is effective at the specified time.
Parameters:
aabCode - the CalculationCode.
aTimestamp - the time.
Returns:
true if the CalculationCode is effective.
Throws:
ECException

isPublished

public boolean isPublished(CalculationCodeAccessBean aabCode)
                    throws ECException
Returns whether a CalculationCode is published.
Parameters:
aabCode - the CalculationCode.
Returns:
true if the CalculationCode is published.
Throws:
ECException

merge

public CalculationCodeAccessBean[] merge(CalculationCodeAccessBean[] aabCodes1,
                                         CalculationCodeAccessBean[] aabCodes2)
                                  throws ECException
Merges 2 CalculationCode arrays into a single array with no duplicate element.
Parameters:
aabCodes1 - the first array.
aabCodes2 - the second array.
Returns:
the merged array.
Throws:
ECException

remapValues

public java.math.BigDecimal[] remapValues(Item[] aItems1,
                                          java.math.BigDecimal[] adValues1,
Item[] aItems2)
Returns a BigDecimal array adValues2 such that, if aItems1[i] == aItems2[j], then adValues1[i] == adValues2[j].
Parameters:
aItems1 - the first Item array.
adValues1 - the first BigDecimal array.
aItems2 - the second Item array.
Returns:
the remapped BigDecimal array.

round

public void round(java.math.BigDecimal[] a,
                  java.lang.String astrCurrency,
CommandContext commandContext)
           throws ECException
Rounds a BigDecimal array using the "fudging" algorithm.
Parameters:
a - the BigDecimal array.
astrCurrency - the currency.
commandContext - the command context.
Throws:
ECException

round

public java.math.BigDecimal round(java.math.BigDecimal adValue,
                                  java.lang.String astrCurrency,
CommandContext commandContext)
                           throws ECException
Rounds a monetary value in the specified currency.
Parameters:
adValue - the monetary value.
astrCurrency - the currency.
commandContext - the command context.
Returns:
the rounded monetary value.
Throws:
ECException

spread

public java.math.BigDecimal[] spread(java.math.BigDecimal adValue,
                                     java.math.BigDecimal[] adWeights)
                              throws ECException
Spreads a value using the specified mathematical weights.
Parameters:
adValue - the value to be spreaded.
adWeights - the mathematical weights.
Returns:
the spreaded values. A spreaded value will be null if the corresponding mathematical weight is null.
Throws:
ECException

sum

public java.math.BigDecimal sum(java.math.BigDecimal[] adValues)
Sums the elements of a BigDecimal array.
Parameters:
adValues - the array.
Returns:
the sum.

summarizeCalculationUsages

public void summarizeCalculationUsages(OrderAccessBean aabOrder,
SubOrderAccessBean[] aabSubOrders,
OrderItemAccessBean[] aabOrderItems,
                                       java.lang.String astrCurrency,
                                       java.util.HashMap ahshCustomProperties,
CommandContext commandContext)
                                throws ECException
This method is called by OrderPrepare/PrepareOrder to summarize all calculation usages enabled by the store.
Parameters:
aabOrder - the Order.
aabSubOrders - the SubOrders.
aabOrderItems - the OrderItems.
astrCurrency - the (Order) currency.
ahshCustomProperties - the custom properties. Key: property name (String). Value: property value (Object).
commandContext - the command context.
Throws:
ECException

toString

public java.lang.String toString(java.lang.Object[] a)
Returns the string representation of the specified array.
Parameters:
a - the array.
Returns:
the string representation.

updateSubOrders

public SubOrderAccessBean[] updateSubOrders(java.lang.Long anOrderId,
OrderItemAccessBean[] aabOrderItems)
                                     throws ECException
This method is called by OrderPrepare/PrepareOrder to update the suborder totals of an order.
Parameters:
anOrderId - the Order ID.
aabOrderItems - the OrderItems.
Returns:
the SubOrders being updated.
Throws:
ECException

applyCalculationUsages

public void applyCalculationUsages(OrderItemAccessBean[] aabOrderItems,
                                   java.lang.String astrCurrency,
                                   java.util.HashMap ahshCustomProperties,
                                   java.util.Set aEnabledUsageIds,
                                   java.util.Set aDisabledUsageIds,
CommandContext commandContext)
                            throws ECException
This method is called by OrderPrepare/PrepareOrder to apply all calculation usages enabled in the store.
Parameters:
aabOrderItems - the OrderItems.
astrCurrency - the (Order) currency.
ahshCustomProperties - the custom properties. Key: property name (String). Value: property value (Object).
aEnabledUsageIds - if not null, CalculationUsages not in this set will be disabled. Value: CalculationUsage ID (Integer).
aDisabledUsageIds - if not null, CalculationUsages in this set will be disabled. Value: CalculationUsage ID (Integer).
commandContext - the command context.
Throws:
ECException

finalizeCalculationUsages

public void finalizeCalculationUsages(OrderAccessBean aabOrder,
OrderItemAccessBean[] aabOrderItems,
                                      java.lang.String astrCurrency,
                                      java.util.HashMap ahshCustomProperties,
                                      java.util.Set aEnabledUsageIds,
                                      java.util.Set aDisabledUsageIds,
CommandContext commandContext)
                               throws ECException
This method is called by OrderProcess/ProcessOrder to apply all calculation usages enabled by the store.
Parameters:
aabOrder - the Order.
aabOrderItems - the OrderItems.
astrCurrency - the (Order) currency.
ahshCustomProperties - the custom properties. Key: property name (String). Value: property value (Object).
aEnabledUsageIds - if not null, CalculationUsages not in this set will be disabled. Value: CalculationUsage ID (Integer).
aDisabledUsageIds - if not null, CalculationUsages in this set will be disabled. Value: CalculationUsage ID (Integer).
commandContext - the command context.
Throws:
ECException

initializeCalculationUsages

public void initializeCalculationUsages(OrderAccessBean aabOrder,
OrderItemAccessBean[] aabOrderItems,
                                        java.lang.String astrCurrency,
                                        java.util.HashMap ahshCustomProperties,
                                        java.util.Set aEnabledUsageIds,
                                        java.util.Set aDisabledUsageIds,
CommandContext commandContext)
                                 throws ECException
This method is called by OrderPrepare/PrepareOrder to initialize all calculation usages enabled by the store.
Parameters:
aabOrder - the Order.
aabOrderItems - the OrderItems.
astrCurrency - the (Order) currency.
ahshCustomProperties - the custom properties. Key: property name (String). Value: property value (Object).
aEnabledUsageIds - if not null, CalculationUsages not in this set will be disabled. Value: CalculationUsage ID (Integer).
aDisabledUsageIds - if not null, CalculationUsages in this set will be disabled. Value: CalculationUsage ID (Integer).
commandContext - the command context.
Throws:
ECException

summarizeCalculationUsages

public void summarizeCalculationUsages(OrderAccessBean aabOrder,
SubOrderAccessBean[] aabSubOrders,
OrderItemAccessBean[] aabOrderItems,
                                       java.lang.String astrCurrency,
                                       java.util.HashMap ahshCustomProperties,
                                       java.util.Set aEnabledUsageIds,
                                       java.util.Set aDisabledUsageIds,
CommandContext commandContext)
                                throws ECException
This method is called by OrderPrepare/PrepareOrder to summarize all calculation usages enabled by the store.
Parameters:
aabOrder - the Order.
aabSubOrders - the SubOrders.
aabOrderItems - the OrderItems.
astrCurrency - the (Order) currency.
ahshCustomProperties - the custom properties. Key: property name (String). Value: property value (Object).
aEnabledUsageIds - if not null, CalculationUsages not in this set will be disabled. Value: CalculationUsage ID (Integer).
aDisabledUsageIds - if not null, CalculationUsages in this set will be disabled. Value: CalculationUsage ID (Integer).
commandContext - the command context.
Throws:
ECException

getRoundingMultiple

public java.math.BigDecimal getRoundingMultiple(java.lang.String astrCurrency,
                                                java.lang.String astrNumberUsage,
CommandContext commandContext)
                                         throws ECException
Returns the rounding multiple of the specified currency.
Parameters:
astrCurrency - the currency.
astrNumberUsage - the number usage.
commandContext - the command context.
Returns:
the rounding multiple.
Throws:
ECException

round

public void round(java.math.BigDecimal[] a,
                  java.lang.String astrCurrency,
                  java.lang.String astrNumberUsage,
CommandContext commandContext)
           throws ECException
Rounds a BigDecimal array using the "fudging" algorithm.
Parameters:
a - the BigDecimal array.
astrNumberUsage - the number usage.
astrCurrency - the currency.
commandContext - the command context.
Throws:
ECException

round

public java.math.BigDecimal round(java.math.BigDecimal adValue,
                                  java.lang.String astrCurrency,
                                  java.lang.String astrNumberUsage,
CommandContext commandContext)
                           throws ECException
Rounds a monetary value in the specified currency.
Parameters:
adValue - the monetary value.
astrCurrency - the currency.
commandContext - the command context.
Returns:
the rounded monetary value.
Throws:
ECException

getTaxableAdjustmentTotals

public java.util.Map getTaxableAdjustmentTotals(Item[] aItems,
                                                java.lang.Integer anTaxCategoryId,
                                                java.util.HashMap ahshCustomProperties)
                                         throws ECException
Returns the taxable adjustment total of the specified Items and TaxCategory.
Parameters:
aItems - the Items.
anTaxCategoryId - the TaxCategory ID.
ahshCustomProperties - the custom properties. Key: property name (String). Value: property value (Object).
Returns:
the taxable adjustment totals. Key: Item (Item). Value: taxable adjustment total (BigDecimal).
Throws:
ECException