303 lines
11 KiB
Python
303 lines
11 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
from datetime import date
|
|
from unittest import skip
|
|
|
|
from odoo.tests import tagged
|
|
|
|
from .common import TestPayrollCommon
|
|
|
|
|
|
@tagged("post_install_l10n", "post_install", "-at_install", "l10n_au_hr_payroll")
|
|
class TestPayrollActor(TestPayrollCommon):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestPayrollActor, cls).setUpClass()
|
|
cls.default_payroll_structure = cls.env.ref("l10n_au_hr_payroll.hr_payroll_structure_au_regular")
|
|
cls.tax_treatment_category = 'A'
|
|
|
|
def test_actor_payslip_1(self):
|
|
employee, contract = self._create_employee(contract_info={
|
|
'employee': 'Test Employee',
|
|
'employment_basis_code': 'F',
|
|
'l10n_au_training_loan': False,
|
|
'l10n_au_tax_free_threshold': True,
|
|
'tax_treatment_option_actor': 'D',
|
|
'leave_loading': 'regular',
|
|
'leave_loading_rate': 17.5,
|
|
'workplace_giving_type': 'none',
|
|
'workplace_giving_employee': 0,
|
|
'workplace_giving_employer': 0,
|
|
'salary_sacrifice_superannuation': 0,
|
|
'salary_sacrifice_other': 0,
|
|
'wage_type': 'monthly',
|
|
'schedule_pay': 'weekly',
|
|
'wage': 5000,
|
|
'casual_loading': 0,
|
|
'performances_per_week': 1,
|
|
})
|
|
payslip_date = date(2023, 7, 3)
|
|
payslip_end_date = date(2023, 7, 9)
|
|
self._test_payslip(
|
|
employee,
|
|
contract,
|
|
expected_worked_days=[
|
|
# (work_entry_type_id.id, number_of_day, number_of_hours, amount)
|
|
(self.work_entry_types['WORK100'].id, 5, 38, 5000),
|
|
],
|
|
expected_lines=[
|
|
# (code, total)
|
|
('BASIC', 5000),
|
|
('OTE', 5000),
|
|
('GROSS', 5000),
|
|
('WITHHOLD', -1317),
|
|
('MEDICARE', 0),
|
|
('WITHHOLD.TOTAL', -1317),
|
|
('NET', 3683),
|
|
('SUPER', 550),
|
|
],
|
|
payslip_date_from=payslip_date,
|
|
payslip_date_to=payslip_end_date,
|
|
)
|
|
|
|
def test_actor_payslip_2(self):
|
|
employee, contract = self._create_employee(contract_info={
|
|
'employee': 'Test Employee',
|
|
'employment_basis_code': 'F',
|
|
'l10n_au_training_loan': False,
|
|
'tax_treatment_option_actor': 'D',
|
|
'leave_loading': 'regular',
|
|
'leave_loading_rate': 17.5,
|
|
'workplace_giving_type': 'none',
|
|
'workplace_giving_employee': 0,
|
|
'workplace_giving_employer': 0,
|
|
'salary_sacrifice_superannuation': 0,
|
|
'salary_sacrifice_other': 0,
|
|
'wage_type': 'monthly',
|
|
'schedule_pay': 'weekly',
|
|
'wage': 5000,
|
|
'casual_loading': 0,
|
|
'performances_per_week': 1,
|
|
})
|
|
payslip_date = date(2023, 7, 3)
|
|
payslip_end_date = date(2023, 7, 9)
|
|
self._test_payslip(
|
|
employee,
|
|
contract,
|
|
expected_worked_days=[
|
|
# (work_entry_type_id.id, number_of_day, number_of_hours, amount)
|
|
(self.work_entry_types['WORK100'].id, 5, 38, 5000),
|
|
],
|
|
expected_lines=[
|
|
# (code, total)
|
|
('BASIC', 5000),
|
|
('OTE', 5000),
|
|
('GROSS', 5000),
|
|
('WITHHOLD', -1481),
|
|
('WITHHOLD.TOTAL', -1481),
|
|
('NET', 3519),
|
|
('SUPER', 550),
|
|
],
|
|
payslip_date_from=payslip_date,
|
|
payslip_date_to=payslip_end_date,
|
|
)
|
|
|
|
@skip("Daily actors with number of performances to be implemented")
|
|
def test_actor_payslip_3(self):
|
|
employee, contract = self._create_employee(contract_info={
|
|
'employee': 'Test Employee',
|
|
'tfn_declaration': 'provided',
|
|
'tfn': '999999661',
|
|
'salary_sacrifice_superannuation': 200,
|
|
'salary_sacrifice_other': 100,
|
|
'workplace_giving_employee': 50,
|
|
'workplace_giving_employer': 50,
|
|
'wage_type': 'monthly',
|
|
'wage': 5000,
|
|
'casual_loading': 0,
|
|
'l10n_au_training_loan': False,
|
|
'l10n_au_tax_free_threshold': True})
|
|
|
|
self.assertEqual(employee.l10n_au_tax_treatment_code, 'ATXXXX')
|
|
|
|
self._test_payslip(
|
|
employee,
|
|
contract,
|
|
expected_worked_days=[
|
|
# (work_entry_type_id.id, number_of_day, number_of_hours, amount)
|
|
(self.work_entry_types['WORK100'].id, 23, 174.8, 5000),
|
|
],
|
|
expected_lines=[
|
|
# (code, total)
|
|
('BASIC', 5000),
|
|
('OTE', 6050),
|
|
('EXTRA', 200),
|
|
('SALARY.SACRIFICE.TOTAL', -350),
|
|
('ALW', 550),
|
|
('ALW.TAXFREE', 0),
|
|
('RTW', 300),
|
|
('SALARY.SACRIFICE.OTHER', -150),
|
|
('WORKPLACE.GIVING', -50),
|
|
('GROSS', 5650),
|
|
('WITHHOLD', -1229),
|
|
('RTW.WITHHOLD', -96),
|
|
('MEDICARE', 0),
|
|
('WITHHOLD.TOTAL', -1325),
|
|
('NET', 4325),
|
|
('SUPER.CONTRIBUTION', 200),
|
|
('SUPER', 695.75),
|
|
],
|
|
input_lines=self.default_input_lines,
|
|
payslip_date_from=date(2024, 7, 1),
|
|
payslip_date_to=date(2024, 7, 31),
|
|
)
|
|
|
|
@skip("Daily actors with number of performances to be implemented")
|
|
def test_actor_payslip_4(self):
|
|
employee, contract = self._create_employee(contract_info={
|
|
'employee': 'Test Employee',
|
|
'tfn_declaration': 'provided',
|
|
'tfn': '999999661',
|
|
'salary_sacrifice_superannuation': 200,
|
|
'salary_sacrifice_other': 100,
|
|
'workplace_giving_employee': 50,
|
|
'workplace_giving_employer': 50,
|
|
'wage_type': 'monthly',
|
|
'wage': 5000,
|
|
'casual_loading': 0,
|
|
'l10n_au_training_loan': False,
|
|
'l10n_au_tax_free_threshold': False})
|
|
|
|
self.assertEqual(employee.l10n_au_tax_treatment_code, 'ANXXXX')
|
|
|
|
self._test_payslip(
|
|
employee,
|
|
contract,
|
|
expected_worked_days=[
|
|
# (work_entry_type_id.id, number_of_day, number_of_hours, amount)
|
|
(self.work_entry_types['WORK100'].id, 23, 174.8, 5000),
|
|
],
|
|
expected_lines=[
|
|
# (code, total)
|
|
('BASIC', 5000),
|
|
('OTE', 6050),
|
|
('EXTRA', 200),
|
|
('SALARY.SACRIFICE.TOTAL', -350),
|
|
('ALW', 550),
|
|
('ALW.TAXFREE', 0),
|
|
('RTW', 300),
|
|
('SALARY.SACRIFICE.OTHER', -150),
|
|
('WORKPLACE.GIVING', -50),
|
|
('GROSS', 5650),
|
|
('WITHHOLD', -1393),
|
|
('RTW.WITHHOLD', -141),
|
|
('WITHHOLD.TOTAL', -1534),
|
|
('NET', 4116),
|
|
('SUPER.CONTRIBUTION', 200),
|
|
('SUPER', 695.75),
|
|
],
|
|
input_lines=self.default_input_lines,
|
|
payslip_date_from=date(2024, 7, 1),
|
|
payslip_date_to=date(2024, 7, 31),
|
|
)
|
|
|
|
@skip("Daily actors with number of performances to be implemented")
|
|
def test_actor_payslip_5(self):
|
|
employee, contract = self._create_employee(contract_info={
|
|
'employee': 'Test Employee',
|
|
'tfn_declaration': 'provided',
|
|
'tfn': '999999661',
|
|
'salary_sacrifice_superannuation': 200,
|
|
'salary_sacrifice_other': 100,
|
|
'workplace_giving_employee': 50,
|
|
'workplace_giving_employer': 50,
|
|
'wage_type': 'monthly',
|
|
'wage': 5000,
|
|
'casual_loading': 0,
|
|
'l10n_au_training_loan': False,
|
|
'less_than_3_performance': True,
|
|
'l10n_au_tax_free_threshold': True})
|
|
|
|
self.assertEqual(employee.l10n_au_tax_treatment_code, 'ADXXXX')
|
|
|
|
self._test_payslip(
|
|
employee,
|
|
contract,
|
|
expected_worked_days=[
|
|
# (work_entry_type_id.id, number_of_day, number_of_hours, amount)
|
|
(self.work_entry_types['WORK100'].id, 23, 174.8, 5000),
|
|
],
|
|
expected_lines=[
|
|
# (code, total)
|
|
('BASIC', 5000),
|
|
('OTE', 6050),
|
|
('EXTRA', 200),
|
|
('SALARY.SACRIFICE.TOTAL', -350),
|
|
('ALW', 550),
|
|
('ALW.TAXFREE', 0),
|
|
('RTW', 300),
|
|
('SALARY.SACRIFICE.OTHER', -150),
|
|
('WORKPLACE.GIVING', -50),
|
|
('GROSS', 5650),
|
|
('WITHHOLD', -1229),
|
|
('RTW.WITHHOLD', -96),
|
|
('MEDICARE', 0),
|
|
('WITHHOLD.TOTAL', -1325),
|
|
('NET', 4325),
|
|
('SUPER.CONTRIBUTION', 200),
|
|
('SUPER', 695.75),
|
|
],
|
|
input_lines=self.default_input_lines,
|
|
payslip_date_from=date(2024, 7, 1),
|
|
payslip_date_to=date(2024, 7, 31),
|
|
)
|
|
|
|
def test_actor_payslip_6(self):
|
|
employee, contract = self._create_employee(contract_info={
|
|
'employee': 'Test Employee',
|
|
'tfn_declaration': 'provided',
|
|
'tfn': '999999661',
|
|
'salary_sacrifice_superannuation': 200,
|
|
'salary_sacrifice_other': 100,
|
|
'workplace_giving_employee': 50,
|
|
'workplace_giving_employer': 50,
|
|
'wage_type': 'monthly',
|
|
'wage': 5000,
|
|
'casual_loading': 0,
|
|
'l10n_au_training_loan': False,
|
|
'l10n_au_tax_free_threshold': False,
|
|
'tax_treatment_option_actor': 'P'})
|
|
|
|
self.assertEqual(employee.l10n_au_tax_treatment_code, 'APXXXX')
|
|
|
|
self._test_payslip(
|
|
employee,
|
|
contract,
|
|
expected_worked_days=[
|
|
# (work_entry_type_id.id, number_of_day, number_of_hours, amount)
|
|
(self.work_entry_types['WORK100'].id, 23, 174.8, 5000),
|
|
],
|
|
expected_lines=[
|
|
# (code, total)
|
|
('BASIC', 5000),
|
|
('OTE', 6050),
|
|
('EXTRA', 200),
|
|
('SALARY.SACRIFICE.TOTAL', -350),
|
|
('ALW', 550),
|
|
('ALW.TAXFREE', 0),
|
|
('RTW', 300),
|
|
('SALARY.SACRIFICE.OTHER', -150),
|
|
('WORKPLACE.GIVING', -50),
|
|
('GROSS', 5650),
|
|
('WITHHOLD', -1070),
|
|
('RTW.WITHHOLD', -96),
|
|
('WITHHOLD.TOTAL', -1166),
|
|
('NET', 4484),
|
|
('SUPER.CONTRIBUTION', 200),
|
|
('SUPER', 695.75),
|
|
],
|
|
input_lines=self.default_input_lines,
|
|
payslip_date_from=date(2024, 7, 1),
|
|
payslip_date_to=date(2024, 7, 31),
|
|
)
|