diff --git a/erpnext/public/js/salary_slip_deductions_report_filters.js b/erpnext/public/js/salary_slip_deductions_report_filters.js
deleted file mode 100644
index 1ca3660..0000000
--- a/erpnext/public/js/salary_slip_deductions_report_filters.js
+++ /dev/null
@@ -1,66 +0,0 @@
-frappe.provide("erpnext.salary_slip_deductions_report_filters");
-
-erpnext.salary_slip_deductions_report_filters = {
-	"filters": [
-		{
-			fieldname: "company",
-			label: __("Company"),
-			fieldtype: "Link",
-			options: "Company",
-			reqd:1,
-			default: frappe.defaults.get_user_default("Company"),
-		},
-		{
-			fieldname: "month",
-			label: __("Month"),
-			fieldtype: "Select",
-			reqd: 1 ,
-			options: [
-				{ "value": 1, "label": __("Jan") },
-				{ "value": 2, "label": __("Feb") },
-				{ "value": 3, "label": __("Mar") },
-				{ "value": 4, "label": __("Apr") },
-				{ "value": 5, "label": __("May") },
-				{ "value": 6, "label": __("June") },
-				{ "value": 7, "label": __("July") },
-				{ "value": 8, "label": __("Aug") },
-				{ "value": 9, "label": __("Sep") },
-				{ "value": 10, "label": __("Oct") },
-				{ "value": 11, "label": __("Nov") },
-				{ "value": 12, "label": __("Dec") },
-			],
-			default: frappe.datetime.str_to_obj(frappe.datetime.get_today()).getMonth() + 1
-		},
-		{
-			fieldname:"year",
-			label: __("Year"),
-			fieldtype: "Select",
-			reqd: 1
-		},
-		{
-			fieldname: "department",
-			label: __("Department"),
-			fieldtype: "Link",
-			options: "Department",
-		},
-		{
-			fieldname: "branch",
-			label: __("Branch"),
-			fieldtype: "Link",
-			options: "Branch",
-		}
-	],
-
-	"onload": function() {
-		return  frappe.call({
-			method: "erpnext.regional.report.provident_fund_deductions.provident_fund_deductions.get_years",
-			callback: function(r) {
-				var year_filter = frappe.query_report.get_filter('year');
-				year_filter.df.options = r.message;
-				year_filter.df.default = r.message.split("\n")[0];
-				year_filter.refresh();
-				year_filter.set_input(year_filter.df.default);
-			}
-		});
-	}
-}
diff --git a/erpnext/regional/india/setup.py b/erpnext/regional/india/setup.py
index e41cd34..9ca3137 100644
--- a/erpnext/regional/india/setup.py
+++ b/erpnext/regional/india/setup.py
@@ -27,7 +27,6 @@
 	add_permissions()
 	add_custom_roles_for_reports()
 	frappe.enqueue("erpnext.regional.india.setup.add_hsn_sac_codes", now=frappe.flags.in_test)
-	create_gratuity_rule()
 	add_print_formats()
 	update_accounts_settings_for_taxes()
 
@@ -79,17 +78,6 @@
 				)
 			).insert()
 
-	for report_name in ("Professional Tax Deductions", "Provident Fund Deductions"):
-
-		if not frappe.db.get_value("Custom Role", dict(report=report_name)):
-			frappe.get_doc(
-				dict(
-					doctype="Custom Role",
-					report=report_name,
-					roles=[dict(role="HR User"), dict(role="HR Manager"), dict(role="Employee")],
-				)
-			).insert()
-
 	for report_name in ("HSN-wise-summary of outward supplies", "GSTR-1", "GSTR-2"):
 
 		if not frappe.db.get_value("Custom Role", dict(report=report_name)):
@@ -959,194 +947,6 @@
 		"Purchase Receipt Item": [hsn_sac_field, nil_rated_exempt, is_non_gst],
 		"Purchase Invoice Item": [hsn_sac_field, nil_rated_exempt, is_non_gst, taxable_value],
 		"Material Request Item": [hsn_sac_field, nil_rated_exempt, is_non_gst],
