feat: fix test for Gratuity
diff --git a/erpnext/payroll/doctype/gratuity/gratuity.py b/erpnext/payroll/doctype/gratuity/gratuity.py
index b094191..e9e577c 100644
--- a/erpnext/payroll/doctype/gratuity/gratuity.py
+++ b/erpnext/payroll/doctype/gratuity/gratuity.py
@@ -34,6 +34,7 @@
 		make_gl_entries(gl_entries, cancel)
 
 	def get_gl_entries(self):
+		print(self.payable_account, self.expense_account)
 		gl_entry = []
 		# payable entry
 		if self.amount:
diff --git a/erpnext/payroll/doctype/gratuity/test_gratuity.py b/erpnext/payroll/doctype/gratuity/test_gratuity.py
index 680ecbc..5053f88 100644
--- a/erpnext/payroll/doctype/gratuity/test_gratuity.py
+++ b/erpnext/payroll/doctype/gratuity/test_gratuity.py
@@ -9,27 +9,19 @@
 from erpnext.payroll.doctype.salary_slip.test_salary_slip import make_employee_salary_slip
 from erpnext.payroll.doctype.gratuity.gratuity import get_last_salary_slip
 from erpnext.regional.united_arab_emirates.setup import create_gratuity_rule
+from erpnext.hr.doctype.expense_claim.test_expense_claim import get_payable_account
 from frappe.utils import getdate, add_days, get_datetime, flt
 
 
 class TestGratuity(unittest.TestCase):
 	def setUp(self):
-		frappe.db.sql("DELETE FROM `tabgratuity`")
+		frappe.db.sql("DELETE FROM `tabGratuity`")
 		frappe.db.sql("DELETE FROM `tabAdditional Salary` WHERE ref_doctype = 'Gratuity'")
 
 	def test_check_gratuity_amount_based_on_current_slab_and_additional_salary_creation(self):
 		employee, sal_slip = create_employee_and_get_last_salary_slip()
-		rule = frappe.db.exists("Gratuity Rule", "Rule Under Unlimited Contract on termination (UAE)")
-		if not rule:
-			create_gratuity_rule()
-		else:
-			rule = frappe.get_doc("Gratuity Rule", "Rule Under Unlimited Contract on termination (UAE)")
-		rule.applicable_earnings_component = []
-		rule.append("applicable_earnings_component", {
-			"salary_component": "Basic Salary"
-		})
-		rule.save()
-		rule.reload()
+
+		rule = get_gratuity_rule("Rule Under Unlimited Contract on termination (UAE)")
 
 		gratuity = frappe.new_doc("Gratuity")
 		gratuity.employee = employee
@@ -72,31 +64,12 @@
 
 		#additional salary creation (Pay via salary slip)
 		self.assertTrue(frappe.db.exists("Additional Salary", {"ref_docname": gratuity.name}))
-		self.assertEqual(gratuity.status, "Paid")
 
 	def test_check_gratuity_amount_based_on_all_previous_slabs(self):
 		employee, sal_slip = create_employee_and_get_last_salary_slip()
-		rule = frappe.db.exists("Gratuity Rule", "Rule Under Limited Contract (UAE)")
-		if not rule:
-			create_gratuity_rule()
-		else:
-			rule = frappe.get_doc("Gratuity Rule", rule)
-		rule.applicable_earnings_component = []
-		rule = frappe.get_doc("Gratuity Rule", "Rule Under Limited Contract (UAE)")
-		rule.append("applicable_earnings_component", {
-			"salary_component": "Basic Salary"
-		})
-		rule.save()
-		rule.reload()
-
-		mof = frappe.get_doc("Mode of Payment", "Cheque")
-		mof.accounts = []
-		mof.append("accounts", {
-			"company": "_Test Company",
-			"default_account": "_Test Bank - _TC"
-		})
-
-		mof.save()
+		rule = get_gratuity_rule("Rule Under Limited Contract (UAE)")
+		set_mode_of_payment_account()
+		payable_account = get_payable_account("_Test Company")
 
 		gratuity = frappe.new_doc("Gratuity")
 		gratuity.employee = employee
