You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ap...@apache.org on 2012/11/09 22:06:26 UTC
svn commit: r1407634 -
/ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/StockMoveServices.xml
Author: apatel
Date: Fri Nov 9 21:06:26 2012
New Revision: 1407634
URL: http://svn.apache.org/viewvc?rev=1407634&view=rev
Log:
[OFBIZ-5063] Stock Move is not working correctly when reservation record has quantity not available value at bulk location. Thanks Albert Mayo and Amardeep for working on fix.
Modified:
ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/StockMoveServices.xml
Modified: ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/StockMoveServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/StockMoveServices.xml?rev=1407634&r1=1407633&r2=1407634&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/StockMoveServices.xml (original)
+++ ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/StockMoveServices.xml Fri Nov 9 21:06:26 2012
@@ -490,12 +490,11 @@ under the License.
OISGIR (reservation), so we would have to split it up
-->
<clear-field field="reservedQuantityLeftOver"/>
+ <clear-field field="currentQuantityToMove"/>
+ <clear-field field="quantityNotAvailableToMove"/>
+ <if-compare field="quantityLeftToProcess" operator="greater" value="0" type="Double">
<if-compare-field field="quantityLeftToProcess" to-field="orderItemShipGrpInvRes.quantity" operator="less" type="BigDecimal">
<!-- the complicated part: can split up the OISGIR (reservation) into two parts, and then transfer the inventory, somewhat complicated... -->
- <calculate field="reservedQuantityLeftOver">
- <calcop field="orderItemShipGrpInvRes.quantity" operator="get"/>
- <calcop field="quantityLeftToProcess" operator="negative"/>
- </calculate>
<set from-field="quantityLeftToProcess" field="currentQuantityToMove"/>
@@ -512,21 +511,25 @@ under the License.
<if-compare-field field="currentQuantityToMove" to-field="remainingQuantityOnHand" operator="greater" type="BigDecimal">
<set from-field="remainingQuantityOnHand" field="currentQuantityToMove"/>
</if-compare-field>
+ <if-empty field="orderItemShipGrpInvRes.quantityNotAvailable">
+ <set value="0" field="orderItemShipGrpInvRes.quantityNotAvailable" type="BigDecimal" />
+ </if-empty>
+ <calculate field="reservedQuantityLeftOver" type="BigDecimal">
+ <calcop field="orderItemShipGrpInvRes.quantity" operator="get"/>
+ <calcop field="orderItemShipGrpInvRes.quantityNotAvailable" operator="negative"/>
+ <calcop field="currentQuantityToMove" operator="negative"/>
+ </calculate>
<!-- now one other little trick: reservedQuantityLeftOver is not empty and if orderItemShipGrpInvRes.quantityNotAvailable is greater than reservedQuantityLeftOver, then the difference should be moved -->
<if>
<condition>
<and>
- <not><if-empty field="orderItemShipGrpInvRes.quantityNotAvailable"/></not>
<not><if-empty field="reservedQuantityLeftOver"/></not>
- <if-compare-field field="orderItemShipGrpInvRes.quantityNotAvailable" to-field="reservedQuantityLeftOver" operator="greater" type="BigDecimal"/>
+ <if-compare field="reservedQuantityLeftOver" value="0" operator="greater" type="BigDecimal"/>
</and>
</condition>
<then>
- <calculate field="quantityNotAvailableToMove">
- <calcop field="orderItemShipGrpInvRes.quantityNotAvailable" operator="get"/>
- <calcop field="reservedQuantityLeftOver" operator="negative"/>
- </calculate>
+ <set value="0" field="quantityNotAvailableToMove" type="BigDecimal" />
</then>
<else>
<set from-field="orderItemShipGrpInvRes.quantityNotAvailable" field="quantityNotAvailableToMove"/>
@@ -571,22 +574,39 @@ under the License.
<call-service service-name="createInventoryItemDetail" in-map-name="createOisgirTargetDetailMap"/>
<!-- create the new and remove or update the old OISGIRs -->
+ <calculate field="targetOrderItemShipGrpInvRes.quantity" type="BigDecimal">
+ <calcop field="currentQuantityToMove" operator="get"/>
+ <calcop field="quantityNotAvailableToMove" operator="get"/>
+ </calculate>
+ <calculate field="targetOrderItemShipGrpInvRes.quantityNotAvailable" type="BigDecimal">
+ <calcop field="quantityNotAvailableToMove" operator="get"/>
+ </calculate>
<create-value value-field="targetOrderItemShipGrpInvRes"/>
- <if-empty field="reservedQuantityLeftOver">
- <remove-value value-field="orderItemShipGrpInvRes"/>
- <else>
<calculate field="orderItemShipGrpInvRes.quantity">
<calcop field="orderItemShipGrpInvRes.quantity" operator="get"/>
- <calcop field="reservedQuantityLeftOver" operator="negative"/>
+ <calcop field="currentQuantityToMove" operator="negative"/>
+ <calcop field="quantityNotAvailableToMove" operator="negative"/>
</calculate>
<calculate field="orderItemShipGrpInvRes.quantityNotAvailable">
<calcop field="orderItemShipGrpInvRes.quantityNotAvailable" operator="get"/>
<calcop field="quantityNotAvailableToMove" operator="negative"/>
</calculate>
<store-value value-field="orderItemShipGrpInvRes"/>
- </else>
- </if-empty>
+ <if>
+ <condition>
+ <and>
+ <if-compare field="orderItemShipGrpInvRes.quantity" operator="equals" value="0" type="BigDecimal" />
+ <if-compare field="orderItemShipGrpInvRes.quantityNotAvailable" operator="equals" value="0" type="BigDecimal" />
+ </and>
+ </condition>
+ <then>
+ <remove-value value-field="orderItemShipGrpInvRes"/>
+ </then>
+ <else>
+ <store-value value-field="orderItemShipGrpInvRes"/>
+ </else>
+ </if>
<set value="Y" field="haveSetIiDetail"/>
<!-- deduct the orderItemShipGrpInvRes.quantity from quantityLeftToProcess -->
@@ -600,6 +620,7 @@ under the License.
</calculate>
<!-- part of the following log data prep: <refresh-value value-field="targetInventoryItem"/> -->
<!-- <log level="info" message="Just update targetInventoryItem from OISGIR [${targetInventoryItem}]"/> -->
+ </if-compare>
</iterate>
<if-compare field="haveSetIiDetail" operator="equals" value="N">