def get_salary_slip(user, period, salary_structure): salary_slip = make_employee_salary_slip(user, period, salary_structure) salary_slip.exchange_rate = 70 salary_slip.calculate_net_pay() salary_slip.db_update() return salary_slip
def test_amount_totals(self): frappe.db.set_value("Payroll Settings", None, "include_holidays_in_total_working_days", 0) sal_slip = frappe.get_value("Salary Slip", {"employee_name":"*****@*****.**"}) if not sal_slip: sal_slip = make_employee_salary_slip("*****@*****.**", "Monthly", "Salary Structure Sample") self.assertEqual(sal_slip.get("salary_structure"), 'Salary Structure Sample') self.assertEqual(sal_slip.get("earnings")[0].amount, 50000) self.assertEqual(sal_slip.get("earnings")[1].amount, 3000) self.assertEqual(sal_slip.get("earnings")[2].amount, 25000) self.assertEqual(sal_slip.get("gross_pay"), 78000) self.assertEqual(sal_slip.get("deductions")[0].amount, 200) self.assertEqual(sal_slip.get("net_pay"), 78000 - sal_slip.get("total_deduction"))
def test_recurring_additional_salary(self): emp_id = make_employee("*****@*****.**") frappe.db.set_value("Employee", emp_id, "relieving_date", add_days(nowdate(), 1800)) add_sal = get_additional_salary(emp_id) ss = make_employee_salary_slip("*****@*****.**", "Monthly") for earning in ss.earnings: if earning.salary_component == "Recurring Salary Component": amount = earning.amount salary_component = earning.salary_component self.assertEqual(amount, add_sal.amount) self.assertEqual(salary_component, add_sal.salary_component)
def create_salary_slip(employee): if not frappe.db.exists("Salary Slip", {"employee": employee}): posting_date = get_first_day(add_months(getdate(), -1)) salary_slip = make_employee_salary_slip(employee, "Monthly", "Test Gratuity", posting_date=posting_date) salary_slip.start_date = posting_date salary_slip.end_date = None salary_slip.submit() salary_slip = salary_slip.name else: salary_slip = get_last_salary_slip(employee) return salary_slip
def create_employee_and_get_last_salary_slip(): employee = make_employee("*****@*****.**", company='_Test Company') frappe.db.set_value("Employee", employee, "relieving_date", getdate()) frappe.db.set_value("Employee", employee, "date_of_joining", add_days(getdate(), - (6*365))) if not frappe.db.exists("Salary Slip", {"employee":employee}): salary_slip = make_employee_salary_slip("*****@*****.**", "Monthly") salary_slip.submit() salary_slip = salary_slip.name else: salary_slip = get_last_salary_slip(employee) if not frappe.db.get_value("Employee", "*****@*****.**", "holiday_list"): from erpnext.payroll.doctype.salary_slip.test_salary_slip import make_holiday_list make_holiday_list() frappe.db.set_value("Company", '_Test Company', "default_holiday_list", "Salary Slip Test Holiday List") return employee, salary_slip
def test_non_recurring_additional_salary(self): amount = 0 salary_component = None date = nowdate() emp_id = make_employee("*****@*****.**") frappe.db.set_value("Employee", emp_id, "relieving_date", add_days(date, 1800)) salary_structure = make_salary_structure( "Test Salary Structure Additional Salary", "Monthly", employee=emp_id) add_sal = get_additional_salary(emp_id, recurring=False, payroll_date=date) ss = make_employee_salary_slip("*****@*****.**", "Monthly", salary_structure=salary_structure.name) amount, salary_component = None, None for earning in ss.earnings: if earning.salary_component == "Recurring Salary Component": amount = earning.amount salary_component = earning.salary_component break self.assertEqual(amount, add_sal.amount) self.assertEqual(salary_component, add_sal.salary_component) # should not show up in next months ss.posting_date = add_months(date, 1) ss.start_date = ss.end_date = None ss.earnings = [] ss.deductions = [] ss.save() amount, salary_component = None, None for earning in ss.earnings: if earning.salary_component == "Recurring Salary Component": amount = earning.amount salary_component = earning.salary_component break self.assertIsNone(amount) self.assertIsNone(salary_component)
def test_recurring_additional_salary(self): amount = 0 salary_component = None emp_id = make_employee("*****@*****.**") frappe.db.set_value("Employee", emp_id, "relieving_date", add_days(nowdate(), 1800)) salary_structure = make_salary_structure( "Test Salary Structure Additional Salary", "Monthly", employee=emp_id) add_sal = get_additional_salary(emp_id) ss = make_employee_salary_slip("*****@*****.**", "Monthly", salary_structure=salary_structure.name) for earning in ss.earnings: if earning.salary_component == "Recurring Salary Component": amount = earning.amount salary_component = earning.salary_component break self.assertEqual(amount, add_sal.amount) self.assertEqual(salary_component, add_sal.salary_component)