How to create an exchange rate search for multiple currencies

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 {}
            }
        }

Leave a comment

Your email address will not be published. Required fields are marked *