From 9d7cea3c132c9d1ca1bf01057c2d75cc243d54f8 Mon Sep 17 00:00:00 2001 From: Jared Kipe Date: Tue, 7 Dec 2021 13:32:44 -0800 Subject: [PATCH] [FIX] l10n_us_hr_payroll: calculate ER as negative, not FICA/FUTA exempt --- l10n_us_hr_payroll_401k/data/payroll.xml | 2 +- l10n_us_hr_payroll_401k/models/payslip.py | 2 +- l10n_us_hr_payroll_401k/tests/test_payroll.py | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/l10n_us_hr_payroll_401k/data/payroll.xml b/l10n_us_hr_payroll_401k/data/payroll.xml index 78a3771e..24b7e10c 100644 --- a/l10n_us_hr_payroll_401k/data/payroll.xml +++ b/l10n_us_hr_payroll_401k/data/payroll.xml @@ -57,7 +57,7 @@ EE: 401K Traditional EE_IRA - + EE: 401K Roth diff --git a/l10n_us_hr_payroll_401k/models/payslip.py b/l10n_us_hr_payroll_401k/models/payslip.py index 5725ad3a..fc596777 100644 --- a/l10n_us_hr_payroll_401k/models/payslip.py +++ b/l10n_us_hr_payroll_401k/models/payslip.py @@ -48,7 +48,7 @@ def er_401k_match(wages, payslip, categories, worked_days, inputs): else: if remaining - result < 0.0: result = remaining - return result + return -result class HRPayslip(models.Model): diff --git a/l10n_us_hr_payroll_401k/tests/test_payroll.py b/l10n_us_hr_payroll_401k/tests/test_payroll.py index 87e5fca4..cb310262 100644 --- a/l10n_us_hr_payroll_401k/tests/test_payroll.py +++ b/l10n_us_hr_payroll_401k/tests/test_payroll.py @@ -33,7 +33,7 @@ class TestUsPayslip(common.TestUsPayslip): er_ira_line = payslip.line_ids.filtered(lambda l: l.code == 'ER_IRA_MATCH') self.assertTrue(er_ira_line) - self.assertPayrollEqual(er_ira_line.amount, 80.0) # 4% of wage up to their contribution + self.assertPayrollEqual(er_ira_line.amount, -80.0) # 4% of wage up to their contribution contract.ira_rate = 0.0 contract.ira_amount = 25.0 @@ -44,7 +44,7 @@ class TestUsPayslip(common.TestUsPayslip): er_ira_line = payslip.line_ids.filtered(lambda l: l.code == 'ER_IRA_MATCH') self.assertTrue(er_ira_line) - self.assertPayrollEqual(er_ira_line.amount, 25.0) # 4% of wage up to their contribution + self.assertPayrollEqual(er_ira_line.amount, -25.0) # 4% of wage up to their contribution def test_02_payslip_roth(self): wage = 2000.0 @@ -61,7 +61,7 @@ class TestUsPayslip(common.TestUsPayslip): er_ira_line = payslip.line_ids.filtered(lambda l: l.code == 'ER_IRA_MATCH') self.assertTrue(er_ira_line) - self.assertPayrollEqual(er_ira_line.amount, 80.0) # 4% of wage up to their contribution + self.assertPayrollEqual(er_ira_line.amount, -80.0) # 4% of wage up to their contribution contract.ira_roth_rate = 0.0 contract.ira_roth_amount = 25.0 @@ -72,7 +72,7 @@ class TestUsPayslip(common.TestUsPayslip): er_ira_line = payslip.line_ids.filtered(lambda l: l.code == 'ER_IRA_MATCH') self.assertTrue(er_ira_line) - self.assertPayrollEqual(er_ira_line.amount, 25.0) # 4% of wage up to their contribution + self.assertPayrollEqual(er_ira_line.amount, -25.0) # 4% of wage up to their contribution def test_10_payslip_limits(self): self.er_match_parameter.parameter_value = '20.0' # 20% match up to salary @@ -92,7 +92,7 @@ class TestUsPayslip(common.TestUsPayslip): self.assertPayrollEqual(ira_line.amount, -(wage * rate / 100.0)) er_ira_line = payslip.line_ids.filtered(lambda l: l.code == 'ER_IRA_MATCH') self.assertTrue(er_ira_line) - self.assertPayrollEqual(er_ira_line.amount, -ira_line.amount) + self.assertPayrollEqual(er_ira_line.amount, ira_line.amount) common.process_payslip(payslip) # Payslip 2 - 3.5k @@ -104,7 +104,7 @@ class TestUsPayslip(common.TestUsPayslip): self.assertPayrollEqual(ira_line.amount, -(self.EE_LIMIT-(wage * rate / 100.0))) er_ira_line = payslip.line_ids.filtered(lambda l: l.code == 'ER_IRA_MATCH') self.assertTrue(er_ira_line) - self.assertPayrollEqual(er_ira_line.amount, -ira_line.amount) + self.assertPayrollEqual(er_ira_line.amount, ira_line.amount) common.process_payslip(payslip) # Payslip 3 - 0 (over limit) @@ -124,7 +124,7 @@ class TestUsPayslip(common.TestUsPayslip): self.assertPayrollEqual(ira_line.amount, -self.EE_LIMIT_CATCHUP) er_ira_line = payslip.line_ids.filtered(lambda l: l.code == 'ER_IRA_MATCH') self.assertTrue(er_ira_line) - self.assertPayrollEqual(er_ira_line.amount, -ira_line.amount) + self.assertPayrollEqual(er_ira_line.amount, ira_line.amount) common.process_payslip(payslip) # Note that the company limit is higher than what is possible by 'match'