test: test advance filters in expense claim and cancelled status

This commit is contained in:
Rucha Mahabal 2022-03-01 21:40:39 +05:30
parent 57f92df108
commit 9988ec697f
2 changed files with 35 additions and 4 deletions

View File

@ -27,6 +27,7 @@ class EmployeeAdvance(Document):
def on_cancel(self): def on_cancel(self):
self.ignore_linked_doctypes = ('GL Entry') self.ignore_linked_doctypes = ('GL Entry')
self.set_status(update=True)
def set_status(self, update=False): def set_status(self, update=False):
precision = self.precision("paid_amount") precision = self.precision("paid_amount")

View File

@ -24,6 +24,9 @@ from erpnext.payroll.doctype.salary_structure.test_salary_structure import make_
class TestEmployeeAdvance(unittest.TestCase): class TestEmployeeAdvance(unittest.TestCase):
def setUp(self):
frappe.db.delete("Employee Advance")
def test_paid_amount_and_status(self): def test_paid_amount_and_status(self):
employee_name = make_employee("_T@employe.advance") employee_name = make_employee("_T@employe.advance")
advance = make_employee_advance(employee_name) advance = make_employee_advance(employee_name)
@ -58,8 +61,12 @@ class TestEmployeeAdvance(unittest.TestCase):
self.assertEqual(advance.paid_amount, 0) self.assertEqual(advance.paid_amount, 0)
self.assertEqual(advance.status, "Unpaid") self.assertEqual(advance.status, "Unpaid")
def test_claimed_and_returned_status(self): advance.cancel()
# Claimed Status check, full amount claimed advance.reload()
self.assertEqual(advance.status, "Cancelled")
def test_claimed_status(self):
# CLAIMED Status check, full amount claimed
payable_account = get_payable_account("_Test Company") payable_account = get_payable_account("_Test Company")
claim = make_expense_claim(payable_account, 1000, 1000, "_Test Company", "Travel Expenses - _TC", do_not_submit=True) claim = make_expense_claim(payable_account, 1000, 1000, "_Test Company", "Travel Expenses - _TC", do_not_submit=True)
@ -75,13 +82,26 @@ class TestEmployeeAdvance(unittest.TestCase):
self.assertEqual(advance.claimed_amount, 1000) self.assertEqual(advance.claimed_amount, 1000)
self.assertEqual(advance.status, "Claimed") self.assertEqual(advance.status, "Claimed")
# advance should not be shown in claims
advances = get_advances(claim.employee)
advances = [entry.name for entry in advances]
self.assertTrue(advance.name not in advances)
# cancel claim; status should be Paid # cancel claim; status should be Paid
claim.cancel() claim.cancel()
advance.reload() advance.reload()
self.assertEqual(advance.claimed_amount, 0) self.assertEqual(advance.claimed_amount, 0)
self.assertEqual(advance.status, "Paid") self.assertEqual(advance.status, "Paid")
# Partly Claimed and Returned status check def test_partly_claimed_and_returned_status(self):
payable_account = get_payable_account("_Test Company")
claim = make_expense_claim(payable_account, 1000, 1000, "_Test Company", "Travel Expenses - _TC", do_not_submit=True)
advance = make_employee_advance(claim.employee)
pe = make_payment_entry(advance)
pe.submit()
# PARTLY CLAIMED AND RETURNED status check
# 500 Claimed, 500 Returned # 500 Claimed, 500 Returned
claim = make_expense_claim(payable_account, 500, 500, "_Test Company", "Travel Expenses - _TC", do_not_submit=True) claim = make_expense_claim(payable_account, 500, 500, "_Test Company", "Travel Expenses - _TC", do_not_submit=True)
@ -116,12 +136,22 @@ class TestEmployeeAdvance(unittest.TestCase):
self.assertEqual(advance.return_amount, 500) self.assertEqual(advance.return_amount, 500)
self.assertEqual(advance.status, "Partly Claimed and Returned") self.assertEqual(advance.status, "Partly Claimed and Returned")
# Cancel return entry; status should change to Paid # advance should not be shown in claims
advances = get_advances(claim.employee)
advances = [entry.name for entry in advances]
self.assertTrue(advance.name not in advances)
# Cancel return entry; status should change to PAID
entry.cancel() entry.cancel()
advance.reload() advance.reload()
self.assertEqual(advance.return_amount, 0) self.assertEqual(advance.return_amount, 0)
self.assertEqual(advance.status, "Paid") self.assertEqual(advance.status, "Paid")
# advance should be shown in claims
advances = get_advances(claim.employee)
advances = [entry.name for entry in advances]
self.assertTrue(advance.name in advances)
def test_repay_unclaimed_amount_from_salary(self): def test_repay_unclaimed_amount_from_salary(self):
employee_name = make_employee("_T@employe.advance") employee_name = make_employee("_T@employe.advance")
advance = make_employee_advance(employee_name, {"repay_unclaimed_amount_from_salary": 1}) advance = make_employee_advance(employee_name, {"repay_unclaimed_amount_from_salary": 1})