diff --git a/erpnext/patches.txt b/erpnext/patches.txt index bd6d1c3bfe5..d960caf01fe 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -555,5 +555,7 @@ execute:frappe.db.sql("update `tabDesktop Icon` set type = 'module' where module erpnext.patches.v11_0.set_salary_component_properties erpnext.patches.v11_0.set_user_permissions_for_department erpnext.patches.v11_0.hr_ux_cleanups +erpnext.patches.v11_0.skip_user_permission_check_for_department +erpnext.patches.v11_0.set_department_for_doctype erpnext.patches.v11_0.update_allow_transfer_for_manufacture erpnext.patches.v11_0.rename_healthcare_doctype_and_fields diff --git a/erpnext/patches/v11_0/set_department_for_doctypes.py b/erpnext/patches/v11_0/set_department_for_doctypes.py new file mode 100644 index 00000000000..8fc66563961 --- /dev/null +++ b/erpnext/patches/v11_0/set_department_for_doctypes.py @@ -0,0 +1,16 @@ +import frappe + +# Set department value based on employee value + +def execute(): + + doctypes_to_update = ['Appraisal', 'Leave Allocation', 'Expense Claim', 'Instructor', 'Salary Slip', + 'Attendance', 'Training Feedback', 'Training Result Employee', + 'Leave Application', 'Employee Advance', 'Activity Cost', 'Training Event Employee', + 'Timesheet', 'Sales Person', 'Payroll Employee Detail'] + + for doctype in doctypes_to_update: + frappe.db.sql(""" + update `tab%s` dt + set department=(select department from `tabEmployee` where name=dt.employee) + """ % doctype) diff --git a/erpnext/patches/v11_0/skip_user_permission_check_for_department.py b/erpnext/patches/v11_0/skip_user_permission_check_for_department.py new file mode 100644 index 00000000000..123eed5affc --- /dev/null +++ b/erpnext/patches/v11_0/skip_user_permission_check_for_department.py @@ -0,0 +1,28 @@ +import frappe + +# Skips user permission check for doctypes where department link field was recently added +# https://github.com/frappe/erpnext/pull/14121 + +def execute(): + user_permissions = frappe.get_all("User Permission", + filters=[['allow', '=', 'Department']], + fields=['name', 'skip_for_doctype']) + + doctypes_to_skip = [] + + for doctype in ['Appraisal', 'Leave Allocation', 'Expense Claim', 'Instructor', 'Salary Slip', + 'Attendance', 'Training Feedback', 'Training Result Employee', + 'Leave Application', 'Employee Advance', 'Activity Cost', 'Training Event Employee', + 'Timesheet', 'Sales Person', 'Payroll Employee Detail']: + if frappe.db.exists('Custom Field', { 'dt': doctype, 'fieldname': 'department'}): continue + doctypes_to_skip.append(doctype) + + for perm in user_permissions: + skip_for_doctype = perm.get('skip_for_doctype') + + skip_for_doctype = skip_for_doctype.split('\n') + doctypes_to_skip + skip_for_doctype = set(skip_for_doctype) # to remove duplicates + skip_for_doctype = '\n'.join(skip_for_doctype) # convert back to string + + frappe.set_value('User Permission', perm.name, 'skip_for_doctype', skip_for_doctype) +