You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2010/02/05 16:49:36 UTC

svn commit: r906979 - /ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/mrp/MrpServices.java

Author: jacopoc
Date: Fri Feb  5 15:49:35 2010
New Revision: 906979

URL: http://svn.apache.org/viewvc?rev=906979&view=rev
Log:
Simplified and improved error logging/handling in the MRP initialization of production run related events. Partially issued materials are now properly considered in running tasks during MRP initialization.

Modified:
    ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/mrp/MrpServices.java

Modified: ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/mrp/MrpServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/mrp/MrpServices.java?rev=906979&r1=906978&r2=906979&view=diff
==============================================================================
--- ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/mrp/MrpServices.java (original)
+++ ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/mrp/MrpServices.java Fri Feb  5 15:49:35 2010
@@ -322,33 +322,33 @@
         parameters = UtilMisc.toMap("workEffortGoodStdTypeId", "PRUNT_PROD_NEEDED", "statusId", "WEGS_CREATED", "facilityId", facilityId);
         try {
             resultList = delegator.findByAnd("WorkEffortAndGoods", parameters);
-        } catch (GenericEntityException e) {
-            Debug.logError(e, "Error : findByAnd(\"OrderItem\", parameters\")", module);
-            Debug.logError(e, "Error : parameters = "+parameters,module);
-            return ServiceUtil.returnError("Problem, we can not find the order items, for more detail look at the log");
-        }
-        iteratorResult = resultList.iterator();
-        while (iteratorResult.hasNext()) {
-            genericResult = (GenericValue) iteratorResult.next();
-            if ("PRUN_CLOSED".equals(genericResult.getString("currentStatusId")) ||
-                "PRUN_COMPLETED".equals(genericResult.getString("currentStatusId")) ||
-                "PRUN_CANCELLED".equals(genericResult.getString("currentStatusId"))) {
-                continue;
-            }
-            String productId =  genericResult.getString("productId");
-            BigDecimal eventQuantityTmp = genericResult.getBigDecimal("estimatedQuantity").negate();
-            Timestamp estimatedShipDate = genericResult.getTimestamp("estimatedStartDate");
-            if (estimatedShipDate == null) {
-                estimatedShipDate = now;
-            }
+            iteratorResult = resultList.iterator();
+            while (iteratorResult.hasNext()) {
+                genericResult = (GenericValue) iteratorResult.next();
+                if ("PRUN_CLOSED".equals(genericResult.getString("currentStatusId")) ||
+                    "PRUN_COMPLETED".equals(genericResult.getString("currentStatusId")) ||
+                    "PRUN_CANCELLED".equals(genericResult.getString("currentStatusId"))) {
+                    continue;
+                }
+                String productId =  genericResult.getString("productId");
+                // get the inventory already consumed
+                BigDecimal consumedInventoryTotal = BigDecimal.ZERO;
+                List<GenericValue> consumedInventoryItems = delegator.findByAnd("WorkEffortAndInventoryAssign", UtilMisc.toMap("workEffortId", genericResult.getString("workEffortId"), "productId", productId));
+                for (GenericValue consumedInventoryItem : consumedInventoryItems) {
+                    consumedInventoryTotal = consumedInventoryTotal.add(consumedInventoryItem.getBigDecimal("quantity"));
+                }
+                BigDecimal eventQuantityTmp = consumedInventoryTotal.subtract(genericResult.getBigDecimal("estimatedQuantity"));
+                Timestamp estimatedShipDate = genericResult.getTimestamp("estimatedStartDate");
+                if (estimatedShipDate == null) {
+                    estimatedShipDate = now;
+                }
 
-            parameters = UtilMisc.toMap("mrpId", mrpId, "productId", productId, "eventDate", estimatedShipDate, "mrpEventTypeId", "MANUF_ORDER_REQ");
-            try {
+                parameters = UtilMisc.toMap("mrpId", mrpId, "productId", productId, "eventDate", estimatedShipDate, "mrpEventTypeId", "MANUF_ORDER_REQ");
                 String eventName = (UtilValidate.isEmpty(genericResult.getString("workEffortParentId"))? genericResult.getString("workEffortId"): genericResult.getString("workEffortParentId") + "-" + genericResult.getString("workEffortId"));
                 InventoryEventPlannedServices.createOrUpdateMrpEvent(parameters, eventQuantityTmp, null, eventName, false, delegator);
-            } catch (GenericEntityException e) {
-                return ServiceUtil.returnError("Problem initializing the MrpEvent entity (MRP_REQUIREMENT)");
             }
+        } catch (GenericEntityException e) {
+            return ServiceUtil.returnError("MRP was unable to initialize events for production run components: " + e.getMessage());
         }
 
         // ----------------------------------------
@@ -359,44 +359,38 @@
         parameters = UtilMisc.toMap("workEffortGoodStdTypeId", "PRUN_PROD_DELIV", "statusId", "WEGS_CREATED", "workEffortTypeId", "PROD_ORDER_HEADER", "facilityId", facilityId);
         try {
             resultList = delegator.findByAnd("WorkEffortAndGoods", parameters);
-        } catch (GenericEntityException e) {
-            Debug.logError(e, "Error : findByAnd(\"OrderItem\", parameters\")", module);
-            Debug.logError(e, "Error : parameters = "+parameters,module);
-            return ServiceUtil.returnError("Problem, we can not find the order items, for more detail look at the log");
-        }
-        iteratorResult = resultList.iterator();
-        while (iteratorResult.hasNext()) {
-            genericResult = (GenericValue) iteratorResult.next();
-            if ("PRUN_CLOSED".equals(genericResult.getString("currentStatusId")) ||
-                "PRUN_COMPLETED".equals(genericResult.getString("currentStatusId")) ||
-                "PRUN_CANCELLED".equals(genericResult.getString("currentStatusId"))) {
-                continue;
-            }
-            BigDecimal qtyToProduce = genericResult.getBigDecimal("quantityToProduce");
-            if (qtyToProduce == null) {
-                qtyToProduce = BigDecimal.ZERO;
-            }
-            BigDecimal qtyProduced = genericResult.getBigDecimal("quantityProduced");
-            if (qtyProduced == null) {
-                qtyProduced = BigDecimal.ZERO;
-            }
-            if (qtyProduced.compareTo(qtyToProduce) >= 0) {
-                continue;
-            }
-            BigDecimal qtyDiff = qtyToProduce.subtract(qtyProduced);
-            String productId =  genericResult.getString("productId");
-            BigDecimal eventQuantityTmp = qtyDiff;
-            Timestamp estimatedShipDate = genericResult.getTimestamp("estimatedCompletionDate");
-            if (estimatedShipDate == null) {
-                estimatedShipDate = now;
-            }
+            iteratorResult = resultList.iterator();
+            while (iteratorResult.hasNext()) {
+                genericResult = (GenericValue) iteratorResult.next();
+                if ("PRUN_CLOSED".equals(genericResult.getString("currentStatusId")) ||
+                    "PRUN_COMPLETED".equals(genericResult.getString("currentStatusId")) ||
+                    "PRUN_CANCELLED".equals(genericResult.getString("currentStatusId"))) {
+                    continue;
+                }
+                BigDecimal qtyToProduce = genericResult.getBigDecimal("quantityToProduce");
+                if (qtyToProduce == null) {
+                    qtyToProduce = BigDecimal.ZERO;
+                }
+                BigDecimal qtyProduced = genericResult.getBigDecimal("quantityProduced");
+                if (qtyProduced == null) {
+                    qtyProduced = BigDecimal.ZERO;
+                }
+                if (qtyProduced.compareTo(qtyToProduce) >= 0) {
+                    continue;
+                }
+                BigDecimal qtyDiff = qtyToProduce.subtract(qtyProduced);
+                String productId =  genericResult.getString("productId");
+                BigDecimal eventQuantityTmp = qtyDiff;
+                Timestamp estimatedShipDate = genericResult.getTimestamp("estimatedCompletionDate");
+                if (estimatedShipDate == null) {
+                    estimatedShipDate = now;
+                }
 
-            parameters = UtilMisc.toMap("mrpId", mrpId, "productId", productId, "eventDate", estimatedShipDate, "mrpEventTypeId", "MANUF_ORDER_RECP");
-            try {
+                parameters = UtilMisc.toMap("mrpId", mrpId, "productId", productId, "eventDate", estimatedShipDate, "mrpEventTypeId", "MANUF_ORDER_RECP");
                 InventoryEventPlannedServices.createOrUpdateMrpEvent(parameters, eventQuantityTmp, null, genericResult.getString("workEffortId"), false, delegator);
-            } catch (GenericEntityException e) {
-                return ServiceUtil.returnError("Problem initializing the MrpEvent entity (MANUF_ORDER_RECP)");
             }
+        } catch (GenericEntityException e) {
+            return ServiceUtil.returnError("MRP was unable to initialize events for products produced by production runs: " + e.getMessage());
         }
 
         // ----------------------------------------