Merge pull request #13367 from kennethsequeira/get-frmt
feat: add number format parameter in doc.get_formatted
This commit is contained in:
commit
f27d3acc1f
5 changed files with 34 additions and 6 deletions
|
|
@ -874,7 +874,7 @@ class BaseDocument(object):
|
|||
return self._precision[cache_key][fieldname]
|
||||
|
||||
|
||||
def get_formatted(self, fieldname, doc=None, currency=None, absolute_value=False, translated=False):
|
||||
def get_formatted(self, fieldname, doc=None, currency=None, absolute_value=False, translated=False, format=None):
|
||||
from frappe.utils.formatters import format_value
|
||||
|
||||
df = self.meta.get_field(fieldname)
|
||||
|
|
@ -898,7 +898,7 @@ class BaseDocument(object):
|
|||
if (absolute_value or doc.get('absolute_value')) and isinstance(val, (int, float)):
|
||||
val = abs(self.get(fieldname))
|
||||
|
||||
return format_value(val, df=df, doc=doc, currency=currency)
|
||||
return format_value(val, df=df, doc=doc, currency=currency, format=format)
|
||||
|
||||
def is_print_hide(self, fieldname, df=None, for_print=True):
|
||||
"""Returns true if fieldname is to be hidden for print.
|
||||
|
|
|
|||
|
|
@ -227,3 +227,28 @@ class TestDocument(unittest.TestCase):
|
|||
self.assertEqual(frappe.db.get_value("Currency", d.name), d.name)
|
||||
|
||||
frappe.delete_doc_if_exists("Currency", "Frappe Coin", 1)
|
||||
|
||||
def test_get_formatted(self):
|
||||
frappe.get_doc({
|
||||
'doctype': 'DocType',
|
||||
'name': 'Test Formatted',
|
||||
'module': 'Custom',
|
||||
'custom': 1,
|
||||
'fields': [
|
||||
{'label': 'Currency', 'fieldname': 'currency', 'reqd': 1, 'fieldtype': 'Currency'},
|
||||
]
|
||||
}).insert()
|
||||
|
||||
frappe.delete_doc_if_exists("Currency", "INR", 1)
|
||||
|
||||
d = frappe.get_doc({
|
||||
'doctype': 'Currency',
|
||||
'currency_name': 'INR',
|
||||
'symbol': '₹',
|
||||
}).insert()
|
||||
|
||||
d = frappe.get_doc({
|
||||
'doctype': 'Test Formatted',
|
||||
'currency': 100000
|
||||
})
|
||||
self.assertEquals(d.get_formatted('currency', currency='INR', format="#,###.##"), '₹ 100,000.00')
|
||||
|
|
@ -92,6 +92,9 @@ class TestFmtMoney(unittest.TestCase):
|
|||
self.assertEqual(fmt_money(1000.456), "1.000,456")
|
||||
frappe.db.set_default("currency_precision", "")
|
||||
|
||||
def test_custom_fmt_money_format(self):
|
||||
self.assertEqual(fmt_money(100000, format="#,###.##"), '100,000.00')
|
||||
|
||||
if __name__=="__main__":
|
||||
frappe.connect()
|
||||
unittest.main()
|
||||
|
|
@ -17,9 +17,9 @@ class TestFormatter(unittest.TestCase):
|
|||
frappe.db.set_default("currency", 'INR')
|
||||
|
||||
# if currency field is not passed then default currency should be used.
|
||||
self.assertEqual(format(100, df, doc), '₹ 100.00')
|
||||
self.assertEqual(format(100000, df, doc, format="#,###.##"), '₹ 100,000.00')
|
||||
|
||||
doc.currency = 'USD'
|
||||
self.assertEqual(format(100, df, doc), "$ 100.00")
|
||||
self.assertEqual(format(100000, df, doc, format="#,###.##"), "$ 100,000.00")
|
||||
|
||||
frappe.db.set_default("currency", None)
|
||||
|
|
@ -7,7 +7,7 @@ from frappe.utils import formatdate, fmt_money, flt, cstr, cint, format_datetime
|
|||
from frappe.model.meta import get_field_currency, get_field_precision
|
||||
import re
|
||||
|
||||
def format_value(value, df=None, doc=None, currency=None, translated=False):
|
||||
def format_value(value, df=None, doc=None, currency=None, translated=False, format=None):
|
||||
'''Format value based on given fieldtype, document reference, currency reference.
|
||||
If docfield info (df) is not given, it will try and guess based on the datatype of the value'''
|
||||
if isinstance(df, str):
|
||||
|
|
@ -56,7 +56,7 @@ def format_value(value, df=None, doc=None, currency=None, translated=False):
|
|||
elif df.get("fieldtype") == "Currency":
|
||||
default_currency = frappe.db.get_default("currency")
|
||||
currency = currency or get_field_currency(df, doc) or default_currency
|
||||
return fmt_money(value, precision=get_field_precision(df, doc), currency=currency)
|
||||
return fmt_money(value, precision=get_field_precision(df, doc), currency=currency, format=format)
|
||||
|
||||
elif df.get("fieldtype") == "Float":
|
||||
precision = get_field_precision(df, doc)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue