svn commit: r539199 - in /ofbiz/trunk/applications/product: src/org/ofbiz/shipment/packing/PackingSession.java webapp/facility/WEB-INF/actions/shipment/PackOrder.bsh webapp/facility/shipment/PackOrder.ftl

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

svn commit: r539199 - in /ofbiz/trunk/applications/product: src/org/ofbiz/shipment/packing/PackingSession.java webapp/facility/WEB-INF/actions/shipment/PackOrder.bsh webapp/facility/shipment/PackOrder.ftl

jaz-3
Author: jaz
Date: Thu May 17 17:54:22 2007
New Revision: 539199

URL: http://svn.apache.org/viewvc?view=rev&rev=539199
Log:
added new code to help with grouping product for display on packing (and custom packing screens); this now groups all items by product so a running total can be packed.

Modified:
    ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java
    ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/PackOrder.bsh
    ofbiz/trunk/applications/product/webapp/facility/shipment/PackOrder.ftl

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java?view=diff&rev=539199&r1=539198&r2=539199
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/shipment/packing/PackingSession.java Thu May 17 17:54:22 2007
@@ -19,6 +19,7 @@
 package org.ofbiz.shipment.packing;
 
 import java.util.*;
+import java.math.BigDecimal;
 
 import javolution.util.FastMap;
 import javolution.util.FastList;
@@ -58,6 +59,7 @@
     protected Map packageWeights = null;
     protected List packEvents = null;
     protected List packLines = null;
+    protected List itemInfos = null;
     protected int packageSeq = -1;
     protected int status = 1;
 
@@ -76,10 +78,11 @@
         this.picklistBinId = binId;
         this.userLogin = userLogin;
         this.facilityId = facilityId;
-        this.packLines = new ArrayList();
-        this.packEvents = new ArrayList();
+        this.packLines = FastList.newInstance();
+        this.packEvents = FastList.newInstance();
+        this.itemInfos = FastList.newInstance();
         this.packageSeq = 1;
-        this.packageWeights = new HashMap();
+        this.packageWeights = FastMap.newInstance();
     }
 
     public PackingSession(LocalDispatcher dispatcher, GenericValue userLogin, String facilityId) {
@@ -300,6 +303,29 @@
         }
     }
 
+    public void addItemInfo(List infos) {
+        Iterator i = infos.iterator();
+        while (i.hasNext()) {
+            GenericValue v = (GenericValue) i.next();
+            ItemDisplay newItem = new ItemDisplay(v);
+            int currentIdx = itemInfos.indexOf(newItem);
+            if (currentIdx != -1) {
+                ItemDisplay existingItem = (ItemDisplay) itemInfos.get(currentIdx);
+                existingItem.quantity = existingItem.quantity.add(newItem.quantity);
+            } else {
+                itemInfos.add(newItem);
+            }
+        }
+    }
+
+    public List getItemInfos() {
+        return itemInfos;
+    }
+
+    public void clearItemInfos() {
+        itemInfos.clear();
+    }
+
     public String getShipmentId() {
         return this.shipmentId;
     }
@@ -917,5 +943,61 @@
         Double newPackageWeight = UtilValidate.isEmpty(packageWeight) ? weight : new Double(weight.doubleValue() + packageWeight.doubleValue());
         setPackageWeight(packageSeqId, newPackageWeight);
     }
