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 2008/06/06 20:24:21 UTC

svn commit: r664069 - in /ofbiz/trunk/applications: manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ product/data/ product/script/org/ofbiz/product/inventory/ product/servicedef/ product/src/org/ofbiz/product/inventory/ product/webapp/facility/...

Author: jacopoc
Date: Fri Jun  6 11:24:20 2008
New Revision: 664069

URL: http://svn.apache.org/viewvc?rev=664069&view=rev
Log:
Added support for non-serialized status to mark items as defective or on-hold and exclude them form the inventory reservation and issuance services; enhanced inventory counting services to consider only non serialized items with an empty status (i.e. exclude on-hold or damaged items) but also added the statusId field so that it is possible to count on-hold or damaged items.

Modified:
    ofbiz/trunk/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml
    ofbiz/trunk/applications/product/data/ProductTypeData.xml
    ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryIssueServices.xml
    ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml
    ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml
    ofbiz/trunk/applications/product/servicedef/services_facility.xml
    ofbiz/trunk/applications/product/src/org/ofbiz/product/inventory/InventoryServices.java
    ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/facility/ViewFacilityInventoryByProduct.bsh
    ofbiz/trunk/applications/product/webapp/facility/facility/FacilityForms.xml
    ofbiz/trunk/applications/product/webapp/facility/inventory/InventoryForms.xml
    ofbiz/trunk/applications/product/widget/facility/FacilityScreens.xml

Modified: ofbiz/trunk/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml?rev=664069&r1=664068&r2=664069&view=diff
==============================================================================
--- ofbiz/trunk/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml (original)
+++ ofbiz/trunk/applications/manufacturing/script/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.xml Fri Jun  6 11:24:20 2008
@@ -262,62 +262,70 @@
                     </calculate>
                 </if-compare>
             </if-compare>
-            <if-compare field-name="inventoryItem.inventoryItemTypeId" operator="equals" value="NON_SERIAL_INV_ITEM">
-                <if-compare field-name="parameters.useReservedItems" operator="equals" value="Y">
-                    <set field="inventoryItemQuantity" from-field="inventoryItem.quantityOnHandTotal"/>
-                <else>
-                    <set field="inventoryItemQuantity" from-field="inventoryItem.availableToPromiseTotal"/>
-                </else>
-                </if-compare>
-                
-                <if-not-empty field-name="inventoryItemQuantity">
-                    <!-- reduce atp on inventoryItem if availableToPromise greater than 0, if not the code at the end of this method will handle it -->
-                    <if-compare field-name="inventoryItemQuantity" operator="greater" value="0" type="Double">
-                        <if-compare-field field-name="parameters.quantityNotIssued" operator="greater" to-field-name="inventoryItemQuantity" type="Double">
-                            <set from-field="inventoryItemQuantity" field="parameters.deductAmount"/>
-                        <else>
-                            <set from-field="parameters.quantityNotIssued" field="parameters.deductAmount"/>
-                        </else>
-                        </if-compare-field>
-                        
-                        <!-- create WorkEffortInventoryAssign record -->
-                        <set from-field="parameters.workEffortId" field="issuanceCreateMap.workEffortId"/>
-                        <set from-field="inventoryItem.inventoryItemId" field="issuanceCreateMap.inventoryItemId"/>
-                        <set from-field="parameters.deductAmount" field="issuanceCreateMap.quantity"/>
-                        <call-service service-name="assignInventoryToWorkEffort" in-map-name="issuanceCreateMap">
-                        </call-service>
-
-                        <!-- instead of updating InventoryItem, add an InventoryItemDetail -->
-                        <set from-field="inventoryItem.inventoryItemId" field="createDetailMap.inventoryItemId"/>
-                        <set from-field="parameters.workEffortId" field="createDetailMap.workEffortId"/>
-                        <!-- update availableToPromiseDiff AND quantityOnHandDiff since this is an issuance -->
-                        <calculate field-name="createDetailMap.availableToPromiseDiff" type="Double">
-                            <calcop field-name="parameters.deductAmount" operator="negative"/>
-                        </calculate>
-                        <calculate field-name="createDetailMap.quantityOnHandDiff" type="Double">
-                            <calcop field-name="parameters.deductAmount" operator="negative"/>
-                        </calculate>
-                        <set field="createDetailMap.reasonEnumId" from-field="parameters.reasonEnumId"/>
-                        <set field="createDetailMap.description" from-field="parameters.description"/>
-                        <call-service service-name="createInventoryItemDetail" in-map-name="createDetailMap"/>
-                        <clear-field field-name="createDetailMap"/>
-                        
-                        <calculate field-name="quantityNotIssued" map-name="parameters">
-                            <calcop operator="subtract" field-name="parameters.quantityNotIssued">
-                                <calcop operator="get" field-name="parameters.deductAmount"/>
-                            </calcop>
-                        </calculate>
-                        <set field="balanceInventoryItemsInMap.inventoryItemId" from-field="inventoryItem.inventoryItemId"/>
-                        <call-service service-name="balanceInventoryItems" in-map-name="balanceInventoryItemsInMap"/>
-
-                        <clear-field field-name="issuanceCreateMap"/>
+            <if>
+                <condition>
+                    <and>
+                        <if-empty field-name="inventoryItem.statusId"/>
+                        <if-compare field-name="inventoryItem.inventoryItemTypeId" operator="equals" value="NON_SERIAL_INV_ITEM"/>
+                    </and>
+                </condition>
+                <then>
+                    <if-compare field-name="parameters.useReservedItems" operator="equals" value="Y">
+                        <set field="inventoryItemQuantity" from-field="inventoryItem.quantityOnHandTotal"/>
+                    <else>
+                        <set field="inventoryItemQuantity" from-field="inventoryItem.availableToPromiseTotal"/>
+                    </else>
                     </if-compare>
