test: Gratuity status for payment via salary slip

(cherry picked from commit b81d7519c1)

# Conflicts:
#	erpnext/payroll/doctype/gratuity/test_gratuity.py
This commit is contained in:
Rucha Mahabal
2022-05-27 12:58:10 +05:30
committed by Mergify
parent 0a014edd7a
commit 00a6bc7970
2 changed files with 37 additions and 5 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,15 +15,28 @@ 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"]
<<<<<<< HEAD
class TestGratuity(unittest.TestCase): class TestGratuity(unittest.TestCase):
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
make_earning_salary_component(setup=True, test_tax=True, company_list=["_Test Company"]) make_earning_salary_component(setup=True, test_tax=True, company_list=["_Test Company"])
=======
class TestGratuity(FrappeTestCase):
def setUp(self):
frappe.db.delete("Gratuity")
frappe.db.delete("Salary Slip")
frappe.db.delete("Additional Salary", {"ref_doctype": "Gratuity"})
make_earning_salary_component(
setup=True, test_tax=True, company_list=["_Test Company"], include_flexi_benefits=True
)
>>>>>>> b81d7519c1 (test: Gratuity status for payment via salary slip)
make_deduction_salary_component(setup=True, test_tax=True, company_list=["_Test Company"]) make_deduction_salary_component(setup=True, test_tax=True, company_list=["_Test Company"])
def setUp(self): def setUp(self):
@@ -77,6 +91,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)")
@@ -211,7 +233,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

@@ -999,7 +999,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:
@@ -1010,7 +1010,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})}
@@ -1020,7 +1024,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)