Scenario
How to get the exchange rates separately if the transaction currencies are different and the base currency is same in search
function getExchangeRate(sourceCurrency, baseCurrency) {
try {
log.debug("sourceCurrency", sourceCurrency)
log.debug("baseCurrency..", baseCurrency)
let exchangeRateValue;
let currencyrateSearchObj = search.create({
type: "currencyrate",
filters:
[
["basecurrency", "anyof", sourceCurrency],
"AND",
["transactioncurrency", "anyof", baseCurrency]
],
columns:
[
search.createColumn({
name: "exchangerate",
summary: "MAX",
label: "Exchange Rate"
}).setWhenOrderedBy({ name: 'effectivedate', join: 'currencyrate' }),
search.createColumn({
name: "formulatext",
summary: "GROUP",
formula: "TO_CHAR({transactioncurrency})",
label: "Formula (Text)"
})
]
});
let searchResultCount = currencyrateSearchObj.runPaged().count;
let exchangerateObject = {}
if (searchResultCount > 0) {
currencyrateSearchObj.run().each(function (result) {
let dataObj = {}
let transactionCurrency = result.getValue({
name: "formulatext",
summary: "GROUP",
formula: "TO_CHAR({transactioncurrency})",
label: "Formula (Text)"
})
exchangeRateValue = result.getValue({
name: "exchangerate",
summary: "MAX",
label: "Exchange Rate"
});
exchangerateObject[transactionCurrency] = exchangeRateValue
return true;
});
return exchangerateObject;
}
else {
return {}
}
}
catch (e) {
log.error("Error@getExchangeRate", e);
return {}
}
}