Пример #1
0
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
Пример #2
0
	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"))
Пример #3
0
	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)
Пример #4
0
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
Пример #5
0
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
Пример #6
0
    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)
Пример #7
0
    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)