svn commit: r788290 - in /ofbiz/trunk/applications: order/config/OrderErrorUiLabels.xml product/config/ProductErrorUiLabels.xml product/src/org/ofbiz/shipment/verify/VerifyPickSession.java

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

svn commit: r788290 - in /ofbiz/trunk/applications: order/config/OrderErrorUiLabels.xml product/config/ProductErrorUiLabels.xml product/src/org/ofbiz/shipment/verify/VerifyPickSession.java

mor-2
Author: mor
Date: Thu Jun 25 08:21:18 2009
New Revision: 788290

URL: http://svn.apache.org/viewvc?rev=788290&view=rev
Log:
User cannot verify order items (Facility > Verify Pick) if there is insufficient inventory in the system. Patch from Akash Jain.

Modified:
    ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml
    ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml
    ofbiz/trunk/applications/product/src/org/ofbiz/shipment/verify/VerifyPickSession.java

Modified: ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml?rev=788290&r1=788289&r2=788290&view=diff
==============================================================================
--- ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml (original)
+++ ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml Thu Jun 25 08:21:18 2009
@@ -337,6 +337,9 @@
     <property key="OrderErrorAllItemsOfOrderAreAlreadyVerified">
         <value xml:lang="en">ERROR: All items of order #${orderId} are already verified</value>
     </property>
+    <property key="OrderErrorAttemptToVerifyOrderFailed">
+        <value xml:lang="en">ERROR: Attempt to verify order #${orderId} failed</value>
+    </property>
     <property key="OrderErrorCallingCountProductQuantityOrderedService">
         <value xml:lang="en">Error calling countProductQuantityOrdered service : </value>
         <value xml:lang="es">Error al llamar al servicio countProductQuantityOrdered:</value>

Modified: ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml?rev=788290&r1=788289&r2=788290&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml (original)
+++ ofbiz/trunk/applications/product/config/ProductErrorUiLabels.xml Thu Jun 25 08:21:18 2009
@@ -91,6 +91,9 @@
     <property key="ProductErrorPackageWeightCannotBeNullOrZero">
         <value xml:lang="en">ERROR: Package weight cannot be null/zero, it should be greater than zero</value>
     </property>
+    <property key="ProductErrorVerifiedQtyDoesNotMatchTheReservedQtyForItem">
+        <value xml:lang="en">ERROR: Verified quantity does not match the reserved quantity for item #${productId} [verified qty = ${verifiedQty} / reserved qty = ${reservedQty}]</value>
+    </property>
     <property key="ProductFeatureTypeIdMustContainsLettersAndDigits">
         <value xml:lang="de">Die Produktmerkmal Typ ID darf nur Buchstaben, Zahlen und _ enthalten. Bitte erneut eingeben.</value>
         <value xml:lang="en">The Product Feature TypeId must contains only letters, underscore and digits. Please re-enter</value>

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/verify/VerifyPickSession.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/verify/VerifyPickSession.java?rev=788290&r1=788289&r2=788290&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/shipment/verify/VerifyPickSession.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/shipment/verify/VerifyPickSession.java Thu Jun 25 08:21:18 2009
@@ -27,11 +27,13 @@
 import javolution.util.FastList;
 import javolution.util.FastMap;
 
+import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.GeneralException;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.entity.GenericDelegator;
+import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.entity.util.EntityUtil;
 import org.ofbiz.service.GenericDispatcher;
@@ -40,6 +42,8 @@
 
 public class VerifyPickSession implements Serializable {
 
+    public static final String module = VerifyPickSession.class.getName();
+
     protected GenericValue userLogin = null;
     protected String dispatcherName = null;
     protected String delegatorName = null;
@@ -296,6 +300,8 @@
         String invoiceId = null;
         String invoiceItemSeqId = null;
         this.checkVerifiedQty(orderId, locale);
+        // check reserved quantity, it should be equal to verified quantity
+        this.checkReservedQty(orderId, locale);
         String shipmentId = this.createShipment((this.getPickRows(orderId)).get(0));
         this.issueItemsToShipment(shipmentId, locale);
         invoiceId = this.createInvoice(orderId);
@@ -306,6 +312,32 @@
         return shipmentId;
     }
 
+    protected void checkReservedQty(String orderId, Locale locale) throws GeneralException {
+        List<String> errorList = FastList.newInstance();
+        for (VerifyPickSessionRow pickRow : this.getPickRows(orderId)) {
+            BigDecimal reservedQty =  this.getReservedQty(pickRow.getOrderId(), pickRow.getOrderItemSeqId(), pickRow.getShipGroupSeqId());
+            BigDecimal verifiedQty = pickRow.getReadyToVerifyQty();
+            if (verifiedQty.compareTo(reservedQty) != 0) {
+                errorList.add(UtilProperties.getMessage("ProductErrorUiLabels", "ProductErrorVerifiedQtyDoesNotMatchTheReservedQtyForItem", UtilMisc.toMap("productId", pickRow.getProductId(), "verifiedQty", pickRow.getReadyToVerifyQty(), "reservedQty", reservedQty), locale));
+            }
+        }
+
+        if (errorList.size() > 0) {
+            throw new GeneralException(UtilProperties.getMessage("OrderErrorUiLabels", "OrderErrorAttemptToVerifyOrderFailed", UtilMisc.toMap("orderId", orderId), locale), errorList);
+        }
+    }
+
+    public BigDecimal getReservedQty(String orderId, String orderItemSeqId, String shipGroupSeqId) {
+        BigDecimal reservedQty = ZERO;
+        try {
+            GenericValue reservation = EntityUtil.getFirst(this.getDelegator().findByAnd("OrderItemAndShipGrpInvResAndItemSum", UtilMisc.toMap("orderId", orderId, "orderItemSeqId", orderItemSeqId, "shipGroupSeqId", shipGroupSeqId)));
+            reservedQty = reservation.getBigDecimal("totQuantityAvailable");
+        } catch (GenericEntityException e) {
+            Debug.logError(e, module);
+        }
+        return reservedQty;
+    }
+
     protected void checkVerifiedQty(String orderId, Locale locale) throws GeneralException {
 
         BigDecimal verifiedQty = ZERO;