-		"Salary Component": [
-			dict(
-				fieldname="component_type",
-				label="Component Type",
-				fieldtype="Select",
-				insert_after="description",
-				options="\nProvident Fund\nAdditional Provident Fund\nProvident Fund Loan\nProfessional Tax",
-				depends_on='eval:doc.type == "Deduction"',
-			)
-		],
-		"Employee": [
-			dict(
-				fieldname="ifsc_code",
-				label="IFSC Code",
-				fieldtype="Data",
-				insert_after="bank_ac_no",
-				print_hide=1,
-				depends_on='eval:doc.salary_mode == "Bank"',
-			),
-			dict(
-				fieldname="pan_number",
-				label="PAN Number",
-				fieldtype="Data",
-				insert_after="payroll_cost_center",
-				print_hide=1,
-			),
-			dict(
-				fieldname="micr_code",
-				label="MICR Code",
-				fieldtype="Data",
-				insert_after="ifsc_code",
-				print_hide=1,
-				depends_on='eval:doc.salary_mode == "Bank"',
-			),
-			dict(
-				fieldname="provident_fund_account",
-				label="Provident Fund Account",
-				fieldtype="Data",
-				insert_after="pan_number",
-			),
-		],
-		"Company": [
-			dict(
-				fieldname="hra_section",
-				label="HRA Settings",
-				fieldtype="Section Break",
-				insert_after="asset_received_but_not_billed",
-				collapsible=1,
-			),
-			dict(
-				fieldname="basic_component",
-				label="Basic Component",
-				fieldtype="Link",
-				options="Salary Component",
-				insert_after="hra_section",
-			),
-			dict(
-				fieldname="hra_component",
-				label="HRA Component",
-				fieldtype="Link",
-				options="Salary Component",
-				insert_after="basic_component",
-			),
-			dict(fieldname="hra_column_break", fieldtype="Column Break", insert_after="hra_component"),
-			dict(
-				fieldname="arrear_component",
-				label="Arrear Component",
-				fieldtype="Link",
-				options="Salary Component",
-				insert_after="hra_column_break",
-			),
-		],
-		"Employee Tax Exemption Declaration": [
-			dict(
-				fieldname="hra_section",
-				label="HRA Exemption",
-				fieldtype="Section Break",
-				insert_after="declarations",
-			),
-			dict(
-				fieldname="monthly_house_rent",
-				label="Monthly House Rent",
-				fieldtype="Currency",
-				insert_after="hra_section",
-			),
-			dict(
-				fieldname="rented_in_metro_city",
-				label="Rented in Metro City",
-				fieldtype="Check",
-				insert_after="monthly_house_rent",
-				depends_on="monthly_house_rent",
-			),
-			dict(
-				fieldname="salary_structure_hra",
-				label="HRA as per Salary Structure",
-				fieldtype="Currency",
-				insert_after="rented_in_metro_city",
-				read_only=1,
-				depends_on="monthly_house_rent",
-			),
-			dict(
-				fieldname="hra_column_break",
-				fieldtype="Column Break",
-				insert_after="salary_structure_hra",
-				depends_on="monthly_house_rent",
-			),
-			dict(
-				fieldname="annual_hra_exemption",
-				label="Annual HRA Exemption",
-				fieldtype="Currency",
-				insert_after="hra_column_break",
-				read_only=1,
-				depends_on="monthly_house_rent",
-			),
-			dict(
-				fieldname="monthly_hra_exemption",
-				label="Monthly HRA Exemption",
-				fieldtype="Currency",
-				insert_after="annual_hra_exemption",
-				read_only=1,
-				depends_on="monthly_house_rent",
-			),
-		],
-		"Employee Tax Exemption Proof Submission": [
-			dict(
-				fieldname="hra_section",
-				label="HRA Exemption",
-				fieldtype="Section Break",
-				insert_after="tax_exemption_proofs",
-			),
-			dict(
-				fieldname="house_rent_payment_amount",
-				label="House Rent Payment Amount",
-				fieldtype="Currency",
-				insert_after="hra_section",
-			),
-			dict(
-				fieldname="rented_in_metro_city",
-				label="Rented in Metro City",
-				fieldtype="Check",
-				insert_after="house_rent_payment_amount",
-				depends_on="house_rent_payment_amount",
-			),
-			dict(
-				fieldname="rented_from_date",
-				label="Rented From Date",
-				fieldtype="Date",
-				insert_after="rented_in_metro_city",
-				depends_on="house_rent_payment_amount",
-			),
-			dict(
-				fieldname="rented_to_date",
-				label="Rented To Date",
-				fieldtype="Date",
-				insert_after="rented_from_date",
-				depends_on="house_rent_payment_amount",
-			),
-			dict(
-				fieldname="hra_column_break",
-				fieldtype="Column Break",
-				insert_after="rented_to_date",
-				depends_on="house_rent_payment_amount",
-			),
-			dict(
-				fieldname="monthly_house_rent",
-				label="Monthly House Rent",
-				fieldtype="Currency",
-				insert_after="hra_column_break",
-				read_only=1,
-				depends_on="house_rent_payment_amount",
-			),
-			dict(
-				fieldname="monthly_hra_exemption",
-				label="Monthly Eligible Amount",
-				fieldtype="Currency",
-				insert_after="monthly_house_rent",
-				read_only=1,
-				depends_on="house_rent_payment_amount",
-			),
-			dict(
-				fieldname="total_eligible_hra_exemption",
-				label="Total Eligible HRA Exemption",
-				fieldtype="Currency",
-				insert_after="monthly_hra_exemption",
-				read_only=1,
-				depends_on="house_rent_payment_amount",
-			),
-		],
 		"Supplier": [
 			{"fieldname": "pan", "label": "PAN", "fieldtype": "Data", "insert_after": "supplier_type"},
 			{
@@ -1212,7 +1012,6 @@
 	docs = []
 	company = company or frappe.db.get_value("Global Defaults", None, "default_company")
 
-	set_salary_components(docs)
 	set_tds_account(docs, company)
 
 	for d in docs:
@@ -1293,55 +1092,6 @@
 		)
 
 
-def set_salary_components(docs):
-	docs.extend(
-		[
-			{
-				"doctype": "Salary Component",
-				"salary_component": "Professional Tax",
-				"description": "Professional Tax",
-				"type": "Deduction",
-				"exempted_from_income_tax": 1,
-			},
-			{
-				"doctype": "Salary Component",
-				"salary_component": "Provident Fund",
-				"description": "Provident fund",
-				"type": "Deduction",
-				"is_tax_applicable": 1,
-			},
-			{
-				"doctype": "Salary Component",
-				"salary_component": "House Rent Allowance",
-				"description": "House Rent Allowance",
-				"type": "Earning",
-				"is_tax_applicable": 1,
-			},
-			{
-				"doctype": "Salary Component",
-				"salary_component": "Basic",
-				"description": "Basic",
-				"type": "Earning",
-				"is_tax_applicable": 1,
-			},
-			{
-				"doctype": "Salary Component",
-				"salary_component": "Arrear",
-				"description": "Arrear",
-				"type": "Earning",
-				"is_tax_applicable": 1,
-			},
-			{
-				"doctype": "Salary Component",
-				"salary_component": "Leave Encashment",
-				"description": "Leave Encashment",
-				"type": "Earning",
-				"is_tax_applicable": 1,
-			},
-		]
-	)
-
-
 def set_tax_withholding_category(company):
 	accounts = []
 	fiscal_year_details = None
@@ -1832,25 +1582,6 @@
 	]
 
 