-    
+
+    class ItemDisplay extends AbstractMap {
+
+        public GenericValue orderItem;
+        public BigDecimal quantity;
+        public String productId;
+
+        public ItemDisplay(GenericValue v) {
+            if ("PicklistItem".equals(v.getEntityName())) {
+                quantity = v.getBigDecimal("quantity").setScale(2, BigDecimal.ROUND_HALF_UP);
+                try {
+                    orderItem = v.getRelatedOne("OrderItem");
+                    productId = orderItem.getString("productId");
+                } catch (GenericEntityException e) {
+                    Debug.logError(e, module);
+                }
+            } else {
+                orderItem = v;
+                productId = v.getString("productId");
+                double reserved = getCurrentReservedQuantity(orderItem.getString("orderId"), orderItem.getString("orderItemSeqId"), primaryShipGrp);
+                quantity = new BigDecimal(reserved).setScale(2, BigDecimal.ROUND_HALF_UP);
+            }
+            Debug.log("created item display object quanttiy: " + quantity + " (" + productId + ")", module);
+        }
+
+        public GenericValue getOrderItem() {
+            return orderItem;
+        }
+
+        public BigDecimal getQuantity() {
+            return quantity;
+        }
+
+        public Set entrySet() {
+            return null;
+        }
+
+        public Object get(Object name) {
+            if ("orderItem".equals(name.toString())) {
+                return orderItem;
+            } else if ("quantity".equals(name.toString())) {
+                return quantity;
+            } else if ("productId".equals(name.toString())) {
+                return productId;
+            }
+            return null;
+        }
+
+        public boolean equals(Object o) {
+            if (o instanceof ItemDisplay) {
+                ItemDisplay d = (ItemDisplay) o;
+                return (d.productId.equals(productId));
+            } else {
+                return false;
+            }            
+        }
+    }
 }

Modified: ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/PackOrder.bsh
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/PackOrder.bsh?view=diff&rev=539199&r1=539198&r2=539199
==============================================================================
--- ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/PackOrder.bsh (original)
+++ ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/shipment/PackOrder.bsh Thu May 17 17:54:22 2007
@@ -84,6 +84,7 @@
         packSession.clear();
     }
 }
+packSession.clearItemInfos();
 
 // picklist based packing information
 picklistBinId = parameters.get("picklistBinId");
@@ -96,7 +97,8 @@
     if (bin != null) {
         orderId = bin.getString("primaryOrderId");
         shipGroupSeqId = bin.getString("primaryShipGroupSeqId");
-        context.put("picklistItemInfos", bin.getRelatedByAnd("PicklistItem", UtilMisc.toMap("itemStatusId", "PICKITEM_PENDING")));
+        packSession.addItemInfo(bin.getRelatedByAnd("PicklistItem", UtilMisc.toMap("itemStatusId", "PICKITEM_PENDING")));
+        //context.put("picklistItemInfos", bin.getRelatedByAnd("PicklistItem", UtilMisc.toMap("itemStatusId", "PICKITEM_PENDING")));
     }
 } else {
     picklistBinId = null;
@@ -137,7 +139,10 @@
                 context.put("shipmentCostEstimateForShipGroup", shipmentCostEstimate);
                 context.put("productStoreId", productStoreId);
 
-                context.put("itemInfos", shippableItemInfo);
+                if (picklistBinId == null) {
+                    packSession.addItemInfo(shippableItemInfo);
+                    //context.put("itemInfos", shippableItemInfo);
+                }
             } else {
                 request.setAttribute("errorMessageList", UtilMisc.toList("No ship group sequence ID. Cannot process."));
             }

Modified: ofbiz/trunk/applications/product/webapp/facility/shipment/PackOrder.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/shipment/PackOrder.ftl?view=diff&rev=539199&r1=539198&r2=539199
==============================================================================
--- ofbiz/trunk/applications/product/webapp/facility/shipment/PackOrder.ftl (original)
+++ ofbiz/trunk/applications/product/webapp/facility/shipment/PackOrder.ftl Thu May 17 17:54:22 2007
@@ -109,7 +109,7 @@
       <input type="hidden" name="facilityId" value="${facilityId?if_exists}"/>
     </form>
 
-    <#if showInput != "N" && ((orderHeader?exists && orderHeader?has_content) || picklistItemInfos?has_content)>
+    <#if showInput != "N" && ((orderHeader?exists && orderHeader?has_content))>
       <hr class="sepbar"/>
       <div class='head2'>${uiLabelMap.ProductOrderId} #<a href="/ordermgr/control/orderview?orderId=${orderId}" class="buttontext">${orderId}</a> / ${uiLabelMap.ProductOrderShipGroupId} #${shipGroupSeqId}</div>
       <div>&nbsp;</div>
@@ -207,6 +207,7 @@
       </#if>
 
       <!-- auto grid form -->
