Please do not use javolution classes.
Thanks & Regards -- Deepak Dixit On Saturday, June 20, 2015, <[hidden email]> wrote: > Author: diveshdutta > Date: Sat Jun 20 14:58:45 2015 > New Revision: 1686635 > > URL: http://svn.apache.org/r1686635 > Log: > [OFBIZ-5347] 1) Fixed issue: Shipping costs not recalculated after > changing sales order shipment method. For this introduced new service as > per the design in this task. 2) This service will loads the cart save new > shipping method in cart, re-do all the calculations for tax and promotion, > and saves the cart again in order. 3) Also adding new SECA rule which will > trigger resetGrandTotal service on new service updateShipGroupShipInfo. > > Modified: > ofbiz/trunk/applications/order/servicedef/secas.xml > ofbiz/trunk/applications/order/servicedef/services.xml > > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java > > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java > > ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy > ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/controller.xml > > ofbiz/trunk/applications/order/webapp/ordermgr/order/ordershippinginfo.ftl > > Modified: ofbiz/trunk/applications/order/servicedef/secas.xml > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=1686635&r1=1686634&r2=1686635&view=diff > > ============================================================================== > --- ofbiz/trunk/applications/order/servicedef/secas.xml (original) > +++ ofbiz/trunk/applications/order/servicedef/secas.xml Sat Jun 20 > 14:58:45 2015 > @@ -451,4 +451,7 @@ under the License. > <condition field-name="orderTypeId" operator="equals" > value="SALES_ORDER"/> > <action service="checkOrderItemForProductGroupOrder" mode="sync"/> > </eca> > + <eca service="updateShipGroupShipInfo" event="commit"> > + <action service="resetGrandTotal" mode="sync"/> > + </eca> > </service-eca> > > Modified: ofbiz/trunk/applications/order/servicedef/services.xml > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/services.xml?rev=1686635&r1=1686634&r2=1686635&view=diff > > ============================================================================== > --- ofbiz/trunk/applications/order/servicedef/services.xml (original) > +++ ofbiz/trunk/applications/order/servicedef/services.xml Sat Jun 20 > 14:58:45 2015 > @@ -1187,4 +1187,12 @@ under the License. > <attribute name="quantity" type="BigDecimal" mode="IN"/> > </service> > > + <service name="updateShipGroupShipInfo" engine="java" > location="org.ofbiz.order.order.OrderServices" > invoke="updateShipGroupShipInfo" auth="true"> > + <description>Update Shipping Information on Order > View</description> > + <attribute name="contactMechId" type="String" mode="IN" > optional="false"/> > + <attribute name="orderId" type="String" mode="IN" > optional="true"/> > + <attribute name="oldContactMechId" type="String" mode="IN" > optional="true"/> > + <attribute name="shipGroupSeqId" type="String" mode="IN" > optional="true"/> > + <attribute name="shipmentMethod" type="String" mode="IN" > optional="true"/> > + </service> > </services> > > Modified: > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java?rev=1686635&r1=1686634&r2=1686635&view=diff > > ============================================================================== > --- > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java > (original) > +++ > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java > Sat Jun 20 14:58:45 2015 > @@ -33,6 +33,8 @@ import java.util.Locale; > import java.util.Map; > import java.util.Set; > > +import javolution.util.FastList; > + > import org.ofbiz.base.util.Debug; > import org.ofbiz.base.util.UtilDateTime; > import org.ofbiz.base.util.UtilFormatOut; > @@ -3012,4 +3014,17 @@ public class OrderReadHelper { > } > } > > + public List<BigDecimal> getShippableSizes(String shipGrouSeqId) { > + List<BigDecimal> shippableSizes = FastList.newInstance(); > + > + List<GenericValue> validItems = getValidOrderItems(shipGrouSeqId); > + if (validItems != null) { > + Iterator<GenericValue> i = validItems.iterator(); > + while (i.hasNext()) { > + GenericValue item = i.next(); > + shippableSizes.add(this.getItemSize(item)); > + } > + } > + return shippableSizes; > + } > } > > Modified: > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java?rev=1686635&r1=1686634&r2=1686635&view=diff > > ============================================================================== > --- > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java > (original) > +++ > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java > Sat Jun 20 14:58:45 2015 > @@ -6371,4 +6371,110 @@ public class OrderServices { > > return ServiceUtil.returnSuccess(); > } > + > + /** > + * This service runs when you update shipping method of Order from > order view page. > + */ > + public static Map<String, Object> > updateShipGroupShipInfo(DispatchContext dctx, Map<String, ? extends Object> > context) { > + LocalDispatcher dispatcher = dctx.getDispatcher(); > + Delegator delegator = dctx.getDelegator(); > + Locale locale = (Locale) context.get("locale"); > + GenericValue userLogin = (GenericValue)context.get("userLogin"); > + String orderId = (String)context.get("orderId"); > + String shipGroupSeqId = (String)context.get("shipGroupSeqId"); > + String contactMechId = (String)context.get("contactMechId"); > + String oldContactMechId = (String)context.get("oldContactMechId"); > + String shipmentMethod = (String)context.get("shipmentMethod"); > + > + //load cart from order to update new shipping method or address > + ShoppingCart shoppingCart = null; > + try { > + shoppingCart = loadCartForUpdate(dispatcher, delegator, > userLogin, orderId); > + } catch(GeneralException e) { > + Debug.logError(e, module); > + } > + > + String message = null; > + if (UtilValidate.isNotEmpty(shipGroupSeqId)) { > + OrderReadHelper orh = new OrderReadHelper(delegator, orderId); > + List<GenericValue> shippingMethods = null; > + String shipmentMethodTypeId = null; > + String carrierPartyId = null; > + > + // get shipment method from OrderItemShipGroup, if not > available in parameters > + if (UtilValidate.isNotEmpty(shipmentMethod)) { > + String[] arr = shipmentMethod.split( "@" ); > + shipmentMethodTypeId = arr[0]; > + carrierPartyId = arr[1]; > + } else { > + GenericValue orderItemshipGroup = > orh.getOrderItemShipGroup(shipGroupSeqId); > + shipmentMethodTypeId = > orderItemshipGroup.getString("shipmentMethodTypeId"); > + carrierPartyId = > orderItemshipGroup.getString("carrierPartyId"); > + } > + int groupIdx =Integer.parseInt(shipGroupSeqId); > + > + /* check whether new selected contact address is same as old > contact. > + If contact address is different, get applicable ship > methods for changed contact */ > + if (UtilValidate.isNotEmpty(oldContactMechId) && > oldContactMechId.equals(contactMechId)) { > + shoppingCart.setShipmentMethodTypeId(groupIdx - 1, > shipmentMethodTypeId); > + shoppingCart.setCarrierPartyId(groupIdx - 1, > carrierPartyId); > + } else { > + Map<String, BigDecimal> shippableItemFeatures = > orh.getFeatureIdQtyMap(shipGroupSeqId); > + BigDecimal shippableTotal = > orh.getShippableTotal(shipGroupSeqId); > + BigDecimal shippableWeight = > orh.getShippableWeight(shipGroupSeqId); > + List<BigDecimal> shippableItemSizes = > orh.getShippableSizes(shipGroupSeqId); > + > + GenericValue shippingAddress = null; > + if(UtilValidate.isEmpty(shippingAddress)) { > + shippingAddress = > orh.getShippingAddress(shipGroupSeqId); > + } > + > + shippingMethods = > ProductStoreWorker.getAvailableStoreShippingMethods(delegator, > orh.getProductStoreId(), > + shippingAddress, shippableItemSizes, > shippableItemFeatures, shippableWeight, shippableTotal); > + > + boolean isShippingMethodAvailable = false; > + // search shipping method for ship group is applicable to > new address or not. > + for (GenericValue shippingMethod : shippingMethods) { > + isShippingMethodAvailable = > shippingMethod.getString("partyId").equals(carrierPartyId) && > shippingMethod.getString("shipmentMethodTypeId").equals(shipmentMethodTypeId); > + if (isShippingMethodAvailable) { > + shoppingCart.setShipmentMethodTypeId(groupIdx - > 1, shipmentMethodTypeId); > + shoppingCart.setCarrierPartyId(groupIdx - 1, > carrierPartyId); > + break; > + } > + } > + > + // set first shipping method from list, if shipping > method for ship group is not applicable to new ship address. > + if(!isShippingMethodAvailable) { > + shoppingCart.setShipmentMethodTypeId(groupIdx - 1, > shippingMethods.get(0).getString("shipmentMethodTypeId")); > + shoppingCart.setCarrierPartyId(groupIdx - 1, > shippingMethods.get(0).getString("carrierPartyId")); > + > + String newShipMethTypeDesc =null; > + String shipMethTypeDesc=null; > + try { > + shipMethTypeDesc = > delegator.findOne("ShipmentMethodType", > UtilMisc.toMap("shipmentMethodTypeId", shipmentMethodTypeId), > false).getString("description"); > + newShipMethTypeDesc = > delegator.findOne("ShipmentMethodType", > UtilMisc.toMap("shipmentMethodTypeId", > shippingMethods.get(0).getString("shipmentMethodTypeId")), > false).getString("description"); > + } catch(GenericEntityException e) { > + Debug.logError(e, module); > + } > + // message to notify user for not applicability of > shipping method > + message= "Shipping Method "+carrierPartyId+" > "+shipMethTypeDesc+" is not applicable to shipping address. > "+shippingMethods.get(0).getString("carrierPartyId")+" > "+newShipMethTypeDesc+" has been set for shipping address."; > + } > + shoppingCart.setShippingContactMechId(groupIdx-1, > contactMechId); > + } > + } > + > + // save cart after updating shipping method and shipping address. > + Map<String, Object> changeMap = new HashMap<String, Object>(); > + try { > + saveUpdatedCartToOrder(dispatcher, delegator, shoppingCart, > locale, userLogin, orderId, changeMap, true, false); > + } catch(GeneralException e) { > + Debug.logError(e, module); > + } > + > + if (UtilValidate.isNotEmpty(message)) { > + return ServiceUtil.returnSuccess(message); > + } else { > + return ServiceUtil.returnSuccess(); > + } > + } > } > > Modified: > ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy?rev=1686635&r1=1686634&r2=1686635&view=diff > > ============================================================================== > --- > ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy > (original) > +++ > ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy > Sat Jun 20 14:58:45 2015 > @@ -29,6 +29,7 @@ import org.ofbiz.order.order.*; > import org.ofbiz.party.contact.*; > import org.ofbiz.product.inventory.InventoryWorker; > import org.ofbiz.product.catalog.CatalogWorker; > +import org.ofbiz.product.store.ProductStoreWorker; > import org.ofbiz.accounting.payment.*; > > orderId = parameters.orderId; > @@ -420,8 +421,19 @@ if (orderHeader) { > context.shippingContactMechList = shippingContactMechList; > > // list to find all the shipmentMethods from the view named > "ProductStoreShipmentMethView". > - if (productStore) { > - context.productStoreShipmentMethList = > from("ProductStoreShipmentMethView").where("productStoreId", > productStore.productStoreId).orderBy("sequenceNumber").cache(true).queryList(); > + shipGroupShippingMethods = [:]; > + shipGroups.each { shipGroup -> > + shipGroupSeqId = shipGroup.shipGroupSeqId; > + shippableItemFeatures = > orderReadHelper.getFeatureIdQtyMap(shipGroupSeqId); > + shippableTotal = > orderReadHelper.getShippableTotal(shipGroupSeqId); > + shippableWeight = > orderReadHelper.getShippableWeight(shipGroupSeqId); > + shippableItemSizes = > orderReadHelper.getShippableSizes(shipGroupSeqId); > + shippingAddress = > orderReadHelper.getShippingAddress(shipGroupSeqId); > + > + List<GenericValue> productStoreShipmentMethList = > ProductStoreWorker.getAvailableStoreShippingMethods(delegator, > orderReadHelper.getProductStoreId(), > + shippingAddress, shippableItemSizes, > shippableItemFeatures, shippableWeight, shippableTotal); > + shipGroupShippingMethods.put(shipGroupSeqId, > productStoreShipmentMethList); > + context.shipGroupShippingMethods = shipGroupShippingMethods; > } > > // Get a map of returnable items > > Modified: > ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/controller.xml > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/controller.xml?rev=1686635&r1=1686634&r2=1686635&view=diff > > ============================================================================== > --- ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/controller.xml > (original) > +++ ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/controller.xml > Sat Jun 20 14:58:45 2015 > @@ -1701,7 +1701,7 @@ under the License. > <request-map uri="addShippingAddress"> > <security https="true" auth="true"/> > <event type="service" invoke="createUpdateShippingAddress"/> > - <response name="success" type="request" > value="updateOrderItemShipGroup"/> > + <response name="success" type="request" > value="updateShipGroupShipInfo"/> > <response name="error" type="view" value="orderview"/> > </request-map> > <request-map uri="getAssociatedStateList"> > @@ -1888,6 +1888,13 @@ under the License. > <response name="success" type="view" value="splitship"/> > <response name="error" type="request" value="splitship"/> > </request-map> > + > + <request-map uri="updateShipGroupShipInfo"> > + <security https="true" auth="true"/> > + <event type="service" invoke="updateShipGroupShipInfo"/> > + <response name="success" type="view" value="orderview"/> > + <response name="error" type="view" value="orderview"/> > + </request-map> > > <!-- > These are just examples of reports developed using JasperReport > and not really > > Modified: > ofbiz/trunk/applications/order/webapp/ordermgr/order/ordershippinginfo.ftl > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/order/ordershippinginfo.ftl?rev=1686635&r1=1686634&r2=1686635&view=diff > > ============================================================================== > --- > ofbiz/trunk/applications/order/webapp/ordermgr/order/ordershippinginfo.ftl > (original) > +++ > ofbiz/trunk/applications/order/webapp/ordermgr/order/ordershippinginfo.ftl > Sat Jun 20 14:58:45 2015 > @@ -353,7 +353,7 @@ under the License. > <br class="clear"/> > </div> > <div class="screenlet-body" > id="ShipGroupScreenletBody_${shipGroup.shipGroupSeqId}"> > - <form name="updateOrderItemShipGroup" method="post" > action="<@ofbizUrl>updateOrderItemShipGroup</@ofbizUrl>"> > + <form name="updateOrderItemShipGroup" method="post" > action="<@ofbizUrl>updateShipGroupShipInfo</@ofbizUrl>"> > <input type="hidden" name="orderId" value="${orderId!}"/> > <input type="hidden" name="shipGroupSeqId" > value="${shipGroup.shipGroupSeqId!}"/> > <input type="hidden" name="contactMechPurposeTypeId" > value="SHIPPING_LOCATION"/> > @@ -404,7 +404,7 @@ under the License. > <#if > shipGroup.shipmentMethodTypeId?has_content> > <option > value="${shipGroup.shipmentMethodTypeId}@${shipGroup.carrierPartyId!}@${shipGroup.carrierRoleTypeId!}"><#if > shipGroup.carrierPartyId?? && shipGroup.carrierPartyId != > "_NA_">${shipGroup.carrierPartyId!}</#if> ${shipmentMethodType.get("description",locale)!}</option> > </#if> > - <#list productStoreShipmentMethList as > productStoreShipmentMethod> > + <#list > shipGroupShippingMethods[shipGroup.shipGroupSeqId] as > productStoreShipmentMethod> > <#assign shipmentMethodTypeAndParty = > productStoreShipmentMethod.shipmentMethodTypeId + "@" + > productStoreShipmentMethod.partyId + "@" + > productStoreShipmentMethod.roleTypeId> > <#if > productStoreShipmentMethod.partyId?has_content || > productStoreShipmentMethod?has_content> > <option > value="${shipmentMethodTypeAndParty!}"><#if > productStoreShipmentMethod.partyId != > "_NA_">${productStoreShipmentMethod.partyId!}</#if> ${productStoreShipmentMethod.get("description",locale)?default("")}</option> > > > -- Thanks & Regards -- Deepak Dixit www.hotwaxsystems.com |
Thanks Deepak. Will change the code accordingly.
Thanks -- Divesh Dutta. On Sun, Jun 21, 2015 at 10:40 AM, Deepak Dixit < [hidden email]> wrote: > Please do not use javolution classes. > > Thanks & Regards > -- > Deepak Dixit > > On Saturday, June 20, 2015, <[hidden email]> wrote: > > > Author: diveshdutta > > Date: Sat Jun 20 14:58:45 2015 > > New Revision: 1686635 > > > > URL: http://svn.apache.org/r1686635 > > Log: > > [OFBIZ-5347] 1) Fixed issue: Shipping costs not recalculated after > > changing sales order shipment method. For this introduced new service as > > per the design in this task. 2) This service will loads the cart save new > > shipping method in cart, re-do all the calculations for tax and > promotion, > > and saves the cart again in order. 3) Also adding new SECA rule which > will > > trigger resetGrandTotal service on new service updateShipGroupShipInfo. > > > > Modified: > > ofbiz/trunk/applications/order/servicedef/secas.xml > > ofbiz/trunk/applications/order/servicedef/services.xml > > > > > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java > > > > > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java > > > > > ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy > > ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/controller.xml > > > > > ofbiz/trunk/applications/order/webapp/ordermgr/order/ordershippinginfo.ftl > > > > Modified: ofbiz/trunk/applications/order/servicedef/secas.xml > > URL: > > > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/secas.xml?rev=1686635&r1=1686634&r2=1686635&view=diff > > > > > ============================================================================== > > --- ofbiz/trunk/applications/order/servicedef/secas.xml (original) > > +++ ofbiz/trunk/applications/order/servicedef/secas.xml Sat Jun 20 > > 14:58:45 2015 > > @@ -451,4 +451,7 @@ under the License. > > <condition field-name="orderTypeId" operator="equals" > > value="SALES_ORDER"/> > > <action service="checkOrderItemForProductGroupOrder" > mode="sync"/> > > </eca> > > + <eca service="updateShipGroupShipInfo" event="commit"> > > + <action service="resetGrandTotal" mode="sync"/> > > + </eca> > > </service-eca> > > > > Modified: ofbiz/trunk/applications/order/servicedef/services.xml > > URL: > > > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/services.xml?rev=1686635&r1=1686634&r2=1686635&view=diff > > > > > ============================================================================== > > --- ofbiz/trunk/applications/order/servicedef/services.xml (original) > > +++ ofbiz/trunk/applications/order/servicedef/services.xml Sat Jun 20 > > 14:58:45 2015 > > @@ -1187,4 +1187,12 @@ under the License. > > <attribute name="quantity" type="BigDecimal" mode="IN"/> > > </service> > > > > + <service name="updateShipGroupShipInfo" engine="java" > > location="org.ofbiz.order.order.OrderServices" > > invoke="updateShipGroupShipInfo" auth="true"> > > + <description>Update Shipping Information on Order > > View</description> > > + <attribute name="contactMechId" type="String" mode="IN" > > optional="false"/> > > + <attribute name="orderId" type="String" mode="IN" > > optional="true"/> > > + <attribute name="oldContactMechId" type="String" mode="IN" > > optional="true"/> > > + <attribute name="shipGroupSeqId" type="String" mode="IN" > > optional="true"/> > > + <attribute name="shipmentMethod" type="String" mode="IN" > > optional="true"/> > > + </service> > > </services> > > > > Modified: > > > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java > > URL: > > > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java?rev=1686635&r1=1686634&r2=1686635&view=diff > > > > > ============================================================================== > > --- > > > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java > > (original) > > +++ > > > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReadHelper.java > > Sat Jun 20 14:58:45 2015 > > @@ -33,6 +33,8 @@ import java.util.Locale; > > import java.util.Map; > > import java.util.Set; > > > > +import javolution.util.FastList; > > + > > import org.ofbiz.base.util.Debug; > > import org.ofbiz.base.util.UtilDateTime; > > import org.ofbiz.base.util.UtilFormatOut; > > @@ -3012,4 +3014,17 @@ public class OrderReadHelper { > > } > > } > > > > + public List<BigDecimal> getShippableSizes(String shipGrouSeqId) { > > + List<BigDecimal> shippableSizes = FastList.newInstance(); > > + > > + List<GenericValue> validItems = > getValidOrderItems(shipGrouSeqId); > > + if (validItems != null) { > > + Iterator<GenericValue> i = validItems.iterator(); > > + while (i.hasNext()) { > > + GenericValue item = i.next(); > > + shippableSizes.add(this.getItemSize(item)); > > + } > > + } > > + return shippableSizes; > > + } > > } > > > > Modified: > > > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java > > URL: > > > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java?rev=1686635&r1=1686634&r2=1686635&view=diff > > > > > ============================================================================== > > --- > > > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java > > (original) > > +++ > > > ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java > > Sat Jun 20 14:58:45 2015 > > @@ -6371,4 +6371,110 @@ public class OrderServices { > > > > return ServiceUtil.returnSuccess(); > > } > > + > > + /** > > + * This service runs when you update shipping method of Order from > > order view page. > > + */ > > + public static Map<String, Object> > > updateShipGroupShipInfo(DispatchContext dctx, Map<String, ? extends > Object> > > context) { > > + LocalDispatcher dispatcher = dctx.getDispatcher(); > > + Delegator delegator = dctx.getDelegator(); > > + Locale locale = (Locale) context.get("locale"); > > + GenericValue userLogin = > (GenericValue)context.get("userLogin"); > > + String orderId = (String)context.get("orderId"); > > + String shipGroupSeqId = (String)context.get("shipGroupSeqId"); > > + String contactMechId = (String)context.get("contactMechId"); > > + String oldContactMechId = > (String)context.get("oldContactMechId"); > > + String shipmentMethod = (String)context.get("shipmentMethod"); > > + > > + //load cart from order to update new shipping method or address > > + ShoppingCart shoppingCart = null; > > + try { > > + shoppingCart = loadCartForUpdate(dispatcher, delegator, > > userLogin, orderId); > > + } catch(GeneralException e) { > > + Debug.logError(e, module); > > + } > > + > > + String message = null; > > + if (UtilValidate.isNotEmpty(shipGroupSeqId)) { > > + OrderReadHelper orh = new OrderReadHelper(delegator, > orderId); > > + List<GenericValue> shippingMethods = null; > > + String shipmentMethodTypeId = null; > > + String carrierPartyId = null; > > + > > + // get shipment method from OrderItemShipGroup, if not > > available in parameters > > + if (UtilValidate.isNotEmpty(shipmentMethod)) { > > + String[] arr = shipmentMethod.split( "@" ); > > + shipmentMethodTypeId = arr[0]; > > + carrierPartyId = arr[1]; > > + } else { > > + GenericValue orderItemshipGroup = > > orh.getOrderItemShipGroup(shipGroupSeqId); > > + shipmentMethodTypeId = > > orderItemshipGroup.getString("shipmentMethodTypeId"); > > + carrierPartyId = > > orderItemshipGroup.getString("carrierPartyId"); > > + } > > + int groupIdx =Integer.parseInt(shipGroupSeqId); > > + > > + /* check whether new selected contact address is same as old > > contact. > > + If contact address is different, get applicable ship > > methods for changed contact */ > > + if (UtilValidate.isNotEmpty(oldContactMechId) && > > oldContactMechId.equals(contactMechId)) { > > + shoppingCart.setShipmentMethodTypeId(groupIdx - 1, > > shipmentMethodTypeId); > > + shoppingCart.setCarrierPartyId(groupIdx - 1, > > carrierPartyId); > > + } else { > > + Map<String, BigDecimal> shippableItemFeatures = > > orh.getFeatureIdQtyMap(shipGroupSeqId); > > + BigDecimal shippableTotal = > > orh.getShippableTotal(shipGroupSeqId); > > + BigDecimal shippableWeight = > > orh.getShippableWeight(shipGroupSeqId); > > + List<BigDecimal> shippableItemSizes = > > orh.getShippableSizes(shipGroupSeqId); > > + > > + GenericValue shippingAddress = null; > > + if(UtilValidate.isEmpty(shippingAddress)) { > > + shippingAddress = > > orh.getShippingAddress(shipGroupSeqId); > > + } > > + > > + shippingMethods = > > ProductStoreWorker.getAvailableStoreShippingMethods(delegator, > > orh.getProductStoreId(), > > + shippingAddress, shippableItemSizes, > > shippableItemFeatures, shippableWeight, shippableTotal); > > + > > + boolean isShippingMethodAvailable = false; > > + // search shipping method for ship group is applicable > to > > new address or not. > > + for (GenericValue shippingMethod : shippingMethods) { > > + isShippingMethodAvailable = > > shippingMethod.getString("partyId").equals(carrierPartyId) && > > > shippingMethod.getString("shipmentMethodTypeId").equals(shipmentMethodTypeId); > > + if (isShippingMethodAvailable) { > > + shoppingCart.setShipmentMethodTypeId(groupIdx - > > 1, shipmentMethodTypeId); > > + shoppingCart.setCarrierPartyId(groupIdx - 1, > > carrierPartyId); > > + break; > > + } > > + } > > + > > + // set first shipping method from list, if shipping > > method for ship group is not applicable to new ship address. > > + if(!isShippingMethodAvailable) { > > + shoppingCart.setShipmentMethodTypeId(groupIdx - 1, > > shippingMethods.get(0).getString("shipmentMethodTypeId")); > > + shoppingCart.setCarrierPartyId(groupIdx - 1, > > shippingMethods.get(0).getString("carrierPartyId")); > > + > > + String newShipMethTypeDesc =null; > > + String shipMethTypeDesc=null; > > + try { > > + shipMethTypeDesc = > > delegator.findOne("ShipmentMethodType", > > UtilMisc.toMap("shipmentMethodTypeId", shipmentMethodTypeId), > > false).getString("description"); > > + newShipMethTypeDesc = > > delegator.findOne("ShipmentMethodType", > > UtilMisc.toMap("shipmentMethodTypeId", > > shippingMethods.get(0).getString("shipmentMethodTypeId")), > > false).getString("description"); > > + } catch(GenericEntityException e) { > > + Debug.logError(e, module); > > + } > > + // message to notify user for not applicability of > > shipping method > > + message= "Shipping Method "+carrierPartyId+" > > "+shipMethTypeDesc+" is not applicable to shipping address. > > "+shippingMethods.get(0).getString("carrierPartyId")+" > > "+newShipMethTypeDesc+" has been set for shipping address."; > > + } > > + shoppingCart.setShippingContactMechId(groupIdx-1, > > contactMechId); > > + } > > + } > > + > > + // save cart after updating shipping method and shipping > address. > > + Map<String, Object> changeMap = new HashMap<String, Object>(); > > + try { > > + saveUpdatedCartToOrder(dispatcher, delegator, shoppingCart, > > locale, userLogin, orderId, changeMap, true, false); > > + } catch(GeneralException e) { > > + Debug.logError(e, module); > > + } > > + > > + if (UtilValidate.isNotEmpty(message)) { > > + return ServiceUtil.returnSuccess(message); > > + } else { > > + return ServiceUtil.returnSuccess(); > > + } > > + } > > } > > > > Modified: > > > ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy > > URL: > > > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy?rev=1686635&r1=1686634&r2=1686635&view=diff > > > > > ============================================================================== > > --- > > > ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy > > (original) > > +++ > > > ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/order/OrderView.groovy > > Sat Jun 20 14:58:45 2015 > > @@ -29,6 +29,7 @@ import org.ofbiz.order.order.*; > > import org.ofbiz.party.contact.*; > > import org.ofbiz.product.inventory.InventoryWorker; > > import org.ofbiz.product.catalog.CatalogWorker; > > +import org.ofbiz.product.store.ProductStoreWorker; > > import org.ofbiz.accounting.payment.*; > > > > orderId = parameters.orderId; > > @@ -420,8 +421,19 @@ if (orderHeader) { > > context.shippingContactMechList = shippingContactMechList; > > > > // list to find all the shipmentMethods from the view named > > "ProductStoreShipmentMethView". > > - if (productStore) { > > - context.productStoreShipmentMethList = > > from("ProductStoreShipmentMethView").where("productStoreId", > > > productStore.productStoreId).orderBy("sequenceNumber").cache(true).queryList(); > > + shipGroupShippingMethods = [:]; > > + shipGroups.each { shipGroup -> > > + shipGroupSeqId = shipGroup.shipGroupSeqId; > > + shippableItemFeatures = > > orderReadHelper.getFeatureIdQtyMap(shipGroupSeqId); > > + shippableTotal = > > orderReadHelper.getShippableTotal(shipGroupSeqId); > > + shippableWeight = > > orderReadHelper.getShippableWeight(shipGroupSeqId); > > + shippableItemSizes = > > orderReadHelper.getShippableSizes(shipGroupSeqId); > > + shippingAddress = > > orderReadHelper.getShippingAddress(shipGroupSeqId); > > + > > + List<GenericValue> productStoreShipmentMethList = > > ProductStoreWorker.getAvailableStoreShippingMethods(delegator, > > orderReadHelper.getProductStoreId(), > > + shippingAddress, shippableItemSizes, > > shippableItemFeatures, shippableWeight, shippableTotal); > > + shipGroupShippingMethods.put(shipGroupSeqId, > > productStoreShipmentMethList); > > + context.shipGroupShippingMethods = shipGroupShippingMethods; > > } > > > > // Get a map of returnable items > > > > Modified: > > ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/controller.xml > > URL: > > > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/controller.xml?rev=1686635&r1=1686634&r2=1686635&view=diff > > > > > ============================================================================== > > --- ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/controller.xml > > (original) > > +++ ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/controller.xml > > Sat Jun 20 14:58:45 2015 > > @@ -1701,7 +1701,7 @@ under the License. > > <request-map uri="addShippingAddress"> > > <security https="true" auth="true"/> > > <event type="service" invoke="createUpdateShippingAddress"/> > > - <response name="success" type="request" > > value="updateOrderItemShipGroup"/> > > + <response name="success" type="request" > > value="updateShipGroupShipInfo"/> > > <response name="error" type="view" value="orderview"/> > > </request-map> > > <request-map uri="getAssociatedStateList"> > > @@ -1888,6 +1888,13 @@ under the License. > > <response name="success" type="view" value="splitship"/> > > <response name="error" type="request" value="splitship"/> > > </request-map> > > + > > + <request-map uri="updateShipGroupShipInfo"> > > + <security https="true" auth="true"/> > > + <event type="service" invoke="updateShipGroupShipInfo"/> > > + <response name="success" type="view" value="orderview"/> > > + <response name="error" type="view" value="orderview"/> > > + </request-map> > > > > <!-- > > These are just examples of reports developed using JasperReport > > and not really > > > > Modified: > > > ofbiz/trunk/applications/order/webapp/ordermgr/order/ordershippinginfo.ftl > > URL: > > > http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/order/ordershippinginfo.ftl?rev=1686635&r1=1686634&r2=1686635&view=diff > > > > > ============================================================================== > > --- > > > ofbiz/trunk/applications/order/webapp/ordermgr/order/ordershippinginfo.ftl > > (original) > > +++ > > > ofbiz/trunk/applications/order/webapp/ordermgr/order/ordershippinginfo.ftl > > Sat Jun 20 14:58:45 2015 > > @@ -353,7 +353,7 @@ under the License. > > <br class="clear"/> > > </div> > > <div class="screenlet-body" > > id="ShipGroupScreenletBody_${shipGroup.shipGroupSeqId}"> > > - <form name="updateOrderItemShipGroup" method="post" > > action="<@ofbizUrl>updateOrderItemShipGroup</@ofbizUrl>"> > > + <form name="updateOrderItemShipGroup" method="post" > > action="<@ofbizUrl>updateShipGroupShipInfo</@ofbizUrl>"> > > <input type="hidden" name="orderId" value="${orderId!}"/> > > <input type="hidden" name="shipGroupSeqId" > > value="${shipGroup.shipGroupSeqId!}"/> > > <input type="hidden" name="contactMechPurposeTypeId" > > value="SHIPPING_LOCATION"/> > > @@ -404,7 +404,7 @@ under the License. > > <#if > > shipGroup.shipmentMethodTypeId?has_content> > > <option > > value="${shipGroup.shipmentMethodTypeId}@ > ${shipGroup.carrierPartyId!}@${shipGroup.carrierRoleTypeId!}"><#if > > shipGroup.carrierPartyId?? && shipGroup.carrierPartyId != > > > "_NA_">${shipGroup.carrierPartyId!}</#if> ${shipmentMethodType.get("description",locale)!}</option> > > </#if> > > - <#list productStoreShipmentMethList as > > productStoreShipmentMethod> > > + <#list > > shipGroupShippingMethods[shipGroup.shipGroupSeqId] as > > productStoreShipmentMethod> > > <#assign shipmentMethodTypeAndParty > = > > productStoreShipmentMethod.shipmentMethodTypeId + "@" + > > productStoreShipmentMethod.partyId + "@" + > > productStoreShipmentMethod.roleTypeId> > > <#if > > productStoreShipmentMethod.partyId?has_content || > > productStoreShipmentMethod?has_content> > > <option > > value="${shipmentMethodTypeAndParty!}"><#if > > productStoreShipmentMethod.partyId != > > > "_NA_">${productStoreShipmentMethod.partyId!}</#if> ${productStoreShipmentMethod.get("description",locale)?default("")}</option> > > > > > > > > -- > Thanks & Regards > -- > Deepak Dixit > www.hotwaxsystems.com > |
Free forum by Nabble | Edit this page |