patch: Delete HR/Payroll doctypes
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 5a98463..892e89d 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -374,3 +374,4 @@
execute:frappe.delete_doc("DocType", "Naming Series")
erpnext.patches.v13_0.set_payroll_entry_status
erpnext.patches.v13_0.job_card_status_on_hold
+erpnext.patches.v14_0.delete_hr_payroll_doctypes
\ No newline at end of file
diff --git a/erpnext/patches/v14_0/delete_hr_payroll_doctypes.py b/erpnext/patches/v14_0/delete_hr_payroll_doctypes.py
new file mode 100644
index 0000000..8a42a06
--- /dev/null
+++ b/erpnext/patches/v14_0/delete_hr_payroll_doctypes.py
@@ -0,0 +1,43 @@
+import frappe
+
+
+def execute():
+ frappe.delete_doc("Module Def", "HR", ignore_missing=True, force=True)
+ frappe.delete_doc("Module Def", "Payroll", ignore_missing=True, force=True)
+
+ frappe.delete_doc("Workspace", "HR", ignore_missing=True, force=True)
+ frappe.delete_doc("Workspace", "Payroll", ignore_missing=True, force=True)
+
+ print_formats = frappe.get_all(
+ "Print Format", {"module": ("in", ["HR", "Payroll"]), "standard": "Yes"}, pluck="name"
+ )
+ for print_format in print_formats:
+ frappe.delete_doc("Print Format", print_format, ignore_missing=True, force=True)
+
+ reports = frappe.get_all("Report", {"module": ("in", ["HR", "Payroll"]), "is_standard": "Yes"}, pluck="name")
+ for report in reports:
+ frappe.delete_doc("Report", report, ignore_missing=True, force=True)
+
+ # reports moved from Projects, Accounts, and Regional module to HRMS app
+ for report in [
+ "Project Profitability",
+ "Employee Hours Utilization Based On Timesheet",
+ "Unpaid Expense Claim",
+ "Professional Tax Deductions",
+ "Provident Fund Deductions",
+ ]:
+ frappe.delete_doc("Report", report, ignore_missing=True)
+
+ dashboards = frappe.get_all("Dashboard", {"module": ("in", ["HR", "Payroll"]), "is_standard": 1}, pluck="name")
+ for dashboard in dashboards:
+ frappe.delete_doc("Dashboard", dashboard, ignore_missing=True, force=True)
+
+ doctypes = frappe.get_all("DocType", {"module": ("in", ["HR", "Payroll"]), "custom": 0}, pluck="name")
+ for doctype in doctypes:
+ frappe.delete_doc("DocType", doctype, ignore_missing=True)
+
+ frappe.delete_doc("Loan Management", "Salary Slip Loan", ignore_missing=True)
+
+ notifications = frappe.get_all("Notification", {"module": ("in", ["HR", "Payroll"]), "is_standard": 1}, pluck="name")
+ for notifcation in notifications:
+ frappe.delete_doc("Notification", notifcation, ignore_missing=True)