From a32b4630762218cbe883540bc15d9825b920f2fe Mon Sep 17 00:00:00 2001 From: Jared Self Date: Wed, 13 Jan 2021 17:39:12 -0700 Subject: [PATCH] VT Vermont --- l10n_us_hr_payroll/data/state/vt_vermont.xml | 114 ++++++++++++++++++ .../tests/test_us_vt_vermont_payslip_2021.py | 37 ++++++ 2 files changed, 151 insertions(+) create mode 100755 l10n_us_hr_payroll/tests/test_us_vt_vermont_payslip_2021.py diff --git a/l10n_us_hr_payroll/data/state/vt_vermont.xml b/l10n_us_hr_payroll/data/state/vt_vermont.xml index 74f1a491..9ee8c497 100644 --- a/l10n_us_hr_payroll/data/state/vt_vermont.xml +++ b/l10n_us_hr_payroll/data/state/vt_vermont.xml @@ -12,6 +12,11 @@ + + 14100.0 + + + @@ -21,6 +26,7 @@ + 1.0 @@ -46,6 +52,19 @@ + + + { + 'weekly' : 84.62, + 'bi-weekly' : 169.23, + 'semi-monthly': 183.33, + 'monthly' : 366.67, + 'quarterly' : 1100.00, + 'annually': 4400.00, + } + + + @@ -148,6 +167,101 @@ + + + { + 'single': { + 'weekly': ( + ( 61, 0.00, 0.00), + ( 849, 0.00, 3.35), + ( 1969, 26.40, 6.60), + ( 4041, 100.32, 7.60), + ('inf', 257.79, 8.75), + ), + 'bi-weekly': ( + ( 122, 0.00, 0.00), + ( 1697, 0.00, 3.35), + ( 3938, 52.76, 6.60), + ( 8082, 200.67, 7.60), + ('inf', 515.61, 8.75), + ), + 'semi-monthly': ( + ( 132, 0.00, 0.00), + ( 1839, 0.00, 3.35), + ( 4266, 57.18, 6.60), + ( 8755, 217.37, 7.60), + ('inf', 558.53, 8.75), + ), + 'monthly': ( + ( 265, 0.00, 0.00), + ( 3677, 0.00, 3.35), + ( 8531, 114.30, 6.60), + (17510, 434.67, 7.60), + ('inf', 1117.07, 8.75), + ), + 'quarterly': ( + ( 794, 0.00, 0.00), + (11031, 0.00, 3.35), + (25594, 342.94, 6.60), + (52531, 1304.10, 7.60), + ('inf', 3351.31, 8.75), + ), + 'annually': ( + ( 3175, 0.00, 0.00), + ( 44125, 0.00, 3.35), + (102375, 1371.83, 6.60), + (210125, 5216.33, 7.60), + ( 'inf', 13405.33, 8.75), + ), + }, + 'married': { + 'weekly': ( + ( 183, 0.00, 0.00), + ( 1499, 0.00, 3.35), + ( 3363, 44.09, 6.60), + ( 5028, 167.11, 7.60), + ('inf', 293.65, 8.75), + ), + 'bi-weekly': ( + ( 366, 0.00, 0.00), + ( 2997, 0.00, 3.35), + ( 6726, 88.14, 6.60), + (10057, 334.25, 7.60), + ('inf', 587.41, 8.75), + ), + 'semi-monthly': ( + ( 397, 0.00, 0.00), + ( 3247, 0.00, 3.35), + ( 7286, 95.48, 6.60), + (10895, 362.05, 7.60), + ('inf', 636.33, 8.75), + ), + 'monthly': ( + ( 794, 0.00, 0.00), + ( 6494, 0.00, 3.35), + (14573, 190.95, 6.60), + (21790, 724.16, 7.60), + ('inf', 1272.66, 8.75), + ), + 'quarterly': ( + ( 2381, 0.00, 0.00), + (19481, 0.00, 3.35), + (43719, 572.85, 6.60), + (65719, 2172.56, 7.60), + ('inf', 3817.96, 8.75), + ), + 'annually': ( + ( 9525, 0.00, 0.00), + ( 77925, 0.00, 3.35), + (174875, 2291.40, 6.60), + (261475, 8690.10, 7.60), + ( 'inf', 15271.70, 8.75), + ), + }, + } + + + diff --git a/l10n_us_hr_payroll/tests/test_us_vt_vermont_payslip_2021.py b/l10n_us_hr_payroll/tests/test_us_vt_vermont_payslip_2021.py new file mode 100755 index 00000000..67fb7a99 --- /dev/null +++ b/l10n_us_hr_payroll/tests/test_us_vt_vermont_payslip_2021.py @@ -0,0 +1,37 @@ +# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. + +from datetime import date, timedelta +from .common import TestUsPayslip + + +class TestUsVTPayslip(TestUsPayslip): + ### + # 2021 Taxes and Rates + ### + VT_UNEMP_MAX_WAGE = 14100.0 + VT_UNEMP = 1.0 + # Calculation based on example https://tax.vermont.gov/sites/tax/files/documents/WithholdingInstructions.pdf + + def _test_sit(self, wage, filing_status, allowances, additional_withholding, exempt, schedule_pay, date_start, expected_withholding): + employee = self._createEmployee() + contract = self._createContract(employee, + wage=wage, + state_id=self.get_us_state('VT'), + vt_w4vt_sit_filing_status=filing_status, + vt_w4vt_sit_allowances=allowances, + state_income_tax_additional_withholding=additional_withholding, + state_income_tax_exempt=exempt, + schedule_pay=schedule_pay) + payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7)) + payslip.compute_sheet() + cats = self._getCategories(payslip) + + self._log('Computed period tax: ' + str(expected_withholding)) + self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding) + + def test_2021_taxes_example(self): + self._test_er_suta('VT', self.VT_UNEMP, date(2021, 1, 1), wage_base=self.VT_UNEMP_MAX_WAGE) + self._test_sit(1800, 'married', 2, 0, False, 'weekly', date(2021, 1, 1), 52.79) + self._test_sit(1800, 'married', 2, 10, False, 'weekly', date(2021, 1, 1), 62.79) + self._test_sit(1000, 'single', 1, 0, True, 'weekly', date(2021, 1, 1), 0.00) + self._test_sit(8000, 'single', 1, 10, False, 'bi-weekly', date(2021, 1, 1), 506.52)