Currency values in scripts

You can use currency fields in scripts.

These methods are available on GlideElement objects.

To display currency values, use the display APIs (getDisplayValue()). To work with currency values in any way other than display, use the APIs that return/accept unformatted numbers.

Note: Do not use the getDisplayValue() methods and then process the string to remove formatting information before performing calculations on the value.
Methods such as getValue() and getCurrencyValue() return unformatted numbers as strings. The floating point value can be obtained by using the JavaScript function parseFloat(). The resulting value can be used to perform calculations. The currency associated with these values can be obtained by the APIs that return the currency code. You can also use the getCurrencyCode() methods to determine a field's currency.
var rate = parseFloat(current.base_rate);
var currencyCode = current.base_rate.getCurrencyCode();
Use the setValue() method to set the value of a currency field. If the currency is the user’s session currency, use a plain number (either floating point number of a string containing it), otherwise prefix the value with the 3-letter ISO currency code.
var totalCost = rate*current.hourly_rate;
currency.total_cost.setValue(currencyCode + ";" + totalCost);

When you use GlideAggregate on currency or price fields, you are working with the reference currency value. Be sure to convert the aggregate values to the user's session currency for display. Because the conversion rate between the currency or price field’s value (what is displayed) and its reference currency value (used for the aggregation) might have changed, the result may not be what the user expects.

When a record containing a currency value is deleted, the platform deletes any associated currency records.
Note: Do not use deleteMultiple() on tables with currency fields. Always delete each record individually.
Currency values contain four decimal places.
  • APIs that return values such as getValue() return up to four decimal places. Trailing zeros are always removed.
  • APIs that return display values such as getDisplayValue() have at least two decimal places and up to four decimal places.
  • GlideAggregate returns four decimal places.
You can have the system use two decimal places. See Change currency decimal places for how to change the number of decimal places used by the system. When set to two decimal places, numeric values returned by the API contain two decimal places. Although currency conversion rates may have more decimal places, currency fields store only two decimal places. APIs that accept numeric values round decimal places to two places.
  • APIs that return values such as getValue() return up to two decimal places. The trailing zeroes are removed for values read from the database, but if a value such as 00 is set later, 1.00 can be returned. The number of trailing zeros returned is not consistent.
  • APIs that return display values such as getDisplayValue() contain up to two decimal places. This could sometimes return two places even for values such as 7.10, but could remove trailing zeros at other times. The number of trailing zeros returned is not consistent.
  • GlideAggregate returns two decimal places.
In the following table, the example values use a currency value of 21345.67 in Japanese yen (1563.72 in Euros and 1152.48 in US dollars) with the user’s locale set to German (de.DE) and reference currency set to USD.
Table 1. Methods to access currency fields
Method name Description Example
getValue() Returns the currency value in the user's session currency as an unformatted number. 1563.72
getReferenceValue() Returns the currency value in the reference currency as an unformatted number. 1152.48
getSessionValue() Returns the currency value in the user's session currency as and unformatted number. 1563.72
getCurrencyValue() Returns the currency value as entered as an unformatted number.
Note: This might not be the session or reference currency.
21345.67
getDisplayValue() Returns the currency value in the user's session currency formatted in the user's locale with a currency symbol. €1.563,72
getSessionDisplayValue() Returns the currency value in the user's session currency formatted in the user's locale with a currency symbol. €1.563,72
getReferenceDisplayValue() Returns the currency value in the reference currency formatted in the user's locale with a currency symbol. $1,152.48
getCurrencyDisplayValue() Returns the currency value as entered formatted in the user's locale with a currency symbol. ¥21.345,67
getCurrencyString() Returns the currency value as entered as an unformatted number prefixed by the 3-letter ISO currency code separated by a semicolon. JPY;21345.67
getCurrencyCode() Returns the 3-letter ISO currency code for the currency value as entered. JPY
getSessionCurrencyCode() Returns the 3-letter ISO currency code for the user's session currency. EUR
getReferenceCurrencyCode() Returns the 3-letter ISO currency code for the reference currency. USD
setValue() Sets the currency value as:
  • An unformatted number taken as a value in the user's session currency.
  • An unformatted number prefixed by a 3-letter currency code separated by a semicolon.
4369.21 or JPY;4369.21
setDisplayValue() Sets the currency value as:
  • A number formatted in the user's locale that is taken as a value in the user's session currency.
  • A number formatted in the user's locale prefixed by a 3-letter currency code separated by a semicolon.
4369.21 or JPY;4369.21