fix: Patch and tests
diff --git a/erpnext/hr/doctype/additional_salary/test_additional_salary.py b/erpnext/hr/doctype/additional_salary/test_additional_salary.py
index ebe6b20..6f93fb5 100644
--- a/erpnext/hr/doctype/additional_salary/test_additional_salary.py
+++ b/erpnext/hr/doctype/additional_salary/test_additional_salary.py
@@ -7,14 +7,13 @@
 from frappe.utils import nowdate, add_days
 from erpnext.hr.doctype.employee.test_employee import make_employee
 from erpnext.hr.doctype.salary_component.test_salary_component import create_salary_component
-from erpnext.hr.doctype.salary_slip.test_salary_slip import make_employee_salary_slip
+from erpnext.hr.doctype.salary_slip.test_salary_slip import make_employee_salary_slip, setup_test
 
 
 class TestAdditionalSalary(unittest.TestCase):
 
 	def setUp(self):
-		from erpnext.hr.doctype.salary_slip.test_salary_slip import TestSalarySlip
-		TestSalarySlip().setUp()
+		setup_test()
 
 	def test_recurring_additional_salary(self):
 		emp_id = make_employee("test_additional@salary.com")
diff --git a/erpnext/hr/doctype/salary_slip/test_salary_slip.py b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
index fc687a3..a7dcb94 100644
--- a/erpnext/hr/doctype/salary_slip/test_salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
@@ -18,19 +18,7 @@
 
 class TestSalarySlip(unittest.TestCase):
 	def setUp(self):
-		make_earning_salary_component(setup=True, company_list=["_Test Company"])
-		make_deduction_salary_component(setup=True, company_list=["_Test Company"])
-
-		for dt in ["Leave Application", "Leave Allocation", "Salary Slip", "Attendance"]:
-			frappe.db.sql("delete from `tab%s`" % dt)
-
-		self.make_holiday_list()
-
-		frappe.db.set_value("Company", erpnext.get_default_company(), "default_holiday_list", "Salary Slip Test Holiday List")
-		frappe.db.set_value("HR Settings", None, "email_salary_slip_to_employee", 0)
-		frappe.db.set_value('HR Settings', None, 'leave_status_notification_template', None)
-		frappe.db.set_value('HR Settings', None, 'leave_approval_notification_template', None)
-		
+		setup_test()
 	def tearDown(self):
 		frappe.db.set_value("HR Settings", None, "include_holidays_in_total_working_days", 0)
 		frappe.set_user("Administrator")
@@ -374,19 +362,6 @@
 		# undelete fixture data
 		frappe.db.rollback()
 
-	def make_holiday_list(self):
-		fiscal_year = get_fiscal_year(nowdate(), company=erpnext.get_default_company())
-		if not frappe.db.get_value("Holiday List", "Salary Slip Test Holiday List"):
-			holiday_list = frappe.get_doc({
-				"doctype": "Holiday List",
-				"holiday_list_name": "Salary Slip Test Holiday List",
-				"from_date": fiscal_year[1],
-				"to_date": fiscal_year[2],
-				"weekly_off": "Sunday"
-			}).insert()
-			holiday_list.get_weekly_off_dates()
-			holiday_list.save()
-
 	def make_activity_for_employee(self):
 		activity_type = frappe.get_doc("Activity Type", "_Test Activity Type")
 		activity_type.billing_rate = 50
@@ -702,4 +677,31 @@
 		status = "Approved",
 		leave_approver = 'test@example.com'
 	))
-	leave_application.submit()
\ No newline at end of file
+	leave_application.submit()
+
+def setup_test():
+	make_earning_salary_component(setup=True, company_list=["_Test Company"])
+	make_deduction_salary_component(setup=True, company_list=["_Test Company"])
+
+	for dt in ["Leave Application", "Leave Allocation", "Salary Slip", "Attendance"]:
+		frappe.db.sql("delete from `tab%s`" % dt)
+
+	make_holiday_list()
+
+	frappe.db.set_value("Company", erpnext.get_default_company(), "default_holiday_list", "Salary Slip Test Holiday List")
+	frappe.db.set_value("HR Settings", None, "email_salary_slip_to_employee", 0)
+	frappe.db.set_value('HR Settings', None, 'leave_status_notification_template', None)
+	frappe.db.set_value('HR Settings', None, 'leave_approval_notification_template', None)
+
+def make_holiday_list():
+	fiscal_year = get_fiscal_year(nowdate(), company=erpnext.get_default_company())
+	if not frappe.db.get_value("Holiday List", "Salary Slip Test Holiday List"):
+		holiday_list = frappe.get_doc({
+			"doctype": "Holiday List",
+			"holiday_list_name": "Salary Slip Test Holiday List",
+			"from_date": fiscal_year[1],
+			"to_date": fiscal_year[2],
+			"weekly_off": "Sunday"
+		}).insert()
+		holiday_list.get_weekly_off_dates()
+		holiday_list.save()
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 8a6a83e..c964292 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -678,4 +678,4 @@
 erpnext.patches.v12_0.fix_quotation_expired_status
 erpnext.patches.v12_0.update_appointment_reminder_scheduler_entry
 erpnext.patches.v12_0.retain_permission_rules_for_video_doctype
