Author: jleroux
Date: Tue Jan 11 08:28:57 2011
New Revision: 1057519
URL: http://svn.apache.org/viewvc?rev=1057519&view=rev
Log:
A patch from Paul Foxworthy "findOrdersToPickMove: EntityListIterator not
closed if no Picklist generated"
(https://issues.apache.org/jira/browse/OFBIZ-4105) - OFBIZ-4105
Go to ordermgr/control/orderview for an order that doesn't have stock ready for
picking.
Click on Prink Pick Sheet
You'll get a Pick Sheet PDF with the message "Order not ready for picking,
needs stock move"
Look at logs, you'll see an EntityListIterator was created and never closed, so
a warning message was logged when the finalize was executed.
The problem is in the findOrdersToPickMove simple method in
applications/product/script/org/ofbiz/shipment/picklist/PicklistServices.xml .
There's a <use-iterator/> for the OrderHeaderAndItemFacilityLocation entity.
After the entity-condition element, there's an <if> element, and the iterator
is only used when the "if" condition is false, i.e. the <else> part is executed.
My fix is simply to move the <entity-condition>, complete with <use-iterator>,
within the <else> element so the condition is evaluated and the iterator
created only when the iterator will be used.
Modified:
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/picklist/PicklistServices.xml
Modified:
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/picklist/PicklistServices.xml
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/picklist/PicklistServices.xml?rev=1057519&r1=1057518&r2=1057519&view=diff
==============================================================================
---
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/picklist/PicklistServices.xml
(original)
+++
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/picklist/PicklistServices.xml
Tue Jan 11 08:28:57 2011
@@ -103,18 +103,6 @@ under the License.
<condition-expr field-name="orderId"
from-field="orderHeader.orderId"/>
</entity-count>
- <entity-condition entity-name="OrderHeaderAndItemFacilityLocation"
list="OrderHeaderAndItemFacilityLocationList" distinct="true">
- <condition-list combine="and">
- <condition-expr field-name="orderId"
from-field="orderHeader.orderId"/>
- <condition-list combine="or">
- <condition-expr field-name="locationTypeEnumId"
operator="equals" value="FLT_PICKLOC"/>
- <condition-expr field-name="locationTypeEnumId"
operator="equals" from-field="nullField"/>
- </condition-list>
- </condition-list>
- <select-field field-name="shipmentMethodTypeId"/>
- <select-field field-name="areaId"/>
- <use-iterator/>
- </entity-condition>
<set field="groupName"/>
<set field="groupName1"/> <!-- Group by Shipping Method -->
<set field="groupName2"/> <!-- Group by Warehouse Area -->
@@ -133,6 +121,18 @@ under the License.
<set field="groupName" from-field="orderHeader.orderId"/>
</then>
<else>
+ <entity-condition
entity-name="OrderHeaderAndItemFacilityLocation"
list="OrderHeaderAndItemFacilityLocationList" distinct="true">
+ <condition-list combine="and">
+ <condition-expr field-name="orderId"
from-field="orderHeader.orderId"/>
+ <condition-list combine="or">
+ <condition-expr field-name="locationTypeEnumId"
operator="equals" value="FLT_PICKLOC"/>
+ <condition-expr field-name="locationTypeEnumId"
operator="equals" from-field="nullField"/>
+ </condition-list>
+ </condition-list>
+ <select-field field-name="shipmentMethodTypeId"/>
+ <select-field field-name="areaId"/>
+ <use-iterator/>
+ </entity-condition>
<iterate list="OrderHeaderAndItemFacilityLocationList"
entry="orderHeaderAndItemFacilityLocation">
<!-- set groupName for order according to the options selected
by the user -->