-def create_gratuity_rule():
-	# Standard Indain Gratuity Rule
-	if not frappe.db.exists("Gratuity Rule", "Indian Standard Gratuity Rule"):
-		rule = frappe.new_doc("Gratuity Rule")
-		rule.name = "Indian Standard Gratuity Rule"
-		rule.calculate_gratuity_amount_based_on = "Current Slab"
-		rule.work_experience_calculation_method = "Round Off Work Experience"
-		rule.minimum_year_for_gratuity = 5
-
-		fraction = 15 / 26
-		rule.append(
-			"gratuity_rule_slabs",
-			{"from_year": 0, "to_year": 0, "fraction_of_applicable_earnings": fraction},
-		)
-
-		rule.flags.ignore_mandatory = True
-		rule.save()
-
-
 def update_accounts_settings_for_taxes():
 	if frappe.db.count("Company") == 1:
 		frappe.db.set_value("Accounts Settings", None, "add_taxes_from_item_tax_template", 0)
diff --git a/erpnext/regional/report/professional_tax_deductions/__init__.py b/erpnext/regional/report/professional_tax_deductions/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/regional/report/professional_tax_deductions/__init__.py
+++ /dev/null
diff --git a/erpnext/regional/report/professional_tax_deductions/professional_tax_deductions.js b/erpnext/regional/report/professional_tax_deductions/professional_tax_deductions.js
deleted file mode 100644
index bb75238..0000000
--- a/erpnext/regional/report/professional_tax_deductions/professional_tax_deductions.js
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
-// For license information, please see license.txt
-/* eslint-disable */
-
-frappe.require("assets/erpnext/js/salary_slip_deductions_report_filters.js", function() {
-	frappe.query_reports["Professional Tax Deductions"] = erpnext.salary_slip_deductions_report_filters;
-});
diff --git a/erpnext/regional/report/professional_tax_deductions/professional_tax_deductions.json b/erpnext/regional/report/professional_tax_deductions/professional_tax_deductions.json
deleted file mode 100644
index 9938e9d..0000000
--- a/erpnext/regional/report/professional_tax_deductions/professional_tax_deductions.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "add_total_row": 0,
- "creation": "2020-06-02 00:37:44.537355",
- "disable_prepared_report": 0,
- "disabled": 0,
- "docstatus": 0,
- "doctype": "Report",
- "idx": 0,
- "is_standard": "Yes",
- "modified": "2020-06-16 19:02:26.306348",
- "modified_by": "Administrator",
- "module": "Regional",
- "name": "Professional Tax Deductions",
- "owner": "Administrator",
- "prepared_report": 0,
- "ref_doctype": "Salary Slip",
- "report_name": "Professional Tax Deductions",
- "report_type": "Script Report",
- "roles": []
-}
\ No newline at end of file
diff --git a/erpnext/regional/report/professional_tax_deductions/professional_tax_deductions.py b/erpnext/regional/report/professional_tax_deductions/professional_tax_deductions.py
deleted file mode 100644
index 17a62d5..0000000
--- a/erpnext/regional/report/professional_tax_deductions/professional_tax_deductions.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
-# For license information, please see license.txt
-
-
-import frappe
-from frappe import _
-
-from erpnext.regional.report.provident_fund_deductions.provident_fund_deductions import (
-	get_conditions,
-)
-
-
-def execute(filters=None):
-	data = get_data(filters)
-	columns = get_columns(filters) if len(data) else []
-
-	return columns, data
-
-
-def get_columns(filters):
-	columns = [
-		{
-			"label": _("Employee"),
-			"options": "Employee",
-			"fieldname": "employee",
-			"fieldtype": "Link",
-			"width": 200,
-		},
-		{
-			"label": _("Employee Name"),
-			"options": "Employee",
-			"fieldname": "employee_name",
-			"fieldtype": "Link",
-			"width": 160,
-		},
-		{"label": _("Amount"), "fieldname": "amount", "fieldtype": "Currency", "width": 140},
-	]
-
-	return columns
-
-
-def get_data(filters):
-
-	data = []
-
-	component_type_dict = frappe._dict(
-		frappe.db.sql(
-			""" select name, component_type from `tabSalary Component`
-		where component_type = 'Professional Tax' """
-		)
-	)
-
-	if not len(component_type_dict):
-		return []
-
-	conditions = get_conditions(filters)
-
-	entry = frappe.db.sql(
-		""" select sal.employee, sal.employee_name, ded.salary_component, ded.amount
-		from `tabSalary Slip` sal, `tabSalary Detail` ded
-		where sal.name = ded.parent
-		and ded.parentfield = 'deductions'
-		and ded.parenttype = 'Salary Slip'
-		and sal.docstatus = 1 %s
-		and ded.salary_component in (%s)
-	"""
-		% (conditions, ", ".join(["%s"] * len(component_type_dict))),
-		tuple(component_type_dict.keys()),
-		as_dict=1,
-	)
-
-	for d in entry:
-
-		employee = {"employee": d.employee, "employee_name": d.employee_name, "amount": d.amount}
-
-		data.append(employee)
-
-	return data
diff --git a/erpnext/regional/report/provident_fund_deductions/__init__.py b/erpnext/regional/report/provident_fund_deductions/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/regional/report/provident_fund_deductions/__init__.py
+++ /dev/null
diff --git a/erpnext/regional/report/provident_fund_deductions/provident_fund_deductions.js b/erpnext/regional/report/provident_fund_deductions/provident_fund_deductions.js
deleted file mode 100644
index a91a307..0000000
--- a/erpnext/regional/report/provident_fund_deductions/provident_fund_deductions.js
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
-// For license information, please see license.txt
-/* eslint-disable */
-
-frappe.require("assets/erpnext/js/salary_slip_deductions_report_filters.js", function() {
-	frappe.query_reports["Provident Fund Deductions"] = erpnext.salary_slip_deductions_report_filters;
-});
diff --git a/erpnext/regional/report/provident_fund_deductions/provident_fund_deductions.json b/erpnext/regional/report/provident_fund_deductions/provident_fund_deductions.json
deleted file mode 100644
index e25d335..0000000
--- a/erpnext/regional/report/provident_fund_deductions/provident_fund_deductions.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "add_total_row": 0,
- "creation": "2020-06-01 23:44:07.919117",
- "disable_prepared_report": 0,
- "disabled": 0,
- "docstatus": 0,
- "doctype": "Report",
- "idx": 0,
- "is_standard": "Yes",
- "modified": "2020-06-16 18:54:19.305763",
- "modified_by": "Administrator",
- "module": "Regional",
- "name": "Provident Fund Deductions",
- "owner": "Administrator",
- "prepared_report": 0,
- "ref_doctype": "Salary Slip",
- "report_name": "Provident Fund Deductions",
- "report_type": "Script Report",
- "roles": []
-}
\ No newline at end of file
diff --git a/erpnext/regional/report/provident_fund_deductions/provident_fund_deductions.py b/erpnext/regional/report/provident_fund_deductions/provident_fund_deductions.py
deleted file mode 100644
index ab4b6e7..0000000
--- a/erpnext/regional/report/provident_fund_deductions/provident_fund_deductions.py
+++ /dev/null
@@ -1,174 +0,0 @@
-# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
-# For license information, please see license.txt
-
-
-import frappe
-from frappe import _
-from frappe.utils import getdate
-
-
-def execute(filters=None):
-	data = get_data(filters)
-	columns = get_columns(filters) if len(data) else []
-
-	return columns, data
-
-
-def get_columns(filters):
-	columns = [
-		{
-			"label": _("Employee"),
-			"options": "Employee",
-			"fieldname": "employee",
-			"fieldtype": "Link",
-			"width": 200,
-		},
-		{
-			"label": _("Employee Name"),
-			"options": "Employee",
-			"fieldname": "employee_name",
-			"fieldtype": "Link",
-			"width": 160,
-		},
-		{"label": _("PF Account"), "fieldname": "pf_account", "fieldtype": "Data", "width": 140},
-		{"label": _("PF Amount"), "fieldname": "pf_amount", "fieldtype": "Currency", "width": 140},
-		{
-			"label": _("Additional PF"),
-			"fieldname": "additional_pf",
-			"fieldtype": "Currency",
-			"width": 140,
-		},
-		{"label": _("PF Loan"), "fieldname": "pf_loan", "fieldtype": "Currency", "width": 140},
-		{"label": _("Total"), "fieldname": "total", "fieldtype": "Currency", "width": 140},
-	]
-
-	return columns
-
-
-def get_conditions(filters):
-	conditions = [""]
-
-	if filters.get("department"):
-		conditions.append("sal.department = '%s' " % (filters["department"]))
-
-	if filters.get("branch"):
-		conditions.append("sal.branch = '%s' " % (filters["branch"]))
-
-	if filters.get("company"):
-		conditions.append("sal.company = '%s' " % (filters["company"]))
-
-	if filters.get("month"):
-		conditions.append("month(sal.start_date) = '%s' " % (filters["month"]))
-
-	if filters.get("year"):
-		conditions.append("year(start_date) = '%s' " % (filters["year"]))
-
-	if filters.get("mode_of_payment"):
-		conditions.append("sal.mode_of_payment = '%s' " % (filters["mode_of_payment"]))
-
-	return " and ".join(conditions)
-
-
-def prepare_data(entry, component_type_dict):
-	data_list = {}
-
-	employee_account_dict = frappe._dict(
-		frappe.db.sql(""" select name, provident_fund_account from `tabEmployee`""")
-	)
-
-	for d in entry:
-
-		component_type = component_type_dict.get(d.salary_component)
-
-		if data_list.get(d.name):
-			data_list[d.name][component_type] = d.amount
-		else:
-			data_list.setdefault(
-				d.name,
-				{
-					"employee": d.employee,
-					"employee_name": d.employee_name,
-					"pf_account": employee_account_dict.get(d.employee),
-					component_type: d.amount,
-				},
-			)
-
-	return data_list
-
-
-def get_data(filters):
-	data = []
-
-	conditions = get_conditions(filters)
-
-	salary_slips = frappe.db.sql(
-		""" select sal.name from `tabSalary Slip` sal
-		where docstatus = 1 %s
-		"""
-		% (conditions),
-		as_dict=1,
-	)
-
-	component_type_dict = frappe._dict(
-		frappe.db.sql(
-			""" select name, component_type from `tabSalary Component`
-		where component_type in ('Provident Fund', 'Additional Provident Fund', 'Provident Fund Loan')"""
-		)
-	)
-
-	if not len(component_type_dict):
-		return []
-
-	entry = frappe.db.sql(
-		""" select sal.name, sal.employee, sal.employee_name, ded.salary_component, ded.amount
-		from `tabSalary Slip` sal, `tabSalary Detail` ded
-		where sal.name = ded.parent
-		and ded.parentfield = 'deductions'
-		and ded.parenttype = 'Salary Slip'
-		and sal.docstatus = 1 %s
-		and ded.salary_component in (%s)
-	"""
-		% (conditions, ", ".join(["%s"] * len(component_type_dict))),
-		tuple(component_type_dict.keys()),
-		as_dict=1,
-	)
-
-	data_list = prepare_data(entry, component_type_dict)
-
-	for d in salary_slips:
-		total = 0
-		if data_list.get(d.name):
-			employee = {
-				"employee": data_list.get(d.name).get("employee"),
-				"employee_name": data_list.get(d.name).get("employee_name"),
-				"pf_account": data_list.get(d.name).get("pf_account"),
-			}
-
-			if data_list.get(d.name).get("Provident Fund"):
-				employee["pf_amount"] = data_list.get(d.name).get("Provident Fund")
-				total += data_list.get(d.name).get("Provident Fund")
-
-			if data_list.get(d.name).get("Additional Provident Fund"):
-				employee["additional_pf"] = data_list.get(d.name).get("Additional Provident Fund")
-				total += data_list.get(d.name).get("Additional Provident Fund")
-
-			if data_list.get(d.name).get("Provident Fund Loan"):
-				employee["pf_loan"] = data_list.get(d.name).get("Provident Fund Loan")
-				total += data_list.get(d.name).get("Provident Fund Loan")
-
-			employee["total"] = total
-
-			data.append(employee)
-
-	return data
-
-
-@frappe.whitelist()
-def get_years():
-	year_list = frappe.db.sql_list(
-		"""select distinct YEAR(end_date) from `tabSalary Slip` ORDER BY YEAR(end_date) DESC"""
-	)
-	if not year_list:
-		year_list = [getdate().year]
-
-	return "\n".join(str(year) for year in year_list)
diff --git a/erpnext/regional/united_arab_emirates/setup.py b/erpnext/regional/united_arab_emirates/setup.py
index c77fdcc..be621bc 100644
--- a/erpnext/regional/united_arab_emirates/setup.py
+++ b/erpnext/regional/united_arab_emirates/setup.py
@@ -5,7 +5,6 @@
 import frappe
 from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
 from frappe.permissions import add_permission, update_permission_property