-erpnext.patches.v13_0.patch_to_fix_reverse_linking_in_additional_salary_encashment_and_incentive #gyhdghksdhsjsd
+erpnext.patches.v13_0.patch_to_fix_reverse_linking_in_additional_salary_encashment_and_incentive
diff --git a/erpnext/patches/v13_0/patch_to_fix_reverse_linking_in_additional_salary_encashment_and_incentive.py b/erpnext/patches/v13_0/patch_to_fix_reverse_linking_in_additional_salary_encashment_and_incentive.py
index 8b8e60d..ddcadcb 100644
--- a/erpnext/patches/v13_0/patch_to_fix_reverse_linking_in_additional_salary_encashment_and_incentive.py
+++ b/erpnext/patches/v13_0/patch_to_fix_reverse_linking_in_additional_salary_encashment_and_incentive.py
@@ -3,33 +3,50 @@
 import frappe
 
 def execute():
+	if not frappe.db.table_exists("Additional Salary"):
+		return
 
-	additional_salaries = frappe.get_all("Additional Salary", fields = ['name', "salary_slip", "type", "salary_component"], group_by = 'salary_slip')
-	leave_encashments = frappe.get_all("Leave Encashment", fields = ["name","additional_salary"])
-	employee_incentives = frappe.get_all("Employee Incentive", fields= ["name", "additional_salary"])
+	for doctype in ("Additional Salary", "Leave Encashment", "Employee Incentive", "Salary Detail"):
+		frappe.reload_doc("hr", "doctype", doctype)
+
+	additional_salaries = frappe.get_all("Additional Salary",
+		fields = ['name', "salary_slip", "type", "salary_component"],
+		filters = {'salary_slip': ['!=', '']},
+		group_by = 'salary_slip'
+	)
+	leave_encashments = frappe.get_all("Leave Encashment",
+		fields = ["name","additional_salary"],
+		filters = {'additional_salary': ['!=', '']}
+	)
+	employee_incentives = frappe.get_all("Employee Incentive",
+		fields= ["name", "additional_salary"],
+		filters = {'additional_salary': ['!=', '']}
+	)
 
 	for incentive in employee_incentives:
 		frappe.db.sql(""" UPDATE `tabAdditional Salary`
-				SET ref_doctype = 'Employee Incentive', ref_docname = %s
-				WHERE name = %s
-			""", (incentive['name'], incentive['additional_salary']))
+			SET ref_doctype = 'Employee Incentive', ref_docname = %s
+			WHERE name = %s
+		""", (incentive['name'], incentive['additional_salary']))
 
 
 	for leave_encashment in leave_encashments:
 		frappe.db.sql(""" UPDATE `tabAdditional Salary`
-				SET ref_doctype = 'Leave Encashment', ref_docname = %s
-				WHERE name = %s
-			""", (leave_encashment['name'], leave_encashment['additional_salary']))
+			SET ref_doctype = 'Leave Encashment', ref_docname = %s
+			WHERE name = %s
+		""", (leave_encashment['name'], leave_encashment['additional_salary']))
 
 	salary_slips = [sal["salary_slip"] for sal in additional_salaries]
 
 	for salary in additional_salaries:
 		comp_type = "earnings" if salary['type'] == 'Earning' else 'deductions'
 		if salary["salary_slip"] and salary_slips.count(salary["salary_slip"]) == 1:
-			frappe.db.sql(""" UPDATE `tabsalary Detail`
-					SET additional_salary = %s
-					WHERE parenttype = 'Salary Slip'
+			frappe.db.sql("""
+				UPDATE `tabSalary Detail`
+				SET additional_salary = %s
+				WHERE parenttype = 'Salary Slip'
 					and parentfield = %s
 					and parent = %s
-					and salary_component = %s""", (salary["name"], comp_type, salary["salary_slip"], salary["salary_component"]))
+					and salary_component = %s
+			""", (salary["name"], comp_type, salary["salary_slip"], salary["salary_component"]))