Author: nmalin Date: Sat Jul 22 10:26:15 2017 New Revision: 1802668 URL: http://svn.apache.org/viewvc?rev=1802668&view=rev Log: Fixed: For service getRateAmount don't use parameters map to propage variable to ensure the isolation, Thans Scott for this remark
Modified: ofbiz/ofbiz-framework/trunk/applications/accounting/groovyScripts/rate/RateServices.groovy Modified: ofbiz/ofbiz-framework/trunk/applications/accounting/groovyScripts/rate/RateServices.groovy URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/accounting/groovyScripts/rate/RateServices.groovy?rev=1802668&r1=1802667&r2=1802668&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/applications/accounting/groovyScripts/rate/RateServices.groovy (original) +++ ofbiz/ofbiz-framework/trunk/applications/accounting/groovyScripts/rate/RateServices.groovy Sat Jul 22 10:26:15 2017 @@ -147,9 +147,6 @@ def getRateAmount() { For a easier debugging time, there is a log triggered when no records are found for the input. This log shows up when there are rateAmounts corresponding to the input parameters without the rateCurrencyUomId and the periodTypeId.*/ - if (!parameters.rateCurrencyUomId) { - parameters.rateCurrencyUomId = UtilProperties.getPropertyValue('general.properties', 'currency.uom.id.default', 'USD') - } String serviceName = null; if (parameters.workEffortId && parameters.workEffortId != '_NA_') { // workeffort level @@ -165,29 +162,33 @@ def getRateAmount() { serviceName = 'getRatesAmountsFromEmplPositionTypeId' } if (serviceName) { - logError(parameters.toString() + " " + serviceName.toString()) - Map result = run service: serviceName, with: parameters - parameters.ratesList = result.ratesList - logError(parameters.ratesList.toString()) - result = run service: 'filterRateAmountList', with: parameters - parameters.ratesList = result.filteredRatesList + Map serviceContextMap = dispatcher.getDispatchContext().makeValidContext(serviceName, "IN", parameters) + if (!parameters.rateCurrencyUomId) { + serviceContextMap.rateCurrencyUomId = UtilProperties.getPropertyValue('general.properties', 'currency.uom.id.default', 'USD') + } + Map result = run service: serviceName, with: serviceContextMap + serviceContextMap.ratesList = result.ratesList + result = run service: 'filterRateAmountList', with: serviceContextMap + ratesList = result.filteredRatesList } - if (!parameters.ratesList) { - parameters.ratesList = from('RateAmount').where([rateTypeId: parameters.rateTypeId]).queryList(); - Map result = run service: 'filterRateAmountList', with: parameters - parameters.ratesList = EntityUtil.filterByDate(result.filteredRatesList) + if (!ratesList) { + ratesList = from('RateAmount').where([rateTypeId: parameters.rateTypeId]).queryList(); + Map serviceContextMap = dispatcher.getDispatchContext().makeValidContext("filteredRatesList", "IN", parameters) + serviceContextMap.ratesList = ratesList + Map result = run service: 'filterRateAmountList', with: serviceContextMap + ratesList = EntityUtil.filterByDate(result.filteredRatesList) } - if (!parameters.ratesList) { - rateType = from('RateAmount').where([rateTypeId: parameters.rateTypeId]).queryOne() + if (!ratesList) { + rateType = from('RateAmount').where(parameters).queryOne() logError('A valid rate amount could not be found for rateType: ' + rateType.description) } // We narrowed as much as we could the result, now returning the first record of the list Map result = success() - if (parameters.ratesList) { - rateAmount = parameters.ratesList[0] + if (ratesList) { + rateAmount = ratesList[0] if (! rateAmount.rateAmount) rateAmount.rateAmount = BigDecimal.ZERO result.rateAmount = rateAmount.rateAmount result.periodTypeId = rateAmount.periodTypeId @@ -256,10 +257,11 @@ def filterRateAmountList() { filterMap.rateTypeId = parameters.rateTypeId } List tempRatesFilteredList = EntityUtil.filterByAnd(parameters.ratesList, filterMap) + List ratesList = [] if (tempRatesFilteredList) { - parameters.ratesList = tempRatesFilteredList + ratesList = tempRatesFilteredList } Map result = success() - result.filteredRatesList = parameters.ratesList + result.filteredRatesList = ratesList return result } \ No newline at end of file