From e868c703fcb29ba5cea91eec6223296b429978f5 Mon Sep 17 00:00:00 2001 From: Bhoomi Vaishnani Date: Mon, 18 May 2020 11:26:43 -0400 Subject: [PATCH] [IMP] l10n_us_hr_payroll: Port `l10n_us_wy_hr_payroll` WY Wyoming including migration. --- l10n_us_hr_payroll/__manifest__.py | 1 + l10n_us_hr_payroll/data/state/wy_wyoming.xml | 61 +++++++++++++++++++ l10n_us_hr_payroll/tests/__init__.py | 3 + .../tests/test_us_wy_wyoming_payslip_2019.py | 58 ++++++++++++++++++ .../tests/test_us_wy_wyoming_payslip_2020.py | 13 ++++ .../views/us_payroll_config_views.xml | 3 + 6 files changed, 139 insertions(+) create mode 100644 l10n_us_hr_payroll/data/state/wy_wyoming.xml create mode 100644 l10n_us_hr_payroll/tests/test_us_wy_wyoming_payslip_2019.py create mode 100644 l10n_us_hr_payroll/tests/test_us_wy_wyoming_payslip_2020.py diff --git a/l10n_us_hr_payroll/__manifest__.py b/l10n_us_hr_payroll/__manifest__.py index d18c9903..8a60b569 100644 --- a/l10n_us_hr_payroll/__manifest__.py +++ b/l10n_us_hr_payroll/__manifest__.py @@ -64,6 +64,7 @@ United States of America - Payroll Rules. 'data/state/tx_texas.xml', 'data/state/va_virginia.xml', 'data/state/wa_washington.xml', + 'data/state/wy_wyoming.xml', 'views/hr_contract_views.xml', 'views/us_payroll_config_views.xml', ], diff --git a/l10n_us_hr_payroll/data/state/wy_wyoming.xml b/l10n_us_hr_payroll/data/state/wy_wyoming.xml new file mode 100644 index 00000000..cfcfcd3c --- /dev/null +++ b/l10n_us_hr_payroll/data/state/wy_wyoming.xml @@ -0,0 +1,61 @@ + + + + + US WY Wyoming SUTA Wage Base + us_wy_suta_wage_base + + + + + 25400.00 + + + + + 26400.00 + + + + + + + + US WY Wyoming SUTA Rate + us_wy_suta_rate + + + + + 2.10 + + + + + 2.10 + + + + + + + + US Wyoming - Department of Workforce Services (WDWS) - Unemployment Tax + + + + + + + + ER: US WY Wyoming State Unemployment + ER_US_WY_SUTA + python + result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_wy_suta_wage_base', rate='us_wy_suta_rate', state_code='WY') + code + result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_wy_suta_wage_base', rate='us_wy_suta_rate', state_code='WY') + + + + + diff --git a/l10n_us_hr_payroll/tests/__init__.py b/l10n_us_hr_payroll/tests/__init__.py index cc2bfff6..85218b71 100755 --- a/l10n_us_hr_payroll/tests/__init__.py +++ b/l10n_us_hr_payroll/tests/__init__.py @@ -108,3 +108,6 @@ from . import test_us_va_virginia_payslip_2020 from . import test_us_wa_washington_payslip_2019 from . import test_us_wa_washington_payslip_2020 + +from . import test_us_wy_wyoming_payslip_2019 +from . import test_us_wy_wyoming_payslip_2020 diff --git a/l10n_us_hr_payroll/tests/test_us_wy_wyoming_payslip_2019.py b/l10n_us_hr_payroll/tests/test_us_wy_wyoming_payslip_2019.py new file mode 100644 index 00000000..a8fa3df8 --- /dev/null +++ b/l10n_us_hr_payroll/tests/test_us_wy_wyoming_payslip_2019.py @@ -0,0 +1,58 @@ +# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. + +from datetime import date +from .common import TestUsPayslip, process_payslip + + +class TestUsWYPayslip(TestUsPayslip): + + # TAXES AND RATES + WY_UNEMP_MAX_WAGE = 25400 + WY_UNEMP = -2.10 / 100.0 + + def test_2019_taxes(self): + salary = 15000.00 + + employee = self._createEmployee() + contract = self._createContract(employee, + wage=salary, + state_id=self.get_us_state('WY')) + + self._log('2019 Wyoming tax first payslip:') + payslip = self._createPayslip(employee, '2019-01-01', '2019-01-31') + + payslip.compute_sheet() + cats = self._getCategories(payslip) + + self.assertPayrollEqual(cats['ER_US_SUTA'], salary * self.WY_UNEMP) + + process_payslip(payslip) + + # Make a new payslip, this one will have maximums + + remaining_wy_unemp_wages = self.WY_UNEMP_MAX_WAGE - salary if (self.WY_UNEMP_MAX_WAGE - 2*salary < salary) \ + else salary + + self._log('2019 Wyoming tax second payslip:') + payslip = self._createPayslip(employee, '2019-02-01', '2019-02-28') + payslip.compute_sheet() + cats = self._getCategories(payslip) + + self.assertPayrollEqual(cats['ER_US_SUTA'], remaining_wy_unemp_wages * self.WY_UNEMP) + + def test_2019_taxes_with_external(self): + # Wage is the cap itself, 25400 + # so salary is equal to self.WY_UNEMP + salary = 25400 + + employee = self._createEmployee() + contract = self._createContract(employee, + wage=salary, + state_id=self.get_us_state('WY')) + + self._log('2019 Wyoming External tax first payslip:') + payslip = self._createPayslip(employee, '2019-01-01', '2019-01-31') + payslip.compute_sheet() + cats = self._getCategories(payslip) + + self.assertPayrollEqual(cats['ER_US_SUTA'], salary * self.WY_UNEMP) diff --git a/l10n_us_hr_payroll/tests/test_us_wy_wyoming_payslip_2020.py b/l10n_us_hr_payroll/tests/test_us_wy_wyoming_payslip_2020.py new file mode 100644 index 00000000..51a89a74 --- /dev/null +++ b/l10n_us_hr_payroll/tests/test_us_wy_wyoming_payslip_2020.py @@ -0,0 +1,13 @@ +# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. + +from datetime import date +from .common import TestUsPayslip + + +class TestUsWYPayslip(TestUsPayslip): + # TAXES AND RATES + WY_UNEMP_MAX_WAGE = 26400.00 + WY_UNEMP = 2.10 + + def test_2020_taxes(self): + self._test_er_suta('WY', self.WY_UNEMP, date(2020, 1, 1), wage_base=self.WY_UNEMP_MAX_WAGE) diff --git a/l10n_us_hr_payroll/views/us_payroll_config_views.xml b/l10n_us_hr_payroll/views/us_payroll_config_views.xml index eae427c3..192120cd 100644 --- a/l10n_us_hr_payroll/views/us_payroll_config_views.xml +++ b/l10n_us_hr_payroll/views/us_payroll_config_views.xml @@ -256,6 +256,9 @@

No additional fields.

Ensure that your Employee and Employer workers' comp code fields are filled in for WA LNI withholding.

+ +

No additional fields.

+