mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
CA California
This commit is contained in:
@@ -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 -->
|
||||
|
||||
@@ -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)
|
||||
43
l10n_us_hr_payroll/tests/test_us_ca_california_payslip_2021.py
Executable file
43
l10n_us_hr_payroll/tests/test_us_ca_california_payslip_2021.py
Executable 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)
|
||||
Reference in New Issue
Block a user