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" |
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 [hidden email] 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); } } |
Administrator
|
Is an issue created ?
Jacques From: "Stephen Rufle" <[hidden email]> >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 > [hidden email] > 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); > } > } > > |
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" <[hidden email]> >> 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 >> [hidden email] >> 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 [hidden email] H1:480-626-8022 H2:480-802-7173 Yahoo IM: stephen_rufle AOL IM: stephen1rufle |
Free forum by Nabble | Edit this page |