taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

commit 4203b8b266cdbf92a066fa350f46a17a3e97956d
parent 5ca8e78d2e1666fef8e52ce9c819be9b5458d724
Author: Bohdan Potuzhnyi <bohdan.potuzhnyi@gmail.com>
Date:   Sat, 24 Oct 2026 12:24:30 +0200

[shared] fix amount logic

Diffstat:
Mmerchant-terminal/src/test/java/net/taler/merchantpos/config/ConfigProductTest.kt | 7++++---
Mtaler-kotlin-android/src/main/java/net/taler/common/Amount.kt | 7++++---
2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/merchant-terminal/src/test/java/net/taler/merchantpos/config/ConfigProductTest.kt b/merchant-terminal/src/test/java/net/taler/merchantpos/config/ConfigProductTest.kt @@ -29,11 +29,12 @@ class ConfigProductTest { categories = listOf(1) ) - assertEquals("2.50 KUDOS", product.displayPrice) + // Plain JVM tests use Amount's pre-Android-11 currency-code formatter. + assertEquals("KUDOS 2.50", product.displayPrice) } @Test - fun `display price uses currency spec symbol`() { + fun `display price uses currency code with spec on legacy formatter`() { val product = ConfigProduct( description = "Coffee", price = Amount("CHF", 2, 50000000).withSpec( @@ -48,7 +49,7 @@ class ConfigProductTest { categories = listOf(1) ) - assertEquals("Fr.2.50", product.displayPrice) + assertEquals("CHF 2.50", product.displayPrice) } @Test diff --git a/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt b/taler-kotlin-android/src/main/java/net/taler/common/Amount.kt @@ -256,7 +256,9 @@ data class Amount( return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { // In newer phones > 2019, do full, locale-based formatting val uLocale = ULocale.forLocale(locale) - val blueprintCurrency = Currency.getInstance(uLocale) + // Language-only app locales (e.g. "en") have no regional currency. + // Use a neutral template; the actual Taler currency symbol replaces it below. + val blueprintCurrency = Currency.getInstance(uLocale) ?: Currency.getInstance("XXX") NumberFormatter.with() .unit(blueprintCurrency) .unitWidth( @@ -344,4 +346,4 @@ fun java.text.DecimalFormatSymbols.toIcu(targetLocale: Locale? = null): DecimalF icuSymbols.monetaryGroupingSeparator = this.monetaryGroupingSeparator } return icuSymbols -} -\ No newline at end of file +}