[IMP] l10n_us_hr_payroll: Added Tax table for 2020 and improved Test case for GA Georgia 2020

This commit is contained in:
Bhoomi Vaishnani
2020-08-20 17:32:49 -04:00
parent 3e1225a72a
commit 002b3e5c5d
4 changed files with 722 additions and 167 deletions

View File

@@ -47,54 +47,597 @@
<record id="rule_parameter_us_ga_sit_rate_2019" model="hr.rule.parameter.value"> <record id="rule_parameter_us_ga_sit_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">{ <field name="parameter_value">{
'married filing joint, both spouses working': { 'married filing joint, both spouses working': {
'weekly': ((9.50, 0.00, 1.00), (29.00, .10, 2.00), (48.00, .48, 3.00), (67.50, 1.06, 4.00), (96.00, 1.83, 5.00), ('inf', 3.27, 5.75)), 'weekly': (
'bi-weekly': ((19.00, 0.00, 1.00), (57.50, .19, 2.00), (96.00, .96, 3.00), (135.00, 2.12, 4.00), (192.00, 3.65, 5.00), ('inf', 6.54, 5.75)), ( 9.50, 0.00, 1.00),
'semi-monthly': ((21.00, 0.00, 1.00), (62.50, .21, 2.00), (104.00, 1.04, 3.00), (146.00, 2.29, 4.00), (208.00, 3.96, 5.00), ('inf', 7.08, 5.75)), (29.00, 0.10, 2.00),
'monthly': ((41.50, 0.00, 1.00), (125.50, .42, 2.00), (208.00, 2.08, 3.00), (292.00, 4.58, 4.00), (417.00, 7.92, 5.00), ('inf', 14.17, 5.75)), (48.00, 0.48, 3.00),
'quarterly': ((125.00, 0.00, 1.00), (375.00, 1.25, 2.00), (625.00, 6.25, 3.00), (875.00, 13.75, 4.00), (1250.00, 23.75, 5.00), ('inf', 42.50, 5.75)), (67.50, 1.06, 4.00),
'semi-annual': ((250.00, 0.00, 1.00), (750.00, 2.50, 2.00), (1250.00, 12.50, 3.00), (1750.00, 27.50, 4.00), (2500.00, 47.50, 5.00), ('inf', 85.00, 5.75)), (96.00, 1.83, 5.00),
'annual': ((500.00, 0.00, 1.00), (1500.00, 5.00, 2.00), (2500.00, 25.00, 3.00), (3500.00, 55.00, 4.00), (5000.00, 95.00, 5.00), ('inf', 170.00, 5.75)), ('inf', 3.27, 5.75),
),
'bi-weekly': (
( 19.00, 0.00, 1.00),
( 57.50, 0.19, 2.00),
( 96.00, 0.96, 3.00),
(135.00, 2.12, 4.00),
(192.00, 3.65, 5.00),
( 'inf', 6.54, 5.75),
),
'semi-monthly': (
( 21.00, 0.00, 1.00),
( 62.50, 0.21, 2.00),
(104.00, 1.04, 3.00),
(146.00, 2.29, 4.00),
(208.00, 3.96, 5.00),
( 'inf', 7.08, 5.75),
),
'monthly': (
( 41.50, 0.00, 1.00),
(125.50, 0.42, 2.00),
(208.00, 2.08, 3.00),
(292.00, 4.58, 4.00),
(417.00, 7.92, 5.00),
( 'inf', 14.17, 5.75),
),
'quarterly': (
( 125.00, 0.00, 1.00),
( 375.00, 1.25, 2.00),
( 625.00, 6.25, 3.00),
( 875.00, 13.75, 4.00),
(1250.00, 23.75, 5.00),
( 'inf', 42.50, 5.75),
),
'semi-annual': (
( 250.00, 0.00, 1.00),
( 750.00, 2.50, 2.00),
(1250.00, 12.50, 3.00),
(1750.00, 27.50, 4.00),
(2500.00, 47.50, 5.00),
( 'inf', 85.00, 5.75),
),
'annual': (
( 500.00, 0.00, 1.00),
(1500.00, 5.00, 2.00),
(2500.00, 25.00, 3.00),
(3500.00, 55.00, 4.00),
(5000.00, 95.00, 5.00),
( 'inf', 170.00, 5.75),
),
}, },
'married filing joint, one spouse working': { 'married filing joint, one spouse working': {
'weekly': ((19.00, 0.00, 1.00), (57.50, .19, 2.00), (96.00, .96, 3.00), (135.00, 2.12, 4.00), (192.50, 3.65, 5.00), ('inf', 6.54, 5.75)), 'weekly': (
'bi-weekly': ((38.50, 0.00, 1.00), (115.00, .38, 2.00), (192.00, 1.92, 3.00), (269.00, 4.23, 4.00), (385.00, 7.31, 5.00), ('inf', 13.08, 5.75)), ( 19.00, 0.00, 1.00),
'semi-monthly': ((41.50, 0.00, 1.00), (125.00, .42, 2.00), (208.00, 2.08, 3.00), (292.00, 4.58, 4.00), (417.00, 7.92, 5.00), ('inf', 14.17, 5.75)), ( 57.50, 0.19, 2.00),
'monthly': ((83.00, 0.00, 1.00), (250.00, .83, 2.00), (417.00, 4.17, 3.00), (583.00, 9.17, 4.00), (833.00, 15.83, 5.00), ('inf', 28.33, 5.75)), ( 96.00, 0.96, 3.00),
'quarterly': ((250.00, 0.00, 1.00), (750.00, 2.50, 2.00), (1250.00, 12.50, 3.00), (1750.00, 27.50, 4.00), (2500.00, 47.50, 5.00), ('inf', 85.00, 5.75)), (135.00, 2.12, 4.00),
'semi-annual': ((500.00, 0.00, 1.00), (1500.00, 5.00, 2.00), (2500.00, 25.00, 3.00), (3500.00, 55.00, 4.00), (5000.00, 95.00, 5.00), ('inf', 170.00, 5.75)), (192.50, 3.65, 5.00),
'annual': ((1000.00, 0.00, 1.00), (3000.00, 10.00, 2.00), (5000.00, 50.00, 3.00), (7000.00, 110.00, 4.00), (10000.00, 190.00, 5.00), ('inf', 340.00, 5.75)), ( 'inf', 6.54, 5.75),
),
'bi-weekly': (
( 38.50, 0.00, 1.00),
(115.00, 0.38, 2.00),
(192.00, 1.92, 3.00),
(269.00, 4.23, 4.00),
(385.00, 7.31, 5.00),
( 'inf', 13.08, 5.75),
),
'semi-monthly': (
( 41.50, 0.00, 1.00),
(125.00, 0.42, 2.00),
(208.00, 2.08, 3.00),
(292.00, 4.58, 4.00),
(417.00, 7.92, 5.00),
( 'inf', 14.17, 5.75),
),
'monthly': (
( 83.00, 0.00, 1.00),
(250.00, 0.83, 2.00),
(417.00, 4.17, 3.00),
(583.00, 9.17, 4.00),
(833.00, 15.83, 5.00),
( 'inf', 28.33, 5.75),
),
'quarterly': (
( 250.00, 0.00, 1.00),
( 750.00, 2.50, 2.00),
(1250.00, 12.50, 3.00),
(1750.00, 27.50, 4.00),
(2500.00, 47.50, 5.00),
( 'inf', 85.00, 5.75),
),
'semi-annual': (
( 500.00, 0.00, 1.00),
(1500.00, 5.00, 2.00),
(2500.00, 25.00, 3.00),
(3500.00, 55.00, 4.00),
(5000.00, 95.00, 5.00),
( 'inf', 170.00, 5.75),
),
'annual': (
( 1000.00, 0.00, 1.00),
( 3000.00, 10.00, 2.00),
( 5000.00, 50.00, 3.00),
( 7000.00, 110.00, 4.00),
(10000.00, 190.00, 5.00),
( 'inf', 340.00, 5.75),
),
}, },
'single': { 'single': {
'weekly': ((14.50, 0.00, 1.00), (43.50, .14, 2.00), (72.00, .72, 3.00), (101.00, 1.59, 4.00), (135.00, 2.74, 5.00), ('inf', 4.42, 5.75)), 'weekly': (
'bi-weekly': ((29.00, 0.00, 1.00), (86.50, .29, 2.00), (144.00, 1.44, 3.00), (202.00, 3.17, 4.00), (269.00, 5.48, 5.00), ('inf', 8.85, 5.75)), ( 14.50, 0.00, 1.00),
'semi-monthly': ((31.00, 0.00, 1.00), (93.50, .31, 2.00), (156.00, 1.56, 3.00), (219.00, 3.34, 4.00), (292.00, 5.94, 5.00), ('inf', 9.58, 5.75)), ( 43.50, 0.14, 2.00),
'monthly': ((62.50, 0.00, 1.00), (187.00, .62, 2.00), (312.00, 3.12, 3.00), (437.00, 6.87, 4.00), (583.00, 11.87, 5.00), ('inf', 19.17, 5.75)), ( 72.00, 0.72, 3.00),
'quarterly': ((187.50, 0.00, 1.00), (562.50, 1.88, 2.00), (937.50, 9.38, 3.00), (1312.00, 20.63, 4.00), (1750.00, 35.63, 5.00), ('inf', 57.50, 5.75)), (101.00, 1.59, 4.00),
'semi-annual': ((375.00, 0.00, 1.00), (1125.00, 3.75, 2.00), (1875.00, 18.75, 3.00), (2625.00, 41.25, 4.00), (3500.00, 71.25, 5.00), ('inf', 115.00, 5.75)), (135.00, 2.74, 5.00),
'annual': ((750.00, 0.00, 1.00), (2250.00, 7.50, 2.00), (3750.00, 37.50, 3.00), (5250.00, 82.50, 4.00), (7000.00, 142.50, 5.00), ('inf', 230.00, 5.75)), ( 'inf', 4.42, 5.75),
),
'bi-weekly': (
( 29.00, 0.00, 1.00),
( 86.50, 0.29, 2.00),
(144.00, 1.44, 3.00),
(202.00, 3.17, 4.00),
(269.00, 5.48, 5.00),
( 'inf', 8.85, 5.75),
),
'semi-monthly': (
( 31.00, 0.00, 1.00),
( 93.50, 0.31, 2.00),
(156.00, 1.56, 3.00),
(219.00, 3.34, 4.00),
(292.00, 5.94, 5.00),
( 'inf', 9.58, 5.75),
),
'monthly': (
( 62.50, 0.00, 1.00),
(187.00, 0.62, 2.00),
(312.00, 3.12, 3.00),
(437.00, 6.87, 4.00),
(583.00, 11.87, 5.00),
( 'inf', 19.17, 5.75),
),
'quarterly': (
( 187.50, 0.00, 1.00),
( 562.50, 1.88, 2.00),
( 937.50, 9.38, 3.00),
(1312.00, 20.63, 4.00),
(1750.00, 35.63, 5.00),
( 'inf', 57.50, 5.75),
),
'semi-annual': (
( 375.00, 0.00, 1.00),
(1125.00, 3.75, 2.00),
(1875.00, 18.75, 3.00),
(2625.00, 41.25, 4.00),
(3500.00, 71.25, 5.00),
( 'inf', 115.00, 5.75),
),
'annual': (
( 750.00, 0.00, 1.00),
(2250.00, 7.50, 2.00),
(3750.00, 37.50, 3.00),
(5250.00, 82.50, 4.00),
(7000.00, 142.50, 5.00),
( 'inf', 230.00, 5.75),
),
}, },
'head of household': { 'head of household': {
'weekly': ((19.00, 0.00, 1.00), (57.50, .19, 2.00), (96.00, .96, 3.00), (135.00, 2.12, 4.00), (192.50, 3.65, 5.00), ('inf', 6.54, 5.75)), 'weekly': (
'bi-weekly': ((38.50, 0.00, 1.00), (115.00, .38, 2.00), (192.00, 1.92, 3.00), (269.00, 4.23, 4.00), (385.00, 7.31, 5.00), ('inf', 13.08, 5.75)), ( 19.00, 0.00, 1.00),
'semi-monthly': ((41.50, 0.00, 1.00), (125.00, .42, 2.00), (208.00, 2.08, 3.00), (292.00, 4.58, 4.00), (417.00, 7.92, 5.00), ('inf', 14.17, 5.75)), ( 57.50, 0.19, 2.00),
'monthly': ((83.00, 0.00, 1.00), (250.00, .83, 2.00), (417.00, 4.17, 3.00), (583.00, 9.17, 4.00), (833.00, 15.83, 5.00), ('inf', 28.33, 5.75)), ( 96.00, 0.96, 3.00),
'quarterly': ((250.00, 0.00, 1.00), (750.00, 2.50, 2.00), (1250.00, 12.50, 3.00), (1750.00, 27.50, 4.00), (2500.00, 47.50, 5.00), ('inf', 85.00, 5.75)), (135.00, 2.12, 4.00),
'semi-annual': ((500.00, 0.00, 1.00), (1500.00, 5.00, 2.00), (2500.00, 25.00, 3.00), (3500.00, 55.00, 4.00), (5000.00, 95.00, 5.00), ('inf', 170.00, 5.75)), (192.50, 3.65, 5.00),
'annual': ((1000.00, 0.00, 1.00), (3000.00, 10.00, 2.00), (5000.00, 50.00, 3.00), (7000.00, 110.00, 4.00), (10000.00, 190.00, 5.00), ('inf', 340.00, 5.75)), ( 'inf', 6.54, 5.75),
),
'bi-weekly': (
( 38.50, 0.00, 1.00),
(115.00, 0.38, 2.00),
(192.00, 1.92, 3.00),
(269.00, 4.23, 4.00),
(385.00, 7.31, 5.00),
( 'inf', 13.08, 5.75),
),
'semi-monthly': (
( 41.50, 0.00, 1.00),
(125.00, 0.42, 2.00),
(208.00, 2.08, 3.00),
(292.00, 4.58, 4.00),
(417.00, 7.92, 5.00),
( 'inf', 14.17, 5.75),
),
'monthly': (
( 83.00, 0.00, 1.00),
(250.00, 0.83, 2.00),
(417.00, 4.17, 3.00),
(583.00, 9.17, 4.00),
(833.00, 15.83, 5.00),
( 'inf', 28.33, 5.75),
),
'quarterly': (
( 250.00, 0.00, 1.00),
( 750.00, 2.50, 2.00),
(1250.00, 12.50, 3.00),
(1750.00, 27.50, 4.00),
(2500.00, 47.50, 5.00),
( 'inf', 85.00, 5.75),
),
'semi-annual': (
( 500.00, 0.00, 1.00),
(1500.00, 5.00, 2.00),
(2500.00, 25.00, 3.00),
(3500.00, 55.00, 4.00),
(5000.00, 95.00, 5.00),
( 'inf', 170.00, 5.75),
),
'annual': (
( 1000.00, 0.00, 1.00),
( 3000.00, 10.00, 2.00),
( 5000.00, 50.00, 3.00),
( 7000.00, 110.00, 4.00),
(10000.00, 190.00, 5.00),
( 'inf', 340.00, 5.75),
),
}, },
'married filing separate': { 'married filing separate': {
'weekly': ((9.50, 0.00, 1.00), (29.00, .10, 2.00), (48.00, .48, 3.00), (67.50, 1.06, 4.00), (96.00, 1.83, 5.00), ('inf', 3.27, 5.75)), 'weekly': (
'bi-weekly': ((19.00, 0.00, 1.00), (57.50, .19, 2.00), (96.00, .96, 3.00), (135.00, 2.12, 4.00), (192.00, 3.65, 5.00), ('inf', 6.54, 5.75)), ( 9.50, 0.00, 1.00),
'semi-monthly': ((21.00, 0.00, 1.00), (62.50, .21, 2.00), (104.00, 1.04, 3.00), (146.00, 2.29, 4.00), (208.00, 3.96, 5.00), ('inf', 7.08, 5.75)), (29.00, 0.10, 2.00),
'monthly': ((41.50, 0.00, 1.00), (125.50, .42, 2.00), (208.00, 2.08, 3.00), (292.00, 4.58, 4.00), (417.00, 7.92, 5.00), ('inf', 14.17, 5.75)), (48.00, 0.48, 3.00),
'quarterly': ((125.00, 0.00, 1.00), (375.00, 1.25, 2.00), (625.00, 6.25, 3.00), (875.00, 13.75, 4.00), (1250.00, 23.75, 5.00), ('inf', 42.50, 5.75)), (67.50, 1.06, 4.00),
'semi-annual': ((250.00, 0.00, 1.00), (750.00, 2.50, 2.00), (1250.00, 12.50, 3.00), (1750.00, 27.50, 4.00), (2500.00, 47.50, 5.00), ('inf', 85.00, 5.75)), (96.00, 1.83, 5.00),
'annual': ((500.00, 0.00, 1.00), (1500.00, 5.00, 2.00), (2500.00, 25.00, 3.00), (3500.00, 55.00, 4.00), (5000.00, 95.00, 5.00), ('inf', 170.00, 5.75)), ('inf', 3.27, 5.75),
),
'bi-weekly': (
( 19.00, 0.00, 1.00),
( 57.50, 0.19, 2.00),
( 96.00, 0.96, 3.00),
(135.00, 2.12, 4.00),
(192.00, 3.65, 5.00),
( 'inf', 6.54, 5.75),
),
'semi-monthly': (
( 21.00, 0.00, 1.00),
( 62.50, 0.21, 2.00),
(104.00, 1.04, 3.00),
(146.00, 2.29, 4.00),
(208.00, 3.96, 5.00),
( 'inf', 7.08, 5.75),
),
'monthly': (
( 41.50, 0.00, 1.00),
(125.50, 0.42, 2.00),
(208.00, 2.08, 3.00),
(292.00, 4.58, 4.00),
(417.00, 7.92, 5.00),
( 'inf', 14.17, 5.75),
),
'quarterly': (
( 125.00, 0.00, 1.00),
( 375.00, 1.25, 2.00),
( 625.00, 6.25, 3.00),
( 875.00, 13.75, 4.00),
(1250.00, 23.75, 5.00),
( 'inf', 42.50, 5.75),
),
'semi-annual': (
( 250.00, 0.00, 1.00),
( 750.00, 2.50, 2.00),
(1250.00, 12.50, 3.00),
(1750.00, 27.50, 4.00),
(2500.00, 47.50, 5.00),
( 'inf', 85.00, 5.75),
),
'annual': (
( 500.00, 0.00, 1.00),
(1500.00, 5.00, 2.00),
(2500.00, 25.00, 3.00),
(3500.00, 55.00, 4.00),
(5000.00, 95.00, 5.00),
( 'inf', 170.00, 5.75),
),
}, },
}</field> }</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_rate"/> <field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/> <field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record> </record>
<!-- https://dor.georgia.gov/employers-tax-guide File 2020 -->
<!-- Table F, G ,H-->
<record id="rule_parameter_us_ga_sit_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'married filing joint, both spouses working': {
'weekly': (
( 9.50, 0.00, 1.00),
(29.00, 0.10, 2.00),
(48.00, 0.48, 3.00),
(67.50, 1.06, 4.00),
(96.00, 1.83, 5.00),
('inf', 3.27, 5.75),
),
'bi-weekly': (
( 19.00, 0.00, 1.00),
( 57.50, 0.19, 2.00),
( 96.00, 0.96, 3.00),
(135.00, 2.12, 4.00),
(192.00, 3.65, 5.00),
( 'inf', 6.54, 5.75),
),
'semi-monthly': (
( 21.00, 0.00, 1.00),
( 62.50, 0.21, 2.00),
(104.00, 1.04, 3.00),
(146.00, 2.29, 4.00),
(208.00, 3.96, 5.00),
( 'inf', 7.08, 5.75),
),
'monthly': (
( 41.50, 0.00, 1.00),
(125.50, 0.42, 2.00),
(208.00, 2.08, 3.00),
(292.00, 4.58, 4.00),
(417.00, 7.92, 5.00),
( 'inf', 14.17, 5.75),
),
'quarterly': (
( 125.00, 0.00, 1.00),
( 375.00, 1.25, 2.00),
( 625.00, 6.25, 3.00),
( 875.00, 13.75, 4.00),
(1250.00, 23.75, 5.00),
( 'inf', 42.50, 5.75),
),
'semi-annual': (
( 250.00, 0.00, 1.00),
( 750.00, 2.50, 2.00),
(1250.00, 12.50, 3.00),
(1750.00, 27.50, 4.00),
(2500.00, 47.50, 5.00),
( 'inf', 85.00, 5.75),
),
'annual': (
( 500.00, 0.00, 1.00),
(1500.00, 5.00, 2.00),
(2500.00, 25.00, 3.00),
(3500.00, 55.00, 4.00),
(5000.00, 95.00, 5.00),
( 'inf', 170.00, 5.75),
),
},
'married filing joint, one spouse working': {
'weekly': (
( 19.00, 0.00, 1.00),
( 57.50, 0.19, 2.00),
( 96.00, 0.96, 3.00),
(135.00, 2.12, 4.00),
(192.50, 3.65, 5.00),
( 'inf', 6.54, 5.75),
),
'bi-weekly': (
( 38.50, 0.00, 1.00),
(115.00, 0.38, 2.00),
(192.00, 1.92, 3.00),
(269.00, 4.23, 4.00),
(385.00, 7.31, 5.00),
( 'inf', 13.08, 5.75),
),
'semi-monthly': (
( 41.50, 0.00, 1.00),
(125.00, 0.42, 2.00),
(208.00, 2.08, 3.00),
(292.00, 4.58, 4.00),
(417.00, 7.92, 5.00),
( 'inf', 14.17, 5.75),
),
'monthly': (
( 83.00, 0.00, 1.00),
(250.00, 0.83, 2.00),
(417.00, 4.17, 3.00),
(583.00, 9.17, 4.00),
(833.00, 15.83, 5.00),
( 'inf', 28.33, 5.75),
),
'quarterly': (
( 250.00, 0.00, 1.00),
( 750.00, 2.50, 2.00),
(1250.00, 12.50, 3.00),
(1750.00, 27.50, 4.00),
(2500.00, 47.50, 5.00),
( 'inf', 85.00, 5.75),
),
'semi-annual': (
( 500.00, 0.00, 1.00),
(1500.00, 5.00, 2.00),
(2500.00, 25.00, 3.00),
(3500.00, 55.00, 4.00),
(5000.00, 95.00, 5.00),
( 'inf', 170.00, 5.75),
),
'annual': (
( 1000.00, 0.00, 1.00),
( 3000.00, 10.00, 2.00),
( 5000.00, 50.00, 3.00),
( 7000.00, 110.00, 4.00),
(10000.00, 190.00, 5.00),
( 'inf', 340.00, 5.75),
),
},
'single': {
'weekly': (
( 14.50, 0.00, 1.00),
( 43.50, 0.14, 2.00),
( 72.00, 0.72, 3.00),
(101.00, 1.59, 4.00),
(135.00, 2.74, 5.00),
( 'inf', 4.42, 5.75),
),
'bi-weekly': (
( 29.00, 0.00, 1.00),
( 86.50, 0.29, 2.00),
(144.00, 1.44, 3.00),
(202.00, 3.17, 4.00),
(269.00, 5.48, 5.00),
( 'inf', 8.85, 5.75),
),
'semi-monthly': (
( 31.00, 0.00, 1.00),
( 93.50, 0.31, 2.00),
(156.00, 1.56, 3.00),
(219.00, 3.34, 4.00),
(292.00, 5.94, 5.00),
( 'inf', 9.58, 5.75),
),
'monthly': (
( 62.50, 0.00, 1.00),
(187.00, 0.62, 2.00),
(312.00, 3.12, 3.00),
(437.00, 6.87, 4.00),
(583.00, 11.87, 5.00),
( 'inf', 19.17, 5.75),
),
'quarterly': (
( 187.50, 0.00, 1.00),
( 562.50, 1.88, 2.00),
( 937.50, 9.38, 3.00),
(1312.00, 20.63, 4.00),
(1750.00, 35.63, 5.00),
( 'inf', 57.50, 5.75),
),
'semi-annual': (
( 375.00, 0.00, 1.00),
(1125.00, 3.75, 2.00),
(1875.00, 18.75, 3.00),
(2625.00, 41.25, 4.00),
(3500.00, 71.25, 5.00),
( 'inf', 115.00, 5.75),
),
'annual': (
( 750.00, 0.00, 1.00),
(2250.00, 7.50, 2.00),
(3750.00, 37.50, 3.00),
(5250.00, 82.50, 4.00),
(7000.00, 142.50, 5.00),
( 'inf', 230.00, 5.75),
),
},
'head of household': {
'weekly': (
( 19.00, 0.00, 1.00),
( 57.50, 0.19, 2.00),
( 96.00, 0.96, 3.00),
(135.00, 2.12, 4.00),
(192.50, 3.65, 5.00),
( 'inf', 6.54, 5.75),
),
'bi-weekly': (
( 38.50, 0.00, 1.00),
(115.00, 0.38, 2.00),
(192.00, 1.92, 3.00),
(269.00, 4.23, 4.00),
(385.00, 7.31, 5.00),
( 'inf', 13.08, 5.75),
),
'semi-monthly': (
( 41.50, 0.00, 1.00),
(125.00, 0.42, 2.00),
(208.00, 2.08, 3.00),
(292.00, 4.58, 4.00),
(417.00, 7.92, 5.00),
( 'inf', 14.17, 5.75),
),
'monthly': (
( 83.00, 0.00, 1.00),
(250.00, 0.83, 2.00),
(417.00, 4.17, 3.00),
(583.00, 9.17, 4.00),
(833.00, 15.83, 5.00),
( 'inf', 28.33, 5.75),
),
'quarterly': (
( 250.00, 0.00, 1.00),
( 750.00, 2.50, 2.00),
(1250.00, 12.50, 3.00),
(1750.00, 27.50, 4.00),
(2500.00, 47.50, 5.00),
( 'inf', 85.00, 5.75),
),
'semi-annual': (
( 500.00, 0.00, 1.00),
(1500.00, 5.00, 2.00),
(2500.00, 25.00, 3.00),
(3500.00, 55.00, 4.00),
(5000.00, 95.00, 5.00),
( 'inf', 170.00, 5.75),
),
'annual': (
( 1000.00, 0.00, 1.00),
( 3000.00, 10.00, 2.00),
( 5000.00, 50.00, 3.00),
( 7000.00, 110.00, 4.00),
(10000.00, 190.00, 5.00),
( 'inf', 340.00, 5.75),
),
},
'married filing separate': {
'weekly': (
( 9.50, 0.00, 1.00),
(29.00, 0.10, 2.00),
(48.00, 0.48, 3.00),
(67.50, 1.06, 4.00),
(96.00, 1.83, 5.00),
('inf', 3.27, 5.75),
),
'bi-weekly': (
( 19.00, 0.00, 1.00),
( 57.50, 0.19, 2.00),
( 96.00, 0.96, 3.00),
(135.00, 2.12, 4.00),
(192.00, 3.65, 5.00),
( 'inf', 6.54, 5.75),
),
'semi-monthly': (
( 21.00, 0.00, 1.00),
( 62.50, 0.21, 2.00),
(104.00, 1.04, 3.00),
(146.00, 2.29, 4.00),
(208.00, 3.96, 5.00),
( 'inf', 7.08, 5.75),
),
'monthly': (
( 41.50, 0.00, 1.00),
(125.50, 0.42, 2.00),
(208.00, 2.08, 3.00),
(292.00, 4.58, 4.00),
(417.00, 7.92, 5.00),
( 'inf', 14.17, 5.75),
),
'quarterly': (
( 125.00, 0.00, 1.00),
( 375.00, 1.25, 2.00),
( 625.00, 6.25, 3.00),
( 875.00, 13.75, 4.00),
(1250.00, 23.75, 5.00),
( 'inf', 42.50, 5.75),
),
'semi-annual': (
( 250.00, 0.00, 1.00),
( 750.00, 2.50, 2.00),
(1250.00, 12.50, 3.00),
(1750.00, 27.50, 4.00),
(2500.00, 47.50, 5.00),
( 'inf', 85.00, 5.75),
),
'annual': (
( 500.00, 0.00, 1.00),
(1500.00, 5.00, 2.00),
(2500.00, 25.00, 3.00),
(3500.00, 55.00, 4.00),
(5000.00, 95.00, 5.00),
( 'inf', 170.00, 5.75),
),
},
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data> </data>
<record id="rule_parameter_us_ga_sit_personal_allowance" model="hr.rule.parameter"> <record id="rule_parameter_us_ga_sit_personal_allowance" model="hr.rule.parameter">
@@ -154,6 +697,59 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_personal_allowance"/> <field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_personal_allowance"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/> <field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record> </record>
<!-- https://dor.georgia.gov/employers-tax-guide File 2020 -->
<!-- Table E Column 4. 5. 6.-->
<record id="rule_parameter_us_ga_sit_personal_allowance_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'married filing joint, both spouses working': {
'weekly': 142.30,
'bi-weekly': 284.62,
'semi-monthly': 308.33,
'monthly': 616.67,
'quarterly': 1850.00,
'semi-annual': 3700.00,
'annual': 7400.00,
},
'married filing joint, one spouse working': {
'weekly': 142.30,
'bi-weekly': 284.62,
'semi-monthly': 308.33,
'monthly': 616.67,
'quarterly': 1850.00,
'semi-annual': 3700.00,
'annual': 7400.00,
},
'single': {
'weekly': 51.92,
'bi-weekly': 103.85,
'semi-monthly': 112.50,
'monthly': 225.00,
'quarterly': 675.00,
'semi-annual': 1350.00,
'annual': 2700.00,
},
'head of household': {
'weekly': 51.92,
'bi-weekly': 103.85,
'semi-monthly': 112.50,
'monthly': 225.00,
'quarterly': 675.00,
'semi-annual': 1350.00,
'annual': 2700.00,
},
'married filing separate': {
'weekly': 71.15,
'bi-weekly': 142.30,
'semi-monthly': 154.16,
'monthly': 308.33,
'quarterly': 925.00,
'semi-annual': 1850.00,
'annual': 3700.00,
},
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_personal_allowance"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data> </data>
<record id="rule_parameter_us_ga_sit_dependent_allowance_rate" model="hr.rule.parameter"> <record id="rule_parameter_us_ga_sit_dependent_allowance_rate" model="hr.rule.parameter">
@@ -175,6 +771,21 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_dependent_allowance_rate"/> <field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_dependent_allowance_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/> <field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record> </record>
<!-- https://dor.georgia.gov/employers-tax-guide File 2020 -->
<!-- Table E Column 7.-->
<record id="rule_parameter_us_ga_sit_dependent_allowance_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': 57.50,
'bi-weekly': 115.00,
'semi-monthly': 125.00,
'monthly': 250.00,
'quarterly': 750.00,
'semi-annual': 1500.00,
'annual': 3000.00,
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_dependent_allowance_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data> </data>
<record id="rule_parameter_us_ga_sit_deduction" model="hr.rule.parameter"> <record id="rule_parameter_us_ga_sit_deduction" model="hr.rule.parameter">
@@ -234,6 +845,59 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_deduction"/> <field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_deduction"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/> <field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record> </record>
<!-- https://dor.georgia.gov/employers-tax-guide File 2020 -->
<!-- Table E Column 1. 2. 3.-->
<record id="rule_parameter_us_ga_sit_deduction_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'married filing joint, both spouses working': {
'weekly': 115.50,
'bi-weekly': 230.75,
'semi-monthly': 250.00,
'monthly': 500.00,
'quarterly': 1500.00,
'semi-annual': 3000.00,
'annual': 6000.00,
},
'married filing joint, one spouse working': {
'weekly': 115.50,
'bi-weekly': 230.75,
'semi-monthly': 250.00,
'monthly': 500.00,
'quarterly': 1500.00,
'semi-annual': 3000.00,
'annual': 6000.00,
},
'single': {
'weekly': 88.50,
'bi-weekly': 177.00,
'semi-monthly': 191.75,
'monthly': 383.50,
'quarterly': 1150.00,
'semi-annual': 2300.00,
'annual': 4600.00,
},
'head of household': {
'weekly': 88.50,
'bi-weekly': 177.00,
'semi-monthly': 191.75,
'monthly': 383.50,
'quarterly': 1150.00,
'semi-annual': 2300.00,
'annual': 4600.00,
},
'married filing separate': {
'weekly': 57.75,
'bi-weekly': 115.50,
'semi-monthly': 125.00,
'monthly': 250.00,
'quarterly': 750.00,
'semi-annual': 1500.00,
'annual': 3000.00,
},
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_deduction"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data> </data>
<!-- Partners and Contribution Registers --> <!-- Partners and Contribution Registers -->

