diff --git a/frappe/public/js/frappe/form/formatters.js b/frappe/public/js/frappe/form/formatters.js index 6e08255e17..61e373ad7a 100644 --- a/frappe/public/js/frappe/form/formatters.js +++ b/frappe/public/js/frappe/form/formatters.js @@ -69,11 +69,11 @@ frappe.form.formatters = { var decimals = parts.length > 1 ? parts[1] : ""; // parts.length == 2 ??? if ( decimals.length < 3 || decimals.length < precision ) { - const fraction = frappe.model.get_value(":Currency", currency, "smallest_currency_fraction_value") || 100; // if not set, minimum 2. - let fraction_parts = cstr(fraction).split("."); + const fraction = frappe.model.get_value(":Currency", currency, "fraction_units") || 100; // if not set, minimum 2. + precision = cstr(fraction).length - 1; - if (fraction_parts.length > 1) { - precision = fraction_parts[1].length; + if (decimals.length < cstr(fraction).length) { + precision = cstr(fraction).length - 1; } } } diff --git a/frappe/utils/data.py b/frappe/utils/data.py index fe198b7f36..04dde4e178 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -524,11 +524,8 @@ def fmt_money(amount, precision=None, currency=None): if precision > 2: if len(decimals) < 3: if currency: - fraction = frappe.db.get_value("Currency", currency, "smallest_currency_fraction_value", cache=True) or 100 - fraction_parts = cstr(fraction).split(".") - - if len(fraction_parts) > 1: - precision = len(fraction_parts[1]) + fraction = frappe.db.get_value("Currency", currency, "fraction_units", cache=True) or 100 + precision = len(cstr(fraction)) - 1 else: precision = number_format_precision elif len(decimals) < precision: