test: Gratuity status for payment via salary slip

This commit is contained in:
Rucha Mahabal 2022-05-27 12:58:10 +05:30
parent 385e22a067
commit b81d7519c1
2 changed files with 27 additions and 6 deletions

View File

@ -4,7 +4,8 @@
import unittest import unittest
import frappe import frappe
from frappe.utils import add_days, flt, get_datetime, getdate from frappe.tests.utils import FrappeTestCase
from frappe.utils import add_days, add_months, flt, get_datetime, get_first_day, getdate
from erpnext.hr.doctype.employee.test_employee import make_employee from erpnext.hr.doctype.employee.test_employee import make_employee
from erpnext.hr.doctype.expense_claim.test_expense_claim import get_payable_account from erpnext.hr.doctype.expense_claim.test_expense_claim import get_payable_account
@ -14,14 +15,16 @@ from erpnext.payroll.doctype.salary_slip.test_salary_slip import (
make_earning_salary_component, make_earning_salary_component,
make_employee_salary_slip, make_employee_salary_slip,
) )
from erpnext.payroll.doctype.salary_structure.salary_structure import make_salary_slip
from erpnext.regional.united_arab_emirates.setup import create_gratuity_rule from erpnext.regional.united_arab_emirates.setup import create_gratuity_rule
test_dependencies = ["Salary Component", "Salary Slip", "Account"] test_dependencies = ["Salary Component", "Salary Slip", "Account"]
class TestGratuity(unittest.TestCase): class TestGratuity(FrappeTestCase):
def setUp(self): def setUp(self):
frappe.db.delete("Gratuity") frappe.db.delete("Gratuity")
frappe.db.delete("Salary Slip")
frappe.db.delete("Additional Salary", {"ref_doctype": "Gratuity"}) frappe.db.delete("Additional Salary", {"ref_doctype": "Gratuity"})
make_earning_salary_component( make_earning_salary_component(
@ -76,6 +79,14 @@ class TestGratuity(unittest.TestCase):
# additional salary creation (Pay via salary slip) # additional salary creation (Pay via salary slip)
self.assertTrue(frappe.db.exists("Additional Salary", {"ref_docname": gratuity.name})) self.assertTrue(frappe.db.exists("Additional Salary", {"ref_docname": gratuity.name}))
salary_slip = make_salary_slip("Test Gratuity", employee=employee)
salary_slip.posting_date = getdate()
salary_slip.insert()
salary_slip.submit()
gratuity.reload()
self.assertEqual(gratuity.status, "Paid")
def test_check_gratuity_amount_based_on_all_previous_slabs(self): def test_check_gratuity_amount_based_on_all_previous_slabs(self):
employee, sal_slip = create_employee_and_get_last_salary_slip() employee, sal_slip = create_employee_and_get_last_salary_slip()
rule = get_gratuity_rule("Rule Under Limited Contract (UAE)") rule = get_gratuity_rule("Rule Under Limited Contract (UAE)")
@ -209,7 +220,13 @@ def create_employee_and_get_last_salary_slip():
frappe.db.set_value("Employee", employee, "relieving_date", getdate()) frappe.db.set_value("Employee", employee, "relieving_date", getdate())
frappe.db.set_value("Employee", employee, "date_of_joining", add_days(getdate(), -(6 * 365))) frappe.db.set_value("Employee", employee, "date_of_joining", add_days(getdate(), -(6 * 365)))
if not frappe.db.exists("Salary Slip", {"employee": employee}): if not frappe.db.exists("Salary Slip", {"employee": employee}):
salary_slip = make_employee_salary_slip("test_employee@salary.com", "Monthly") posting_date = get_first_day(add_months(getdate(), -1))
salary_slip = make_employee_salary_slip(
"test_employee@salary.com", "Monthly", "Test Gratuity", posting_date=posting_date
)
salary_slip.start_date = posting_date
salary_slip.end_date = None
salary_slip.save()
salary_slip.submit() salary_slip.submit()
salary_slip = salary_slip.name salary_slip = salary_slip.name
else: else:

View File

@ -997,7 +997,7 @@ class TestSalarySlip(unittest.TestCase):
return [no_of_days_in_month[1], no_of_holidays_in_month] return [no_of_days_in_month[1], no_of_holidays_in_month]
def make_employee_salary_slip(user, payroll_frequency, salary_structure=None): def make_employee_salary_slip(user, payroll_frequency, salary_structure=None, posting_date=None):
from erpnext.payroll.doctype.salary_structure.test_salary_structure import make_salary_structure from erpnext.payroll.doctype.salary_structure.test_salary_structure import make_salary_structure
if not salary_structure: if not salary_structure:
@ -1008,7 +1008,11 @@ def make_employee_salary_slip(user, payroll_frequency, salary_structure=None):
) )
salary_structure_doc = make_salary_structure( salary_structure_doc = make_salary_structure(
salary_structure, payroll_frequency, employee=employee.name, company=employee.company salary_structure,
payroll_frequency,
employee=employee.name,
company=employee.company,
from_date=posting_date,
) )
salary_slip_name = frappe.db.get_value( salary_slip_name = frappe.db.get_value(
"Salary Slip", {"employee": frappe.db.get_value("Employee", {"user_id": user})} "Salary Slip", {"employee": frappe.db.get_value("Employee", {"user_id": user})}
@ -1018,7 +1022,7 @@ def make_employee_salary_slip(user, payroll_frequency, salary_structure=None):
salary_slip = make_salary_slip(salary_structure_doc.name, employee=employee.name) salary_slip = make_salary_slip(salary_structure_doc.name, employee=employee.name)
salary_slip.employee_name = employee.employee_name salary_slip.employee_name = employee.employee_name
salary_slip.payroll_frequency = payroll_frequency salary_slip.payroll_frequency = payroll_frequency
salary_slip.posting_date = nowdate() salary_slip.posting_date = posting_date or nowdate()
salary_slip.insert() salary_slip.insert()
else: else:
salary_slip = frappe.get_doc("Salary Slip", salary_slip_name) salary_slip = frappe.get_doc("Salary Slip", salary_slip_name)