From 4e6ea5b554b482b9639a3adcebae9c67419105b2 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Mon, 4 Jul 2022 16:27:57 +0530 Subject: [PATCH] fix: handle `None` as amount in fmt_money (#17395) --- frappe/tests/test_fmt_money.py | 1 + frappe/utils/data.py | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/frappe/tests/test_fmt_money.py b/frappe/tests/test_fmt_money.py index c27c13ad3b..275b1065f2 100644 --- a/frappe/tests/test_fmt_money.py +++ b/frappe/tests/test_fmt_money.py @@ -95,6 +95,7 @@ class TestFmtMoney(unittest.TestCase): def test_custom_fmt_money_format(self): self.assertEqual(fmt_money(100000, format="#,###.##"), "100,000.00") + self.assertEqual(fmt_money(None, format="#,###.##"), "0.00") if __name__ == "__main__": diff --git a/frappe/utils/data.py b/frappe/utils/data.py index 7f590ed5e6..92b390510e 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -1111,7 +1111,7 @@ def parse_val(v): def fmt_money( - amount: str | float | int, + amount: str | float | int | None, precision: int | None = None, currency: str | None = None, format: str | None = None, @@ -1135,6 +1135,9 @@ def fmt_money( if isinstance(amount, str): amount = flt(amount, precision) + if amount is None: + amount = 0 + if decimal_str: decimals_after = str(round(amount % 1, precision)) parts = decimals_after.split(".")