mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-23 21:22:42 +01:00
fix: format currency/float as per number format in work history (#34545)
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
|
from frappe.tests.utils import change_settings
|
||||||
from frappe.utils import add_days, getdate
|
from frappe.utils import add_days, getdate
|
||||||
|
|
||||||
from erpnext.hr.doctype.employee.test_employee import make_employee
|
from erpnext.hr.doctype.employee.test_employee import make_employee
|
||||||
@@ -99,6 +100,16 @@ class TestEmployeeTransfer(unittest.TestCase):
|
|||||||
self.assertEqual(data.from_date, dt[0])
|
self.assertEqual(data.from_date, dt[0])
|
||||||
self.assertEqual(data.to_date, None)
|
self.assertEqual(data.to_date, None)
|
||||||
|
|
||||||
|
@change_settings("System Settings", {"number_format": "#.###,##"})
|
||||||
|
def test_data_formatting_in_history(self):
|
||||||
|
from erpnext.hr.utils import get_formatted_value
|
||||||
|
|
||||||
|
value = get_formatted_value("12.500,00", "Float")
|
||||||
|
self.assertEqual(value, 12500.0)
|
||||||
|
|
||||||
|
value = get_formatted_value("12.500,00", "Currency")
|
||||||
|
self.assertEqual(value, 12500.0)
|
||||||
|
|
||||||
|
|
||||||
def create_company():
|
def create_company():
|
||||||
if not frappe.db.exists("Company", "Test Company"):
|
if not frappe.db.exists("Company", "Test Company"):
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ from frappe.utils import (
|
|||||||
formatdate,
|
formatdate,
|
||||||
get_datetime,
|
get_datetime,
|
||||||
get_link_to_form,
|
get_link_to_form,
|
||||||
|
get_number_format_info,
|
||||||
getdate,
|
getdate,
|
||||||
nowdate,
|
nowdate,
|
||||||
today,
|
today,
|
||||||
@@ -185,15 +186,11 @@ def update_employee_work_history(employee, details, date=None, cancel=False):
|
|||||||
field = frappe.get_meta("Employee").get_field(item.fieldname)
|
field = frappe.get_meta("Employee").get_field(item.fieldname)
|
||||||
if not field:
|
if not field:
|
||||||
continue
|
continue
|
||||||
fieldtype = field.fieldtype
|
|
||||||
new_data = item.new if not cancel else item.current
|
new_value = item.new if not cancel else item.current
|
||||||
if fieldtype == "Date" and new_data:
|
new_value = get_formatted_value(new_value, field.fieldtype)
|
||||||
new_data = getdate(new_data)
|
setattr(employee, item.fieldname, new_value)
|
||||||
elif fieldtype == "Datetime" and new_data:
|
|
||||||
new_data = get_datetime(new_data)
|
|
||||||
elif fieldtype in ["Currency", "Float"] and new_data:
|
|
||||||
new_data = flt(new_data)
|
|
||||||
setattr(employee, item.fieldname, new_data)
|
|
||||||
if item.fieldname in ["department", "designation", "branch"]:
|
if item.fieldname in ["department", "designation", "branch"]:
|
||||||
internal_work_history[item.fieldname] = item.new
|
internal_work_history[item.fieldname] = item.new
|
||||||
|
|
||||||
@@ -207,6 +204,34 @@ def update_employee_work_history(employee, details, date=None, cancel=False):
|
|||||||
return employee
|
return employee
|
||||||
|
|
||||||
|
|
||||||
|
def get_formatted_value(value, fieldtype):
|
||||||
|
"""
|
||||||
|
Since the fields in Internal Work History table are `Data` fields
|
||||||
|
format them as per relevant field types
|
||||||
|
"""
|
||||||
|
if not value:
|
||||||
|
return
|
||||||
|
|
||||||
|
if fieldtype == "Date":
|
||||||
|
value = getdate(value)
|
||||||
|
elif fieldtype == "Datetime":
|
||||||
|
value = get_datetime(value)
|
||||||
|
elif fieldtype in ["Currency", "Float"]:
|
||||||
|
# in case of currency/float, the value might be in user's prefered number format
|
||||||
|
# instead of machine readable format. Convert it into a machine readable format
|
||||||
|
number_format = frappe.db.get_default("number_format") or "#,###.##"
|
||||||
|
decimal_str, comma_str, _number_format_precision = get_number_format_info(number_format)
|
||||||
|
|
||||||
|
if comma_str == "." and decimal_str == ",":
|
||||||
|
value = value.replace(",", "#$")
|
||||||
|
value = value.replace(".", ",")
|
||||||
|
value = value.replace("#$", ".")
|
||||||
|
|
||||||
|
value = flt(value)
|
||||||
|
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
def delete_employee_work_history(details, employee, date):
|
def delete_employee_work_history(details, employee, date):
|
||||||
filters = {}
|
filters = {}
|
||||||
for d in details:
|
for d in details:
|
||||||
|
|||||||
Reference in New Issue
Block a user