-from erpnext.payroll.doctype.gratuity_rule.gratuity_rule import get_gratuity_rule
 
 
 def setup(company=None, patch=True):
@@ -13,7 +12,6 @@
 	add_print_formats()
 	add_custom_roles_for_reports()
 	add_permissions()
-	create_gratuity_rule()
 
 
 def make_custom_fields():
@@ -278,66 +276,3 @@
 			add_permission(doctype, role, 0)
 			update_permission_property(doctype, role, 0, "write", 1)
 			update_permission_property(doctype, role, 0, "create", 1)
-
-
-def create_gratuity_rule():
-	rule_1 = rule_2 = rule_3 = None
-
-	# Rule Under Limited Contract
-	slabs = get_slab_for_limited_contract()
-	if not frappe.db.exists("Gratuity Rule", "Rule Under Limited Contract (UAE)"):
-		rule_1 = get_gratuity_rule(
-			"Rule Under Limited Contract (UAE)",
-			slabs,
-			calculate_gratuity_amount_based_on="Sum of all previous slabs",
-		)
-
-	# Rule Under Unlimited Contract on termination
-	slabs = get_slab_for_unlimited_contract_on_termination()
-	if not frappe.db.exists("Gratuity Rule", "Rule Under Unlimited Contract on termination (UAE)"):
-		rule_2 = get_gratuity_rule("Rule Under Unlimited Contract on termination (UAE)", slabs)
-
-	# Rule Under Unlimited Contract on resignation
-	slabs = get_slab_for_unlimited_contract_on_resignation()
-	if not frappe.db.exists("Gratuity Rule", "Rule Under Unlimited Contract on resignation (UAE)"):
-		rule_3 = get_gratuity_rule("Rule Under Unlimited Contract on resignation (UAE)", slabs)
-
-	# for applicable salary component user need to set this by its own
-	if rule_1:
-		rule_1.flags.ignore_mandatory = True
-		rule_1.save()
-	if rule_2:
-		rule_2.flags.ignore_mandatory = True
-		rule_2.save()
-	if rule_3:
-		rule_3.flags.ignore_mandatory = True
-		rule_3.save()
-
-
-def get_slab_for_limited_contract():
-	return [
-		{"from_year": 0, "to_year": 1, "fraction_of_applicable_earnings": 0},
-		{"from_year": 1, "to_year": 5, "fraction_of_applicable_earnings": 21 / 30},
-		{"from_year": 5, "to_year": 0, "fraction_of_applicable_earnings": 1},
-	]
-
-
-def get_slab_for_unlimited_contract_on_termination():
-	return [
-		{"from_year": 0, "to_year": 1, "fraction_of_applicable_earnings": 0},
-		{"from_year": 1, "to_year": 5, "fraction_of_applicable_earnings": 21 / 30},
-		{"from_year": 5, "to_year": 0, "fraction_of_applicable_earnings": 1},
-	]
-
-
-def get_slab_for_unlimited_contract_on_resignation():
-	fraction_1 = 1 / 3 * 21 / 30
-	fraction_2 = 2 / 3 * 21 / 30
-	fraction_3 = 21 / 30
-
-	return [
-		{"from_year": 0, "to_year": 1, "fraction_of_applicable_earnings": 0},
-		{"from_year": 1, "to_year": 3, "fraction_of_applicable_earnings": fraction_1},
-		{"from_year": 3, "to_year": 5, "fraction_of_applicable_earnings": fraction_2},
-		{"from_year": 5, "to_year": 0, "fraction_of_applicable_earnings": fraction_3},
-	]