-                </if-not-empty>
-
-                <!-- keep track of the last non-serialized inventory item for use if inventory is not sufficient for amount already issued -->
-                <!-- use env variable named lastNonSerInventoryItem -->
-                <set from-field="inventoryItem" field="lastNonSerInventoryItem"/>
-            </if-compare>
+                    
+                    <if-not-empty field-name="inventoryItemQuantity">
+                        <!-- reduce atp on inventoryItem if availableToPromise greater than 0, if not the code at the end of this method will handle it -->
+                        <if-compare field-name="inventoryItemQuantity" operator="greater" value="0" type="Double">
+                            <if-compare-field field-name="parameters.quantityNotIssued" operator="greater" to-field-name="inventoryItemQuantity" type="Double">
+                                <set from-field="inventoryItemQuantity" field="parameters.deductAmount"/>
+                            <else>
+                                <set from-field="parameters.quantityNotIssued" field="parameters.deductAmount"/>
+                            </else>
+                            </if-compare-field>
+                            
+                            <!-- create WorkEffortInventoryAssign record -->
+                            <set from-field="parameters.workEffortId" field="issuanceCreateMap.workEffortId"/>
+                            <set from-field="inventoryItem.inventoryItemId" field="issuanceCreateMap.inventoryItemId"/>
+                            <set from-field="parameters.deductAmount" field="issuanceCreateMap.quantity"/>
+                            <call-service service-name="assignInventoryToWorkEffort" in-map-name="issuanceCreateMap">
+                            </call-service>
+    
+                            <!-- instead of updating InventoryItem, add an InventoryItemDetail -->
+                            <set from-field="inventoryItem.inventoryItemId" field="createDetailMap.inventoryItemId"/>
+                            <set from-field="parameters.workEffortId" field="createDetailMap.workEffortId"/>
+                            <!-- update availableToPromiseDiff AND quantityOnHandDiff since this is an issuance -->
+                            <calculate field-name="createDetailMap.availableToPromiseDiff" type="Double">
+                                <calcop field-name="parameters.deductAmount" operator="negative"/>
+                            </calculate>
+                            <calculate field-name="createDetailMap.quantityOnHandDiff" type="Double">
+                                <calcop field-name="parameters.deductAmount" operator="negative"/>
+                            </calculate>
+                            <set field="createDetailMap.reasonEnumId" from-field="parameters.reasonEnumId"/>
+                            <set field="createDetailMap.description" from-field="parameters.description"/>
+                            <call-service service-name="createInventoryItemDetail" in-map-name="createDetailMap"/>
+                            <clear-field field-name="createDetailMap"/>
+                            
+                            <calculate field-name="quantityNotIssued" map-name="parameters">
+                                <calcop operator="subtract" field-name="parameters.quantityNotIssued">
+                                    <calcop operator="get" field-name="parameters.deductAmount"/>
+                                </calcop>
+                            </calculate>
+                            <set field="balanceInventoryItemsInMap.inventoryItemId" from-field="inventoryItem.inventoryItemId"/>
+                            <call-service service-name="balanceInventoryItems" in-map-name="balanceInventoryItemsInMap"/>
+    
+                            <clear-field field-name="issuanceCreateMap"/>
+                        </if-compare>
+                    </if-not-empty>
+    
+                    <!-- keep track of the last non-serialized inventory item for use if inventory is not sufficient for amount already issued -->
+                    <!-- use env variable named lastNonSerInventoryItem -->
+                    <set from-field="inventoryItem" field="lastNonSerInventoryItem"/>
+                </then>
+            </if>
         </if-compare>
     </simple-method>
 

