Author: surajk
Date: Sat Jan 12 06:18:09 2019 New Revision: 1851137 URL: http://svn.apache.org/viewvc?rev=1851137&view=rev Log: Improved:Updated 'convertUom' service, given priority to 'UomConversionDated' entity to fetch conversion factor. (OFBIZ-10747) In case if the factor is not available then use 'UomConversion' entity. Thanks Amit Gadaley for reporting the issue and providing the patch. Modified: ofbiz/ofbiz-framework/trunk/framework/common/minilang/CommonServices.xml ofbiz/ofbiz-framework/trunk/framework/common/servicedef/services.xml Modified: ofbiz/ofbiz-framework/trunk/framework/common/minilang/CommonServices.xml URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/common/minilang/CommonServices.xml?rev=1851137&r1=1851136&r2=1851137&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/common/minilang/CommonServices.xml (original) +++ ofbiz/ofbiz-framework/trunk/framework/common/minilang/CommonServices.xml Sat Jan 12 06:18:09 2019 @@ -80,45 +80,44 @@ under the License. </else> </if-empty> - <!-- first try the regular UomConversion entity (no dates) --> - <entity-one entity-name="UomConversion" value-field="uomConversion" auto-field-map="true" use-cache="true"/> - - <!-- if not found, try the dated uom conversion entity --> - <if-empty field="uomConversion"> - <entity-condition entity-name="UomConversionDated" list="uomConversions" use-cache="true"> - <condition-list combine="and"> - <condition-expr field-name="uomId" from-field="parameters.uomId"/> - <condition-expr field-name="uomIdTo" from-field="parameters.uomIdTo"/> - <condition-expr field-name="purposeEnumId" operator="equals" from-field="parameters.purposeEnumId" ignore-if-empty="true"/> - <condition-expr field-name="fromDate" operator="less-equals" from-field="asOfDate"/> - <condition-list combine="or"> - <condition-expr field-name="thruDate" operator="greater-equals" from-field="asOfDate"/> - <condition-expr field-name="thruDate" operator="equals" from-field="nullField"/> - </condition-list> + <!-- first try the UomConversionDated entity --> + <entity-condition entity-name="UomConversionDated" list="uomConversions" use-cache="true"> + <condition-list combine="and"> + <condition-expr field-name="uomId" from-field="parameters.uomId"/> + <condition-expr field-name="uomIdTo" from-field="parameters.uomIdTo"/> + <condition-expr field-name="purposeEnumId" operator="equals" from-field="parameters.purposeEnumId" ignore-if-empty="true"/> + <condition-expr field-name="fromDate" operator="less-equals" from-field="asOfDate"/> + <condition-list combine="or"> + <condition-expr field-name="thruDate" operator="greater-equals" from-field="asOfDate"/> + <condition-expr field-name="thruDate" operator="equals" from-field="nullField"/> </condition-list> - <!-- sort by descending fromDate to get newest (biggest) first --> - <order-by field-name="-fromDate"/> - </entity-condition> - <first-from-list list="uomConversions" entry="uomConversion"/> + </condition-list> + <!-- sort by descending fromDate to get newest (biggest) first --> + <order-by field-name="-fromDate"/> + </entity-condition> + <first-from-list list="uomConversions" entry="uomConversion"/> - <!-- if no conversion found with specified purpose, try w/o purpose --> - <if-empty field="uomConversion"> - <if-not-empty field="parameters.purposeEnumId"> - <entity-condition entity-name="UomConversionDated" list="uomConversions" use-cache="true"> - <condition-list combine="and"> - <condition-expr field-name="uomId" from-field="parameters.uomId"/> - <condition-expr field-name="uomIdTo" from-field="parameters.uomIdTo"/> - <condition-expr field-name="fromDate" operator="less-equals" from-field="asOfDate"/> - <condition-list combine="or"> - <condition-expr field-name="thruDate" operator="greater-equals" from-field="asOfDate"/> - <condition-expr field-name="thruDate" operator="equals" from-field="nullField"/> - </condition-list> + <!-- if no conversion found with specified purpose, try w/o purpose --> + <if-empty field="uomConversion"> + <if-not-empty field="parameters.purposeEnumId"> + <entity-condition entity-name="UomConversionDated" list="uomConversions" use-cache="true"> + <condition-list combine="and"> + <condition-expr field-name="uomId" from-field="parameters.uomId"/> + <condition-expr field-name="uomIdTo" from-field="parameters.uomIdTo"/> + <condition-expr field-name="fromDate" operator="less-equals" from-field="asOfDate"/> + <condition-list combine="or"> + <condition-expr field-name="thruDate" operator="greater-equals" from-field="asOfDate"/> + <condition-expr field-name="thruDate" operator="equals" from-field="nullField"/> </condition-list> - <order-by field-name="-fromDate"/> - </entity-condition> - <first-from-list list="uomConversions" entry="uomConversion"/> - </if-not-empty> - </if-empty> + </condition-list> + <order-by field-name="-fromDate"/> + </entity-condition> + <first-from-list list="uomConversions" entry="uomConversion"/> + </if-not-empty> + </if-empty> + <!-- if not found, try the uom conversion entity --> + <if-empty field="uomConversion"> + <entity-one entity-name="UomConversion" value-field="uomConversion" auto-field-map="true" use-cache="true"/> </if-empty> <log level="verbose" message="using conversion factor=${uomConversion.conversionFactor}"/> Modified: ofbiz/ofbiz-framework/trunk/framework/common/servicedef/services.xml URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/common/servicedef/services.xml?rev=1851137&r1=1851136&r2=1851137&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/common/servicedef/services.xml (original) +++ ofbiz/ofbiz-framework/trunk/framework/common/servicedef/services.xml Sat Jan 12 06:18:09 2019 @@ -308,7 +308,7 @@ under the License. </service> <service name="convertUom" default-entity-name="UomConversion" engine="simple" location="component://common/minilang/CommonServices.xml" invoke="convertUom" auth="false"> - <description>Make a unit of measure conversion, first using UomConversion, then with UomConversionDated</description> + <description>Make a unit of measure conversion, first using UomConversionDated, then with UomConversion</description> <auto-attributes include="pk" mode="IN" optional="false"/> <attribute name="asOfDate" mode="IN" type="Timestamp" optional="true"/> <attribute name="originalValue" mode="IN" type="BigDecimal" optional="false"/> |
Free forum by Nabble | Edit this page |