svn commit: r559934 - /ofbiz/trunk/applications/order/script/org/ofbiz/order/order/OrderServices.xml

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

svn commit: r559934 - /ofbiz/trunk/applications/order/script/org/ofbiz/order/order/OrderServices.xml

sichen
Author: sichen
Date: Thu Jul 26 11:44:57 2007
New Revision: 559934

URL: http://svn.apache.org/viewvc?view=rev&rev=559934
Log:
When creating product requirements as the result of receiving inventory, only create a requirement if the total of existing requirements for that product/facility is insufficient to cover the needed quantity

Modified:
    ofbiz/trunk/applications/order/script/org/ofbiz/order/order/OrderServices.xml

Modified: ofbiz/trunk/applications/order/script/org/ofbiz/order/order/OrderServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/script/org/ofbiz/order/order/OrderServices.xml?view=diff&rev=559934&r1=559933&r2=559934
==============================================================================
--- ofbiz/trunk/applications/order/script/org/ofbiz/order/order/OrderServices.xml (original)
+++ ofbiz/trunk/applications/order/script/org/ofbiz/order/order/OrderServices.xml Thu Jul 26 11:44:57 2007
@@ -343,7 +343,38 @@
                     If we can support it while at the same time linking requirements back to the original sales order, that would be better. -->                
                 <set from-field="parameters.productId" field="inputMap.productId"/>
                 <set from-field="inventoryItem.facilityId" field="inputMap.facilityId"/>
-                <call-simple-method method-name="createRequirementAndCommitment"/>
+
+                <!-- Retrieve and total the quantities of existing requirements for the product/facility -->
+                <entity-condition entity-name="Requirement" list-name="requirements">
+                    <having-condition-list combine="and">
+                        <condition-expr field-name="productId" operator="equals" env-name="parameters.productId"/>
+                        <condition-expr field-name="requirementTypeId" operator="equals" value="PRODUCT_REQUIREMENT"/>
+                        <condition-expr field-name="facilityId" operator="equals" env-name="productFacility.facilityId"/>
+                        <condition-expr field-name="statusId" operator="not-equals" value="REQ_ORDERED"/>
+                        <condition-expr field-name="statusId" operator="not-equals" value="REQ_REJECTED"/>
+                    </having-condition-list>
+                </entity-condition>
+                <iterate entry-name="requirement" list-name="requirements">
+                    <calculate field-name="existingRequirementTotal" type="Double">
+                        <calcop operator="add" field-name="existingRequirementTotal">
+                            <calcop operator="get" field-name="requirement.quantity"/>
+                        </calcop>
+                    </calculate>
+                </iterate>
+                
+                <!-- Subtract the total quantity of existing requirements from the required quantity to determine if a new requirement needs to be created -->
+                <calculate field-name="newRequirementTotal" type="Double">
+                    <calcop operator="subtract" field-name="inputMap.quantity">
+                        <calcop operator="get" field-name="existingRequirementTotal"/>
+                    </calcop>
+                </calculate>
+
+                <!-- If a new requirement needs to be created, create it for the difference between the required quantity and the total quantity of existing requirements -->
+                <if-compare field-name="newRequirementTotal" operator="greater-equals" value="0">
+                    <set from-field="inputMap.quantity" field="newRequirementTotal"/>
+                    <call-simple-method method-name="createRequirementAndCommitment"/>
+                </if-compare>
+
             </if-compare-field>
             </if-not-empty>
         </if-compare>