diff --git a/l10n_us_hr_payroll/data/state/la_louisiana.xml b/l10n_us_hr_payroll/data/state/la_louisiana.xml index 5f23bea4..7e4f5fe2 100644 --- a/l10n_us_hr_payroll/data/state/la_louisiana.xml +++ b/l10n_us_hr_payroll/data/state/la_louisiana.xml @@ -27,17 +27,17 @@ - 6.20 + 1.14 - 6.20 + 1.14 - + US LA Louisiana SIT Tax Rate us_la_sit_tax_rate @@ -46,16 +46,32 @@ { - 'single': ((12500.00, 2.10), (50000.00, 1.60), ('inf', 1.35)), - 'married': ((25000.00, 2.10), (100000.00, 1.65), ('inf', 1.35)), + 'single': ( + (12500.00, 2.10), + (50000.00, 1.60), + ( 'inf', 1.35), + ), + 'married': ( + ( 25000.00, 2.10), + (100000.00, 1.65), + ( 'inf', 1.35), + ), } { - 'single': ((12500.00, 2.10), (50000.00, 1.60), ('inf', 1.35)), - 'married': ((25000.00, 2.10), (100000.00, 1.65), ('inf', 1.35)), + 'single': ( + (12500.00, 2.10), + (50000.00, 1.60), + ( 'inf', 1.35) + ), + 'married': ( + ( 25000.00, 2.10), + (100000.00, 1.65), + ( 'inf', 1.35) + ), } diff --git a/l10n_us_hr_payroll/models/state/la_louisiana.py b/l10n_us_hr_payroll/models/state/la_louisiana.py index 0697d696..c580d5a2 100644 --- a/l10n_us_hr_payroll/models/state/la_louisiana.py +++ b/l10n_us_hr_payroll/models/state/la_louisiana.py @@ -24,6 +24,7 @@ def la_louisiana_state_income_withholding(payslip, categories, worked_days, inpu pay_periods = payslip.dict.get_pay_periods_in_year() personal_exemptions = payslip.contract_id.us_payroll_config_value('la_l4_sit_exemptions') + additional = payslip.contract_id.us_payroll_config_value('state_income_tax_additional_withholding') dependent_exemptions = payslip.contract_id.us_payroll_config_value('la_l4_sit_dependents') tax_table = payslip.rule_parameter('us_la_sit_tax_rate')[filing_status] exemption_rate = payslip.rule_parameter('us_la_sit_personal_exemption_rate') @@ -57,4 +58,5 @@ def la_louisiana_state_income_withholding(payslip, categories, worked_days, inpu withholding = withholding - (after_credits_under + after_credits_over) withholding = round(withholding, 2) + withholding += additional return wage, -((withholding / wage) * 100.0) diff --git a/l10n_us_hr_payroll/tests/test_us_la_louisiana_payslip_2019.py b/l10n_us_hr_payroll/tests/test_us_la_louisiana_payslip_2019.py index f723744a..1d01c618 100644 --- a/l10n_us_hr_payroll/tests/test_us_la_louisiana_payslip_2019.py +++ b/l10n_us_hr_payroll/tests/test_us_la_louisiana_payslip_2019.py @@ -7,7 +7,7 @@ class TestUsLAPayslip(TestUsPayslip): # TAXES AND RATES LA_UNEMP_MAX_WAGE = 7700.00 - LA_UNEMP = -(6.20 / 100.0) + LA_UNEMP = -(1.14 / 100.0) def test_taxes_single_weekly(self): salary = 700.00 @@ -15,6 +15,7 @@ class TestUsLAPayslip(TestUsPayslip): filing_status = 'single' exemptions = 1 dependents = 2 + additional_withholding = 0 # SEE http://revenue.louisiana.gov/TaxForms/1306(1_12)TF.pdf for example calculations # wh_to test is 19.42 # Our algorithm correctly rounds whereas theirs does it prematurely. @@ -24,6 +25,7 @@ class TestUsLAPayslip(TestUsPayslip): wage=salary, state_id=self.get_us_state('LA'), la_l4_sit_filing_status=filing_status, + state_income_tax_additional_withholding=additional_withholding, la_l4_sit_exemptions=exemptions, la_l4_sit_dependents=dependents, schedule_pay=schedule_pay) @@ -54,6 +56,7 @@ class TestUsLAPayslip(TestUsPayslip): filing_status = 'married' exemptions = 2 dependents = 3 + additional_withholding = 0 # SEE http://revenue.louisiana.gov/TaxForms/1306(1_12)TF.pdf for example calculations # wh_to test is 157.12 wh_to_check = -157.12 @@ -62,6 +65,7 @@ class TestUsLAPayslip(TestUsPayslip): wage=salary, state_id=self.get_us_state('LA'), la_l4_sit_filing_status=filing_status, + state_income_tax_additional_withholding=additional_withholding, la_l4_sit_exemptions=exemptions, la_l4_sit_dependents=dependents, schedule_pay=schedule_pay) diff --git a/l10n_us_hr_payroll/tests/test_us_la_louisiana_payslip_2020.py b/l10n_us_hr_payroll/tests/test_us_la_louisiana_payslip_2020.py index 14dde5bf..d23c3ab3 100755 --- a/l10n_us_hr_payroll/tests/test_us_la_louisiana_payslip_2020.py +++ b/l10n_us_hr_payroll/tests/test_us_la_louisiana_payslip_2020.py @@ -9,15 +9,16 @@ class TestUsLAPayslip(TestUsPayslip): # 2020 Taxes and Rates ### LA_UNEMP_MAX_WAGE = 7700.0 - LA_UNEMP = 6.20 + LA_UNEMP = 1.14 # Calculation based on http://revenue.louisiana.gov/TaxForms/1306(1_12)TF.pdf - def _test_sit(self, wage, filing_status, exemptions, dependents, schedule_pay, date_start, expected_withholding): + def _test_sit(self, wage, filing_status, additional_withholding, exemptions, dependents, schedule_pay, date_start, expected_withholding): employee = self._createEmployee() contract = self._createContract(employee, wage=wage, state_id=self.get_us_state('LA'), la_l4_sit_filing_status=filing_status, + state_income_tax_additional_withholding=additional_withholding, la_l4_sit_exemptions=exemptions, la_l4_sit_dependents=dependents, schedule_pay=schedule_pay) @@ -26,9 +27,10 @@ class TestUsLAPayslip(TestUsPayslip): cats = self._getCategories(payslip) self._log('Computed period tax: ' + str(expected_withholding)) - self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding) + self.assertPayrollAlmostEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding) def test_2020_taxes_example(self): self._test_er_suta('LA', self.LA_UNEMP, date(2020, 1, 1), wage_base=self.LA_UNEMP_MAX_WAGE) - self._test_sit(700.0, 'single', 1.0, 2.0, 'weekly', date(2020, 1, 1), 19.43) - self._test_sit(4600.0, 'married', 2.0, 3.0, 'bi-weekly', date(2020, 1, 1), 157.12) + self._test_sit(700.0, 'single', 0.0, 1.0, 2.0, 'weekly', date(2020, 1, 1), 19.43) + self._test_sit(4600.0, 'married', 0.0, 2.0, 3.0, 'bi-weekly', date(2020, 1, 1), 157.12) + self._test_sit(6000.0, 'single', 10.0, 2.0, 3.0, 'monthly', date(2020, 1, 1), 219.08) 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 d2b5ced5..022326ea 100644 --- a/l10n_us_hr_payroll/views/us_payroll_config_views.xml +++ b/l10n_us_hr_payroll/views/us_payroll_config_views.xml @@ -142,6 +142,7 @@ +

Form W-4ME - State Income Tax