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> |
Free forum by Nabble | Edit this page |