View File

@@ -13,7 +13,7 @@ def ga_georgia_state_income_withholding(payslip, categories, worked_days, inputs
if not _state_applies(payslip, state_code): if not _state_applies(payslip, state_code):
return 0.0, 0.0 return 0.0, 0.0
ga_filing_status = payslip.contract_id.us_payroll_config_value('ga_g4_sit_filing_status') ga_filing_status = payslip.contract_id.us_payroll_config_value('ga_g4_sit_filing_status')
if not ga_filing_status or ga_filing_status == 'exempt': if not ga_filing_status:
return 0.0, 0.0 return 0.0, 0.0
# Determine Wage # Determine Wage

View File

@@ -92,7 +92,7 @@ class HRContractUSPayrollConfig(models.Model):
de_w4_sit_dependent = fields.Integer(string='Delaware W-4 Dependents', help='DE W-4 4.') de_w4_sit_dependent = fields.Integer(string='Delaware W-4 Dependents', help='DE W-4 4.')
ga_g4_sit_filing_status = fields.Selection([ ga_g4_sit_filing_status = fields.Selection([
('exempt', 'Exempt'), ('', 'Exempt'),
('single', 'Single'), ('single', 'Single'),
('married filing joint, both spouses working', 'Married Filing Joint, both spouses working'), ('married filing joint, both spouses working', 'Married Filing Joint, both spouses working'),
('married filing joint, one spouse working', 'Married Filing Joint, one spouse working'), ('married filing joint, one spouse working', 'Married Filing Joint, one spouse working'),

View File

@@ -1,7 +1,7 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. # Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
from datetime import date from datetime import date, timedelta
from .common import TestUsPayslip, process_payslip from .common import TestUsPayslip
class TestUsGAPayslip(TestUsPayslip): class TestUsGAPayslip(TestUsPayslip):
@@ -10,139 +10,30 @@ class TestUsGAPayslip(TestUsPayslip):
GA_UNEMP_MAX_WAGE = 9500.00 GA_UNEMP_MAX_WAGE = 9500.00
GA_UNEMP = 2.70 GA_UNEMP = 2.70
def _run_test_sit(self, # Example calculated based on https://dor.georgia.gov/employers-tax-guide 2020_employer tax gauide
wage=0.0,
schedule_pay='monthly', def _test_sit(self, wage, filing_status, additional_withholding, dependent_allowances, additional_allowances,
filing_status='single', schedule_pay, date_start, expected_withholding):
dependent_credit=0.0,
other_income=0.0,
deductions=0.0,
additional_withholding=0.0,
is_nonresident_alien=False,
state_income_tax_exempt=False,
state_income_tax_additional_withholding=0.0,
ga_g4_sit_dependent_allowances=0,
ga_g4_sit_additional_allowances=0,
ga_g4_sit_filing_status=None,
expected=0.0,
):
employee = self._createEmployee() employee = self._createEmployee()
contract = self._createContract(employee, contract = self._createContract(employee,
wage=wage, wage=wage,
schedule_pay=schedule_pay,
fed_941_fit_w4_is_nonresident_alien=is_nonresident_alien,
fed_941_fit_w4_filing_status=filing_status,
fed_941_fit_w4_multiple_jobs_higher=False,
fed_941_fit_w4_dependent_credit=dependent_credit,
fed_941_fit_w4_other_income=other_income,
fed_941_fit_w4_deductions=deductions,
fed_941_fit_w4_additional_withholding=additional_withholding,
state_income_tax_exempt=state_income_tax_exempt,
state_income_tax_additional_withholding=state_income_tax_additional_withholding,
ga_g4_sit_dependent_allowances=ga_g4_sit_dependent_allowances,
ga_g4_sit_additional_allowances=ga_g4_sit_additional_allowances,
ga_g4_sit_filing_status=ga_g4_sit_filing_status,
state_id=self.get_us_state('GA'), state_id=self.get_us_state('GA'),
) ga_g4_sit_filing_status=filing_status,
payslip = self._createPayslip(employee, '2020-01-01', '2020-01-31') state_income_tax_additional_withholding=additional_withholding,
ga_g4_sit_dependent_allowances=dependent_allowances,
ga_g4_sit_additional_allowances=additional_allowances,
schedule_pay=schedule_pay)
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
payslip.compute_sheet() payslip.compute_sheet()
cats = self._getCategories(payslip) cats = self._getCategories(payslip)
# Instead of PayrollEqual after initial first round of testing.
self.assertPayrollAlmostEqual(cats.get('EE_US_SIT', 0.0), -expected)
return payslip
def test_taxes_weekly_single_with_additional_wh(self): self._log('Computed period tax: ' + str(expected_withholding))
self.assertPayrollAlmostEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding)
def test_2020_taxes_example(self):
self._test_er_suta('GA', self.GA_UNEMP, date(2020, 1, 1), wage_base=self.GA_UNEMP_MAX_WAGE) self._test_er_suta('GA', self.GA_UNEMP, date(2020, 1, 1), wage_base=self.GA_UNEMP_MAX_WAGE)
salary = 15000.00 self._test_sit(15000.0, 'single', 12.50, 1, 0, 'weekly', date(2020, 1, 1), 860.28)
schedule_pay = 'weekly' self._test_sit(25000.0, 'head of household', 15.00, 2, 0, 'monthly', date(2020, 1, 1), 1369.19)
allowances = 1 self._test_sit(425.0, 'married filing separate', 0.0, 1, 0, 'weekly', date(2020, 1, 1), 11.45)
filing_status = 'single' self._test_sit(3000.0, 'single', 0.00, 1, 1, 'quarterly', date(2020, 1, 1), 0.0)
additional_wh = 12.50 self._test_sit(2500.0, '', 0.00, 1, 1, 'quarterly', date(2020, 1, 1), 0.0)
# Hand Calculated Amount to Test
# Step 1 - Subtract standard deduction from wages. Std Deduct for single weekly is 88.50
# step1 = 15000.00 - 88.50 = 14911.5
# Step 2 - Subtract personal allowance from step1. Allowance for single weekly is 51.92
# step2 = step1 - 51.92 = 14859.58
# Step 3 - Subtract amount for dependents. Weekly dependent allowance is 57.50
# step3 = 14859.58 - 57.50 = 14802.08
# Step 4 -Determine wh amount from tables
# step4 = 4.42 + ((5.75 / 100.00) * (14802.08 - 135.00))
# Add additional_wh
# wh = 847.7771 + 12.50 = 860.2771
wh = 860.28
self._run_test_sit(wage=salary,
schedule_pay=schedule_pay,
state_income_tax_additional_withholding=additional_wh,
ga_g4_sit_dependent_allowances=allowances,
ga_g4_sit_additional_allowances=0,
ga_g4_sit_filing_status=filing_status,
expected=wh,
)
def test_taxes_monthly_head_of_household(self):
salary = 25000.00
schedule_pay = 'monthly'
allowances = 2
filing_status = 'head of household'
additional_wh = 15.00
# Hand Calculated Amount to Test
# Step 1 - Subtract standard deduction from wages. Std Deduct for head of household monthly is 383.50
# step1 = 25000.00 - 383.50 = 24616.5
# Step 2 - Subtract personal allowance from step1. Allowance for head of household monthly is 225.00
# step2 = 24616.5 - 225.00 = 24391.5
# Step 3 - Subtract amount for dependents. Weekly dependent allowance is 250.00
# step3 = 24391.5 - (2 * 250.00) = 23891.5
# Step 4 - Determine wh amount from tables
# step4 = 28.33 + ((5.75 / 100.00) * (23891.5 - 833.00)) = 1354.19375
# Add additional_wh
# wh = 1354.19375 + 15.00 = 1369.19375
wh = 1369.19
self._run_test_sit(wage=salary,
schedule_pay=schedule_pay,
state_income_tax_additional_withholding=additional_wh,
ga_g4_sit_dependent_allowances=allowances,
ga_g4_sit_additional_allowances=0,
ga_g4_sit_filing_status=filing_status,
expected=wh,
)
# additional from external calculator
self._run_test_sit(wage=425.0,
schedule_pay='weekly',
state_income_tax_additional_withholding=0.0,
ga_g4_sit_dependent_allowances=1,
ga_g4_sit_additional_allowances=0,
ga_g4_sit_filing_status='married filing separate',
expected=11.45,
)
self._run_test_sit(wage=3000.0,
schedule_pay='quarterly',
state_income_tax_additional_withholding=0.0,
ga_g4_sit_dependent_allowances=1,
ga_g4_sit_additional_allowances=1,
ga_g4_sit_filing_status='single',
expected=0.0,
)
# TODO 'married filing joint, both spouses working' returns lower than calculator
# TODO 'married filing joint, one spouse working' returns lower than calculator
def test_taxes_exempt(self):
salary = 25000.00
schedule_pay = 'monthly'
allowances = 2
filing_status = 'exempt'
additional_wh = 15.00
self._run_test_sit(wage=salary,
schedule_pay=schedule_pay,
state_income_tax_additional_withholding=additional_wh,
ga_g4_sit_dependent_allowances=allowances,
ga_g4_sit_additional_allowances=0,
ga_g4_sit_filing_status=filing_status,
expected=0.0,
)