Administrator
|
I was asking myself if these changes should be put in release. I guess they should not, else Scott would have surely commited them.
But it's not easy to track such things. Using Fisheye would help a lot. This is only the beginning of such needs. I believe using Fisheyse is almost mandatory when dealing with releases (because we can't rely totally on Scoot wonderful good will :o). Sorry, I currently have not enough time to do the installation so I wonder if a good soul could do it ? Else I always hope to do it a some day... Jacques De : <[hidden email]> > Author: lektran > Date: Sat Jun 23 07:03:20 2007 > New Revision: 550044 > > URL: http://svn.apache.org/viewvc?view=rev&rev=550044 > Log: > Fixed a sales order rounding bug, reported by Jacopo Cappellato > > Modified: > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java > ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java > > Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java > URL: > ============================================================================== > --- ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java (original) > +++ ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java Sat Jun 23 07:03:20 2007 > @@ -68,7 +68,7 @@ > public static final int scale = UtilNumber.getBigDecimalScale("order.decimals"); > public static final int rounding = UtilNumber.getBigDecimalRoundingMode("order.rounding"); > public static final int taxCalcScale = UtilNumber.getBigDecimalScale("salestax.calc.decimals"); > - public static final int taxFinalScale = UtilNumber.getBigDecimalRoundingMode("salestax.final.decimals"); > + public static final int taxFinalScale = UtilNumber.getBigDecimalScale("salestax.final.decimals"); > public static final int taxRounding = UtilNumber.getBigDecimalRoundingMode("salestax.rounding"); > public static final BigDecimal ZERO = (new BigDecimal("0")).setScale(scale, rounding); > public static final BigDecimal percentage = (new BigDecimal("0.01")).setScale(scale, rounding); > @@ -2677,7 +2677,7 @@ > Iterator itemIter = UtilMisc.toIterator(orderItems); > > while (itemIter != null && itemIter.hasNext()) { > - result = result.add(getOrderItemAdjustmentsTotalBd((GenericValue) itemIter.next(), adjustments, includeOther, > + result = result.add(getOrderItemAdjustmentsTotalBd((GenericValue) itemIter.next(), adjustments, includeOther, includeTax, includeShipping)).setScale(scale, rounding); > } > return result; > } > > Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java?view=diff&rev=550044&r1=550043&r2=550044 > ============================================================================== > --- ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java (original) > +++ ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java Sat Jun 23 07:03:20 2007 > @@ -32,6 +32,7 @@ > import org.ofbiz.base.util.UtilDateTime; > import org.ofbiz.base.util.UtilFormatOut; > import org.ofbiz.base.util.UtilMisc; > +import org.ofbiz.base.util.UtilNumber; > import org.ofbiz.base.util.UtilProperties; > import org.ofbiz.base.util.UtilValidate; > import org.ofbiz.entity.GenericDelegator; > @@ -60,6 +61,15 @@ > public static final String module = ShoppingCart.class.getName(); > public static final String resource_error = "OrderErrorUiLabels"; > > + // scales and rounding modes for BigDecimal math > + public static final int scale = UtilNumber.getBigDecimalScale("order.decimals"); > + public static final int rounding = UtilNumber.getBigDecimalRoundingMode("order.rounding"); > + public static final int taxCalcScale = UtilNumber.getBigDecimalScale("salestax.calc.decimals"); > + public static final int taxFinalScale = UtilNumber.getBigDecimalScale("salestax.final.decimals"); > + public static final int taxRounding = UtilNumber.getBigDecimalRoundingMode("salestax.rounding"); > + public static final BigDecimal ZERO = (new BigDecimal("0")).setScale(scale, rounding); > + public static final BigDecimal percentage = (new BigDecimal("0.01")).setScale(scale, rounding); > + > private String orderType = "SALES_ORDER"; // default orderType > private String channel = "UNKNWN_SALES_CHANNEL"; // default channel enum > > @@ -2357,12 +2367,12 @@ > > /** Returns the tax amount from the cart object. */ > public double getTotalSalesTax() { > - double totalTax = 0.00; > + BigDecimal totalTax = ZERO; > for (int i = 0; i < shipInfo.size(); i++) { > CartShipInfo csi = this.getShipInfo(i); > - totalTax += csi.getTotalTax(this); > + totalTax = totalTax.add(new BigDecimal(csi.getTotalTax(this))).setScale(taxCalcScale, taxRounding); > } > - return totalTax; > + return totalTax.setScale(taxFinalScale, taxRounding).doubleValue(); > } > > /** Returns the shipping amount from the cart object. */ > |
Free forum by Nabble | Edit this page |