Default currency values in scripts
Summarize
Summary of Default currency values in scripts
ServiceNow allows you to work with currency fields in scripts using various GlideElement APIs. These APIs enable you to retrieve, display, convert, and set currency values accurately, respecting user session currency, reference currency, and locale-specific formatting. Proper handling of currency values avoids calculation errors and ensures consistent presentation across different currencies and locales.
Show less
Key Features
- Getting Currency Values: Use methods like
getValue(),getCurrencyValue(), andgetReferenceValue()to retrieve unformatted numeric currency values for calculations. UseparseFloat()to convert string values into floating-point numbers for arithmetic operations. - Displaying Currency Values: Use
getDisplayValue()and related methods to get locale-formatted currency strings with symbols, suitable for UI display. - Currency Codes: Retrieve currency codes with
getCurrencyCode(),getSessionCurrencyCode(), andgetReferenceCurrencyCode()to identify the currency context of values. - Setting Currency Values: Use
setValue()to assign currency amounts. Input can be a plain number in the user's session currency or prefixed by a 3-letter ISO currency code plus a semicolon for other currencies. - Aggregation and Conversion: When using
GlideAggregateon currency fields, values are in reference currency and should be converted to session currency before display, as exchange rates may vary. - Decimal Precision: Currency values store and return up to four decimal places by default, but you can configure the system to use two decimal places for storage and API returns. Display values may inconsistently show trailing zeros due to locale formatting.
- Record Deletion: Deleting records with currency values removes associated currency records. Avoid using
deleteMultiple()on tables containing currency fields; delete records individually to ensure proper cleanup.
Practical Usage Tips
- Do not perform calculations on formatted strings returned by
getDisplayValue(); instead, use unformatted numeric values. - Always convert aggregated currency values from reference currency to the user’s session currency before displaying to ensure accuracy.
- Prefix currency values with ISO currency codes when setting values for currencies different from the user’s session currency.
- Be mindful of decimal place settings and rounding behavior, especially if your implementation requires consistent precision.
Key Outcomes
By following these guidelines and using the appropriate GlideElement methods, ServiceNow customers can reliably manage multi-currency data in scripting contexts. This ensures accurate calculations, proper localization of currency displays, and consistent data integrity when working with currency fields across different user sessions and currency configurations.
You can use currency fields in scripts.
These methods are available on GlideElement objects.
To display currency values, use the getDisplayValue() display API. To work with currency values in any way other than display, use the APIs that return/accept unformatted numbers.
var rate = parseFloat(current.base_rate);
var currencyCode = current.base_rate.getCurrencyCode();
var totalCost = rate*current.hourly_rate;
current.total_cost.setValue(currencyCode + ";" + totalCost);
You are working with the reference currency value when you use GlideAggregate on currency or price fields. Be sure to convert the aggregate values to the user's session currency for display. The resulting value may not be what you expect. The conversion rate used for the currency or price field value, and for its reference currency, which is used for the aggregation, may have changed.
- 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.
- 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. It 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.
| 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. | 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:
|
4369.21 or JPY 4369.21 |
| setDisplayValue() | Sets the currency value as:
|
4369.21 or JPY 4369.21 |