Author: jonesde
Date: Wed Dec 12 03:26:21 2007
New Revision: 603569
URL: http://svn.apache.org/viewvc?rev=603569&view=rev
Log:
Reverted changes done by Jacopo in rev 603506 which was a temporary fix for the
problem described there; the real problem appears to be that code, in poss;the
real problem seems to be that a variable was retained somewhere in a loop where
it should not have been, and to fix that I made 2 changes: in the
receiveInventoryProduct simple-method I changed it to use the
parameters.inventoryItemId variable for input only, and it isn't set and used
inside the loop, instead the new currentInventoryItemId variable is used; also
in the quickReceiveReturn simple-method I add a clear-field of receiveCtx to
make sure that stale data does not remain between iterations over return items;
I don't have a good test case for this, so please take a look at it Jacopo, and
it might be good to find a automated test case for this in the near future as
this is fairly complicated and error prone code
Modified:
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml
Modified:
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml?rev=603569&r1=603568&r2=603569&view=diff
==============================================================================
---
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml
(original)
+++
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml
Wed Dec 12 03:26:21 2007
@@ -113,20 +113,21 @@
<!-- if there is an inventoryItemId, update it (this will happen
when receiving serialized inventory already in the system, like for returns);
if not create one -->
<clear-field field-name="serviceInMap"/>
-<!--
+ <clear-field field-name="currentInventoryItemId"/>
+
<if-empty field-name="parameters.inventoryItemId">
--->
<set-service-fields service-name="createInventoryItem"
map-name="parameters" to-map-name="serviceInMap"/>
<call-service service-name="createInventoryItem"
in-map-name="serviceInMap">
- <result-to-field result-name="inventoryItemId"
field-name="parameters.inventoryItemId"/>
+ <result-to-field result-name="inventoryItemId"
field-name="currentInventoryItemId"/>
</call-service>
-<!--
+
<else>
<set-service-fields service-name="updateInventoryItem"
map-name="parameters" to-map-name="serviceInMap"/>
<call-service service-name="updateInventoryItem"
in-map-name="serviceInMap"/>
+ <set field="currentInventoryItemId"
from-field="parameters.inventoryItemId"/>
</else>
</if-empty>
--->
+
<!-- do this only for non-serialized inventory -->
<if-compare value="SERIALIZED_INV_ITEM" operator="not-equals"
field-name="parameters.inventoryItemTypeId">
<clear-field field-name="serviceInMap"/>
@@ -162,7 +163,7 @@
</condition>
<then>
<clear-field field-name="serviceInMap"/>
- <set field="serviceInMap.inventoryItemId"
from-field="parameters.inventoryItemId"/>
+ <set field="serviceInMap.inventoryItemId"
from-field="currentInventoryItemId"/>
<set field="serviceInMap.statusId"
value="INV_AVAILABLE"/> <!-- XXX set to returned instead -->
<call-service service-name="updateInventoryItem"
in-map-name="serviceInMap"/>
</then>
@@ -174,10 +175,10 @@
<set-service-fields service-name="balanceInventoryItems"
map-name="parameters" to-map-name="serviceInMap"/>
<call-service service-name="balanceInventoryItems"
in-map-name="serviceInMap"/>
- <set field="successMessageList[]" value="Received
${parameters.quantityAccepted} of ${parameters.productId} in inventory item
${parameters.inventoryItemId}"/>
+ <set field="successMessageList[]" value="Received
${parameters.quantityAccepted} of ${parameters.productId} in inventory item
${currentInventoryItemId}"/>
</loop>
<!-- return the last inventory item received -->
- <field-to-result field-name="parameters.inventoryItemId"
result-name="inventoryItemId"/>
+ <field-to-result field-name="currentInventoryItemId"
result-name="inventoryItemId"/>
</simple-method>
<simple-method method-name="quickReceiveReturn" short-description="Quick
Receive Entire Return">
@@ -230,7 +231,9 @@
<result-to-field result-name="shipmentItemSeqId"/>
</call-service>
</iterate>
- <iterate entry-name="returnItem" list-name="returnItems">
+ <iterate entry-name="returnItem" list-name="returnItems">
+ <clear-field field-name="receiveCtx"/>
+
<if-empty field-name="expectedItemStatus"
map-name="returnItem">
<set value="INV_RETURNED"
field="returnItem.expectedItemStatus" type="String"/>
</if-empty>