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());
}
// ----------------------------------------