Modified: ofbiz/trunk/applications/product/data/ProductTypeData.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/data/ProductTypeData.xml?rev=664069&r1=664068&r2=664069&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/data/ProductTypeData.xml (original)
+++ ofbiz/trunk/applications/product/data/ProductTypeData.xml Fri Jun  6 11:24:20 2008
@@ -464,6 +464,8 @@
     <StatusItem description="Being Transfered (Promised)" sequenceId="11" statusCode="BEING_TRANS_PRM" statusId="INV_BEING_TRANS_PRM" statusTypeId="INV_SERIALIZED_STTS"/>
     <StatusItem description="Returned" sequenceId="20" statusCode="RETURNED" statusId="INV_RETURNED" statusTypeId="INV_SERIALIZED_STTS"/>
     <StatusItem description="Defective" sequenceId="21" statusCode="DEFECTIVE" statusId="INV_DEFECTIVE" statusTypeId="INV_SERIALIZED_STTS"/>
+    <StatusItem description="On Hold (Non-Serialized)" sequenceId="01" statusCode="ON_HOLD_NS" statusId="INV_NS_ON_HOLD" statusTypeId="INV_NON_SER_STTS"/>
+    <StatusItem description="Defective (Non-Serialized)" sequenceId="02" statusCode="DEFECTIVE_NS" statusId="INV_NS_DEFECTIVE" statusTypeId="INV_NON_SER_STTS"/>
     <StatusValidChange condition="" statusId="INV_ON_ORDER" statusIdTo="INV_AVAILABLE" transitionName="Order Arrived"/>
     <StatusValidChange condition="" statusId="INV_AVAILABLE" statusIdTo="INV_PROMISED" transitionName="Promise"/>
     <StatusValidChange condition="" statusId="INV_AVAILABLE" statusIdTo="INV_ON_HOLD" transitionName="Hold"/>

Modified: ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryIssueServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryIssueServices.xml?rev=664069&r1=664068&r2=664069&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryIssueServices.xml (original)
+++ ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryIssueServices.xml Fri Jun  6 11:24:20 2008
@@ -214,9 +214,16 @@
                 </if-compare>
             </if-compare>
             <if-compare field-name="inventoryItem.inventoryItemTypeId" operator="equals" value="NON_SERIAL_INV_ITEM">
