diff --git a/erpnext/setup/doctype/employee/employee.py b/erpnext/setup/doctype/employee/employee.py index bc5b5156f2d..e6a5c104b07 100755 --- a/erpnext/setup/doctype/employee/employee.py +++ b/erpnext/setup/doctype/employee/employee.py @@ -85,20 +85,21 @@ class Employee(NestedSet): self.reset_employee_emails_cache() def update_user_permissions(self): - if not self.create_user_permission: - return - if not has_permission("User Permission", ptype="write", print_logs=False): + if not has_permission("User Permission", ptype="write", print_logs=False) or ( + not self.has_value_changed("user_id") and not self.has_value_changed("create_user_permission") + ): return employee_user_permission_exists = frappe.db.exists( "User Permission", {"allow": "Employee", "for_value": self.name, "user": self.user_id} ) - if employee_user_permission_exists: - return - - add_user_permission("Employee", self.name, self.user_id) - add_user_permission("Company", self.company, self.user_id) + if employee_user_permission_exists and not self.create_user_permission: + remove_user_permission("Employee", self.name, self.user_id) + remove_user_permission("Company", self.company, self.user_id) + elif not employee_user_permission_exists and self.create_user_permission: + add_user_permission("Employee", self.name, self.user_id) + add_user_permission("Company", self.company, self.user_id) def update_user(self): # add employee role if missing