Default currency values in scripts
Summarize
Summary of Default Currency Values in Scripts
This guide explains how to utilize currency fields in scripts within ServiceNow, highlighting the methods available on GlideElement objects for handling currency values. It emphasizes the importance of using the correct APIs for displaying and processing currency values to ensure accurate calculations and data representation.
Show less
Key Features
- Displaying Currency Values: Use
getDisplayValue()to show formatted currency values. For calculations, usegetValue()orgetCurrencyValue()to retrieve unformatted numbers. - Setting Currency Values: The
setValue()method allows you to set currency fields with either plain numbers or prefixed with the 3-letter ISO currency code depending on the user's session currency. - Handling Decimal Places: Currency values can maintain up to four decimal places, but display values return a maximum of two decimal places, with trailing zeros sometimes removed for consistency.
- Currency Conversion: When using
GlideAggregate, it's essential to convert values to the user's session currency to avoid discrepancies due to varying conversion rates. - Record Deletion: When deleting records with currency values, delete them individually to ensure associated currency records are also removed.
Key Outcomes
By following these guidelines, ServiceNow customers can effectively manage currency fields in their applications. This enables accurate financial calculations, ensures proper data formatting in user interfaces, and maintains data integrity during record deletions. Customers can expect clearer financial reporting and easier handling of multi-currency transactions within their ServiceNow platforms.
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 |