@@ -105,6 +78,7 @@
 		gratuity.pay_via_salary_slip = 0
 		gratuity.payroll_date = getdate()
 		gratuity.expense_account = "Payment Account - _TC"
+		gratuity.payable_account = payable_account
 		gratuity.mode_of_payment = "Cheque"
 
 		gratuity.save()
@@ -132,39 +106,57 @@
 		},
 		fields=["amount"])
 
-
 		''' range  | Fraction
 			0-1    |    0
 			1-5    |   0.7
 			5-0    |    1
 		'''
 
-
 		gratuity_amount = ((0 * 1) + (4 * 0.7) + (1 * 1)) *  component_amount[0].amount
 		gratuity.reload()
 
 		self.assertEqual(flt(gratuity_amount, 2), flt(gratuity.amount, 2))
 		self.assertEqual(gratuity.status, "Unpaid")
 
-
 		from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
-
 		pay_entry = get_payment_entry("Gratuity", gratuity.name)
 		pay_entry.reference_no = "123467"
 		pay_entry.reference_date = getdate()
-
 		pay_entry.save()
 		pay_entry.submit()
-
 		gratuity.reload()
 
 		self.assertEqual(gratuity.status, "Paid")
 		self.assertEqual(gratuity.paid_amount, flt(gratuity.amount, 2))
 
 	def tearDown(self):
-		frappe.db.sql("DELETE FROM `tabgratuity`")
+		frappe.db.sql("DELETE FROM `tabGratuity`")
 		frappe.db.sql("DELETE FROM `tabAdditional Salary` WHERE ref_doctype = 'Gratuity'")
 
+def get_gratuity_rule(name):
+	rule = frappe.db.exists("Gratuity Rule", name)
+	if not rule:
+		create_gratuity_rule()
+	else:
+		rule = frappe.get_doc("Gratuity Rule", name)
+	rule.applicable_earnings_component = []
+	rule.append("applicable_earnings_component", {
+		"salary_component": "Basic Salary"
+	})
+	rule.save()
+	rule.reload()
+
+	return rule
+
+def set_mode_of_payment_account():
+	mode_of_payment = frappe.get_doc("Mode of Payment", "Cheque")
+	mode_of_payment.accounts = []
+	mode_of_payment.append("accounts", {
+		"company": "_Test Company",
+		"default_account": "_Test Bank - _TC"
+	})
+	mode_of_payment.save()
+
 def create_employee_and_get_last_salary_slip():
 	employee = make_employee("test_employee@salary.com")
 	frappe.db.set_value("Employee", employee, "relieving_date", getdate())
diff --git a/erpnext/payroll/doctype/salary_slip/salary_slip.py b/erpnext/payroll/doctype/salary_slip/salary_slip.py
index 6814726..c7b83b9 100644
--- a/erpnext/payroll/doctype/salary_slip/salary_slip.py
+++ b/erpnext/payroll/doctype/salary_slip/salary_slip.py
@@ -83,13 +83,12 @@
 				"employee": self.employee,
 				"ref_doctype": "Gratuity",
 				"docstatus": 1,
-			}, fields = ["ref_docname", "name"])[0]
+			}, fields = ["ref_docname", "name"], limit=1)
 
-		status = "Paid" if self.docstatus == 1 else "Unpaid"
-
-
-		if add_salary and add_salary.name in [data.additional_salary for data in self.earnings]:
-			frappe.db.set_value("Gratuity", add_salary.ref_docname, "status", status)
+		if len(add_salary):
+			status = "Paid" if self.docstatus == 1 else "Unpaid"
+			if add_salary[0].name in [data.additional_salary for data in self.earnings]:
+				frappe.db.set_value("Gratuity", add_salary.ref_docname, "status", status)
 
 	def on_cancel(self):
 		self.set_status()