+      <#assign itemInfos = packingSession.getItemInfos()?if_exists>
       <#if showInput != "N" && hideGrid != "Y" && itemInfos?has_content>
         <hr class="sepbar"/>
         <div>&nbsp;</div>
@@ -236,52 +237,21 @@
                 <hr class="sepbar"/>
               </td>
             </tr>
-
-            <#if (picklistItemInfos?has_content)>
-              <#list picklistItemInfos as pickItem>
-                <#assign orderItem = pickItem.getRelatedOne("OrderItem")/>
-                <#assign shippedQuantity = orderReadHelper.getItemShippedQuantityBd(orderItem)?if_exists>
-                <#if orderItem.cancelQuantity?exists>
-                  <#assign orderItemQuantity = orderItem.quantity - orderItem.cancelQuantity>
-                <#else>
-                  <#assign orderItemQuantity = orderItem.quantity>
-                </#if>
-                <#assign inputQty = (orderItemQuantity - shippedQuantity - packingSession.getPackedQuantity(orderId, orderItem.orderItemSeqId, shipGroupSeqId))>
-                <tr>
-                  <td><input type="checkbox" name="sel_${orderItem.orderItemSeqId}" value="Y" <#if (inputQty >0)>checked=""</#if>/></td>
-                  <td><div class="tabletext">${orderItem.orderItemSeqId}</td>
-                  <td><div class="tabletext">${orderItem.productId?default("N/A")}</td>
-                  <td><div class="tabletext">${orderItem.itemDescription?if_exists}</td>
-                  <td align="right"><div class="tabletext">${orderItemQuantity}</td>
-                  <td align="right"><div class="tabletext">${shippedQuantity?default(0)}</td>
-                  <td align="right"><div class="tabletext">${packingSession.getPackedQuantity(orderId, orderItem.orderItemSeqId, shipGroupSeqId)}</td>
-                  <td>&nbsp;&nbsp;</td>
-                  <td align="center">
-                    <input type="text" class="inputBox" size="7" name="qty_${orderItem.orderItemSeqId}" value="${inputQty}">
-                  </td>
-                  <#--td align="center">
-                    <input type="text" class="inputBox" size="7" name="wgt_${orderItem.orderItemSeqId}" value="">
-                  </td-->
-                  <td align="center">
-                    <select name="pkg_${orderItem.orderItemSeqId}">
-                      <option value="1">${uiLabelMap.ProductPackage} 1</option>
-                      <option value="2">${uiLabelMap.ProductPackage} 2</option>
-                      <option value="3">${uiLabelMap.ProductPackage} 3</option>
-                      <option value="4">${uiLabelMap.ProductPackage} 4</option>
-                      <option value="5">${uiLabelMap.ProductPackage} 5</option>
-                    </select>
-                  </td>
-                  <input type="hidden" name="prd_${orderItem.orderItemSeqId}" value="${orderItem.productId?if_exists}">
-                </tr>              
-              </#list>
-            <#else>
-              <#list itemInfos as orderItem>
+                        
+            <#if (itemInfos?has_content)>              
+              <#list itemInfos as itemInfo>                                            
+              <#-- <#list itemInfos as orderItem>  -->
+                <#assign orderItem = itemInfo.orderItem/>
                 <#assign shippedQuantity = orderReadHelper.getItemShippedQuantityBd(orderItem)?if_exists>
+                <#assign orderItemQuantity = itemInfo.quantity/>
+                <#--
                 <#if orderItem.cancelQuantity?exists>
                   <#assign orderItemQuantity = orderItem.quantity - orderItem.cancelQuantity>
                 <#else>
                   <#assign orderItemQuantity = orderItem.quantity>
                 </#if>
+                -->
+
                 <#assign inputQty = (orderItemQuantity - shippedQuantity - packingSession.getPackedQuantity(orderId, orderItem.orderItemSeqId, shipGroupSeqId))>
                 <tr>
                   <td><input type="checkbox" name="sel_${orderItem.orderItemSeqId}" value="Y" <#if (inputQty >0)>checked=""</#if>/></td>