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">