ofbiz-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Divesh Dutta <divesh.du...@hotwaxsystems.com>
Subject Re: svn commit: r1686635 - in /ofbiz/trunk/applications/order: servicedef/ src/org/ofbiz/order/order/ webapp/ordermgr/WEB-INF/ webapp/ordermgr/WEB-INF/actions/order/ webapp/ordermgr/order/
Date Mon, 22 Jun 2015 09:01:11 GMT
Thanks Deepak. Will change the code accordingly.


Thanks
--
Divesh Dutta.

On Sun, Jun 21, 2015 at 10:40 AM, Deepak Dixit <
deepak.dixit@hotwaxsystems.com> wrote:

> Please do not use javolution classes.
>
> Thanks & Regards
> --
> Deepak Dixit
>
> On Saturday, June 20, 2015, <diveshdutta@apache.org> 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>&nbsp;${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>&nbsp;${productStoreShipmentMethod.get("description",locale)?default("")}</option>
> >
> >
> >
>
> --
> Thanks & Regards
> --
> Deepak Dixit
> www.hotwaxsystems.com
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message