Class MoneyRoundingHelper
- java.lang.Object
-
- com.broadleafcommerce.promotion.offer.service.engine.proration.MoneyRoundingHelper
-
public class MoneyRoundingHelper extends Object
Helper class to calculate rounding of monetary unit amounts from offer adjustments.- Author:
- Marie Standeven (marieStandeven), Sunny Yu
-
-
Constructor Summary
Constructors Constructor Description MoneyRoundingHelper()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected javax.money.MonetaryAmountgetUnitAmount(javax.money.CurrencyUnit currency)Determines the smallest unit amount of money for theCurrencyUnit.Map<String,javax.money.MonetaryAmount>roundListOfMonetaryAmounts(Map<String,javax.money.MonetaryAmount> amounts, javax.money.MonetaryAmount totalAmount, javax.money.CurrencyUnit currency)Given a list of amounts that should round to the provided total, calculates and performs the rounding logic to add the remainder unit amounts.protected Map<String,javax.money.MonetaryAmount>roundListOfMonetaryAmounts(Map<String,javax.money.MonetaryAmount> amounts, javax.money.MonetaryAmount totalAmount, javax.money.MonetaryAmount unitAmount)Given a list of amounts that should round to the provided total, calculates and performs the rounding logic to add the remainder unit amounts.<D extends EnhancedProratedOfferAdjustment>
voidroundProratedAdjustments(Collection<D> proratedOfferAdjustments, javax.money.MonetaryAmount adjustmentsTotal, javax.money.CurrencyUnit currency)Rounds the givenEnhancedProratedOfferAdjustments.<D extends EnhancedProratedOfferAdjustment>
voidroundProratedFulfillmentGroupAdjustments(EnhancedFulfillmentGroup group, Collection<D> proratedOfferAdjustments, javax.money.MonetaryAmount adjustmentsTotal, javax.money.CurrencyUnit currency)Rounds the givenEnhancedFulfillmentGroup.getProratedFulfillmentAdjustments()andEnhancedProratedOfferAdjustments.protected <D extends EnhancedProratedOfferAdjustment>
voidupdateProratedAdjustmentsWithRoundedAdjustments(Collection<D> proratedAdjustments, Map<String,javax.money.MonetaryAmount> proratedAdjustmentAmounts, javax.money.CurrencyUnit currency)Sets the new rounded adjustment values on the givenEnhancedProratedOfferAdjustments
-
-
-
Method Detail
-
roundProratedAdjustments
public <D extends EnhancedProratedOfferAdjustment> void roundProratedAdjustments(Collection<D> proratedOfferAdjustments, javax.money.MonetaryAmount adjustmentsTotal, javax.money.CurrencyUnit currency)
Rounds the givenEnhancedProratedOfferAdjustments.- Parameters:
proratedOfferAdjustments- theEnhancedProratedOfferAdjustmentsto roundadjustmentsTotal- the total adjustment amountcurrency- the currency of the amounts to round
-
roundProratedFulfillmentGroupAdjustments
public <D extends EnhancedProratedOfferAdjustment> void roundProratedFulfillmentGroupAdjustments(EnhancedFulfillmentGroup group, Collection<D> proratedOfferAdjustments, javax.money.MonetaryAmount adjustmentsTotal, javax.money.CurrencyUnit currency)
Rounds the givenEnhancedFulfillmentGroup.getProratedFulfillmentAdjustments()andEnhancedProratedOfferAdjustments.- Parameters:
group- theEnhancedFulfillmentGroupto round theEnhancedFulfillmentGroup.getProratedFulfillmentAdjustments()forproratedOfferAdjustments- theEnhancedProratedOfferAdjustmentsto roundadjustmentsTotal- the total adjustment amountcurrency- the currency of the amounts to round
-
roundListOfMonetaryAmounts
public Map<String,javax.money.MonetaryAmount> roundListOfMonetaryAmounts(Map<String,javax.money.MonetaryAmount> amounts, javax.money.MonetaryAmount totalAmount, javax.money.CurrencyUnit currency)
Given a list of amounts that should round to the provided total, calculates and performs the rounding logic to add the remainder unit amounts.- Parameters:
amounts- list of amounts to round, mapped to a key for lookup on returntotalAmount- the total adjustment amount
-
updateProratedAdjustmentsWithRoundedAdjustments
protected <D extends EnhancedProratedOfferAdjustment> void updateProratedAdjustmentsWithRoundedAdjustments(Collection<D> proratedAdjustments, Map<String,javax.money.MonetaryAmount> proratedAdjustmentAmounts, javax.money.CurrencyUnit currency)
Sets the new rounded adjustment values on the givenEnhancedProratedOfferAdjustments- Parameters:
proratedAdjustments- theEnhancedProratedOfferAdjustmentsto updateproratedAdjustmentAmounts- a map of rounded adjustment amounts by item line numberscurrency- the currency of the amounts to round
-
roundListOfMonetaryAmounts
protected Map<String,javax.money.MonetaryAmount> roundListOfMonetaryAmounts(Map<String,javax.money.MonetaryAmount> amounts, javax.money.MonetaryAmount totalAmount, javax.money.MonetaryAmount unitAmount)
Given a list of amounts that should round to the provided total, calculates and performs the rounding logic to add the remainder unit amounts.- Parameters:
amounts- list of amounts to round, mapped to a key for lookup on returntotalAmount- the total adjustment amountunitAmount- the smallest unit amount of money for the currency
-
getUnitAmount
protected javax.money.MonetaryAmount getUnitAmount(javax.money.CurrencyUnit currency)
Determines the smallest unit amount of money for theCurrencyUnit.For example, a currency with 2 fraction digits (like USD) will provide the amount "0.01".
- Parameters:
currency- the currency to get the smallest unit amount for- Returns:
- the smallest unit amount of money for the currency
-
-