diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py index 8aaae5956b0..9c55af067f0 100755 --- a/erpnext/hr/doctype/employee/employee.py +++ b/erpnext/hr/doctype/employee/employee.py @@ -10,7 +10,7 @@ from frappe.permissions import ( remove_user_permission, set_user_permission_if_allowed, ) -from frappe.utils import add_years, cstr, getdate, today, validate_email_address +from frappe.utils import add_days, add_years, cstr, getdate, today, validate_email_address from frappe.utils.nestedset import NestedSet from erpnext.utilities.transaction_base import delete_events @@ -64,6 +64,8 @@ class Employee(NestedSet): if existing_user_id: remove_user_permission("Employee", self.name, existing_user_id) + self.update_to_date_in_work_history() + def after_rename(self, old, new, merge): self.db_set("employee", new) @@ -166,6 +168,18 @@ class Employee(NestedSet): user.flags.ignore_permissions = True user.add_roles("Expense Approver") + def update_to_date_in_work_history(self): + if not self.internal_work_history: + return + + for idx, row in enumerate(self.internal_work_history): + if not row.from_date or idx == 0: + continue + + self.internal_work_history[idx - 1].to_date = add_days(row.from_date, -1) + + self.internal_work_history[-1].to_date = None + def validate_date(self): if self.date_of_birth and getdate(self.date_of_birth) > getdate(today()): throw(_("Date of Birth cannot be greater than today.")) diff --git a/erpnext/hr/doctype/employee_transfer/test_employee_transfer.py b/erpnext/hr/doctype/employee_transfer/test_employee_transfer.py index 37a190a1627..c6bd7d23a76 100644 --- a/erpnext/hr/doctype/employee_transfer/test_employee_transfer.py +++ b/erpnext/hr/doctype/employee_transfer/test_employee_transfer.py @@ -80,12 +80,14 @@ class TestEmployeeTransfer(unittest.TestCase): department = ["Accounts - TC", "Management - TC"] designation = ["Accountant", "Manager"] dt = [getdate("01-10-2021"), getdate()] + to_date = [add_days(dt[1], -1), None] employee = frappe.get_doc("Employee", employee) for data in employee.internal_work_history: self.assertEqual(data.department, department[count]) self.assertEqual(data.designation, designation[count]) self.assertEqual(data.from_date, dt[count]) + self.assertEqual(data.to_date, to_date[count]) count = count + 1 transfer.cancel() @@ -95,6 +97,7 @@ class TestEmployeeTransfer(unittest.TestCase): self.assertEqual(data.designation, designation[0]) self.assertEqual(data.department, department[0]) self.assertEqual(data.from_date, dt[0]) + self.assertEqual(data.to_date, None) def create_company(): diff --git a/erpnext/hr/utils.py b/erpnext/hr/utils.py index 9707b81089b..b80226b224c 100644 --- a/erpnext/hr/utils.py +++ b/erpnext/hr/utils.py @@ -224,6 +224,7 @@ def delete_employee_work_history(details, employee, date): filters["from_date"] = date if filters: frappe.db.delete("Employee Internal Work History", filters) + employee.reload() @frappe.whitelist()