-                <if-not-empty field-name="inventoryItem.availableToPromiseTotal">
-                    <!-- reduce atp on inventoryItem if availableToPromise greater than 0, if not the code at the end of this method will handle it -->
-                    <if-compare field-name="inventoryItem.availableToPromiseTotal" operator="greater" value="0" type="Double">
+                <!-- reduce atp on inventoryItem if availableToPromise greater than 0, if not the code at the end of this method will handle it -->
+                <if>
+                    <condition>
+                        <and>
+                            <if-empty field-name="inventoryItem.statusId"/>
+                            <not><if-empty field-name="inventoryItem.availableToPromiseTotal"/></not>
+                            <if-compare field-name="inventoryItem.availableToPromiseTotal" operator="greater" value="0" type="Double"/>
+                        </and>
+                    </condition>
+                    <then>
                         <if-compare-field field-name="parameters.quantityNotIssued" operator="greater" to-field-name="inventoryItem.availableToPromiseTotal" type="Double">
                             <set field="parameters.deductAmount" from-field="inventoryItem.availableToPromiseTotal" />
                         <else>
@@ -256,15 +263,13 @@
 
                         <clear-field field-name="issuanceCreateMap"/>
                         <clear-field field-name="itemIssuanceId"/>
-                    </if-compare>
-                </if-not-empty>
 
-                <!-- keep track of the last non-serialized inventory item for use if inventory is not sufficient for amount already issued -->
-                <!-- use env variable named lastNonSerInventoryItem -->
-                <set field="lastNonSerInventoryItem" from-field="inventoryItem" />
+                        <!-- keep track of the last non-serialized inventory item for use if inventory is not sufficient for amount already issued -->
+                        <!-- use env variable named lastNonSerInventoryItem -->
+                        <set field="lastNonSerInventoryItem" from-field="inventoryItem" />
+                    </then>
+                </if>
             </if-compare>
         </if-compare>
     </simple-method>
 </simple-methods>
-
-

Modified: ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml?rev=664069&r1=664068&r2=664069&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml (original)
+++ ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml Fri Jun  6 11:24:20 2008
@@ -27,7 +27,7 @@
                 -containerId
             If the service definitions are used then only one of these two will ever be specified, or neither of them.
 
-            Whatever it is called with, it will basicly get a list of InventoryItems and reserve the first available inventory.
+            Whatever it is called with, it will basically get a list of InventoryItems and reserve the first available inventory.
 
             If requireInventory is Y the quantity not reserved is returned, if N then a negative
             availableToPromise will be used to track quantity ordered beyond what is in stock.
@@ -417,9 +417,16 @@
                 </if-compare>
             </if-compare>
             <if-compare field-name="inventoryItem.inventoryItemTypeId" operator="equals" value="NON_SERIAL_INV_ITEM">
-                <if-not-empty field-name="inventoryItem.availableToPromiseTotal">
-                    <!-- reduce atp on inventoryItem if availableToPromise greater than 0, if not the code at the end of this method will handle it -->
-                    <if-compare field-name="inventoryItem.availableToPromiseTotal" operator="greater" value="0" type="Double">
+                <!-- reduce atp on inventoryItem if availableToPromise greater than 0, if not the code at the end of this method will handle it -->
+                <if>
+                    <condition>
+                        <and>
+                            <if-empty field-name="inventoryItem.statusId"/>
+                            <not><if-empty field-name="inventoryItem.availableToPromiseTotal"/></not>
+                            <if-compare field-name="inventoryItem.availableToPromiseTotal" operator="greater" value="0" type="Double"/>
+                        </and>
+                    </condition>
+                    <then>
                         <if-compare-field field-name="parameters.quantityNotReserved" operator="greater" to-field-name="inventoryItem.availableToPromiseTotal" type="Double">
                             <set from-field="inventoryItem.availableToPromiseTotal" field="parameters.deductAmount"/>
                         <else>
@@ -457,12 +464,11 @@
                                 <calcop operator="get" field-name="deductAmount" map-name="parameters"/>
                             </calcop>
                         </calculate>
