304 views

Description

When setting an instance in single currency mode, the GlideLocale property (defined below) should be set to match the 'single_currency.code' property.

In the system properties System properties > System Localization:
- The single currency mode uses the single_currency.code input to display all currencies.
- All the calculations, however, are based on the GlideLocale (glide.system.locale property).
- GlideLocale defaults to the input field on that same page which specifies: "The value of this property determines the system's default currency into which all prices are automatically converted before other sums or conversions are performed." This can be overwritten for any user by going to that user profile and defining a country code and a language that match the system by default. If neither the system properties nor the user profile are defining a locale (if they are left blank), then the system will use the computer/browser settings.
- Changing the GlideLocale setting in the system properties after an instance goes to production will likely cause problems. All calculations up to that change will be based on the old setting and all the future calculations will be based on the new settings, causing potential problems when using old records.

If the system is in single currency mode then the behaviour is correct only if everything is consistent. Three components are involved: the single_currency.code and glide.system.locale properties, as well as the country and language of the user record. If any pair does not match, there is a very high risk of miscalculation problems.

Steps to Reproduce

 

  1. Correct behaviour
    1. Create a simple table, mystore, with a couple of custom fields: Name (u_name) String and Value (u_value) Currency.
    2. In the list view for the test table, right-click on the header in the Value column. Navigate to Personalize > List Calculation and set it to Total Calculation (for the Value field).
    3. Navigate to sys_properties.list, filter on the property name for *currency, and set the instance to single currency mode. Leave the currency as USD.
    4. Navigate to mystore.list, click New, add a record with the name test and a value and cost of 10, and click Submit.
    5. Click New again, add a second record with the name test2 and a value and cost of 10, and click Submit.
    6. Note the total is $20.00, as expected. Delete the records.

      NOTE: The glide.system.locale was left blank, so it used the computer settings which are US-based so everything was matching.

  2. Incorrect behaviour when updating single_currency.code only:
    1. Activate the BRL currency from the currencies menu in the navigation bar. Then set the single_currency.code system property to BRL.
    2. Navigate to test.list, click New, add a record with the name test and a value and cost of 10, and click Submit.
    3. Click New again, add a second record with the name test2 and a value and cost of 10, and click Submit.
    4. Note the total is BRL20.02, not BRL20.00 as expected.

Workaround

This is by design and expected behaviour.

For new instances that are being set up for production in single currency mode, make sure to set the property glide.system.locale to the appropriate locale, matching the single_currency.code property, as this is what decides what currency is used to store data (based off the JVM Locale - Currency mapping). Instances already deployed in production should not be altered in these properties.

The side effect of setting the locale to determining currency is that this will change the formatting for the instance users. In priority order, these factors determine the locale for a user session: users country/language, system locale, browser. So whenever the first two are changed in the instance, expect side effects on number formatting.
 
Single currency mode involves two properties: glide.i18n.single_currency and glide.i18n.single_currency.code. The first is a boolean value which indicates that the single currency mode needs to be turned on and the second is the actual currency code. Without the first property being set to true, the second property has no effect.
 
 

Related Problem: PRB602370

Seen In

Berlin Patch 11
Calgary Patch 2
CCA 6
Eureka Patch 10
Eureka Patch 13 Hot Fix 2
Eureka Patch 8
Fuji Patch 7 Hot Fix 5
Helsinki Patch 3

Associated Community Threads

There is no data to report.

Article Information

Last Updated:2018-03-10 01:38:12
Published:2018-02-06