From e40999c8792c542951d6292df0a547cbd1555cb7 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Thu, 11 Jun 2026 20:58:35 +0530 Subject: [PATCH] fix: sync employee user status after save --- erpnext/setup/doctype/employee/employee.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/erpnext/setup/doctype/employee/employee.py b/erpnext/setup/doctype/employee/employee.py index 4640e909a5d..7f6b78f4cb0 100755 --- a/erpnext/setup/doctype/employee/employee.py +++ b/erpnext/setup/doctype/employee/employee.py @@ -64,6 +64,9 @@ class Employee(NestedSet): ) def validate_user_details(self): + if not self.user_id: + return + self.validate_for_enabled_user_id() self.validate_duplicate_user_id() @@ -76,6 +79,7 @@ class Employee(NestedSet): if self.user_id: self.update_user() self.update_user_permissions() + self.update_user_status() self.reset_employee_emails_cache() def update_user_permissions(self): @@ -181,10 +185,15 @@ class Employee(NestedSet): if not frappe.db.exists("User", self.user_id): frappe.throw(_("User {0} does not exist").format(self.user_id)) + def update_user_status(self): + if not self.user_id: + return + user = frappe.get_doc("User", self.user_id) enabled = user.enabled if self.status != "Active" and enabled or self.status == "Active" and enabled == 0: user.enabled = not enabled + # Keep linked User status in sync from the Employee lifecycle and record the audit log. user.save(ignore_permissions=True) def validate_duplicate_user_id(self):