From d066f0b94d8679ebdeb9a9752c44e3cf39491d5e Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Mon, 24 May 2021 10:54:43 +0200 Subject: [PATCH] Enable displayable unit price for price with comma as decimal separator Retrieve the current decimal separator used to display price (`I18n.toCurrency()`), and check if number is formatted with only if this is `,`. If so, remplace comma by point, to pass the check `!isNaN`, and format unit price --- .../admin/products/services/unit_prices.js.coffee | 5 +++-- .../admin/utils/filters/unlocalize_currency.js.coffee | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 app/assets/javascripts/admin/utils/filters/unlocalize_currency.js.coffee diff --git a/app/assets/javascripts/admin/products/services/unit_prices.js.coffee b/app/assets/javascripts/admin/products/services/unit_prices.js.coffee index 183c1576c4..a5cb4d67de 100644 --- a/app/assets/javascripts/admin/products/services/unit_prices.js.coffee +++ b/app/assets/javascripts/admin/products/services/unit_prices.js.coffee @@ -1,6 +1,7 @@ -angular.module("admin.products").factory "UnitPrices", (VariantUnitManager, localizeCurrencyFilter) -> +angular.module("admin.products").factory "UnitPrices", (VariantUnitManager, localizeCurrencyFilter, unlocalizeCurrencyFilter) -> class UnitPrices @displayableUnitPrice: (price, scale, unit_type, unit_value, variant_unit_name) -> + price = unlocalizeCurrencyFilter(price) if price && !isNaN(price) && unit_type && unit_value value = localizeCurrencyFilter(UnitPrices.price(price, scale, unit_type, unit_value, variant_unit_name)) unit = UnitPrices.unit(scale, unit_type, variant_unit_name) @@ -29,4 +30,4 @@ angular.module("admin.products").factory "UnitPrices", (VariantUnitManager, loca else if unit_type == "weight" "kg" else if unit_type == "volume" - "L" \ No newline at end of file + "L" diff --git a/app/assets/javascripts/admin/utils/filters/unlocalize_currency.js.coffee b/app/assets/javascripts/admin/utils/filters/unlocalize_currency.js.coffee new file mode 100644 index 0000000000..7a2ed5cd86 --- /dev/null +++ b/app/assets/javascripts/admin/utils/filters/unlocalize_currency.js.coffee @@ -0,0 +1,8 @@ +angular.module("admin.utils").filter "unlocalizeCurrency", ()-> + # Convert string to number using injected currency configuration. + (price) -> + # used decimal separator from currency configuration + decimal_separator = I18n.toCurrency(.1, {precision: 1, unit: ''}).substring(1,2) + if (decimal_separator == ",") + price = price.replace(",", ".") + return parseFloat(price)