CA California

This commit is contained in:
Jared Self
2021-01-07 16:03:02 -07:00
parent 24b867f38b
commit e4713512b5
3 changed files with 367 additions and 581 deletions

View File

@@ -7,11 +7,8 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ca_suta_wage_base_2019" model="hr.rule.parameter.value">
<field name="parameter_value">7000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_wage_base"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<!-- https://www.edd.ca.gov/payroll_taxes/tax-rated-employers.htm -->
<!-- Base unchanged in 2021 -->
<record id="rule_parameter_us_ca_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">7000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_wage_base"/>
@@ -26,11 +23,8 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ca_suta_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">3.5</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<!-- https://www.edd.ca.gov/payroll_taxes/tax-rated-employers.htm -->
<!-- New employers Rate is unchanged in 2021 -->
<record id="rule_parameter_us_ca_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">3.4</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_rate"/>
@@ -45,11 +39,8 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ca_suta_ett_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">0.1</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_ett_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<!-- https://www.edd.ca.gov/payroll_taxes/tax-rated-employers.htm -->
<!-- ETT Rate is unchanged in 2021 -->
<record id="rule_parameter_us_ca_suta_ett_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.1</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_ett_rate"/>
@@ -64,16 +55,17 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ca_suta_sdi_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">1.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_sdi_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<!-- https://www.edd.ca.gov/payroll_taxes/tax-rated-employers.htm -->
<record id="rule_parameter_us_ca_suta_sdi_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_sdi_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ca_suta_sdi_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">1.2</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_sdi_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ca_sit_tax_rate" model="hr.rule.parameter">
@@ -82,270 +74,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ca_sit_tax_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">{
'head_household': {
'weekly': (
( 316, 0.0110, 0.00),
( 750, 0.0220, 3.48),
( 967, 0.0440, 13.03),
( 1196, 0.0660, 22.58),
( 1413, 0.0880, 37.69),
( 7212, 0.1023, 56.79),
( 8654, 0.1133, 650.03),
(14423, 0.1243, 813.41),
(19231, 0.1353, 1530.50),
('inf', 0.1463, 2181.02),
),
'bi-weekly': (
( 632, 0.0110, 0.00),
( 1500, 0.0220, 6.95),
( 1934, 0.0440, 26.05),
( 2392, 0.0660, 45.15),
( 2826, 0.0880, 75.38),
(14424, 0.1023, 113.57),
(17308, 0.1133, 1300.05),
(28846, 0.1243, 1626.81),
(38462, 0.1353, 3060.98),
('inf', 0.1463, 4362.02),
),
'semi-monthly': (
( 686, 0.0110, 0.00),
( 1625, 0.0220, 7.55),
( 2094, 0.0440, 28.21),
( 2592, 0.0660, 48.85),
( 3062, 0.0880, 81.72),
(15625, 0.1023, 123.08),
(18750, 0.1133, 1408.27),
(31250, 0.1243, 1762.33),
(41667, 0.1353, 3316.08),
('inf', 0.1463, 4725.50),
),
'monthly': (
( 1372, 0.0110, 0.00),
( 3250, 0.0220, 15.09),
( 4188, 0.0440, 56.41),
( 5184, 0.0660, 97.68),
( 6124, 0.0880, 163.42),
(31250, 0.1023, 246.14),
(37500, 0.1133, 2816.53),
(62500, 0.1243, 3524.66),
(83334, 0.1353, 6632.16),
('inf', 0.1463, 9451.00),
),
'quarterly': (
( 4114, 0.0110, 0.00),
( 9748, 0.0220, 45.25),
( 12566, 0.0440, 169.20),
( 15552, 0.0660, 293.19),
( 18369, 0.0880, 490.27),
( 93751, 0.1023, 738.17),
(112501, 0.1133, 8449.75),
(187501, 0.1243, 10574.13),
(250000, 0.1353, 19896.63),
( 'inf', 0.1463, 28352.74),
),
'semi-annual': (
( 8228, 0.0110, 0.00),
( 19496, 0.0220, 90.51),
( 25132, 0.0440, 338.41),
( 31104, 0.0660, 586.39),
( 36738, 0.0880, 980.54),
(187502, 0.1023, 1476.33),
(225002, 0.1133, 16899.49),
(375002, 0.1243, 21148.24),
(500000, 0.1353, 39793.24),
( 'inf', 0.1463, 56705.47),
),
'annually': (
( 16457, 0.0110, 0.00),
( 38991, 0.0220, 181.03),
( 50264, 0.0440, 676.78),
( 62206, 0.0660, 1172.79),
( 73477, 0.0880, 1960.96),
( 375002, 0.1023, 2952.81),
( 450003, 0.1133, 33798.82),
( 750003, 0.1243, 42296.43),
(1000000, 0.1353, 79586.43),
( 'inf', 0.1463, 113411.02),
),
},
'married': {
'weekly': (
( 316, 0.0110, 0.00),
( 750, 0.0220, 3.48),
( 1184, 0.0440, 13.03),
( 1642, 0.0660, 32.13),
( 2076, 0.0880, 62.36),
(10606, 0.1023, 100.55),
(12726, 0.1133, 973.17),
(19231, 0.1243, 1213.37),
(21210, 0.1353, 2021.94),
('inf', 0.1463, 2289.70),
),
'bi-weekly': (
( 632, 0.0110, 0.00),
( 1500, 0.0220, 6.95),
( 2368, 0.0440, 26.05),
( 3284, 0.0660, 64.24),
( 4152, 0.0880, 124.70),
(21212, 0.1023, 201.08),
(25452, 0.1133, 1946.32),
(38462, 0.1243, 2426.71),
(42420, 0.1353, 4043.85),
('inf', 0.1463, 4579.37),
),
'semi-monthly': (
( 686, 0.0110, 0.00),
( 1624, 0.0220, 7.55),
( 2564, 0.0440, 28.19),
( 3560, 0.0660, 69.55),
( 4498, 0.0880, 135.29),
(22978, 0.1023, 217.83),
(27574, 0.1133, 2108.33),
(41667, 0.1243, 2629.06),
(45956, 0.1353, 4380.82),
('inf', 0.1463, 4961.12),
),
'monthly': (
( 1372, 0.0110, 0.00),
( 3248, 0.0220, 15.09),
( 5128, 0.0440, 56.36),
( 7120, 0.0660, 139.08),
( 8996, 0.0880, 270.55),
(45956, 0.1023, 435.64),
(55148, 0.1133, 4216.65),
(83334, 0.1243, 5258.10),
(91912, 0.1353, 8761.62),
('inf', 0.1463, 9922.22),
),
'quarterly': (
( 4112, 0.0110, 0.00),
( 9748, 0.0220, 45.23),
( 15384, 0.0440, 169.22),
( 21356, 0.0660, 417.20),
( 26990, 0.0880, 811.35),
(137870, 0.1023, 1307.14),
(165442, 0.1133, 12650.16),
(250000, 0.1243, 15774.07),
(275736, 0.1353, 26284.63),
( 'inf', 0.1463, 29766.71),
),
'semi-annual': (
( 8224, 0.0110, 0.00),
( 19496, 0.0220, 90.46),
( 30768, 0.0440, 338.44),
( 42712, 0.0660, 834.41),
( 53980, 0.0880, 1622.71),
(275740, 0.1023, 2614.29),
(330884, 0.1133, 25300.34),
(500000, 0.1243, 31548.16),
(551472, 0.1353, 52569.28),
( 'inf', 0.1463, 59533.44),
),
'annually': (
( 16446, 0.0110, 0.00),
( 38990, 0.0220, 180.91),
( 61538, 0.0440, 676.88),
( 85422, 0.0660, 1668.99),
( 107960, 0.0880, 3245.33),
( 551476, 0.1023, 5228.67),
( 661768, 0.1133, 50600.36),
(1000000, 0.1243, 63096.44),
(1102946, 0.1353, 105138.68),
( 'inf', 0.1463, 119067.26),
),
},
'single': {
'weekly': (
( 158, 0.0110, 0.00),
( 375, 0.0220, 1.74),
( 592, 0.0440, 6.51),
( 821, 0.0660, 16.06),
( 1038, 0.0880, 31.17),
( 5303, 0.1023, 50.27),
( 6363, 0.1133, 486.58),
(10605, 0.1243, 606.68),
(19231, 0.1353, 1133.96),
('inf', 0.1463, 2301.06),
),
'bi-weekly': (
( 316, 0.0110, 0.00),
( 750, 0.0220, 3.48),
( 1184, 0.0440, 13.03),
( 1642, 0.066, 32.13),
( 2076, 0.0880, 62.36),
(10606, 0.1023, 100.55),
(12726, 0.1133, 973.17),
(21210, 0.1243, 1213.37),
(38462, 0.1353, 2267.93),
('inf', 0.1463, 4602.13),
),
'semi-monthly': (
( 343, 0.0110, 0.00),
( 812, 0.0220, 3.77),
( 1282, 0.0440, 14.09),
( 1780, 0.0660, 34.77),
( 2249, 0.0880, 67.64),
(11489, 0.1023, 108.91),
(13787, 0.1133, 1054.16),
(22978, 0.1243, 1314.52),
(41667, 0.1353, 2456.96),
('inf', 0.1463, 4985.58),
),
'monthly': (
( 686, 0.0110, 0.00),
( 1624, 0.0220, 7.55),
( 2564, 0.0440, 28.19),
( 3560, 0.0660, 69.55),
( 4498, 0.0880, 135.29),
(22978, 0.1023, 217.83),
(27574, 0.1133, 2108.33),
(45956, 0.1243, 2629.06),
(83334, 0.1353, 4913.94),
('inf', 0.1463, 9971.18),
),
'quarterly': (
( 2056, 0.0110, 0.00),
( 4874, 0.0220, 22.62),
( 7692, 0.0440, 84.62),
( 10678, 0.066, 208.61),
( 13495, 0.0880, 405.69),
( 68935, 0.1023, 653.59),
( 82721, 0.1133, 6325.10),
(137868, 0.1243, 7887.05),
(250000, 0.1353, 14741.82),
( 'inf', 0.1463, 29913.28),
),
'semi-annual': (
( 4112, 0.0110, 0.00),
( 9748, 0.0220, 45.23),
( 15384, 0.0440, 169.22),
( 21356, 0.0660, 417.20),
( 26990, 0.0880, 811.35),
(137870, 0.1023, 1307.14),
(165442, 0.1133, 12650.16),
(275736, 0.1243, 15774.07),
(500000, 0.1353, 29483.61),
('inf', 0.1463, 59826.53),
),
'annually': (
( 8223, 0.0110, 0.00),
( 19495, 0.0220, 90.45),
( 30769, 0.0440, 338.43),
( 42711, 0.0660, 834.49),
( 53980, 0.0880, 1622.66),
( 275738, 0.1023, 2614.33),
( 330884, 0.1133, 25300.17),
( 551473, 0.1243, 31548.21),
(1000000, 0.1353, 58967.42),
( 'inf', 0.1463, 119653.12),
),
},
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_tax_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<!-- https://www.edd.ca.gov/pdf_pub_ctr/20methb.pdf -->
<!-- Table 5. Tax rate table -->
<record id="rule_parameter_us_ca_sit_tax_rate_2020" model="hr.rule.parameter.value">
@@ -612,6 +340,272 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://edd.ca.gov/pdf_pub_ctr/21methb.pdf -->
<!-- Table 5. Tax rate table -->
<record id="rule_parameter_us_ca_sit_tax_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'head_household': {
'weekly': (
( 344, 0.0110, 0.00),
( 814, 0.0220, 3.78),
( 1050, 0.0440, 14.12),
( 1299, 0.0660, 24.50),
( 1535, 0.0880, 40.93),
( 7833, 0.1023, 61.70),
( 9400, 0.1133, 705.99),
(15667, 0.1243, 883.53),
(19231, 0.1353, 1662.52),
('inf', 0.1463, 2144.73),
),
'bi-weekly': (
( 688, 0.0110, 0.00),
( 1628, 0.0220, 7.57),
( 2100, 0.0440, 28.25),
( 2598, 0.0660, 49.02),
( 3070, 0.0880, 81.89),
(15666, 0.1023, 123.43),
(18800, 0.1133, 1412.00),
(31334, 0.1243, 1767.08),
(38462, 0.1353, 3325.06),
('inf', 0.1463, 4289.48),
),
'semi-monthly': (
( 745, 0.0110, 0.00),
( 1765, 0.0220, 8.20),
( 2275, 0.0440, 30.64),
( 2815, 0.0660, 53.08),
( 3326, 0.0880, 88.72),
(16972, 0.1023, 133.69),
(20367, 0.1133, 1529.68),
(33944, 0.1243, 1914.33),
(41667, 0.1353, 3601.95),
('inf', 0.1463, 4646.87),
),
'monthly': (
( 1490, 0.0110, 0.00),
( 3530, 0.0220, 16.39),
( 4550, 0.0440, 61.27),
( 5630, 0.0660, 106.15),
( 6652, 0.0880, 177.43),
(33944, 0.1023, 267.37),
(40734, 0.1133, 3059.34),
(67888, 0.1243, 3828.65),
(83334, 0.1353, 7203.89),
('inf', 0.1463, 9293.73),
),
'quarterly': (
( 4469, 0.0110, 0.00),
( 10588, 0.0220, 49.13),
( 13649, 0.0440, 183.78),
( 16892, 0.0660, 318.46),
( 19953, 0.0880, 532.50),
(101832, 0.1023, 801.87),
(122199, 0.1133, 9178.09),
(203665, 0.1243, 11485.67),
(250000, 0.1353, 21611.89),
( 'inf', 0.1463, 27881.02),
),
'semi-annual': (
( 8938, 0.0110, 0.00),
( 21176, 0.0220, 98.32),
( 27298, 0.0440, 367.56),
( 33784, 0.0660, 636.93),
( 39906, 0.0880, 1065.01),
(203664, 0.1023, 1603.75),
(244398, 0.1133, 18356.19),
(407330, 0.1243, 22971.35),
(500000, 0.1353, 43223.80),
( 'inf', 0.1463, 55762.05),
),
'annually': (
( 17876, 0.0110, 0.00),
( 42353, 0.0220, 196.64),
( 54597, 0.0440, 735.13),
( 67569, 0.0660, 1273.87),
( 79812, 0.0880, 2130.02),
( 407329, 0.1023, 3207.40),
( 488796, 0.1133, 36712.39),
( 814658, 0.1243, 45942.60),
(1000000, 0.1353, 86447.25),
( 'inf', 0.1463, 111524.02),
),
},
'married': {
'weekly': (
( 344, 0.0110, 0.00),
( 814, 0.0220, 3.78),
( 1286, 0.0440, 14.12),
( 1784, 0.0660, 34.89),
( 2256, 0.0880, 67.76),
(11520, 0.1023, 109.30),
(13824, 0.1133, 1057.01),
(19231, 0.1243, 1318.05),
(23039, 0.1353, 1990.14),
('inf', 0.1463, 2505.36),
),
'bi-weekly': (
( 688, 0.0110, 0.00),
( 1628, 0.0220, 7.57),
( 2572, 0.0440, 28.25),
( 3568, 0.0660, 69.79),
( 4512, 0.0880, 135.53),
(23040, 0.1023, 218.60),
(27648, 0.1133, 2114.01),
(38462, 0.1243, 2636.10),
(46078, 0.1353, 2398.28),
('inf', 0.1463, 5010.72),
),
'semi-monthly': (
( 744, 0.0110, 0.00),
( 1764, 0.0220, 8.18),
( 2786, 0.0440, 30.62),
( 3866, 0.0660, 75.59),
( 4886, 0.0880, 146.87),
(24960, 0.1023, 236.63),
(29950, 0.1133, 2290.20),
(41667, 0.1243, 2855.57),
(49918, 0.1353, 4311.99),
('inf', 0.1463, 5428.35),
),
'monthly': (
( 1488, 0.0110, 0.00),
( 3528, 0.0220, 16.37),
( 5572, 0.0440, 61.25),
( 7732, 0.0660, 151.19),
( 9772, 0.0880, 293.75),
(49920, 0.1023, 473.27),
(59900, 0.1133, 4580.41),
(83334, 0.1243, 5711.14),
(99836, 0.1353, 8623.99),
('inf', 0.1463, 10856.71),
),
'quarterly': (
( 4466, 0.0110, 0.00),
( 10588, 0.0220, 49.13),
( 16710, 0.0440, 183.81),
( 23198, 0.0660, 453.18),
( 29318, 0.0880, 881.39),
(149754, 0.1023, 1419.95),
(179704, 0.1133, 13740.55),
(250000, 0.1243, 17133.89),
(299506, 0.1353, 25871.68),
( 'inf', 0.1463, 32569.84),
),
'semi-annual': (
( 8932, 0.0110, 0.00),
( 21176, 0.0220, 98.25),
( 33420, 0.0440, 367.62),
( 46396, 0.0660, 906.36),
( 58636, 0.0880, 1762.78),
(299508, 0.1023, 2839.90),
(359408, 0.1133, 27481.11),
(500000, 0.1243, 34267.78),
(599012, 0.1353, 51743.37),
( 'inf', 0.1463, 65139.69),
),
'annually': (
( 17864, 0.0110, 0.00),
( 42350, 0.0220, 196.50),
( 66842, 0.0440, 735.19),
( 92788, 0.0660, 1812.84),
( 117268, 0.0880, 3525.28),
( 599016, 0.1023, 5679.52),
( 718814, 0.1133, 54962.34),
(1000000, 0.1243, 68535.45),
(1198024, 0.1353, 103486.87),
( 'inf', 0.1463, 130279.52),
),
},
'single': {
'weekly': (
( 172, 0.0110, 0.00),
( 407, 0.0220, 1.89),
( 643, 0.0440, 7.06),
( 892, 0.0660, 17.44),
( 1128, 0.0880, 33.87),
( 5760, 0.1023, 54.64),
( 6912, 0.1133, 528.49),
(11519, 0.1243, 659.01),
(19231, 0.1353, 1231.66),
('inf', 0.1463, 2275.09),
),
'bi-weekly': (
( 344, 0.0110, 0.00),
( 814, 0.0220, 3.78),
( 1286, 0.0440, 14.12),
( 1784, 0.0660, 34.89),
( 2256, 0.0880, 67.76),
(11520, 0.1023, 109.30),
(13824, 0.1133, 1057.01),
(23038, 0.1243, 1318.05),
(38462, 0.1353, 2463.35),
('inf', 0.1463, 4550.22),
),
'semi-monthly': (
( 372, 0.0110, 0.00),
( 882, 0.0220, 4.09),
( 1393, 0.0440, 15.31),
( 1933, 0.0660, 37.79),
( 2443, 0.0880, 73.43),
(12480, 0.1023, 118.31),
(14975, 0.1133, 1145.10),
(24959, 0.1243, 1427.78),
(41667, 0.1353, 2668.79),
('inf', 0.1463, 4929.38),
),
'monthly': (
( 744, 0.0110, 0.00),
( 1764, 0.0220, 8.18),
( 2786, 0.0440, 30.62),
( 3866, 0.0660, 75.59),
( 4886, 0.0880, 146.87),
(24960, 0.1023, 236.63),
(29950, 0.1133, 2290.20),
(49918, 0.1243, 2855.57),
(83334, 0.1353, 5337.59),
('inf', 0.1463, 9858.77),
),
'quarterly': (
( 2233, 0.0110, 0.00),
( 5294, 0.0220, 24.56),
( 8355, 0.0440, 91.90),
( 11599, 0.0660, 226.58),
( 14659, 0.0880, 440.68),
( 74877, 0.1023, 709.96),
( 89852, 0.1133, 6870.26),
(149753, 0.1243, 8566.93),
(250000, 0.1353, 16012.62),
( 'inf', 0.1463, 29576.04),
),
'semi-annual': (
( 4466, 0.0110, 0.00),
( 10588, 0.0220, 49.13),
( 16710, 0.0440, 183.81),
( 23198, 0.0660, 453.18),
( 29318, 0.0880, 881.39),
(149754, 0.1023, 1419.95),
(179704, 0.1133, 13740.55),
(299506, 0.1243, 17133.89),
(500000, 0.1353, 32025.28),
( 'inf', 0.1463, 59152.12),
),
'annually': (
( 8932, 0.0110, 0.00),
( 21175, 0.0220, 98.25),
( 33421, 0.0440, 367.60),
( 46394, 0.0660, 906.42),
( 58634, 0.0880, 1762.64),
( 299508, 0.1023, 2839.76),
( 359407, 0.1133, 27481.17),
( 599012, 0.1243, 34267.73),
(1000000, 0.1353, 64050.63),
( 'inf', 0.1463, 118304.31),
),
},
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_tax_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ca_sit_income_exemption_rate" model="hr.rule.parameter">
@@ -620,19 +614,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ca_sit_income_exemption_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 280, 280, 561, 561),
'bi-weekly': ( 561, 561, 1121, 1121),
'semi-monthly': ( 607, 607, 1214, 1214),
'monthly': ( 1214, 1214, 2429, 2429),
'quarterly': ( 3643, 3643, 7287, 7287),
'semi-annual': ( 7287, 7287, 14573, 14573),
'annually': (14573, 14573, 29146, 29146),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_income_exemption_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<!-- https://www.edd.ca.gov/pdf_pub_ctr/20methb.pdf -->
<!-- Table 1. Low income exemption table -->
<record id="rule_parameter_us_ca_sit_income_exemption_rate_2020" model="hr.rule.parameter.value">
@@ -648,6 +629,21 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_income_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://edd.ca.gov/pdf_pub_ctr/21methb.pdf -->
<!-- Table 1. Low income exemption table -->
<record id="rule_parameter_us_ca_sit_income_exemption_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 294, 294, 587, 587),
'bi-weekly': ( 587, 587, 1174, 1174),
'semi-monthly': ( 636, 636, 1272, 1272),
'monthly': ( 1272, 1272, 2545, 2545),
'quarterly': ( 3817, 3817, 7634, 7634),
'semi-annual': ( 7634, 7634, 15267, 15267),
'annually': (15267, 15267, 30534, 30534),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_income_exemption_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ca_sit_estimated_deduction_rate" model="hr.rule.parameter">
@@ -656,21 +652,9 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ca_sit_estimated_deduction_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 19, 38, 58, 77, 96, 115, 135, 154, 173, 192),
'bi-weekly': ( 38, 77, 115, 154, 192, 231, 269, 308, 346, 385),
'semi-monthly': ( 42, 83, 125, 167, 208, 250, 292, 333, 375, 417),
'monthly': ( 83, 167, 250, 333, 417, 500, 583, 667, 750, 833),
'quarterly': ( 250, 500, 750, 1000, 1250, 1500, 1750, 2000, 2250, 2500),
'semi-annual': ( 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000),
'annually': (1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_estimated_deduction_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<!-- https://www.edd.ca.gov/pdf_pub_ctr/20methb.pdf -->
<!-- Table 2. Estimated Deduction table -->
<!-- No change in 2021 https://edd.ca.gov/pdf_pub_ctr/21methb.pdf -->
<record id="rule_parameter_us_ca_sit_estimated_deduction_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 19, 38, 58, 77, 96, 115, 135, 154, 173, 192),
@@ -692,19 +676,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ca_sit_standard_deduction_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 85, 85, 169, 169),
'bi-weekly': ( 169, 169, 339, 339),
'semi-monthly': ( 183, 183, 367, 367),
'monthly': ( 367, 367, 734, 734),
'quarterly': (1100, 1100, 2201, 2201),
'semi-annual': (2201, 2201, 4401, 4401),
'annually': (4401, 4401, 8802, 8802),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<!-- https://www.edd.ca.gov/pdf_pub_ctr/20methb.pdf -->
<!-- Table 3. Standard Deduction table -->
<record id="rule_parameter_us_ca_sit_standard_deduction_rate_2020" model="hr.rule.parameter.value">
@@ -720,6 +691,21 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://edd.ca.gov/pdf_pub_ctr/21methb.pdf -->
<!-- Table 3. Standard Deduction table -->
<record id="rule_parameter_us_ca_sit_standard_deduction_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 88, 88, 177, 177),
'bi-weekly': ( 177, 177, 354, 354),
'semi-monthly': ( 192, 192, 383, 383),
'monthly': ( 383, 383, 767, 767),
'quarterly': (1150, 1150, 2301, 2301),
'semi-annual': (2301, 2301, 4601, 4601),
'annually': (4601, 4601, 9202, 9202),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ca_sit_exemption_allowance_rate" model="hr.rule.parameter">
@@ -728,19 +714,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ca_sit_exemption_allowance_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 2.41, 4.82, 7.23, 9.65, 12.06, 14.47, 16.88, 19.29, 21.70, 24.12),
'bi-weekly': ( 4.82, 9.65, 14.47, 19.29, 24.12, 28.94, 33.76, 38.58, 43.41, 48.23),
'semi-monthly': ( 5.23, 10.45, 15.68, 20.90, 26.13, 31.35, 36.58, 41.80, 47.03, 52.25),
'monthly': ( 10.45, 20.90, 31.35, 41.80, 52.25, 62.70, 73.15, 83.60, 94.05, 104.50),
'quarterly': ( 31.35, 62.70, 94.05, 125.40, 156.75, 188.10, 219.45, 250.80, 282.15, 313.50),
'semi-annual': ( 62.70, 125.40, 188.10, 250.80, 313.50, 376.20, 438.90, 501.60, 564.30, 627.00),
'annually': (125.40, 250.80, 376.20, 501.60, 627.00, 752.40, 877.80, 1003.20, 1128.60, 1254.00),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_exemption_allowance_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<!-- https://www.edd.ca.gov/pdf_pub_ctr/20methb.pdf -->
<!-- Table 4. Exemption Allowance table -->
<record id="rule_parameter_us_ca_sit_exemption_allowance_rate_2020" model="hr.rule.parameter.value">
@@ -756,6 +729,21 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_exemption_allowance_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://edd.ca.gov/pdf_pub_ctr/21methb.pdf -->
<!-- Table 4. Exemption Allowance table -->
<record id="rule_parameter_us_ca_sit_exemption_allowance_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 2.62, 5.25, 7.87, 10.49, 13.12, 15.74, 18.36, 20.98, 23.61, 26.23),
'bi-weekly': ( 5.25, 10.49, 15.74, 20.98, 26.23, 31.48, 36.72, 41.97, 47.22, 52.46),
'semi-monthly': ( 5.68, 11.37, 17.05, 22.73, 28.42, 34.10, 39.78, 45.47, 51.15, 56.83),
'monthly': ( 11.37, 22.73, 34.10, 45.47, 56.83, 68.20, 79.57, 90.93, 102.30, 113.67),
'quarterly': ( 34.10, 68.20, 102.30, 136.40, 170.50, 204.60, 238.70, 272.80, 306.90, 341.00),
'semi-annual': ( 68.20, 136.40, 204.60, 272.80, 341.00, 409.20, 477.40, 545.60, 613.80, 682.00),
'annually': (136.40, 272.80, 409.20, 545.60, 682.00, 818.40, 954.80, 1091.20, 1227.60, 1364.00),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_exemption_allowance_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->