-                    </if-compare>
-                </if-not-empty>
-
-                <!-- keep track of the last non-serialized inventory item for use if inventory is not required for purchase -->
-                <!-- use env variable named lastNonSerInventoryItem -->
-                <set from-field="inventoryItem" field="lastNonSerInventoryItem"/>
+                    </then>
+                    <!-- keep track of the last non-serialized inventory item for use if inventory is not required for purchase -->
+                    <!-- use env variable named lastNonSerInventoryItem -->
+                    <set from-field="inventoryItem" field="lastNonSerInventoryItem"/>
+                </if>
             </if-compare>
         </if-compare>
     </simple-method>
@@ -612,10 +618,3 @@
         </if-compare>
     </simple-method>
 </simple-methods>
-
-
-
-
-
-
-

Modified: ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml?rev=664069&r1=664068&r2=664069&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml (original)
+++ ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryServices.xml Fri Jun  6 11:24:20 2008
@@ -638,18 +638,34 @@
                 </if-compare>
             </if-compare>
             <if-compare field-name="inventoryItem.inventoryItemTypeId" operator="equals" value="NON_SERIAL_INV_ITEM">
-                <if-not-empty field-name="inventoryItem.quantityOnHandTotal">
-                    <calculate field-name="parameters.quantityOnHandTotal" type="Double">
-                        <calcop operator="get" field-name="parameters.quantityOnHandTotal"/>
-                        <calcop operator="get" field-name="inventoryItem.quantityOnHandTotal"/>
-                    </calculate>
-                </if-not-empty>
-                <if-not-empty field-name="inventoryItem.availableToPromiseTotal">
-                    <calculate field-name="parameters.availableToPromiseTotal" type="Double">
-                        <calcop operator="get" field-name="parameters.availableToPromiseTotal"/>
-                        <calcop operator="get" field-name="inventoryItem.availableToPromiseTotal"/>
-                    </calculate>
-                </if-not-empty>
+                <if>
+                    <condition>
+                        <or>
+                            <and>
+                                <not><if-empty field-name="parameters.statusId"/></not>
+                                <if-compare-field operator="equals" field-name="parameters.statusId" to-field-name="inventoryItem.statusId"/>
+                            </and>
+                            <and>
+                                <if-empty field-name="parameters.statusId"/>
+                                <if-empty field-name="inventoryItem.statusId"/>
+                            </and>
+                        </or>
+                    </condition>
+                    <then>
+                        <if-not-empty field-name="inventoryItem.quantityOnHandTotal">
+                            <calculate field-name="parameters.quantityOnHandTotal" type="Double">
+                                <calcop operator="get" field-name="parameters.quantityOnHandTotal"/>
+                                <calcop operator="get" field-name="inventoryItem.quantityOnHandTotal"/>
+                            </calculate>
+                        </if-not-empty>
+                        <if-not-empty field-name="inventoryItem.availableToPromiseTotal">
+                            <calculate field-name="parameters.availableToPromiseTotal" type="Double">
+                                <calcop operator="get" field-name="parameters.availableToPromiseTotal"/>
+                                <calcop operator="get" field-name="inventoryItem.availableToPromiseTotal"/>
+                            </calculate>
+                        </if-not-empty>
+                    </then>
+                </if>
             </if-compare>
         </iterate>
 
@@ -676,6 +692,7 @@
         <if-not-empty field-name="assocProducts">
             <set from-field="assocProducts" field="inventoryByAssocProductsParams.assocProducts"/>
             <set from-field="parameters.facilityId" field="inventoryByAssocProductsParams.facilityId"/>
+            <set from-field="parameters.statusId" field="inventoryByAssocProductsParams.statusId"/>
             <call-service service-name="getProductInventoryAvailableFromAssocProducts" in-map-name="inventoryByAssocProductsParams">
                 <result-to-field result-name="quantityOnHandTotal"/>
                 <result-to-field result-name="availableToPromiseTotal"/>

