You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by do...@apache.org on 2008/11/14 18:53:05 UTC

svn commit: r714082 - /ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java

Author: doogie
Date: Fri Nov 14 09:53:05 2008
New Revision: 714082

URL: http://svn.apache.org/viewvc?rev=714082&view=rev
Log:
Fix the tax calculating code to be more Collections friendly.

Modified:
    ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java

Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java?rev=714082&r1=714081&r2=714082&view=diff
==============================================================================
--- ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java (original)
+++ ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java Fri Nov 14 09:53:05 2008
@@ -758,7 +758,8 @@
 
         int shipGroups = this.cart.getShipGroupSize();
         for (int i = 0; i < shipGroups; i++) {
-            Map serviceContext = this.makeTaxContext(i, shipAddress);
+            Map shoppingCartItemIndexMap = new HashMap();
+            Map serviceContext = this.makeTaxContext(i, shipAddress, shoppingCartItemIndexMap);
             // pass in BigDecimal values instead of Double
             List taxReturn = this.getTaxAdjustments(dispatcher, "calcTax", serviceContext);
 
@@ -771,7 +772,7 @@
             if (itemAdj != null) {
                 for (int x = 0; x < itemAdj.size(); x++) {
                     List adjs = (List) itemAdj.get(x);
-                    ShoppingCartItem item = (ShoppingCartItem) csi.shipItemInfo.get(x);
+                    ShoppingCartItem item = (ShoppingCartItem) shoppingCartItemIndexMap.get(Integer.valueOf(x));
                     if (adjs == null) {
                         adjs = new LinkedList();
                     }
@@ -786,7 +787,7 @@
         }
     }
 
-    private Map makeTaxContext(int shipGroup, GenericValue shipAddress) throws GeneralException {
+    private Map makeTaxContext(int shipGroup, GenericValue shipAddress, Map shoppingCartItemIndexMap) throws GeneralException {
         String productStoreId = cart.getProductStoreId();
         String billToPartyId = cart.getBillToCustomerPartyId();
         ShoppingCart.CartShipInfo csi = cart.getShipInfo(shipGroup);
@@ -799,8 +800,9 @@
 
         // Debug.logInfo("====== makeTaxContext passed in shipAddress=" + shipAddress, module);
         
+        Iterator it = csi.shipItemInfo.keySet().iterator();
         for (int i = 0; i < totalItems; i++) {
-            ShoppingCartItem cartItem = (ShoppingCartItem) csi.shipItemInfo.get(i);
+            ShoppingCartItem cartItem = (ShoppingCartItem) it.next();
             ShoppingCart.CartShipInfo.CartShipItemInfo itemInfo = csi.getShipItemInfo(cartItem);
             
             //Debug.logInfo("In makeTaxContext for item [" + i + "] in ship group [" + shipGroup + "] got cartItem: " + cartItem, module);
@@ -810,6 +812,7 @@
             amount.add(i, new BigDecimal(cartItem.getItemSubTotal(itemInfo.quantity)));
             price.add(i, new BigDecimal(cartItem.getBasePrice()));
             shipAmt.add(i, BigDecimal.ZERO); // no per item shipping yet
+            shoppingCartItemIndexMap.put(Integer.valueOf(i), cartItem);
         }
         
         //add promotion adjustments