Author: lektran
Date: Sat Nov 14 22:07:12 2009
New Revision: 836272

URL: http://svn.apache.org/viewvc?rev=836272&view=rev
Log:
Changed order tax calculation to group tax adjustments by tax auth/geo before 
rounding to tax final, fixes a rounding error I encountered

Modified:
    
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
    
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/entry/CheckoutReview.groovy
    
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy

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?rev=836272&r1=836271&r2=836272&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
 (original)
+++ 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
 Sat Nov 14 22:07:12 2009
@@ -4510,18 +4510,14 @@
         }
 
         public BigDecimal getTotalTax(ShoppingCart cart) {
-            BigDecimal taxTotal = ZERO;
-            for (int i = 0; i < shipTaxAdj.size(); i++) {
-                GenericValue v = (GenericValue) shipTaxAdj.get(i);
-                taxTotal = taxTotal.add(OrderReadHelper.calcOrderAdjustment(v, 
cart.getSubTotal()));
-            }
-
+            List<GenericValue> taxAdjustments = FastList.newInstance();
+            taxAdjustments.addAll(shipTaxAdj);
             Iterator iter = shipItemInfo.values().iterator();
-            while (iter.hasNext()) {
-                CartShipItemInfo info = (CartShipItemInfo) iter.next();
-                taxTotal = taxTotal.add(info.getItemTax(cart));
+            for (CartShipItemInfo info : shipItemInfo.values()) {
+                taxAdjustments.addAll(info.itemTaxAdj);
             }
-
+            Map<String, Object> taxByAuthority = 
OrderReadHelper.getOrderTaxByTaxAuthGeoAndParty(taxAdjustments);
+            BigDecimal taxTotal = (BigDecimal) 
taxByAuthority.get("taxGrandTotal");
             return taxTotal;
         }
 

Modified: 
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/entry/CheckoutReview.groovy
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/entry/CheckoutReview.groovy?rev=836272&r1=836271&r2=836272&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/entry/CheckoutReview.groovy
 (original)
+++ 
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/entry/CheckoutReview.groovy
 Sat Nov 14 22:07:12 2009
@@ -129,8 +129,7 @@
 shippingAmount = 
shippingAmount.add(OrderReadHelper.calcOrderAdjustments(orderHeaderAdjustments, 
orderSubTotal, false, false, true));
 context.orderShippingTotal = shippingAmount;
 
-taxAmount = OrderReadHelper.getAllOrderItemsAdjustmentsTotal(orderItems, 
orderAdjustments, false, true, false);
-taxAmount = 
taxAmount.add(OrderReadHelper.calcOrderAdjustments(orderHeaderAdjustments, 
orderSubTotal, false, true, false));
+taxAmount = 
OrderReadHelper.getOrderTaxByTaxAuthGeoAndParty(orderAdjustments).taxGrandTotal;
 context.orderTaxTotal = taxAmount;
 context.orderGrandTotal = OrderReadHelper.getOrderGrandTotal(orderItems, 
orderAdjustments);
 

Modified: 
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy?rev=836272&r1=836271&r2=836272&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy
 (original)
+++ 
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy
 Sat Nov 14 22:07:12 2009
@@ -108,8 +108,7 @@
     shippingAmount = 
shippingAmount.add(OrderReadHelper.calcOrderAdjustments(orderHeaderAdjustments, 
orderSubTotal, false, false, true));
     context.shippingAmount = shippingAmount;
 
-    taxAmount = OrderReadHelper.getAllOrderItemsAdjustmentsTotal(orderItems, 
orderAdjustments, false, true, false);
-    taxAmount = 
taxAmount.add(OrderReadHelper.calcOrderAdjustments(orderHeaderAdjustments, 
orderSubTotal, false, true, false));
+    taxAmount = 
OrderReadHelper.getOrderTaxByTaxAuthGeoAndParty(orderAdjustments).taxGrandTotal;
     context.taxAmount = taxAmount;
 
     grandTotal = OrderReadHelper.getOrderGrandTotal(orderItems, 
orderAdjustments);


Reply via email to