Is an issue created ?

Jacques

From: "Stephen Rufle" <sru...@salmonllc.com>
I think the attached patch fixes the issue I am having.

For each OrderItemShipGroup get the shipGroupSeqId value and use that as
the index. I also had to modify the call to

564: newItem.setQuantity(..., false, ...);
in
398: org.ofbiz.order.shoppingcart.ShoppingCartItem.makeItem(...)

so that when a second item gets added to the cart with a shipGroupSeqId
less then the first the shipInfo member in cart does not get touched.

I will create a JIRA issue, if no one finds any issues.

Stephen Rufle wrote:
In ShoppingCartServices.loadCartFromOrder(dctx, context) there is a call
to get a list of shipGroups
*
455: List<GenericValue>shipGroups = orh.getOrderItemShipGroupAssocs(item);*

This then loops through setting information on the cart creating new
CartShipInfo objects if one can not be found. My issue is that when I
get to the second item in the loop the shipGroups are gotten for that
item and the

*470: cart.setShipAfterDate(g, sg.getTimestamp("shipAfterDate"));*

index (g) starts over and overwrites the previous value in the cart. I
am not sure how else to set the shipGroups on the cart though so any
advice would be great.

My data for the above scenario is as follows
OrderItem orderItemSeqId="00001" productId="ABC"
OrderItemShipGroupAssoc orderItemSeqId="00001" shipGroupSeqId="00001"
OrderItemShipGroup shipGroupSeqId="00001" facilityId="AAA"

OrderItem orderItemSeqId="00002" productId="ABC"
OrderItemShipGroupAssoc orderItemSeqId="00002" shipGroupSeqId="00002"
OrderItemShipGroup shipGroupSeqId="00002" facilityId="BBB"






--
Stephen P Rufle
sru...@salmonllc.com
H1:480-626-8022
H2:480-802-7173
Yahoo IM: stephen_rufle
AOL IM: stephen1rufle




--------------------------------------------------------------------------------


### Eclipse Workspace Patch 1.0
#P ofbiz
Index: applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartItem.java
===================================================================
--- applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartItem.java 
(revision 730447)
+++ applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartItem.java 
(working copy)
@@ -561,7 +561,7 @@
        }

        try {
- newItem.setQuantity((int)quantity, dispatcher, cart, triggerExternalOps, true, triggerPriceRules, skipInventoryChecks.booleanValue()); + newItem.setQuantity((int)quantity, dispatcher, cart, triggerExternalOps, false, triggerPriceRules, skipInventoryChecks.booleanValue());
        } catch (CartItemModifyException e) {
            Debug.logWarning(e.getMessage(), module);
            cart.removeCartItem(cart.getItemIndex(newItem), dispatcher);
Index: 
applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartServices.java
===================================================================
--- 
applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartServices.java 
(revision 730447)
+++ 
applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCartServices.java 
(working copy)
@@ -28,6 +28,7 @@
import javolution.util.FastList;
import javolution.util.FastMap;

+import org.apache.commons.lang.math.NumberUtils;
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.GeneralException;
import org.ofbiz.base.util.UtilFormatOut;
@@ -467,19 +468,34 @@
                        Debug.logError(e, module);
                        return ServiceUtil.returnError(e.getMessage());
                    }
-                    cart.setShipAfterDate(g, sg.getTimestamp("shipAfterDate"));
-                    cart.setShipBeforeDate(g, sg.getTimestamp("shipByDate"));
-                    cart.setShipmentMethodTypeId(g, 
sg.getString("shipmentMethodTypeId"));
-                    cart.setCarrierPartyId(g, sg.getString("carrierPartyId"));
-                    cart.setSupplierPartyId(g, 
sg.getString("supplierPartyId"));
-                    cart.setMaySplit(g, sg.getBoolean("maySplit"));
-                    cart.setGiftMessage(g, sg.getString("giftMessage"));
-                    cart.setShippingContactMechId(g, 
sg.getString("contactMechId"));
-                    cart.setShippingInstructions(g, 
sg.getString("shippingInstructions"));
-                    cart.setShipGroupFacilityId(g, sg.getString("facilityId"));
-                    cart.setShipGroupVendorPartyId(g, 
sg.getString("vendorPartyId"));
-                    cart.setShipGroupSeqId(g, sg.getString("shipGroupSeqId"));
-                    cart.setItemShipGroupQty(itemIndex, 
shipGroupQty.doubleValue(), g);
+                    String cartShipGroupIndexStr = 
sg.getString("shipGroupSeqId");
+                    int cartShipGroupIndex = 
NumberUtils.toInt(cartShipGroupIndexStr);
+
+                    if (cart.getShipGroupSize() < cartShipGroupIndex) {
+                        int groupDiff = cartShipGroupIndex - 
cart.getShipGroupSize();
+                        for (int i = 0; i < groupDiff; i++) {
+                            cart.addShipInfo();
+                        }
+                    }
+
+                    cartShipGroupIndex = cartShipGroupIndex - 1;
+                    if (cartShipGroupIndex > 0) {
+                        cart.positionItemToGroup(itemIndex, 
shipGroupQty.doubleValue(), 0, cartShipGroupIndex, false);
+                    }
+
+                    cart.setShipAfterDate(cartShipGroupIndex, 
sg.getTimestamp("shipAfterDate"));
+                    cart.setShipBeforeDate(cartShipGroupIndex, 
sg.getTimestamp("shipByDate"));
+                    cart.setShipmentMethodTypeId(cartShipGroupIndex, 
sg.getString("shipmentMethodTypeId"));
+                    cart.setCarrierPartyId(cartShipGroupIndex, 
sg.getString("carrierPartyId"));
+                    cart.setSupplierPartyId(cartShipGroupIndex, 
sg.getString("supplierPartyId"));
+                    cart.setMaySplit(cartShipGroupIndex, 
sg.getBoolean("maySplit"));
+                    cart.setGiftMessage(cartShipGroupIndex, 
sg.getString("giftMessage"));
+                    cart.setShippingContactMechId(cartShipGroupIndex, 
sg.getString("contactMechId"));
+                    cart.setShippingInstructions(cartShipGroupIndex, 
sg.getString("shippingInstructions"));
+                    cart.setShipGroupFacilityId(cartShipGroupIndex, 
sg.getString("facilityId"));
+                    cart.setShipGroupVendorPartyId(cartShipGroupIndex, 
sg.getString("vendorPartyId"));
+                    cart.setShipGroupSeqId(cartShipGroupIndex, 
sg.getString("shipGroupSeqId"));
+                    cart.setItemShipGroupQty(itemIndex, 
shipGroupQty.doubleValue(), cartShipGroupIndex);
                }
            }



Reply via email to