fix: Pass zero precision as string

This commit is contained in:
Deepesh Garg 2020-03-17 21:20:44 +05:30
parent 57bac6fff8
commit f46b3d89a9
3 changed files with 12 additions and 25 deletions

View file

@ -544,17 +544,14 @@ def get_field_precision(df, doc=None, currency=None):
"""get precision based on DocField options and fieldvalue in doc"""
from frappe.utils import get_number_format_info
if cint(df.precision):
if df.precision:
precision = cint(df.precision)
elif df.fieldtype == "Currency":
if df.precision and cint(df.precision) == 0:
precision = 0
else:
precision = cint(frappe.db.get_default("currency_precision"))
if not precision:
number_format = frappe.db.get_default("number_format") or "#,###.##"
decimal_str, comma_str, precision = get_number_format_info(number_format)
precision = cint(frappe.db.get_default("currency_precision"))
if not precision:
number_format = frappe.db.get_default("number_format") or "#,###.##"
decimal_str, comma_str, precision = get_number_format_info(number_format)
else:
precision = cint(frappe.db.get_default("float_precision")) or 3

View file

@ -61,13 +61,7 @@ frappe.form.formatters = {
},
Currency: function (value, docfield, options, doc) {
var currency = frappe.meta.get_field_currency(docfield, doc);
var precision;
if (docfield.precision && cint(docfield.precision) === 0) {
precision = 0;
} else {
precision = docfield.precision || cint(frappe.boot.sysdefaults.currency_precision) || 2;
}
var precision = docfield.precision || cint(frappe.boot.sysdefaults.currency_precision) || 2;
// If you change anything below, it's going to hurt a company in UAE, a bit.
if (precision > 2) {

View file

@ -253,18 +253,14 @@ $.extend(frappe.meta, {
get_field_precision: function(df, doc) {
var precision = null;
if (df && cint(df.precision)) {
if (df && df.precision) {
precision = cint(df.precision);
} else if(df && df.fieldtype === "Currency") {
if (df.precision && cint(df.precision) === 0) {
precision = 0;
} else {
precision = cint(frappe.defaults.get_default("currency_precision"));
if(!precision) {
var number_format = get_number_format();
var number_format_info = get_number_format_info(number_format);
precision = number_format_info.precision;
}
precision = cint(frappe.defaults.get_default("currency_precision"));
if(!precision) {
var number_format = get_number_format();
var number_format_info = get_number_format_info(number_format);
precision = number_format_info.precision;
}
} else {
precision = cint(frappe.defaults.get_default("float_precision")) || 3;