Modified: ofbiz/trunk/applications/product/servicedef/services_facility.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_facility.xml?rev=664069&r1=664068&r2=664069&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/servicedef/services_facility.xml (original)
+++ ofbiz/trunk/applications/product/servicedef/services_facility.xml Fri Jun  6 11:24:20 2008
@@ -141,6 +141,7 @@
         <description>Get Marketing Packages Available From Components In Inventory</description>
         <attribute name="productId" type="String" mode="IN" optional="false"/>
         <attribute name="facilityId" type="String" mode="IN" optional="true"/>
+        <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityOnHandTotal" type="Double" mode="OUT" optional="false"/>
         <attribute name="availableToPromiseTotal" type="Double" mode="OUT" optional="false"/>
     </service>
@@ -148,6 +149,7 @@
                 location="org/ofbiz/product/inventory/InventoryServices.xml" invoke="getProductInventoryAvailable" auth="false" use-transaction="false">
         <description>Get Inventory Availability for a Product</description>
         <attribute name="productId" type="String" mode="IN" optional="false"/>
+        <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityOnHandTotal" type="Double" mode="OUT" optional="false"/>
         <attribute name="availableToPromiseTotal" type="Double" mode="OUT" optional="false"/>
         <attribute name="useCache" type="Boolean" mode="IN" optional="true"/>
@@ -157,6 +159,7 @@
         <description>Get Inventory Availability for a Product constrained by a facilityId</description>
         <attribute name="productId" type="String" mode="IN" optional="false"/>
         <attribute name="facilityId" type="String" mode="IN" optional="false"/>
+        <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityOnHandTotal" type="Double" mode="OUT" optional="false"/>
         <attribute name="availableToPromiseTotal" type="Double" mode="OUT" optional="false"/>
         <attribute name="useCache" type="Boolean" mode="IN" optional="true"/>
@@ -167,6 +170,7 @@
         <attribute name="productId" type="String" mode="IN" optional="false"/>
         <attribute name="facilityId" type="String" mode="IN" optional="false"/>
         <attribute name="locationSeqId" type="String" mode="IN" optional="false"/>
+        <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityOnHandTotal" type="Double" mode="OUT" optional="false"/>
         <attribute name="availableToPromiseTotal" type="Double" mode="OUT" optional="false"/>
         <attribute name="useCache" type="Boolean" mode="IN" optional="true"/>
@@ -176,6 +180,7 @@
         <description>Get Inventory Availability for a Product constrained by a containerId</description>
         <attribute name="productId" type="String" mode="IN" optional="false"/>
         <attribute name="containerId" type="String" mode="IN" optional="false"/>
+        <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityOnHandTotal" type="Double" mode="OUT" optional="false"/>
         <attribute name="availableToPromiseTotal" type="Double" mode="OUT" optional="false"/>
     </service>
@@ -195,6 +200,7 @@
         </description>
         <attribute name="facilityId" type="String" mode="IN" optional="true"/>
         <attribute name="assocProducts" type="List" mode="IN" optional="false"/>
+        <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="quantityOnHandTotal" type="Double" mode="OUT" optional="false"/>
         <attribute name="availableToPromiseTotal" type="Double" mode="OUT" optional="false"/>
     </service>
@@ -217,6 +223,7 @@
         <attribute name="facilityId" type="String" mode="IN" optional="false"/>
         <attribute name="productId" type="String" mode="IN" optional="false"/>
         <attribute name="minimumStock" mode="IN" type="String" optional="true"/>
+        <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="totalQuantityOnHand" mode="OUT" type="String" optional="true"/>
         <attribute name="totalAvailableToPromise" mode="OUT" type="String" optional="true"/>
         <attribute name="quantityOnOrder" mode="OUT" type="Double" optional="true"/>

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/inventory/InventoryServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/inventory/InventoryServices.java?rev=664069&r1=664068&r2=664069&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/product/inventory/InventoryServices.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/product/inventory/InventoryServices.java Fri Jun  6 11:24:20 2008
@@ -648,6 +648,7 @@
         LocalDispatcher dispatcher = dctx.getDispatcher();
         List productAssocList = (List) context.get("assocProducts");
         String facilityId = (String)context.get("facilityId");
