fix: Consider fraction units for precision

This commit is contained in:
Deepesh Garg 2020-06-10 14:36:31 +05:30
parent cae267723f
commit db5888e2f9
2 changed files with 6 additions and 9 deletions

View file

@ -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;
}
}
}

View file

@ -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: