I think the patch from OFBIZ-2109 should fix. https://issues.apache.org/jira/browse/OFBIZ-2109?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
Jacques Le Roux wrote: > Is an issue created ? > > Jacques > > From: "Stephen Rufle" <[email protected]> >> 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 >> [email protected] >> 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); >> } >> } >> >> > > > -- Stephen P Rufle [email protected] H1:480-626-8022 H2:480-802-7173 Yahoo IM: stephen_rufle AOL IM: stephen1rufle