View File

@@ -1,245 +0,0 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
from .common import TestUsPayslip, process_payslip
class TestUsCAPayslip(TestUsPayslip):
###
# Taxes and Rates
###
CA_MAX_WAGE = 7000
CA_UIT = -3.5 / 100.0
CA_ETT = -0.1 / 100.0
CA_SDI = -1.0 / 100.0
# Examples from https://www.edd.ca.gov/pdf_pub_ctr/20methb.pdf
def test_example_a(self):
salary = 210
schedule_pay = 'weekly'
allowances = 1
additional_allowances = 0
wh = 0.00
employee = self._createEmployee()
contract = self._createContract(employee,
wage=salary,
state_id=self.get_us_state('CA'),
ca_de4_sit_filing_status='single',
state_income_tax_additional_withholding=0.0,
ca_de4_sit_allowances=allowances,
ca_de4_sit_additional_allowances=additional_allowances,
schedule_pay=schedule_pay)
self._log('2019 California 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.CA_UIT + self.CA_ETT))
self.assertPayrollEqual(cats['EE_US_SUTA'], salary * self.CA_SDI)
self.assertPayrollEqual(cats['EE_US_SIT'], wh)
process_payslip(payslip)
def test_example_b(self):
salary = 1250
schedule_pay = 'bi-weekly'
allowances = 2
additional_allowances = 1
# Example B
subject_to_withholding = salary - 38
taxable_income = subject_to_withholding - 339
computed_tax = (taxable_income - 632) * 0.022 + 6.95 # 6.95 Marginal Amount
wh = computed_tax - 9.65 # two exemption allowances
wh = -wh
employee = self._createEmployee()
contract = self._createContract(employee,
wage=salary,
state_id=self.get_us_state('CA'),
ca_de4_sit_filing_status='married',
state_income_tax_additional_withholding=0.0,
ca_de4_sit_allowances=allowances,
ca_de4_sit_additional_allowances=additional_allowances,
schedule_pay=schedule_pay)
self._log('2019 California 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.CA_UIT + self.CA_ETT))
self.assertPayrollEqual(cats['EE_US_SUTA'], salary * self.CA_SDI)
self.assertPayrollEqual(cats['EE_US_SIT'], wh)
process_payslip(payslip)
def test_example_c(self):
salary = 4100
schedule_pay = 'monthly'
allowances = 5
additional_allowances = 0.0
wh = -9.3
employee = self._createEmployee()
contract = self._createContract(employee,
wage=salary,
state_id=self.get_us_state('CA'),
ca_de4_sit_filing_status='married',
state_income_tax_additional_withholding=0.0,
ca_de4_sit_allowances=allowances,
ca_de4_sit_additional_allowances=additional_allowances,
schedule_pay=schedule_pay)
self._log('2019 California 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.CA_UIT + self.CA_ETT))
self.assertPayrollEqual(cats['EE_US_SUTA'], salary * self.CA_SDI)
self.assertPayrollEqual(cats['EE_US_SIT'], wh)
process_payslip(payslip)
# Make a new payslip, this one will have maximums
remaining_ca_uit_wages = self.CA_MAX_WAGE - salary if (self.CA_MAX_WAGE - 2 * salary < salary) \
else salary
self._log('2019 California 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'], round((remaining_ca_uit_wages * (self.CA_UIT + self.CA_ETT)), 2))
def test_example_d(self):
salary = 800
schedule_pay = 'weekly'
allowances = 3
additional_allowances = 0
wh = -3.18
employee = self._createEmployee()
contract = self._createContract(employee,
wage=salary,
state_id=self.get_us_state('CA'),
ca_de4_sit_filing_status='head_household',
state_income_tax_additional_withholding=0.0,
ca_de4_sit_allowances=allowances,
ca_de4_sit_additional_allowances=additional_allowances,
schedule_pay=schedule_pay)
self._log('2019 California 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.CA_UIT + self.CA_ETT))
self.assertPayrollEqual(cats['EE_US_SUTA'], salary * self.CA_SDI)
self.assertPayrollEqual(cats['EE_US_SIT'], wh)
process_payslip(payslip)
# Make a new payslip, this one will have maximums
remaining_ca_uit_wages = self.CA_MAX_WAGE - salary if (self.CA_MAX_WAGE - 2 * salary < salary) \
else salary
self._log('2019 California 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'], round((remaining_ca_uit_wages * (self.CA_UIT + self.CA_ETT)), 2))
def test_example_e(self):
salary = 1800
schedule_pay = 'semi-monthly'
allowances = 4
additional_allowances = 0
wh = -3.08
employee = self._createEmployee()
contract = self._createContract(employee,
wage=salary,
state_id=self.get_us_state('CA'),
ca_de4_sit_filing_status='married',
state_income_tax_additional_withholding=0.0,
ca_de4_sit_allowances=allowances,
ca_de4_sit_additional_allowances=additional_allowances,
schedule_pay=schedule_pay)
self._log('2019 California 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.CA_UIT + self.CA_ETT))
self.assertPayrollEqual(cats['EE_US_SUTA'], salary * self.CA_SDI)
self.assertPayrollEqual(cats['EE_US_SIT'], wh)
process_payslip(payslip)
# Make a new payslip, this one will have maximums
remaining_ca_uit_wages = self.CA_MAX_WAGE - salary if (self.CA_MAX_WAGE - 2 * salary < salary) \
else salary
self._log('2019 California 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'], round((remaining_ca_uit_wages * (self.CA_UIT + self.CA_ETT)), 2))
def test_example_f(self):
salary = 45000
schedule_pay = 'annually'
allowances = 4
additional_allowances = 0
wh = -113.85
employee = self._createEmployee()
contract = self._createContract(employee,
wage=salary,
state_id=self.get_us_state('CA'),
ca_de4_sit_filing_status='married',
state_income_tax_additional_withholding=0.0,
ca_de4_sit_allowances=allowances,
ca_de4_sit_additional_allowances=additional_allowances,
schedule_pay=schedule_pay)
self._log('2019 California 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'], self.CA_MAX_WAGE * (self.CA_UIT + self.CA_ETT))
self.assertPayrollEqual(cats['EE_US_SUTA'], self.CA_MAX_WAGE * self.CA_SDI)
self.assertPayrollEqual(cats['EE_US_SIT'], wh)
process_payslip(payslip)

View File

@@ -0,0 +1,43 @@
# 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 TestUsCAPayslip(TestUsPayslip):
###
# 2021 Taxes and Rates
###
CA_UNEMP_MAX_WAGE = 7000.0 # Note that this is used for SDI and FLI as well
CA_UIT = 3.4
CA_ETT = 0.1
CA_SDI = 1.2
def _test_sit(self, wage, filing_status, allowances, additional_allowances, additional_withholding, schedule_pay, date_start, expected_withholding):
employee = self._createEmployee()
contract = self._createContract(employee,
wage=wage,
state_id=self.get_us_state('CA'),
ca_de4_sit_filing_status=filing_status,
ca_de4_sit_allowances=allowances,
ca_de4_sit_additional_allowances=additional_allowances,
state_income_tax_additional_withholding=additional_withholding,
schedule_pay=schedule_pay)
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
payslip.compute_sheet()
cats = self._getCategories(payslip)
self.assertPayrollAlmostEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding if filing_status else 0.0)
def test_2021_taxes_example1(self):
combined_er_rate = self.CA_UIT + self.CA_ETT
self._test_er_suta('CA', combined_er_rate, date(2021, 1, 1), wage_base=self.CA_UNEMP_MAX_WAGE)
self._test_ee_suta('CA', self.CA_SDI, date(2021, 1, 1), wage_base=self.CA_UNEMP_MAX_WAGE, relaxed=True)
# these expected values come from examples in https://edd.ca.gov/pdf_pub_ctr/21methb.pdf
self._test_sit(210.0, 'single', 1, 0, 0, 'weekly', date(2021, 1, 1), 0.00)
self._test_sit(1250.0, 'married', 2, 1, 0, 'bi-weekly', date(2021, 1, 1), 0.82)
self._test_sit(4100.0, 'married', 5, 0, 0, 'monthly', date(2021, 1, 1), 0.13)
self._test_sit(800.0, 'head_household', 3, 0, 0, 'weekly', date(2021, 1, 1), 2.05)
self._test_sit(1800.0, 'married', 4, 0, 0, 'semi-monthly', date(2021, 1, 1), 0.24)
self._test_sit(45000.0, 'married', 4, 0, 0, 'annually', date(2021, 1, 1), 45.45)
self._test_sit(45000.0, 'married', 4, 0, 20.0, 'annually', date(2021, 1, 1), 65.45)
self._test_sit(6000.0, '', 4, 0, 20.0, 'annually', date(2021, 1, 1), 0.00)