loadCartFromOrder setting shipGroups

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

loadCartFromOrder setting shipGroups

Stephen Rufle-2
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"


Reply | Threaded
Open this post in threaded view
|

Re: loadCartFromOrder setting shipGroups

Stephen Rufle-2
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);
                 }
             }
 
Reply | Threaded
Open this post in threaded view
|

Re: loadCartFromOrder setting shipGroups

Jacques Le Roux
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);
>                 }
>             }
>
>

Reply | Threaded
Open this post in threaded view
|

Re: loadCartFromOrder setting shipGroups

Stephen Rufle-2
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