svn commit: r442234 - in /incubator/ofbiz/trunk/applications/order: src/org/ofbiz/order/order/OrderServices.java webapp/ordermgr/order/orderheader.ftl

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

svn commit: r442234 - in /incubator/ofbiz/trunk/applications/order: src/org/ofbiz/order/order/OrderServices.java webapp/ordermgr/order/orderheader.ftl

jacopoc
Author: jacopoc
Date: Mon Sep 11 07:42:22 2006
New Revision: 442234

URL: http://svn.apache.org/viewvc?view=rev&rev=442234
Log:
Items in drop ship groups are not reserved; the shipment action links are also hidden in the order detail screen.

Modified:
    incubator/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java
    incubator/ofbiz/trunk/applications/order/webapp/ordermgr/order/orderheader.ftl

Modified: incubator/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java?view=diff&rev=442234&r1=442233&r2=442234
==============================================================================
--- incubator/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java (original)
+++ incubator/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java Mon Sep 11 07:42:22 2006
@@ -734,6 +734,7 @@
         }
 
         // set the order item ship groups
+        List dropShipGroupIds = FastList.newInstance(); // this list will contain the ids of all the ship groups for drop shipments (no reservations)
         if (orderItemShipGroupInfo != null && orderItemShipGroupInfo.size() > 0) {
             Iterator osiInfos = orderItemShipGroupInfo.iterator();
             while (osiInfos.hasNext()) {
@@ -744,6 +745,9 @@
                     if (valueObj.get("carrierRoleTypeId") == null) {
                         valueObj.set("carrierRoleTypeId", "CARRIER");
                     }
+                    if (!UtilValidate.isEmpty(valueObj.getString("supplierPartyId"))) {
+                        dropShipGroupIds.add(valueObj.getString("shipGroupSeqId"));
+                    }
                 } else if ("OrderAdjustment".equals(valueObj.getEntityName())) {
                     // shipping / tax adjustment(s)
                     if (valueObj.get("orderItemSeqId") == null || valueObj.getString("orderItemSeqId").length() == 0) {
@@ -966,7 +970,7 @@
             // START inventory reservation
             List resErrorMessages = new LinkedList();
             try {
-                reserveInventory(delegator, dispatcher, userLogin, locale, orderItemShipGroupInfo, itemValuesBySeqId,
+                reserveInventory(delegator, dispatcher, userLogin, locale, orderItemShipGroupInfo, dropShipGroupIds, itemValuesBySeqId,
                         orderTypeId, productStoreId, resErrorMessages);
             } catch (GeneralException e) {
                 return ServiceUtil.returnError(e.getMessage());
@@ -986,7 +990,7 @@
         return successResult;
     }
 
-    public static void reserveInventory(GenericDelegator delegator, LocalDispatcher dispatcher, GenericValue userLogin, Locale locale, List orderItemShipGroupInfo, Map itemValuesBySeqId, String orderTypeId, String productStoreId, List resErrorMessages) throws GeneralException {
+    public static void reserveInventory(GenericDelegator delegator, LocalDispatcher dispatcher, GenericValue userLogin, Locale locale, List orderItemShipGroupInfo, List dropShipGroupIds, Map itemValuesBySeqId, String orderTypeId, String productStoreId, List resErrorMessages) throws GeneralException {
         boolean isImmediatelyFulfilled = false;
         GenericValue productStore = null;
         if (UtilValidate.isNotEmpty(productStoreId)) {
@@ -1014,15 +1018,19 @@
                 while (osiInfos.hasNext()) {
                     GenericValue orderItemShipGroupAssoc = (GenericValue) osiInfos.next();
                     if ("OrderItemShipGroupAssoc".equals(orderItemShipGroupAssoc.getEntityName())) {
+                        if (dropShipGroupIds != null && dropShipGroupIds.contains(orderItemShipGroupAssoc.getString("shipGroupSeqId"))) {
+                            // the items in the drop ship groups are not reserved
+                            continue;
+                        }
                         GenericValue orderItem = (GenericValue) itemValuesBySeqId.get(orderItemShipGroupAssoc.get("orderItemSeqId"));
                         String itemStatus = orderItem.getString("statusId");
                         if ("ITEM_REJECTED".equals(itemStatus) || "ITEM_CANCELLED".equals(itemStatus) || "ITEM_COMPLETED".equals(itemStatus)) {
                             Debug.logInfo("Order item [" + orderItem.getString("orderId") + " / " + orderItem.getString("orderItemSeqId") + "] is not in a proper status for reservation", module);
                             continue;
                         }
-                        if (UtilValidate.isNotEmpty(orderItem.getString("productId")) && !"RENTAL_ORDER_ITEM".equals(orderItem.getString("orderItemTypeId")))
-                        { // ignore for rental
-                            // only reserve product items; ignore non-product items
+                        if (UtilValidate.isNotEmpty(orderItem.getString("productId")) && // only reserve product items, ignore non-product items
+                                !"RENTAL_ORDER_ITEM".equals(orderItem.getString("orderItemTypeId")) // ignore for rental
+                                ) {
                             try {
                                 Map reserveInput = new HashMap();
                                 reserveInput.put("productStoreId", productStoreId);
@@ -3123,6 +3131,7 @@
         toStore.addAll(cart.makeAllOrderPaymentInfos());
 
         // set the orderId & other information on all new value objects
+        List dropShipGroupIds = FastList.newInstance(); // this list will contain the ids of all the ship groups for drop shipments (no reservations)
         Iterator tsi = toStore.iterator();
         while (tsi.hasNext()) {
             GenericValue valueObj = (GenericValue) tsi.next();
@@ -3132,6 +3141,9 @@
                 if (valueObj.get("carrierRoleTypeId") == null) {
                     valueObj.set("carrierRoleTypeId", "CARRIER");
                 }
+                if (valueObj.get("supplierPartyId") != null) {
+                    dropShipGroupIds.add(valueObj.getString("shipGroupSeqId"));
+                }
             } else if ("OrderAdjustment".equals(valueObj.getEntityName())) {
                 // shipping / tax adjustment(s)
                 if (valueObj.get("orderItemSeqId") == null || valueObj.getString("orderItemSeqId").length() == 0) {
@@ -3264,7 +3276,7 @@
         List resErrorMessages = new LinkedList();
         try {
             Debug.log("Calling reserve inventory...", module);
-            reserveInventory(delegator, dispatcher, userLogin, locale, orderItemShipGroupAssoc, itemValuesBySeqId,
+            reserveInventory(delegator, dispatcher, userLogin, locale, orderItemShipGroupAssoc, dropShipGroupIds, itemValuesBySeqId,
                     orderTypeId, productStoreId, resErrorMessages);
         } catch (GeneralException e) {
             Debug.logError(e, module);

Modified: incubator/ofbiz/trunk/applications/order/webapp/ordermgr/order/orderheader.ftl
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/order/webapp/ordermgr/order/orderheader.ftl?view=diff&rev=442234&r1=442233&r2=442234
==============================================================================
--- incubator/ofbiz/trunk/applications/order/webapp/ordermgr/order/orderheader.ftl (original)
+++ incubator/ofbiz/trunk/applications/order/webapp/ordermgr/order/orderheader.ftl Mon Sep 11 07:42:22 2006
@@ -883,7 +883,9 @@
                    <td align="left" valign="top" width="80%">
                      <div class="tabletext">
                        <#if orderHeader.orderTypeId == "SALES_ORDER">
-                         <a href="<@ofbizUrl>quickShipOrder?${paramString}</@ofbizUrl>" class="buttontext">${uiLabelMap.OrderQuickShipEntireOrder}</a>
+                         <#if !shipGroup.supplierPartyId?has_content>
+                           <a href="<@ofbizUrl>quickShipOrder?${paramString}</@ofbizUrl>" class="buttontext">${uiLabelMap.OrderQuickShipEntireOrder}</a>
+                         </#if>
                        <#else> <#-- PURCHASE_ORDER -->
                          <#if facilities?has_content>
                          <form action="/facility/control/quickShipPurchaseOrder" method="POST">
@@ -917,8 +919,10 @@
                    <td align="left" valign="top" width="80%">
 
                      <#if orderHeader.orderTypeId == "SALES_ORDER">
+                       <#if !shipGroup.supplierPartyId?has_content>
                        <div class="tabletext"><a href="/facility/control/PackOrder?facilityId=${storeFacilityId?if_exists}&orderId=${orderId}&shipGroupSeqId=${shipGroup.shipGroupSeqId}&externalLoginKey=${externalLoginKey}" class="buttontext">${uiLabelMap.OrderPackShipmentForShipGroup} [${shipGroup.shipGroupSeqId}]</a></div>
                        <div class="tabletext"><a href="/facility/control/createShipment?primaryOrderId=${orderId}&primaryShipGroupSeqId=${shipGroup.shipGroupSeqId}&statusId=SHIPMENT_INPUT&originFacilityId=${storeFacilityId}&externalLoginKey=${externalLoginKey}" class="buttontext">${uiLabelMap.OrderNewShipmentForShipGroup} [${shipGroup.shipGroupSeqId}]</a></div>
+                       </#if>
                      <#else>
                        <div class="tabletext">
                        <#if facilities?has_content>