+        String statusId = (String)context.get("statusId");
         
         Double availableToPromiseTotal = new Double(0);
         Double quantityOnHandTotal = new Double(0);
@@ -672,7 +673,7 @@
                // figure out the inventory available for this associated product
                Map resultOutput = null;
                try {
-                   Map inputMap = UtilMisc.toMap("productId", productIdTo);
+                   Map inputMap = UtilMisc.toMap("productId", productIdTo, "statusId", statusId);
                    if (facilityId != null) {
                        inputMap.put("facilityId", facilityId);
                        resultOutput = dispatcher.runSync("getInventoryAvailableByFacility", inputMap);
@@ -728,12 +729,12 @@
 
         // get a list of all available facilities for looping
         List facilities = null;
-    try {
-        if (facilityId != null) {
+        try {
+            if (facilityId != null) {
                 facilities = delegator.findByAnd("Facility", UtilMisc.toMap("facilityId", facilityId)); 
             } else {
                 facilities = delegator.findList("Facility", null, null, null, null, false);
-            } 
+            }
         } catch (GenericEntityException e) {
             return ServiceUtil.returnError("Unable to locate facilities." + e.getMessage());
         }
@@ -815,11 +816,12 @@
         String facilityId = (String)context.get("facilityId");
         String productId = (String)context.get("productId");
         String minimumStock = (String)context.get("minimumStock");
+        String statusId = (String)context.get("statusId");
 
         Map result = new HashMap();
         Map resultOutput = new HashMap();
 
-        Map contextInput = UtilMisc.toMap("productId", productId, "facilityId", facilityId);
+        Map contextInput = UtilMisc.toMap("productId", productId, "facilityId", facilityId, "statusId", statusId);
         GenericValue product = null;
         try {
             product = delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", productId));

Modified: ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/facility/ViewFacilityInventoryByProduct.bsh
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/facility/ViewFacilityInventoryByProduct.bsh?rev=664069&r1=664068&r2=664069&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/facility/ViewFacilityInventoryByProduct.bsh (original)
+++ ofbiz/trunk/applications/product/webapp/facility/WEB-INF/actions/facility/ViewFacilityInventoryByProduct.bsh Fri Jun  6 11:24:20 2008
@@ -176,6 +176,7 @@
         oneInventory.put("minimumStock", oneProd.getString("minimumStock"));
         oneInventory.put("reorderQuantity", oneProd.getString("reorderQuantity"));
         oneInventory.put("daysToShip", oneProd.getString("daysToShip"));
+        oneInventory.put("statusId", statusId);
         rows.add(oneInventory);
     }
 

Modified: ofbiz/trunk/applications/product/webapp/facility/facility/FacilityForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/facility/FacilityForms.xml?rev=664069&r1=664068&r2=664069&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/facility/facility/FacilityForms.xml (original)
+++ ofbiz/trunk/applications/product/webapp/facility/facility/FacilityForms.xml Fri Jun  6 11:24:20 2008
@@ -336,6 +336,16 @@
                 </entity-options>
             </drop-down>
         </field>
+        <field name="statusId">
+            <drop-down allow-empty="true">
+                <entity-options entity-name="StatusItem" description="${description}" key-field-name="statusId">
+                    <entity-constraint name="statusTypeId" operator="equals" value="INV_NON_SER_STTS"/> 
+                </entity-options>
+                <entity-options entity-name="StatusItem" description="${description}" key-field-name="statusId">
+                    <entity-constraint name="statusTypeId" operator="equals" value="INV_SERIALIZED_STTS"/> 
+                </entity-options>
+            </drop-down>
+        </field>
         <field name="offsetQOHQty" title="${uiLabelMap.ProductQtyOffsetQOHBelow}"><text/></field>
         <field name="offsetATPQty" title="${uiLabelMap.ProductQtyOffsetATPBelow}"><text/></field>
         <field name="productsSoldThruTimestamp" title="${uiLabelMap.ProductShowProductsSoldThruTimestamp}">
@@ -356,6 +366,7 @@
                 <field-map field-name="productId" env-name="productId"/>
                 <field-map field-name="facilityId" env-name="facilityId"/>
                 <field-map field-name="checkTime" env-name="checkTime"/>
+                <field-map field-name="statusId" env-name="statusId"/>
             </service>
         </row-actions>
         <field name="items" title="${uiLabelMap.ProductProductId}" widget-style="buttontext">

Modified: ofbiz/trunk/applications/product/webapp/facility/inventory/InventoryForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/facility/inventory/InventoryForms.xml?rev=664069&r1=664068&r2=664069&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/facility/inventory/InventoryForms.xml (original)
+++ ofbiz/trunk/applications/product/webapp/facility/inventory/InventoryForms.xml Fri Jun  6 11:24:20 2008
@@ -51,14 +51,31 @@
             <text>
                 <sub-hyperlink use-when="productId!=null" target="/catalog/control/EditProduct?productId=${productId}" target-type="inter-app" description="${uiLabelMap.ProductEditProduct} [${productId}]"/>
             </text>
-        </field> 
-        <field name="statusId">
+        </field>
+        <field name="statusId" use-when="inventoryItem==null">
             <drop-down allow-empty="true">
                 <entity-options entity-name="StatusItem" description="${description}" key-field-name="statusId">
+                    <entity-constraint name="statusTypeId" operator="equals" value="INV_NON_SER_STTS"/> 
+                </entity-options>
+                <entity-options entity-name="StatusItem" description="${description}" key-field-name="statusId">
+                    <entity-constraint name="statusTypeId" operator="equals" value="INV_SERIALIZED_STTS"/> 
+                </entity-options>
+            </drop-down>
+        </field>
+        <field name="statusId" use-when="inventoryItem!=null&amp;&amp;&quot;SERIALIZED_INV_ITEM&quot;.equals(inventoryItem.getString(&quot;inventoryItemTypeId&quot;))">
+            <drop-down allow-empty="false">
+                <entity-options entity-name="StatusItem" description="${description}" key-field-name="statusId">
                     <entity-constraint name="statusTypeId" operator="equals" value="INV_SERIALIZED_STTS"/> 
                 </entity-options>
             </drop-down>
         </field>
+        <field name="statusId" use-when="inventoryItem!=null&amp;&amp;&quot;NON_SERIAL_INV_ITEM&quot;.equals(inventoryItem.getString(&quot;inventoryItemTypeId&quot;))">
+            <drop-down allow-empty="true">
+                <entity-options entity-name="StatusItem" description="${description}" key-field-name="statusId">
+                    <entity-constraint name="statusTypeId" operator="equals" value="INV_NON_SER_STTS"/> 
+                </entity-options>
+            </drop-down>
+        </field>
         <field name="expireDate" title="${uiLabelMap.ProductExpireDate}"/>
         <field name="facilityId">
             <drop-down allow-empty="true">

Modified: ofbiz/trunk/applications/product/widget/facility/FacilityScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/widget/facility/FacilityScreens.xml?rev=664069&r1=664068&r2=664069&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/widget/facility/FacilityScreens.xml (original)
+++ ofbiz/trunk/applications/product/widget/facility/FacilityScreens.xml Fri Jun  6 11:24:20 2008
@@ -328,6 +328,7 @@
                 <set field="productsSoldThruTimestamp" from-field="parameters.productsSoldThruTimestamp"/>
                 <set field="internalName" from-field="parameters.internalName"/>
                 <set field="productId" from-field="parameters.productId"/>
+                <set field="statusId" from-field="parameters.statusId"/>
                 <!-- do not use the countFacilityInventoryByProduct.bsh script unless the issues mentioned in it are correctly addressed -->
                 <script location="component://product/webapp/facility/WEB-INF/actions/facility/ViewFacilityInventoryByProduct.bsh"/>
                 <entity-one entity-name="Facility" value-name="facility"/>