Set the Purchase Order Exchange Rate
The following sample shows how to convert the transaction total on a purchase order to a user-specific currency rather than the currency associated with the vendor.
For the complete tutorial, see Set Purchase Order Exchange Rate.
Important:
This sample uses SuiteScript 2.1. For more information, see SuiteScript 2.1.
/**
* @NApiVersion 2.1
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
define(['N/runtime', 'N/currentRecord', 'N/currency', 'N/log'], (runtime, currentRecord, currency, log) => {
function saveRecord(context) {
try {
const stUserCurrency = runtime.getCurrentScript().getParameter({
name: 'custscript_custom_currency'
});
if (stUserCurrency === " " || stUserCurrency === null || stUserCurrency === undefined) {
throw "Please enter a value for Custom Currency at Home > User Preferences > Custom.";
}
const purchaseOrder = context.currentRecord;
const stTranCurrency = purchaseOrder.getValue({
fieldId: 'currency'
});
const stTranDate = purchaseOrder.getValue({
fieldId: 'trandate'
});
const stTotal = purchaseOrder.getValue({
fieldId: 'total'
});
let flTotalAmount = parseFloat(stTotal);
let exchangeRate = currency.exchangeRate({
source: stTranCurrency,
target: stUserCurrency,
date: stTranDate
});
const flExchangeRate = parseFloat(exchangeRate);
const flAmountInUserCurrency = parseFloat(flTotalAmount * flExchangeRate);
purchaseOrder.setValue({
fieldId: 'custbody_currency_exchange_rate',
value: flExchangeRate
});
purchaseOrder.setValue({
fieldId: 'custbody_currency_po_amount',
value: flAmountInUserCurrency
});
} catch(e) {
if (e.getDetails !== undefined) {
log.error({
title: 'Process Error',
details: JSON.stringify(e)
});
} else {
log.error({
title: 'Unexpected Error',
details: JSON.stringify(e)
});
}
throw (e);
}
return true;
}
return {
saveRecord: saveRecord
};
});