Author: sichen
Date: Fri Aug 31 10:11:45 2007
New Revision: 571525

URL: http://svn.apache.org/viewvc?rev=571525&view=rev
Log:
Fix bug where dependent production runs were being created for parts which had 
ProductFacility thresholds but of 0.  Now if it is a WIP or has any 
ProductFacility records, it is warehouse managed.  Thanks to Jacopo for showing 
me where this was

Modified:
    
ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/bom/BOMNode.java

Modified: 
ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/bom/BOMNode.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/bom/BOMNode.java?rev=571525&r1=571524&r2=571525&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/bom/BOMNode.java
 (original)
+++ 
ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/bom/BOMNode.java
 Fri Aug 31 10:11:45 2007
@@ -126,7 +126,8 @@
                         oneChildNode.loadChildren(partBomTypeId, inDate, 
productFeatures, BOMTree.EXPLOSION);
                     break;
                     case BOMTree.EXPLOSION_MANUFACTURING:
-                        if (!oneChildNode.isWarehouseManaged()) {
+                        // for manfacturing trees, do not look through and 
create production runs for children unless there is no warehouse stocking of 
this node item 
+                       if (!oneChildNode.isWarehouseManaged()) {
                             oneChildNode.loadChildren(partBomTypeId, inDate, 
productFeatures, type);
                         }
                     break;
@@ -601,6 +602,10 @@
         return minStartDate;
     }
 
+    /**
+     * Returns false if the product of this BOM Node is of type "WIP" or if it 
has no ProductFacility records defined for it,
+     * meaning that no active stock targets are set for this product.
+     */
     public boolean isWarehouseManaged() {
         boolean isWarehouseManaged = false;
         try {
@@ -608,32 +613,18 @@
                 return false;
             }
             List pfs = getProduct().getRelatedCache("ProductFacility");
-            Iterator pfsIt = pfs.iterator();
-            GenericValue pf = null;
-            boolean found = false;
-            while(pfsIt.hasNext()) {
-                found = true;
-                pf = (GenericValue)pfsIt.next();
-                if (pf.getDouble("minimumStock") != null && 
pf.getDouble("minimumStock").doubleValue() > 0) {
-                    isWarehouseManaged = true;
-                }
-            }
-            // If no records are found, we try to search for substituted 
node's records
-            if (!found && getSubstitutedNode() != null) {
+            if (UtilValidate.isNotEmpty(pfs)) {
+                isWarehouseManaged = true;
+            } else {
                 pfs = 
getSubstitutedNode().getProduct().getRelatedCache("ProductFacility");
-                pfsIt = pfs.iterator();
-                pf = null;
-                while(pfsIt.hasNext()) {
-                    pf = (GenericValue)pfsIt.next();
-                    if (pf.getDouble("minimumStock") != null && 
pf.getDouble("minimumStock").doubleValue() > 0) {
-                        isWarehouseManaged = true;
-                    }
+                if (UtilValidate.isNotEmpty(pfs)) {
+                    isWarehouseManaged = true;
                 }
             }
         } catch(GenericEntityException gee) {
             Debug.logError("Problem in BOMNode.isWarehouseManaged()", module);
         }
-        return isWarehouseManaged;
+       return isWarehouseManaged;
     }
 
     public boolean isManufactured(boolean ignoreSupplierProducts) {


Reply via email to