Fixes in patches for migration
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index 4e0c268..01ab91d 100644
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -6,7 +6,7 @@
from frappe.utils import getdate, validate_email_add, cint
from frappe.model.naming import make_autoname
-from frappe import throw, _
+from frappe import throw, _, msgprint
import frappe.permissions
from frappe.model.document import Document
from frappe.model.mapper import get_mapped_doc
@@ -144,12 +144,12 @@
throw(_("User {0} is already assigned to Employee {1}").format(self.user_id, employee[0]))
def validate_employee_leave_approver(self):
- from frappe.utils.user import User
from erpnext.hr.doctype.leave_application.leave_application import InvalidLeaveApproverError
- for l in self.get("employee_leave_approvers"):
- if "Leave Approver" not in User(l.leave_approver).get_roles():
- throw(_("{0} is not a valid Leave Approver").format(l.leave_approver), InvalidLeaveApproverError)
+ for l in self.get("employee_leave_approvers")[:]:
+ if "Leave Approver" not in frappe.get_roles(l.leave_approver):
+ self.get("employee_leave_approvers").remove(l)
+ msgprint(_("{0} is not a valid Leave Approver. Removing row #{1}.").format(l.leave_approver, l.idx))
def update_dob_event(self):
if self.status == "Active" and self.date_of_birth \
diff --git a/erpnext/patches/v4_0/apply_user_permissions.py b/erpnext/patches/v4_0/apply_user_permissions.py
index e32e3e1..36c7781 100644
--- a/erpnext/patches/v4_0/apply_user_permissions.py
+++ b/erpnext/patches/v4_0/apply_user_permissions.py
@@ -25,7 +25,7 @@
frappe.clear_cache()
# save employees to run on_update events
- for employee in frappe.db.sql_list("""select name from `tabEmployee`"""):
+ for employee in frappe.db.sql_list("""select name from `tabEmployee` where docstatus < 2"""):
try:
frappe.get_doc("Employee", employee).save()
except EmployeeUserDisabledError:
diff --git a/erpnext/patches/v4_0/remove_employee_role_if_no_employee.py b/erpnext/patches/v4_0/remove_employee_role_if_no_employee.py
index 76ec1a7..c1f3689 100644
--- a/erpnext/patches/v4_0/remove_employee_role_if_no_employee.py
+++ b/erpnext/patches/v4_0/remove_employee_role_if_no_employee.py
@@ -9,7 +9,10 @@
for user in frappe.db.sql_list("select distinct parent from `tabUserRole` where role='Employee'"):
# if employee record does not exists, remove employee role!
if not frappe.db.get_value("Employee", {"user_id": user}):
- user = frappe.get_doc("User", user)
- for role in user.get("user_roles", {"role": "Employee"}):
- user.get("user_roles").remove(role)
- user.save()
+ try:
+ user = frappe.get_doc("User", user)
+ for role in user.get("user_roles", {"role": "Employee"}):
+ user.get("user_roles").remove(role)
+ user.save()
+ except frappe.DoesNotExistError:
+ pass