mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
Merge branch 'imp/12.0/l10n_us_hr_payroll__2020_2' into 12.0
# Conflicts: # l10n_us_hr_payroll/__manifest__.py Full tests passed.
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
'hr_payroll_rate',
|
'hr_payroll_rate',
|
||||||
'hibou_professional',
|
'hibou_professional',
|
||||||
],
|
],
|
||||||
'version': '12.0.2020.1.0',
|
'version': '12.0.2020.2.2',
|
||||||
'description': """
|
'description': """
|
||||||
USA Payroll Rules.
|
USA Payroll Rules.
|
||||||
==================
|
==================
|
||||||
@@ -46,21 +46,39 @@ USA Payroll Rules.
|
|||||||
'data/state/ia_iowa.xml',
|
'data/state/ia_iowa.xml',
|
||||||
'data/state/id_idaho.xml',
|
'data/state/id_idaho.xml',
|
||||||
'data/state/il_illinois.xml',
|
'data/state/il_illinois.xml',
|
||||||
|
'data/state/in_indiana.xml',
|
||||||
|
'data/state/ks_kansas.xml',
|
||||||
|
'data/state/ky_kentucky.xml',
|
||||||
|
'data/state/la_louisiana.xml',
|
||||||
|
'data/state/me_maine.xml',
|
||||||
'data/state/mi_michigan.xml',
|
'data/state/mi_michigan.xml',
|
||||||
'data/state/mn_minnesota.xml',
|
'data/state/mn_minnesota.xml',
|
||||||
'data/state/mo_missouri.xml',
|
'data/state/mo_missouri.xml',
|
||||||
'data/state/ms_mississippi.xml',
|
'data/state/ms_mississippi.xml',
|
||||||
'data/state/mt_montana.xml',
|
'data/state/mt_montana.xml',
|
||||||
'data/state/nc_northcarolina.xml',
|
'data/state/nc_northcarolina.xml',
|
||||||
|
'data/state/nd_north_dakota.xml',
|
||||||
|
'data/state/ne_nebraska.xml',
|
||||||
'data/state/nh_new_hampshire.xml',
|
'data/state/nh_new_hampshire.xml',
|
||||||
'data/state/nj_newjersey.xml',
|
'data/state/nj_newjersey.xml',
|
||||||
'data/state/nm_new_mexico.xml',
|
'data/state/nm_new_mexico.xml',
|
||||||
|
'data/state/nv_nevada.xml',
|
||||||
'data/state/ny_new_york.xml',
|
'data/state/ny_new_york.xml',
|
||||||
'data/state/oh_ohio.xml',
|
'data/state/oh_ohio.xml',
|
||||||
|
'data/state/ok_oklahoma.xml',
|
||||||
'data/state/pa_pennsylvania.xml',
|
'data/state/pa_pennsylvania.xml',
|
||||||
|
'data/state/ri_rhode_island.xml',
|
||||||
|
'data/state/sc_south_carolina.xml',
|
||||||
|
'data/state/sd_south_dakota.xml',
|
||||||
|
'data/state/tn_tennessee.xml',
|
||||||
'data/state/tx_texas.xml',
|
'data/state/tx_texas.xml',
|
||||||
|
'data/state/ut_utah.xml',
|
||||||
|
'data/state/vt_vermont.xml',
|
||||||
'data/state/va_virginia.xml',
|
'data/state/va_virginia.xml',
|
||||||
'data/state/wa_washington.xml',
|
'data/state/wa_washington.xml',
|
||||||
|
'data/state/wi_wisconsin.xml',
|
||||||
|
'data/state/wv_west_virginia.xml',
|
||||||
|
'data/state/wy_wyoming.xml',
|
||||||
'data/final.xml',
|
'data/final.xml',
|
||||||
'views/hr_contract_views.xml',
|
'views/hr_contract_views.xml',
|
||||||
'views/res_config_settings_views.xml',
|
'views/res_config_settings_views.xml',
|
||||||
|
|||||||
@@ -59,6 +59,21 @@
|
|||||||
ref('hr_payroll_rule_er_us_il_suta'),
|
ref('hr_payroll_rule_er_us_il_suta'),
|
||||||
ref('hr_payroll_rule_ee_us_il_sit'),
|
ref('hr_payroll_rule_ee_us_il_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_in_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_in_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_ks_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_ks_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_ky_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_ky_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_la_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_la_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_me_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_me_sit'),
|
||||||
|
|
||||||
ref('hr_payroll_rule_er_us_mn_suta'),
|
ref('hr_payroll_rule_er_us_mn_suta'),
|
||||||
ref('hr_payroll_rule_ee_us_mn_sit'),
|
ref('hr_payroll_rule_ee_us_mn_sit'),
|
||||||
|
|
||||||
@@ -78,6 +93,12 @@
|
|||||||
ref('hr_payroll_rule_er_us_nc_suta'),
|
ref('hr_payroll_rule_er_us_nc_suta'),
|
||||||
ref('hr_payroll_rule_ee_us_nc_sit'),
|
ref('hr_payroll_rule_ee_us_nc_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_nd_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_nd_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_ne_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_ne_sit'),
|
||||||
|
|
||||||
ref('hr_payroll_rule_er_us_nh_suta'),
|
ref('hr_payroll_rule_er_us_nh_suta'),
|
||||||
|
|
||||||
ref('hr_payroll_rule_er_us_nj_suta'),
|
ref('hr_payroll_rule_er_us_nj_suta'),
|
||||||
@@ -93,6 +114,8 @@
|
|||||||
ref('hr_payroll_rule_er_us_nm_suta'),
|
ref('hr_payroll_rule_er_us_nm_suta'),
|
||||||
ref('hr_payroll_rule_ee_us_nm_sit'),
|
ref('hr_payroll_rule_ee_us_nm_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_nv_suta'),
|
||||||
|
|
||||||
ref('hr_payroll_rule_er_us_ny_suta'),
|
ref('hr_payroll_rule_er_us_ny_suta'),
|
||||||
ref('hr_payroll_rule_er_us_ny_suta_rsf'),
|
ref('hr_payroll_rule_er_us_ny_suta_rsf'),
|
||||||
ref('hr_payroll_rule_er_us_ny_suta_mctmt'),
|
ref('hr_payroll_rule_er_us_ny_suta_mctmt'),
|
||||||
@@ -101,23 +124,50 @@
|
|||||||
ref('hr_payroll_rule_er_us_oh_suta'),
|
ref('hr_payroll_rule_er_us_oh_suta'),
|
||||||
ref('hr_payroll_rule_ee_us_oh_sit'),
|
ref('hr_payroll_rule_ee_us_oh_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_ok_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_ok_sit'),
|
||||||
|
|
||||||
ref('hr_payroll_rule_er_us_pa_suta'),
|
ref('hr_payroll_rule_er_us_pa_suta'),
|
||||||
ref('hr_payroll_rule_ee_us_pa_suta'),
|
ref('hr_payroll_rule_ee_us_pa_suta'),
|
||||||
ref('hr_payroll_rule_ee_us_pa_sit'),
|
ref('hr_payroll_rule_ee_us_pa_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_ri_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_ri_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_sc_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_sc_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_sd_suta'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_tn_suta'),
|
||||||
|
|
||||||
ref('hr_payroll_rule_er_us_tx_suta'),
|
ref('hr_payroll_rule_er_us_tx_suta'),
|
||||||
ref('hr_payroll_rule_er_us_tx_suta_oa'),
|
ref('hr_payroll_rule_er_us_tx_suta_oa'),
|
||||||
ref('hr_payroll_rule_er_us_tx_suta_etia'),
|
ref('hr_payroll_rule_er_us_tx_suta_etia'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_ut_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_ut_sit'),
|
||||||
|
|
||||||
ref('hr_payroll_rule_er_us_va_suta'),
|
ref('hr_payroll_rule_er_us_va_suta'),
|
||||||
ref('hr_payroll_rule_ee_us_va_sit'),
|
ref('hr_payroll_rule_ee_us_va_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_vt_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_vt_sit'),
|
||||||
|
|
||||||
ref('hr_payroll_rule_er_us_wa_suta'),
|
ref('hr_payroll_rule_er_us_wa_suta'),
|
||||||
ref('hr_payroll_rule_er_us_wa_fml'),
|
ref('hr_payroll_rule_er_us_wa_fml'),
|
||||||
ref('hr_payroll_rule_ee_us_wa_fml'),
|
ref('hr_payroll_rule_ee_us_wa_fml'),
|
||||||
ref('hr_payroll_rule_er_us_wa_lni'),
|
ref('hr_payroll_rule_er_us_wa_lni'),
|
||||||
ref('hr_payroll_rule_ee_us_wa_lni'),
|
ref('hr_payroll_rule_ee_us_wa_lni'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_wi_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_wi_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_wv_suta'),
|
||||||
|
ref('hr_payroll_rule_ee_us_wv_sit'),
|
||||||
|
|
||||||
|
ref('hr_payroll_rule_er_us_wy_suta'),
|
||||||
|
|
||||||
ref('hr_salary_rule_commission'),
|
ref('hr_salary_rule_commission'),
|
||||||
ref('hr_salary_rule_gamification'),
|
ref('hr_salary_rule_gamification'),
|
||||||
])]" name="rule_ids"/>
|
])]" name="rule_ids"/>
|
||||||
|
|||||||
@@ -50,6 +50,7 @@
|
|||||||
<!-- Partners and Contribution Registers -->
|
<!-- Partners and Contribution Registers -->
|
||||||
<record id="res_partner_us_ak_dor" model="res.partner">
|
<record id="res_partner_us_ak_dor" model="res.partner">
|
||||||
<field name="name">US Alaska - Department of Labor and Workforce Development (ADLWD) - Unemployment Tax</field>
|
<field name="name">US Alaska - Department of Labor and Workforce Development (ADLWD) - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="contrib_register_us_ak_dor" model="hr.contribution.register">
|
<record id="contrib_register_us_ak_dor" model="hr.contribution.register">
|
||||||
<field name="name">US Alaska - Department of Labor and Workforce Development (ADLWD) - Unemployment Tax</field>
|
<field name="name">US Alaska - Department of Labor and Workforce Development (ADLWD) - Unemployment Tax</field>
|
||||||
|
|||||||
@@ -37,8 +37,16 @@
|
|||||||
<field name="name">US AL Alabama SIT Tax Rate</field>
|
<field name="name">US AL Alabama SIT Tax Rate</field>
|
||||||
<field name="code">us_al_sit_tax_rate</field>
|
<field name="code">us_al_sit_tax_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'0': [(500, 2),( 3000, 4),('inf', 5)],
|
'0': [
|
||||||
'M': [( 1000, 2),( 6000, 4),('inf', 5)],
|
( 500, 2),
|
||||||
|
( 3000, 4),
|
||||||
|
('inf', 5),
|
||||||
|
],
|
||||||
|
'M': [
|
||||||
|
( 1000, 2),
|
||||||
|
( 6000, 4),
|
||||||
|
('inf', 5),
|
||||||
|
],
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
@@ -46,14 +54,24 @@
|
|||||||
<field name="name">US AL Alabama SIT Tax Rate</field>
|
<field name="name">US AL Alabama SIT Tax Rate</field>
|
||||||
<field name="code">us_al_sit_tax_rate</field>
|
<field name="code">us_al_sit_tax_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'0' : [(500, 2),(2500, 4),('inf', 5)],
|
'0' : [
|
||||||
'M': [(1000, 2),(5000, 4),('inf', 5)],
|
( 500, 2),
|
||||||
|
( 2500, 4),
|
||||||
|
('inf', 5),
|
||||||
|
],
|
||||||
|
'M': [
|
||||||
|
( 1000, 2),
|
||||||
|
( 5000, 4),
|
||||||
|
('inf', 5),
|
||||||
|
],
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
|
<!-- https://revenue.alabama.gov/wp-content/uploads/2019/01/whbooklet_0119.pdf -->
|
||||||
|
<!-- Page 7. D-->
|
||||||
<record id="rule_parameter_us_al_sit_dependent_rate_2019" model="hr.payroll.rate">
|
<record id="rule_parameter_us_al_sit_dependent_rate_2019" model="hr.payroll.rate">
|
||||||
<field name="name">US AL Alabama Dependent Rate</field>
|
<field name="name">US AL Alabama Dependent Rate</field>
|
||||||
<field name="code">us_al_sit_dependent_rate</field>
|
<field name="code">us_al_sit_dependent_rate</field>
|
||||||
@@ -64,6 +82,8 @@
|
|||||||
]</field>
|
]</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://revenue.alabama.gov/wp-content/uploads/2019/01/whbooklet_0119.pdf -->
|
||||||
|
<!-- Page 7. D-->
|
||||||
<record id="rule_parameter_us_al_sit_dependent_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_al_sit_dependent_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US AL Alabama Dependent Rate</field>
|
<field name="name">US AL Alabama Dependent Rate</field>
|
||||||
<field name="code">us_al_sit_dependent_rate</field>
|
<field name="code">us_al_sit_dependent_rate</field>
|
||||||
@@ -77,6 +97,8 @@
|
|||||||
</data>
|
</data>
|
||||||
|
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
|
<!-- https://revenue.alabama.gov/wp-content/uploads/2019/01/whbooklet_0119.pdf -->
|
||||||
|
<!-- Page 7. A-->
|
||||||
<record id="rule_parameter_us_al_sit_standard_deduction_rate_2019" model="hr.payroll.rate">
|
<record id="rule_parameter_us_al_sit_standard_deduction_rate_2019" model="hr.payroll.rate">
|
||||||
<field name="name">US AL Alabama Standard Deduction Rate</field>
|
<field name="name">US AL Alabama Standard Deduction Rate</field>
|
||||||
<field name="code">us_al_sit_standard_deduction_rate</field>
|
<field name="code">us_al_sit_standard_deduction_rate</field>
|
||||||
@@ -89,6 +111,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://revenue.alabama.gov/wp-content/uploads/2019/01/whbooklet_0119.pdf -->
|
||||||
|
<!-- Page 7. A-->
|
||||||
<record id="rule_parameter_us_al_sit_standard_deduction_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_al_sit_standard_deduction_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US AL Alabama Standard Deduction Rate</field>
|
<field name="name">US AL Alabama Standard Deduction Rate</field>
|
||||||
<field name="code">us_al_sit_standard_deduction_rate</field>
|
<field name="code">us_al_sit_standard_deduction_rate</field>
|
||||||
@@ -104,6 +128,8 @@
|
|||||||
</data>
|
</data>
|
||||||
|
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
|
<!-- https://revenue.alabama.gov/wp-content/uploads/2019/01/whbooklet_0119.pdf -->
|
||||||
|
<!-- Page 7. C-->
|
||||||
<record id="rule_parameter_us_al_sit_personal_exemption_rate_2019" model="hr.payroll.rate">
|
<record id="rule_parameter_us_al_sit_personal_exemption_rate_2019" model="hr.payroll.rate">
|
||||||
<field name="name">US AL Alabama Personal Exemption Rate</field>
|
<field name="name">US AL Alabama Personal Exemption Rate</field>
|
||||||
<field name="code">us_al_sit_personal_exemption_rate</field>
|
<field name="code">us_al_sit_personal_exemption_rate</field>
|
||||||
@@ -116,6 +142,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://revenue.alabama.gov/wp-content/uploads/2019/01/whbooklet_0119.pdf -->
|
||||||
|
<!-- Page 7. C-->
|
||||||
<record id="rule_parameter_us_al_sit_personal_exemption_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_al_sit_personal_exemption_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US AL Alabama Personal Exemption Rate</field>
|
<field name="name">US AL Alabama Personal Exemption Rate</field>
|
||||||
<field name="code">us_al_sit_personal_exemption_rate</field>
|
<field name="code">us_al_sit_personal_exemption_rate</field>
|
||||||
@@ -133,6 +161,7 @@
|
|||||||
<!-- Partners and Contribution Registers -->
|
<!-- Partners and Contribution Registers -->
|
||||||
<record id="res_partner_us_al_dor" model="res.partner">
|
<record id="res_partner_us_al_dor" model="res.partner">
|
||||||
<field name="name">US Alabama - Department of Economic Security (IDES) - Unemployment Tax</field>
|
<field name="name">US Alabama - Department of Economic Security (IDES) - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="contrib_register_us_al_dor" model="hr.contribution.register">
|
<record id="contrib_register_us_al_dor" model="hr.contribution.register">
|
||||||
<field name="name">US Alabama - Department of Economic Security (IDES) - Unemployment Tax</field>
|
<field name="name">US Alabama - Department of Economic Security (IDES) - Unemployment Tax</field>
|
||||||
@@ -141,6 +170,7 @@
|
|||||||
|
|
||||||
<record id="res_partner_us_al_dor_sit" model="res.partner">
|
<record id="res_partner_us_al_dor_sit" model="res.partner">
|
||||||
<field name="name">US Alabama - Department of Revenue (IDOR) - Income Tax</field>
|
<field name="name">US Alabama - Department of Revenue (IDOR) - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="contrib_register_us_al_dor_sit" model="hr.contribution.register">
|
<record id="contrib_register_us_al_dor_sit" model="hr.contribution.register">
|
||||||
<field name="name">US Alabama - Department of Revenue (IDOR) - Unemployment Tax</field>
|
<field name="name">US Alabama - Department of Revenue (IDOR) - Unemployment Tax</field>
|
||||||
|
|||||||
@@ -52,6 +52,8 @@
|
|||||||
]</field>
|
]</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://www.dfa.arkansas.gov/images/uploads/incomeTaxOffice/whformula.pdf-->
|
||||||
|
<!-- Notover, percentage , minus adjustment page 1. 3.-->
|
||||||
<record id="rule_parameter_us_ar_sit_tax_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_ar_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US AR Arkansas SIT Tax Rate</field>
|
<field name="name">US AR Arkansas SIT Tax Rate</field>
|
||||||
<field name="code">us_ar_sit_tax_rate</field>
|
<field name="code">us_ar_sit_tax_rate</field>
|
||||||
@@ -91,6 +93,7 @@
|
|||||||
<!-- Partners and Contribution Registers -->
|
<!-- Partners and Contribution Registers -->
|
||||||
<record id="res_partner_us_ar_dor" model="res.partner">
|
<record id="res_partner_us_ar_dor" model="res.partner">
|
||||||
<field name="name">US Arkansas - Department of Workforce Solutions - Unemployment Tax</field>
|
<field name="name">US Arkansas - Department of Workforce Solutions - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="contrib_register_us_ar_dor" model="hr.contribution.register">
|
<record id="contrib_register_us_ar_dor" model="hr.contribution.register">
|
||||||
<field name="name">US Arkansas - Department of Workforce Solutions - Unemployment Tax</field>
|
<field name="name">US Arkansas - Department of Workforce Solutions - Unemployment Tax</field>
|
||||||
@@ -99,6 +102,7 @@
|
|||||||
|
|
||||||
<record id="res_partner_us_ar_dor_sit" model="res.partner">
|
<record id="res_partner_us_ar_dor_sit" model="res.partner">
|
||||||
<field name="name">US Arkansas - Department of Financial Administration - Income Tax</field>
|
<field name="name">US Arkansas - Department of Financial Administration - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="contrib_register_us_ar_dor_sit" model="hr.contribution.register">
|
<record id="contrib_register_us_ar_dor_sit" model="hr.contribution.register">
|
||||||
<field name="name">US Arkansas - Department of Financial Administration - Income Tax</field>
|
<field name="name">US Arkansas - Department of Financial Administration - Income Tax</field>
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
<!-- Partners and Contribution Registers -->
|
<!-- Partners and Contribution Registers -->
|
||||||
<record id="res_partner_us_az_dor" model="res.partner">
|
<record id="res_partner_us_az_dor" model="res.partner">
|
||||||
<field name="name">US Arizona - Department of Economic Security (ADES) - Unemployment Tax</field>
|
<field name="name">US Arizona - Department of Economic Security (ADES) - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="contrib_register_us_az_dor" model="hr.contribution.register">
|
<record id="contrib_register_us_az_dor" model="hr.contribution.register">
|
||||||
<field name="name">US Arizona - Department of Economic Security (ADES) - Unemployment Tax</field>
|
<field name="name">US Arizona - Department of Economic Security (ADES) - Unemployment Tax</field>
|
||||||
@@ -43,6 +44,7 @@
|
|||||||
|
|
||||||
<record id="res_partner_us_az_dor_sit" model="res.partner">
|
<record id="res_partner_us_az_dor_sit" model="res.partner">
|
||||||
<field name="name">US Arizona - Department of Revenue (ADOR) - Income Tax</field>
|
<field name="name">US Arizona - Department of Revenue (ADOR) - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="contrib_register_us_az_dor_sit" model="hr.contribution.register">
|
<record id="contrib_register_us_az_dor_sit" model="hr.contribution.register">
|
||||||
<field name="name">US Arizona - Department of Revenue (ADOR) - Income Tax</field>
|
<field name="name">US Arizona - Department of Revenue (ADOR) - Income Tax</field>
|
||||||
|
|||||||
@@ -70,31 +70,262 @@
|
|||||||
<field name="code">us_ca_sit_tax_rate</field>
|
<field name="code">us_ca_sit_tax_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'head_household': {
|
'head_household': {
|
||||||
'weekly': ((316, 0.011, 0.0), (750, 0.022, 3.48), (967, 0.044, 13.03), (1196, 0.066, 22.58), (1413, 0.088, 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)),
|
'weekly': (
|
||||||
'bi-weekly': ((632, 0.011, 0.0), (1500, 0.022, 6.95), (1934, 0.044, 26.05), (2392, 0.066, 45.15), (2826, 0.088, 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)),
|
( 316, 0.0110, 0.00),
|
||||||
'semi-monthly': ((686, 0.011, 0.0), (1625, 0.022, 7.55), (2094, 0.044, 28.21), (2592, 0.066, 48.85), (3062, 0.088, 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)),
|
( 750, 0.0220, 3.48),
|
||||||
'monthly': ((1372, 0.011, 0.0), (3250, 0.022, 15.09), (4188, 0.044, 56.41), (5184, 0.066, 97.68), (6124, 0.088, 163.42), (31250, 0.1023, 246.148), (37500, 0.1133, 2816.53), (62500, 0.1243, 3524.66), (83334, 0.1353, 6632.16), ('inf', 0.1463, 9451.00)),
|
( 967, 0.0440, 13.03),
|
||||||
'quarterly': ((4114, 0.011, 0.0), (9748, 0.022, 45.25), (12566, 0.044, 169.20), (15552, 0.066, 293.19), (18369, 0.088, 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)),
|
( 1196, 0.0660, 22.58),
|
||||||
'semi-annual': ((8228, 0.011, 0.0), (19496, 0.022, 90.51), (25132, 0.044, 338.41), (31104, 0.066, 586.39), (36738, 0.088, 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)),
|
( 1413, 0.0880, 37.69),
|
||||||
'annually': ((16457, 0.011, 0.0), (38991, 0.022, 181.03), (50264, 0.044, 676.78), (62206, 0.066, 1172.79), (73477, 0.088, 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)),
|
( 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': {
|
'married': {
|
||||||
'weekly': ((316, 0.011, 0.0),(750, 0.022, 3.48),(1184, 0.044, 13.03),(1642, 0.066, 32.13), (2076, 0.088, 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)),
|
'weekly': (
|
||||||
'bi-weekly': ((632, 0.011, 0.0), (1500, 0.022, 6.95), (2368, 0.044, 26.05), (3284, 0.066, 64.24), (4152, 0.088, 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)),
|
( 316, 0.0110, 0.00),
|
||||||
'semi-monthly': ((686, 0.011, 0.0), (1624, 0.022, 7.55), (2564, 0.044, 28.19), (3560, 0.066, 69.55), (4498, 0.088, 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)),
|
( 750, 0.0220, 3.48),
|
||||||
'monthly': ((1372, 0.011, 0.0), (3248, 0.022, 15.09), (5128, 0.044, 56.36), (7120, 0.066, 139.08), (8996, 0.088, 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)),
|
( 1184, 0.0440, 13.03),
|
||||||
'quarterly': ((4112, 0.011, 0.0), (9748, 0.022, 45.23), (15384, 0.044, 169.22), (21356, 0.066, 417.20), (26990, 0.088, 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)),
|
( 1642, 0.0660, 32.13),
|
||||||
'semi-annual': ((8224, 0.011, 0.0), (19496, 0.022, 90.46), (30768, 0.044, 338.44), (42712, 0.066, 834.41), (53980, 0.088, 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)),
|
( 2076, 0.0880, 62.36),
|
||||||
'annually': ((16446, 0.011, 0.0), (38990, 0.022, 180.91), (61538, 0.044, 676.88), (85422, 0.066, 1668.99), (107960, 0.088, 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)),
|
(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': {
|
'single': {
|
||||||
'weekly': ((158, 0.011, 0.0), (375, 0.022, 1.74), (592, 0.044, 6.51), (821, 0.066, 16.06), (1038, 0.088, 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)),
|
'weekly': (
|
||||||
'bi-weekly': ((316, 0.011, 0.0), (750, 0.022, 3.48), (1184, 0.044, 13.03), (1642, 0.066, 32.13), (2076, 0.088, 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)),
|
( 158, 0.0110, 0.00),
|
||||||
'semi-monthly': ((343, 0.011, 0.0), (812, 0.022, 3.77), (1282, 0.044, 14.09), (1780, 0.066, 34.77), (2249, 0.088, 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)),
|
( 375, 0.0220, 1.74),
|
||||||
'monthly': ((686, 0.011, 0.0), (1624, 0.022, 7.55), (2564, 0.044, 28.19), (3560, 0.066, 69.55), (4498, 0.088, 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)),
|
( 592, 0.0440, 6.51),
|
||||||
'quarterly': ((2056, 0.011, 0.0), (4874, 0.022, 22.62), (7692, 0.044, 84.62), (10678, 0.066, 208.61), (13495, 0.088, 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)),
|
( 821, 0.0660, 16.06),
|
||||||
'semi-annual': ((4112, 0.011, 0.0), (9748, 0.022, 45.23), (15384, 0.044, 169.22), (21356, 0.066, 417.20), (26990, 0.088, 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)),
|
( 1038, 0.0880, 31.17),
|
||||||
'annually': ((8223, 0.011, 0.0), (19495, 0.022, 90.45), (30769, 0.044, 338.43), (42711, 0.066, 834.49), (53980, 0.088, 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)),
|
( 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>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
@@ -104,31 +335,262 @@
|
|||||||
<field name="code">us_ca_sit_tax_rate</field>
|
<field name="code">us_ca_sit_tax_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'head_household': {
|
'head_household': {
|
||||||
'weekly': ((339, 0.011, 0.0), (803, 0.022, 3.73), (1035, 0.044, 13.93), (1281, 0.066, 24.15), (1514, 0.088, 40.39), (7725, 0.1023, 60.89), (9270, 0.1133, 696.28), (15450, 0.1243, 871.33), (19231, 0.1353, 1639.50), ('inf', 0.1463, 2151.07)),
|
'weekly': (
|
||||||
'bi-weekly': ((678, 0.011, 0.0), (1606, 0.022, 7.46), (2070, 0.044, 27.88), (2562, 0.066, 48.30), (3028, 0.088, 80.77), (15450, 0.1023, 121.78), (18540, 0.1133, 1392.55), (30900, 0.1243, 1742.65), (38462, 0.1353, 3279.00), ('inf', 0.1463, 4302.14)),
|
( 339, 0.0110, 0.00),
|
||||||
'semi-monthly': ((735, 0.011, 0.0), (1740, 0.022, 8.09), (2243, 0.044, 30.20), (2777, 0.066, 52.33), (3280, 0.088, 87.57), (16738, 0.1023, 131.83), (20085, 0.1133, 1508.58), (33475, 0.1243, 1887.80), (41667, 0.1353, 3552.18), ('inf', 0.1463, 4660.56)),
|
( 803, 0.0220, 3.73),
|
||||||
'monthly': ((1470, 0.011, 0.0), (3480, 0.022, 16.17), (4486, 0.044, 60.39), (5554, 0.066, 104.65), (6560, 0.088, 175.14), (33476, 0.1023, 263.67), (40170, 0.1133, 3017.18), (66950, 0.1243, 3775.61), (83334, 0.1353, 7104.36), ('inf', 0.1463, 9321.12)),
|
( 1035, 0.0440, 13.93),
|
||||||
'quarterly': ((4407, 0.011, 0.0), (10442, 0.022, 48.48), (13461, 0.044, 181.25), (16659, 0.066, 314.09), (19678, 0.088, 525.16), (100426, 0.1023, 790.83), (120512, 0.1133, 9051.35), (200853, 0.1243, 11327.09), (250000, 0.1353, 21313.48), ('inf', 0.1463, 27963.07)),
|
( 1281, 0.0660, 24.15),
|
||||||
'semi-annual': ((8814, 0.011, 0.0), (20884, 0.022, 96.95), (26922, 0.044, 362.49), (33318, 0.066, 628.16), (39356, 0.088, 1050.30), (200852, 0.1023, 1581.64), (241024, 0.1133, 18102.68), (401706, 0.1243, 22654.17), (500000, 0.1353, 42626.94), ('inf', 0.1463, 55926.12)),
|
( 1514, 0.0880, 40.39),
|
||||||
'annually': ((17629, 0.011, 0.0), (41768, 0.022, 193.92), (53843, 0.044, 724.98), (66636, 0.066, 1256.28), (78710, 0.088, 2100.62), (401705, 0.1023, 3163.13), (482047, 0.1133, 36205.52), (803410, 0.1243, 45308.27), (1000000, 0.1353, 85253.69), ('inf', 0.1463, 111852.32)),
|
( 7725, 0.1023, 60.89),
|
||||||
|
( 9270, 0.1133, 696.28),
|
||||||
|
(15450, 0.1243, 871.33),
|
||||||
|
(19231, 0.1353, 1639.50),
|
||||||
|
('inf', 0.1463, 2151.07),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 678, 0.0110, 0.00),
|
||||||
|
( 1606, 0.0220, 7.46),
|
||||||
|
( 2070, 0.0440, 27.88),
|
||||||
|
( 2562, 0.0660, 48.30),
|
||||||
|
( 3028, 0.0880, 80.77),
|
||||||
|
(15450, 0.1023, 121.78),
|
||||||
|
(18540, 0.1133, 1392.55),
|
||||||
|
(30900, 0.1243, 1742.65),
|
||||||
|
(38462, 0.1353, 3279.00),
|
||||||
|
('inf', 0.1463, 4302.14),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 735, 0.0110, 0.00),
|
||||||
|
( 1740, 0.0220, 8.09),
|
||||||
|
( 2243, 0.0440, 30.20),
|
||||||
|
( 2777, 0.0660, 52.33),
|
||||||
|
( 3280, 0.0880, 87.57),
|
||||||
|
(16738, 0.1023, 131.83),
|
||||||
|
(20085, 0.1133, 1508.58),
|
||||||
|
(33475, 0.1243, 1887.80),
|
||||||
|
(41667, 0.1353, 3552.18),
|
||||||
|
('inf', 0.1463, 4660.56),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1470, 0.0110, 0.00),
|
||||||
|
( 3480, 0.0220, 16.17),
|
||||||
|
( 4486, 0.0440, 60.39),
|
||||||
|
( 5554, 0.0660, 104.65),
|
||||||
|
( 6560, 0.0880, 175.14),
|
||||||
|
(33476, 0.1023, 263.67),
|
||||||
|
(40170, 0.1133, 3017.18),
|
||||||
|
(66950, 0.1243, 3775.61),
|
||||||
|
(83334, 0.1353, 7104.36),
|
||||||
|
('inf', 0.1463, 9321.12),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 4407, 0.0110, 0.00),
|
||||||
|
( 10442, 0.0220, 48.48),
|
||||||
|
( 13461, 0.0440, 181.25),
|
||||||
|
( 16659, 0.0660, 314.09),
|
||||||
|
( 19678, 0.0880, 525.16),
|
||||||
|
(100426, 0.1023, 790.83),
|
||||||
|
(120512, 0.1133, 9051.35),
|
||||||
|
(200853, 0.1243, 11327.09),
|
||||||
|
(250000, 0.1353, 21313.48),
|
||||||
|
( 'inf', 0.1463, 27963.07),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 8814, 0.0110, 0.00),
|
||||||
|
( 20884, 0.0220, 96.95),
|
||||||
|
( 26922, 0.0440, 362.49),
|
||||||
|
( 33318, 0.0660, 628.16),
|
||||||
|
( 39356, 0.0880, 1050.30),
|
||||||
|
(200852, 0.1023, 1581.64),
|
||||||
|
(241024, 0.1133, 18102.68),
|
||||||
|
(401706, 0.1243, 22654.17),
|
||||||
|
(500000, 0.1353, 42626.94),
|
||||||
|
( 'inf', 0.1463, 55926.12),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 17629, 0.0110, 0.00),
|
||||||
|
( 41768, 0.0220, 193.92),
|
||||||
|
( 53843, 0.0440, 724.98),
|
||||||
|
( 66636, 0.0660, 1256.28),
|
||||||
|
( 78710, 0.0880, 2100.62),
|
||||||
|
( 401705, 0.1023, 3163.13),
|
||||||
|
( 482047, 0.1133, 36205.52),
|
||||||
|
( 803410, 0.1243, 45308.27),
|
||||||
|
(1000000, 0.1353, 85253.69),
|
||||||
|
( 'inf', 0.1463, 111852.32),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'married': {
|
'married': {
|
||||||
'weekly': ((338, 0.011, 0.0),(804, 0.022, 3.72),(1268, 0.044, 13.97),(1760, 0.066, 34.39), (2224, 0.088, 66.86),(11360, 0.1023, 107.69),(13632, 0.1133, 1042.30),(19231, 0.1243, 1299.72),(22721, 0.1353, 1995.68),('inf', 0.1463, 2467.88)),
|
'weekly': (
|
||||||
'bi-weekly': ((676, 0.011, 0.0), (1608, 0.022, 7.44), (2536, 0.044, 27.94), (3520, 0.066, 68.77), (4448, 0.088, 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)),
|
( 338, 0.0110, 0.00),
|
||||||
'semi-monthly': ((734, 0.011, 0.0), (1740, 0.022, 8.07), (2746, 0.044, 30.20), (3812, 0.066, 74.46), (4818, 0.088, 144.82), (24614, 0.1023, 233.35), (29538, 0.1133, 2258.48), (41667, 0.1243, 2816.37), (49229, 0.1353, 4324.00), ('inf', 0.1463, 5347.14)),
|
( 804, 0.0220, 3.72),
|
||||||
'monthly': ((1468, 0.011, 0.0), (3480, 0.022, 16.15), (5492, 0.044, 60.41), (7624, 0.066, 148.94), (9636, 0.088, 2889.65), (49228, 0.1023, 466.71), (59076, 0.1133, 4516.97), (83334, 0.1243, 5632.75), (98458, 0.1353, 8648.02), ('inf', 0.1463, 10694.30)),
|
( 1268, 0.0440, 13.97),
|
||||||
'quarterly': ((4404, 0.011, 0.0), (10442, 0.022, 48.44), (16480, 0.044, 181.28), (22876, 0.066, 446.95), (28912, 0.088, 869.09), (147686, 0.1023, 1400.26), (177222, 0.1133, 13550.84), (250000, 0.1243, 16897.27), (295371, 0.1353, 25943.58), ('inf', 0.1463, 32082.28)),
|
( 1760, 0.0660, 34.39),
|
||||||
'semi-annual': ((8808, 0.011, 0.0), (20884, 0.022, 96.89), (32960, 0.044, 362.56), (45752, 0.066, 893.90), (57824, 0.088, 1738.17), (295372, 0.1023, 2800.51), (354444, 0.1133, 27101.67), (500000, 0.1243, 33794.53), (590742, 0.1353, 51887.14), ('inf', 0.1463, 64164.53)),
|
( 2224, 0.0880, 66.86),
|
||||||
'annually': ((17618, 0.011, 0.0), (41766, 0.022, 193.80), (65920, 0.044, 725.06), (91506, 0.066, 1787.84), (115648, 0.088, 3476.52), (590746, 0.1023, 5601.02), (708890, 0.1133, 54203.55), (1000000, 0.1243, 67589.27), (1181484, 0.1353, 103774.24), ('inf', 0.1463, 128329.03)),
|
(11360, 0.1023, 107.69),
|
||||||
|
(13632, 0.1133, 1042.30),
|
||||||
|
(19231, 0.1243, 1299.72),
|
||||||
|
(22721, 0.1353, 1995.68),
|
||||||
|
('inf', 0.1463, 2467.88),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 676, 0.0110, 0.00),
|
||||||
|
( 1608, 0.0220, 7.44),
|
||||||
|
( 2536, 0.0440, 27.94),
|
||||||
|
( 3520, 0.0660, 68.77),
|
||||||
|
( 4448, 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': (
|
||||||
|
( 734, 0.0110, 0.00),
|
||||||
|
( 1740, 0.0220, 8.07),
|
||||||
|
( 2746, 0.0440, 30.20),
|
||||||
|
( 3812, 0.0660, 74.46),
|
||||||
|
( 4818, 0.0880, 144.82),
|
||||||
|
(24614, 0.1023, 233.35),
|
||||||
|
(29538, 0.1133, 2258.48),
|
||||||
|
(41667, 0.1243, 2816.37),
|
||||||
|
(49229, 0.1353, 4324.00),
|
||||||
|
('inf', 0.1463, 5347.14),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1468, 0.0110, 0.00),
|
||||||
|
( 3480, 0.0220, 16.15),
|
||||||
|
( 5492, 0.0440, 60.41),
|
||||||
|
( 7624, 0.0660, 148.94),
|
||||||
|
( 9636, 0.0880, 289.65),
|
||||||
|
(49228, 0.1023, 466.71),
|
||||||
|
(59076, 0.1133, 4516.97),
|
||||||
|
(83334, 0.1243, 5632.75),
|
||||||
|
(98458, 0.1353, 8648.02),
|
||||||
|
('inf', 0.1463, 10694.30),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 4404, 0.0110, 0.00),
|
||||||
|
( 10442, 0.0220, 48.44),
|
||||||
|
( 16480, 0.0440, 181.28),
|
||||||
|
( 22876, 0.0660, 446.95),
|
||||||
|
( 28912, 0.0880, 869.09),
|
||||||
|
(147686, 0.1023, 1400.26),
|
||||||
|
(177222, 0.1133, 13550.84),
|
||||||
|
(250000, 0.1243, 16897.27),
|
||||||
|
(295371, 0.1353, 25943.58),
|
||||||
|
( 'inf', 0.1463, 32082.28),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 8808, 0.0110, 0.00),
|
||||||
|
( 20884, 0.0220, 96.89),
|
||||||
|
( 32960, 0.0440, 362.56),
|
||||||
|
( 45752, 0.0660, 893.90),
|
||||||
|
( 57824, 0.0880, 1738.17),
|
||||||
|
(295372, 0.1023, 2800.51),
|
||||||
|
(354444, 0.1133, 27101.67),
|
||||||
|
(500000, 0.1243, 33794.53),
|
||||||
|
(590742, 0.1353, 51887.14),
|
||||||
|
( 'inf', 0.1463, 64164.53),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 17618, 0.0110, 0.00),
|
||||||
|
( 41766, 0.0220, 193.80),
|
||||||
|
( 65920, 0.0440, 725.06),
|
||||||
|
( 91506, 0.0660, 1787.84),
|
||||||
|
( 115648, 0.0880, 3476.52),
|
||||||
|
( 590746, 0.1023, 5601.02),
|
||||||
|
( 708890, 0.1133, 54203.55),
|
||||||
|
(1000000, 0.1243, 67589.27),
|
||||||
|
(1181484, 0.1353, 103774.24),
|
||||||
|
( 'inf', 0.1463, 128329.03),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'single': {
|
'single': {
|
||||||
'weekly': ((169, 0.011, 0.0), (402, 0.022, 1.86), (634, 0.044, 6.99), (880, 0.066, 17.20), (1112, 0.088, 33.44), (5680, 0.1023, 53.86), (6816, 0.1133, 521.17), (11360, 0.1243, 649.88), (19231, 0.1353, 1214.70), ('inf', 0.1463, 2279.65)),
|
'weekly': (
|
||||||
'bi-weekly': ((338, 0.011, 0.0), (804, 0.022, 3.72), (1268, 0.044, 13.97), (1760, 0.066, 34.39), (2224, 0.088, 66.86), (11360, 0.1023, 107.69), (13632, 0.1133, 1042.30), (22720, 0.1243, 1299.72), (38462, 0.1353, 2429.36), ('inf', 0.1463, 4559.25)),
|
( 169, 0.0110, 0.00),
|
||||||
'semi-monthly': ((367, 0.011, 0.0), (870, 0.022, 4.04), (1373, 0.044, 15.11), (1906, 0.066, 37.24), (2409, 0.088, 72.42), (12307, 0.1023, 116.68), (14769, 0.1133, 1129.25), (24614, 0.1243, 1408.19), (41667, 0.1353, 2631.92),('inf', 0.1463, 4939.19)),
|
( 402, 0.0220, 1.86),
|
||||||
'monthly': ((734, 0.011, 0.0), (1740, 0.022, 8.07), (2746, 0.044, 30.20), (3812, 0.066, 74.46), (4818, 0.088, 144.82), (24614, 0.1023, 233.35), (29538, 0.1133, 2258.48), (49228, 0.1243, 2816.37), (83334, 0.1353, 5263.84), ('inf', 0.1463, 9878.38)),
|
( 634, 0.0440, 6.99),
|
||||||
'quarterly': ((2202, 0.011, 0.0), (5221, 0.022, 24.22), (8240, 0.044, 90.64), (11438, 0.066, 223.48), (14456, 0.088, 434.55), (73843, 0.1023, 700.13), (88611, 0.1133, 6775.42), (147686, 0.1243, 8448.63), (250000, 0.1353, 15791.65), ('inf', 0.1463, 29634.73)),
|
( 880, 0.0660, 17.20),
|
||||||
'semi-annual': ((4404, 0.011, 0.0), (10442, 0.022, 48.44), (16480, 0.044, 181.28), (22876, 0.066, 446.95), (28912, 0.088, 869.09), (147686, 0.1023, 1400.26), (177222, 0.1133, 13550.84), (295372, 0.1243, 16897.27), (500000, 0.1353, 31583.32), ('inf', 0.1463, 59269.49)),
|
( 1112, 0.0880, 33.44),
|
||||||
'annually': ((8809, 0.011, 0.0), (20883, 0.022, 96.90), (32960, 0.044, 362.53), (45753, 0.066, 893.92), (57824, 0.088, 1738.26), (295373, 0.1023, 2800.51), (354445, 0.1133, 27101.77), (590742, 0.1243, 33794.63), (1000000, 0.1353, 63166.35), ('inf', 0.1463, 118538.96)),
|
( 5680, 0.1023, 53.86),
|
||||||
|
( 6816, 0.1133, 521.17),
|
||||||
|
(11360, 0.1243, 649.88),
|
||||||
|
(19231, 0.1353, 1214.70),
|
||||||
|
('inf', 0.1463, 2279.65),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 338, 0.0110, 0.00),
|
||||||
|
( 804, 0.0220, 3.72),
|
||||||
|
( 1268, 0.0440, 13.97),
|
||||||
|
( 1760, 0.0660, 34.39),
|
||||||
|
( 2224, 0.0880, 66.86),
|
||||||
|
(11360, 0.1023, 107.69),
|
||||||
|
(13632, 0.1133, 1042.30),
|
||||||
|
(22720, 0.1243, 1299.72),
|
||||||
|
(38462, 0.1353, 2429.36),
|
||||||
|
('inf', 0.1463, 4559.25),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 367, 0.0110, 0.00),
|
||||||
|
( 870, 0.0220, 4.04),
|
||||||
|
( 1373, 0.0440, 15.11),
|
||||||
|
( 1906, 0.0660, 37.24),
|
||||||
|
( 2409, 0.0880, 72.42),
|
||||||
|
(12307, 0.1023, 116.68),
|
||||||
|
(14769, 0.1133, 1129.25),
|
||||||
|
(24614, 0.1243, 1408.19),
|
||||||
|
(41667, 0.1353, 2631.92),
|
||||||
|
('inf', 0.1463, 4939.19),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 734, 0.0110, 0.00),
|
||||||
|
( 1740, 0.0220, 8.07),
|
||||||
|
( 2746, 0.0440, 30.20),
|
||||||
|
( 3812, 0.0660, 74.46),
|
||||||
|
( 4818, 0.0880, 144.82),
|
||||||
|
(24614, 0.1023, 233.35),
|
||||||
|
(29538, 0.1133, 2258.48),
|
||||||
|
(49228, 0.1243, 2816.37),
|
||||||
|
(83334, 0.1353, 5263.84),
|
||||||
|
('inf', 0.1463, 9878.38),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 2202, 0.0110, 0.00),
|
||||||
|
( 5221, 0.0220, 24.22),
|
||||||
|
( 8240, 0.0440, 90.64),
|
||||||
|
( 11438, 0.0660, 223.48),
|
||||||
|
( 14456, 0.0880, 434.55),
|
||||||
|
( 73843, 0.1023, 700.13),
|
||||||
|
( 88611, 0.1133, 6775.42),
|
||||||
|
(147686, 0.1243, 8448.63),
|
||||||
|
(250000, 0.1353, 15791.65),
|
||||||
|
( 'inf', 0.1463, 29634.73),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 4404, 0.0110, 0.00),
|
||||||
|
( 10442, 0.0220, 48.44),
|
||||||
|
( 16480, 0.0440, 181.28),
|
||||||
|
( 22876, 0.0660, 446.95),
|
||||||
|
( 28912, 0.0880, 869.09),
|
||||||
|
(147686, 0.1023, 1400.26),
|
||||||
|
(177222, 0.1133, 13550.84),
|
||||||
|
(295372, 0.1243, 16897.27),
|
||||||
|
(500000, 0.1353, 31583.32),
|
||||||
|
( 'inf', 0.1463, 59269.49),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 8809, 0.0110, 0.00),
|
||||||
|
( 20883, 0.0220, 96.90),
|
||||||
|
( 32960, 0.0440, 362.53),
|
||||||
|
( 45753, 0.0660, 893.92),
|
||||||
|
( 57824, 0.0880, 1738.26),
|
||||||
|
( 295373, 0.1023, 2800.51),
|
||||||
|
( 354445, 0.1133, 27101.77),
|
||||||
|
( 590742, 0.1243, 33794.63),
|
||||||
|
(1000000, 0.1353, 63166.35),
|
||||||
|
( 'inf', 0.1463, 118538.96),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
@@ -150,6 +612,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</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.payroll.rate">
|
<record id="rule_parameter_us_ca_sit_income_exemption_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US CA California Low Income Exemption Rate</field>
|
<field name="name">US CA California Low Income Exemption Rate</field>
|
||||||
<field name="code">us_ca_sit_income_exemption_rate</field>
|
<field name="code">us_ca_sit_income_exemption_rate</field>
|
||||||
@@ -181,6 +645,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://www.edd.ca.gov/pdf_pub_ctr/20methb.pdf -->
|
||||||
|
<!-- Table 2. Estimated Deduction table -->
|
||||||
<record id="rule_parameter_us_ca_sit_estimated_deduction_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_ca_sit_estimated_deduction_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US CA California Estimated Deduction Rate</field>
|
<field name="name">US CA California Estimated Deduction Rate</field>
|
||||||
<field name="code">us_ca_sit_estimated_deduction_rate</field>
|
<field name="code">us_ca_sit_estimated_deduction_rate</field>
|
||||||
@@ -212,6 +678,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</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.payroll.rate">
|
<record id="rule_parameter_us_ca_sit_standard_deduction_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US CA California Standard Deduction Rate</field>
|
<field name="name">US CA California Standard Deduction Rate</field>
|
||||||
<field name="code">us_ca_sit_standard_deduction_rate</field>
|
<field name="code">us_ca_sit_standard_deduction_rate</field>
|
||||||
@@ -243,6 +711,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</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.payroll.rate">
|
<record id="rule_parameter_us_ca_sit_exemption_allowance_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US CA California Exemption Allowance Rate</field>
|
<field name="name">US CA California Exemption Allowance Rate</field>
|
||||||
<field name="code">us_ca_sit_exemption_allowance_rate</field>
|
<field name="code">us_ca_sit_exemption_allowance_rate</field>
|
||||||
|
|||||||
@@ -85,6 +85,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://portal.ct.gov/-/media/DRS/Forms/2020/WTH/TPG-211_0320.pdf -->
|
||||||
|
<!-- Table B Initial Tax Calculation -->
|
||||||
<record id="rule_parameter_us_ct_sit_initial_tax_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_ct_sit_initial_tax_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US CT Connecticut SIT Initial Tax Rate</field>
|
<field name="name">US CT Connecticut SIT Initial Tax Rate</field>
|
||||||
<field name="code">us_ct_sit_initial_tax_rate</field>
|
<field name="code">us_ct_sit_initial_tax_rate</field>
|
||||||
@@ -213,6 +215,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://portal.ct.gov/-/media/DRS/Forms/2020/WTH/TPG-211_0320.pdf -->
|
||||||
|
<!-- Table C 3% -->
|
||||||
<record id="rule_parameter_us_ct_sit_tax_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_ct_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US CT Connecticut Tax Rate</field>
|
<field name="name">US CT Connecticut Tax Rate</field>
|
||||||
<field name="code">us_ct_sit_tax_rate</field>
|
<field name="code">us_ct_sit_tax_rate</field>
|
||||||
@@ -416,6 +420,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://portal.ct.gov/-/media/DRS/Forms/2020/WTH/TPG-211_0320.pdf -->
|
||||||
|
<!-- Table E Personal Tax Credits -->
|
||||||
<record id="rule_parameter_us_ct_sit_decimal_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_ct_sit_decimal_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US CT Connecticut Decimal Rate</field>
|
<field name="name">US CT Connecticut Decimal Rate</field>
|
||||||
<field name="code">us_ct_sit_decimal_rate</field>
|
<field name="code">us_ct_sit_decimal_rate</field>
|
||||||
@@ -590,7 +596,7 @@
|
|||||||
(530000, 3000),
|
(530000, 3000),
|
||||||
(535000, 3050),
|
(535000, 3050),
|
||||||
(540000, 3100),
|
(540000, 3100),
|
||||||
( 'inf', 200),
|
( 'inf', 3150),
|
||||||
],
|
],
|
||||||
'b': [
|
'b': [
|
||||||
(320000, 0),
|
(320000, 0),
|
||||||
@@ -716,7 +722,7 @@
|
|||||||
(530000, 3000),
|
(530000, 3000),
|
||||||
(535000, 3050),
|
(535000, 3050),
|
||||||
(540000, 3100),
|
(540000, 3100),
|
||||||
( 'inf', 200),
|
( 'inf', 3150),
|
||||||
],
|
],
|
||||||
'f': [
|
'f': [
|
||||||
(200000, 0),
|
(200000, 0),
|
||||||
@@ -758,11 +764,13 @@
|
|||||||
(530000, 3000),
|
(530000, 3000),
|
||||||
(535000, 3050),
|
(535000, 3050),
|
||||||
(540000, 3100),
|
(540000, 3100),
|
||||||
( 'inf', 200),
|
( 'inf', 3150),
|
||||||
],
|
],
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://portal.ct.gov/-/media/DRS/Forms/2020/WTH/TPG-211_0320.pdf -->
|
||||||
|
<!-- Table D Tax recapture -->
|
||||||
<record id="rule_parameter_us_ct_sit_recapture_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_ct_sit_recapture_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US CT Connecticut Recapture Rate</field>
|
<field name="name">US CT Connecticut Recapture Rate</field>
|
||||||
<field name="code">us_ct_sit_recapture_rate</field>
|
<field name="code">us_ct_sit_recapture_rate</field>
|
||||||
@@ -807,7 +815,7 @@
|
|||||||
(530000, 3000),
|
(530000, 3000),
|
||||||
(535000, 3050),
|
(535000, 3050),
|
||||||
(540000, 3100),
|
(540000, 3100),
|
||||||
( 'inf', 200),
|
( 'inf', 3150),
|
||||||
],
|
],
|
||||||
'b': [
|
'b': [
|
||||||
(320000, 0),
|
(320000, 0),
|
||||||
@@ -933,7 +941,7 @@
|
|||||||
(530000, 3000),
|
(530000, 3000),
|
||||||
(535000, 3050),
|
(535000, 3050),
|
||||||
(540000, 3100),
|
(540000, 3100),
|
||||||
( 'inf', 200),
|
( 'inf', 3150),
|
||||||
],
|
],
|
||||||
'f': [
|
'f': [
|
||||||
(200000, 0),
|
(200000, 0),
|
||||||
@@ -975,7 +983,7 @@
|
|||||||
(530000, 3000),
|
(530000, 3000),
|
||||||
(535000, 3050),
|
(535000, 3050),
|
||||||
(540000, 3100),
|
(540000, 3100),
|
||||||
( 'inf', 200),
|
( 'inf', 3150),
|
||||||
],
|
],
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
@@ -1072,6 +1080,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://portal.ct.gov/-/media/DRS/Forms/2020/WTH/TPG-211_0320.pdf -->
|
||||||
|
<!-- Table A Personal Exemptions -->
|
||||||
<record id="rule_parameter_us_ct_sit_personal_exemption_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_ct_sit_personal_exemption_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US CT Connecticut Personal Exemption Rate</field>
|
<field name="name">US CT Connecticut Personal Exemption Rate</field>
|
||||||
<field name="code">us_ct_sit_personal_exemption_rate</field>
|
<field name="code">us_ct_sit_personal_exemption_rate</field>
|
||||||
@@ -1166,6 +1176,7 @@
|
|||||||
<!-- Partners and Contribution Registers -->
|
<!-- Partners and Contribution Registers -->
|
||||||
<record id="res_partner_us_ct_dor" model="res.partner">
|
<record id="res_partner_us_ct_dor" model="res.partner">
|
||||||
<field name="name">US Connecticut - Department of Labor (CDOL) - Unemployment Tax</field>
|
<field name="name">US Connecticut - Department of Labor (CDOL) - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="contrib_register_us_ct_dor" model="hr.contribution.register">
|
<record id="contrib_register_us_ct_dor" model="hr.contribution.register">
|
||||||
<field name="name">US Connecticut - Department of Labor (CDOL) - Unemployment Tax</field>
|
<field name="name">US Connecticut - Department of Labor (CDOL) - Unemployment Tax</field>
|
||||||
@@ -1174,6 +1185,7 @@
|
|||||||
|
|
||||||
<record id="res_partner_us_ct_dor_sit" model="res.partner">
|
<record id="res_partner_us_ct_dor_sit" model="res.partner">
|
||||||
<field name="name">US Connecticut - Department of Revenue Services (CDRS) - Income Tax</field>
|
<field name="name">US Connecticut - Department of Revenue Services (CDRS) - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="contrib_register_us_ct_dor_sit" model="hr.contribution.register">
|
<record id="contrib_register_us_ct_dor_sit" model="hr.contribution.register">
|
||||||
<field name="name">US Connecticut - Department of Revenue Services (CDRS) - Unemployment Tax</field>
|
<field name="name">US Connecticut - Department of Revenue Services (CDRS) - Unemployment Tax</field>
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
<!-- Partners and Contribution Registers -->
|
<!-- Partners and Contribution Registers -->
|
||||||
<record id="res_partner_us_fl_dor" model="res.partner">
|
<record id="res_partner_us_fl_dor" model="res.partner">
|
||||||
<field name="name">US Florida - Department of Revenue</field>
|
<field name="name">US Florida - Department of Revenue</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="contrib_register_us_fl_dor" model="hr.contribution.register">
|
<record id="contrib_register_us_fl_dor" model="hr.contribution.register">
|
||||||
|
|||||||
@@ -38,53 +38,597 @@
|
|||||||
<field name="code">us_ga_sit_rate</field>
|
<field name="code">us_ga_sit_rate</field>
|
||||||
<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="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.payroll.rate">
|
||||||
|
<field name="name">US GA Georgia SIT Rate Table</field>
|
||||||
|
<field name="code">us_ga_sit_rate</field>
|
||||||
|
<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="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
@@ -140,6 +684,60 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<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.payroll.rate">
|
||||||
|
<field name="name">US GA Georgia SIT Personal Allowance</field>
|
||||||
|
<field name="code">us_ga_sit_personal_allowance</field>
|
||||||
|
<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="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
@@ -157,6 +755,22 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<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.payroll.rate">
|
||||||
|
<field name="name">US GA Georgia SIT Dependent Allowance Rate</field>
|
||||||
|
<field name="code">us_ga_sit_dependent_allowance_rate</field>
|
||||||
|
<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="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
@@ -212,11 +826,66 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<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.payroll.rate">
|
||||||
|
<field name="name">US GA Georgia SIT Deduction</field>
|
||||||
|
<field name="code">us_ga_sit_deduction</field>
|
||||||
|
<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="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<!-- Partners and Contribution Registers -->
|
<!-- Partners and Contribution Registers -->
|
||||||
<record id="res_partner_us_ga_dor" model="res.partner">
|
<record id="res_partner_us_ga_dor" model="res.partner">
|
||||||
<field name="name">US Georgia - Department of Taxation - Unemployment Tax</field>
|
<field name="name">US Georgia - Department of Taxation - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="contrib_register_us_ga_dor" model="hr.contribution.register">
|
<record id="contrib_register_us_ga_dor" model="hr.contribution.register">
|
||||||
@@ -226,6 +895,7 @@
|
|||||||
|
|
||||||
<record id="res_partner_us_ga_dor_sit" model="res.partner">
|
<record id="res_partner_us_ga_dor_sit" model="res.partner">
|
||||||
<field name="name">US Georgia - Department of Taxation - Income Tax</field>
|
<field name="name">US Georgia - Department of Taxation - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="contrib_register_us_ga_dor_sit" model="hr.contribution.register">
|
<record id="contrib_register_us_ga_dor_sit" model="hr.contribution.register">
|
||||||
|
|||||||
@@ -37,19 +37,75 @@
|
|||||||
<field name="name">US HI Hawaii SIT Tax Rate</field>
|
<field name="name">US HI Hawaii SIT Tax Rate</field>
|
||||||
<field name="code">us_hi_sit_tax_rate</field>
|
<field name="code">us_hi_sit_tax_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'single': ((2400, 0.00, 1.40), (4800, 34.00, 3.20), (9600, 110.00, 5.50), (14400, 374.00, 6.40), (19200, 682.00, 6.80), (24000, 1008.00, 7.20), (36000, 1354.00, 7.60), ('inf', 2266.00, 7.90)),
|
'single': (
|
||||||
'married': ((4800, 0.00, 1.40), (9600, 67.00, 3.20), (19200, 221.00, 5.50), (28800, 749.00, 6.40), (38400, 1363.00, 6.80), (48000, 2016.00, 7.20), (72000, 2707.00, 7.60), ('inf', 4531.00, 7.90)),
|
( 2400, 0.00, 1.40),
|
||||||
'head_of_household': ((2400, 0.00, 1.40), (4800, 34.00, 3.20), (9600, 110.00, 5.50), (14400, 374.00, 6.40), (19200, 682.00, 6.80), (24000, 1008.00, 7.20), (36000, 1354.00, 7.60), ('inf', 2266.00, 7.90)),
|
( 4800, 34.00, 3.20),
|
||||||
|
( 9600, 110.00, 5.50),
|
||||||
|
(14400, 374.00, 6.40),
|
||||||
|
(19200, 682.00, 6.80),
|
||||||
|
(24000, 1008.00, 7.20),
|
||||||
|
(36000, 1354.00, 7.60),
|
||||||
|
('inf', 2266.00, 7.90),
|
||||||
|
),
|
||||||
|
'married': (
|
||||||
|
( 4800, 0.00, 1.40),
|
||||||
|
( 9600, 67.00, 3.20),
|
||||||
|
(19200, 221.00, 5.50),
|
||||||
|
(28800, 749.00, 6.40),
|
||||||
|
(38400, 1363.00, 6.80),
|
||||||
|
(48000, 2016.00, 7.20),
|
||||||
|
(72000, 2707.00, 7.60),
|
||||||
|
('inf', 4531.00, 7.90),
|
||||||
|
),
|
||||||
|
'head_of_household': (
|
||||||
|
( 2400, 0.00, 1.40),
|
||||||
|
( 4800, 34.00, 3.20),
|
||||||
|
( 9600, 110.00, 5.50),
|
||||||
|
(14400, 374.00, 6.40),
|
||||||
|
(19200, 682.00, 6.80),
|
||||||
|
(24000, 1008.00, 7.20),
|
||||||
|
(36000, 1354.00, 7.60),
|
||||||
|
('inf', 2266.00, 7.90),
|
||||||
|
),
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://files.hawaii.gov/tax/forms/2019/19table.pdf -->
|
||||||
|
<!-- Table from Schedule I, II and III -->
|
||||||
<record id="rule_parameter_us_hi_sit_tax_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_hi_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US HI Hawaii SIT Tax Rate</field>
|
<field name="name">US HI Hawaii SIT Tax Rate</field>
|
||||||
<field name="code">us_hi_sit_tax_rate</field>
|
<field name="code">us_hi_sit_tax_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'single': ((2400, 0.00, 1.40), (4800, 34.00, 3.20), (9600, 110.00, 5.50), (14400, 374.00, 6.40), (19200, 682.00, 6.80), (24000, 1008.00, 7.20), (36000, 1354.00, 7.60), ('inf', 2266.00, 7.90)),
|
'single': (
|
||||||
'married': ((4800, 0.00, 1.40), (9600, 67.00, 3.20), (19200, 221.00, 5.50), (28800, 749.00, 6.40), (38400, 1363.00, 6.80), (48000, 2016.00, 7.20), (72000, 2707.00, 7.60), ('inf', 4531.00, 7.90)),
|
( 2400, 0.00, 1.40),
|
||||||
'head_of_household': ((2400, 0.00, 1.40), (4800, 34.00, 3.20), (9600, 110.00, 5.50), (14400, 374.00, 6.40), (19200, 682.00, 6.80), (24000, 1008.00, 7.20), (36000, 1354.00, 7.60), ('inf', 2266.00, 7.90)),
|
( 4800, 34.00, 3.20),
|
||||||
|
( 9600, 110.00, 5.50),
|
||||||
|
(14400, 374.00, 6.40),
|
||||||
|
(19200, 682.00, 6.80),
|
||||||
|
(24000, 1008.00, 7.20),
|
||||||
|
(36000, 1354.00, 7.60),
|
||||||
|
('inf', 2266.00, 7.90),
|
||||||
|
),
|
||||||
|
'married': (
|
||||||
|
( 4800, 0.00, 1.40),
|
||||||
|
( 9600, 67.00, 3.20),
|
||||||
|
(19200, 221.00, 5.50),
|
||||||
|
(28800, 749.00, 6.40),
|
||||||
|
(38400, 1363.00, 6.80),
|
||||||
|
(48000, 2016.00, 7.20),
|
||||||
|
(72000, 2707.00, 7.60),
|
||||||
|
('inf', 4531.00, 7.90),
|
||||||
|
),
|
||||||
|
'head_of_household': (
|
||||||
|
( 2400, 0.00, 1.40),
|
||||||
|
( 4800, 34.00, 3.20),
|
||||||
|
( 9600, 110.00, 5.50),
|
||||||
|
(14400, 374.00, 6.40),
|
||||||
|
(19200, 682.00, 6.80),
|
||||||
|
(24000, 1008.00, 7.20),
|
||||||
|
(36000, 1354.00, 7.60),
|
||||||
|
('inf', 2266.00, 7.90),
|
||||||
|
),
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -37,25 +37,148 @@
|
|||||||
<field name="name">US IA Iowa SIT Tax Rate</field>
|
<field name="name">US IA Iowa SIT Tax Rate</field>
|
||||||
<field name="code">us_ia_sit_tax_rate</field>
|
<field name="code">us_ia_sit_tax_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'daily': [(5.13, 0.0033, 0.0), (10.25, 0.0067, 0.02), (20.50, 0.0225, 0.05), (46.13, 0.0414, 0.28), (76.89, 0.0563, 1.34), (102.52, 0.0596, 3.07), (153.78, 0.0625, 4.60), (230.68, 0.0744, 7.80), ('inf', 0.0853, 13.52)],
|
'daily': (
|
||||||
'weekly': [(25.63, 0.0033, 0.0), (51.27, 0.0067, 0.08), (102.52, 0.0225, 0.025), (230.67, 0.0414, 1.40), (384.46, 0.0563, 6.71), (512.62, 0.0596, 15.37), (768.92, 0.0625, 23.01), (1153.38, 0.0744, 39.03), ('inf', 0.0853, 67.63)],
|
( 5.13, 0.0033, 0.00),
|
||||||
'bi-weekly': [(51.27, 0.0033, 0.00), (102.54, 0.0067, 0.17), (205.04, 0.00225, 0.51), (461.35, 0.0414, 2.82), (768.92, 0.0563, 13.43), (1025.23, 0.0596, 30.75), (1537.85, 0.0625, 46.03), (2306.77, 0.0744, 78.07), ('inf', 0.0853, 135.28)],
|
( 10.25, 0.0067, 0.02),
|
||||||
'semi-monthly': [(55.54, 0.0033, 0.00), (111.08, 0.0067, 0.18), (222.13, 0.0225, 0.55), (499.79, 0.0414, 3.05), (833.00, 0.0563, 14.59), (1110.67, 0.0596, 33.31), (1666.00, 0.0625, 49.86), (2499.00, 0.0744, 84.57), ('inf', 0.0853, 146.55)],
|
( 20.50, 0.0225, 0.05),
|
||||||
'monthly': [(111.08, 0.0033, 0.00), (222.17, 0.0067, 0.37), (444.25, 0.0225, 1.11), (999.58, 0.0414, 6.11), (1666.00, 0.0563, 29.10), (2221.33, 0.0596, 62.66), (3332.00, 0.0625, 99.72), (4998.00, 0.0744, 169.14), ('inf', 0.0853, 293.09)],
|
( 46.13, 0.0414, 0.28),
|
||||||
'annual': [(1333.00, 0.0033, 0.00), (2666.00, 0.0067, 4.40), (5331.00, 0.0225, 13.33), (11995.00, 0.0414, 73.29), (19992.00, 0.0563, 349.19), (26656.00, 0.0596, 799.41), (39984.00, 0.0625, 1196.58), (59976.00, 0.0744, 2029.58), ('inf', 0.0853, 3516.98)],
|
( 76.89, 0.0563, 1.34),
|
||||||
|
(102.52, 0.0596, 3.07),
|
||||||
|
(153.78, 0.0625, 4.60),
|
||||||
|
(230.68, 0.0744, 7.80),
|
||||||
|
( 'inf', 0.0853, 13.52),
|
||||||
|
),
|
||||||
|
'weekly': (
|
||||||
|
( 25.63, 0.0033, 0.00),
|
||||||
|
( 51.27, 0.0067, 0.08),
|
||||||
|
( 102.52, 0.0225, 0.25),
|
||||||
|
( 230.67, 0.0414, 1.40),
|
||||||
|
( 384.46, 0.0563, 6.71),
|
||||||
|
( 512.62, 0.0596, 15.37),
|
||||||
|
( 768.92, 0.0625, 23.01),
|
||||||
|
(1153.38, 0.0744, 39.03),
|
||||||
|
( 'inf', 0.0853, 67.63),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 51.27, 0.0033, 0.00),
|
||||||
|
( 102.54, 0.0067, 0.17),
|
||||||
|
( 205.04, 0.0225, 0.51),
|
||||||
|
( 461.35, 0.0414, 2.82),
|
||||||
|
( 768.92, 0.0563, 13.43),
|
||||||
|
(1025.23, 0.0596, 30.75),
|
||||||
|
(1537.85, 0.0625, 46.03),
|
||||||
|
(2306.77, 0.0744, 78.07),
|
||||||
|
( 'inf', 0.0853, 135.28),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 55.54, 0.0033, 0.00),
|
||||||
|
( 111.08, 0.0067, 0.18),
|
||||||
|
( 222.13, 0.0225, 0.55),
|
||||||
|
( 499.79, 0.0414, 3.05),
|
||||||
|
( 833.00, 0.0563, 14.59),
|
||||||
|
(1110.67, 0.0596, 33.31),
|
||||||
|
(1666.00, 0.0625, 49.86),
|
||||||
|
(2499.00, 0.0744, 84.57),
|
||||||
|
( 'inf', 0.0853, 146.55),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 111.08, 0.0033, 0.00),
|
||||||
|
( 222.17, 0.0067, 0.37),
|
||||||
|
( 444.25, 0.0225, 1.11),
|
||||||
|
( 999.58, 0.0414, 6.11),
|
||||||
|
(1666.00, 0.0563, 29.10),
|
||||||
|
(2221.33, 0.0596, 62.66),
|
||||||
|
(3332.00, 0.0625, 99.72),
|
||||||
|
(4998.00, 0.0744, 169.14),
|
||||||
|
( 'inf', 0.0853, 293.09),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 1333.00, 0.0033, 0.00),
|
||||||
|
( 2666.00, 0.0067, 4.40),
|
||||||
|
( 5331.00, 0.0225, 13.33),
|
||||||
|
(11995.00, 0.0414, 73.29),
|
||||||
|
(19992.00, 0.0563, 349.19),
|
||||||
|
(26656.00, 0.0596, 799.41),
|
||||||
|
(39984.00, 0.0625, 1196.58),
|
||||||
|
(59976.00, 0.0744, 2029.58),
|
||||||
|
( 'inf', 0.0853, 3516.98),
|
||||||
|
),
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://tax.iowa.gov/sites/default/files/idr/documents/WH/IA%20Withholding%20Formula%20and%20Instructions%20TY2020.pdf -->
|
||||||
|
<!-- Table from page 2.-->
|
||||||
|
|
||||||
<record id="rule_parameter_us_ia_sit_tax_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_ia_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US IA Iowa SIT Tax Rate</field>
|
<field name="name">US IA Iowa SIT Tax Rate</field>
|
||||||
<field name="code">us_ia_sit_tax_rate</field>
|
<field name="code">us_ia_sit_tax_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'daily': [(5.69, 0.0033, 0.0), (11.38, 0.0067, 0.02), (22.76, 0.0225, 0.06), (51.22, 0.0414, 0.32), (85.36, 0.0563, 1.50), (113.81, 0.0596, 3.42), (170.71, 0.0625, 5.12), (256.07, 0.0744, 8.68), ('inf', 0.0853, 15.03)],
|
'daily': (
|
||||||
'weekly': [(28.46, 0.0033, 0.0), (56.90, 0.0067, 0.09), (113.81, 0.0225, 0.028), (256.08, 0.0414, 1.56), (426.79, 0.0563, 7.45), (569.04, 0.0596, 17.06), (853.56, 0.0625, 25.54), (1280.35, 0.0744, 43.32), ('inf', 0.0853, 75.07)],
|
( 5.69, 0.0033, 0.00),
|
||||||
'bi-weekly': [(56.92, 0.0033, 0.00), (113.81, 0.0067, 0.19), (227.62, 0.00225, 0.57), (512.15, 0.0414, 3.13), (853.58, 0.0563, 14.91), (1138.08, 0.0596, 34.13), (1707.12, 0.0625, 51.09), (2560.69, 0.0744, 86.66), ('inf', 0.0853, 150.17)],
|
( 11.38, 0.0067, 0.02),
|
||||||
'semi-monthly': [(61.67, 0.0033, 0.00), (123.29, 0.0067, 0.20), (246.58, 0.0225, 0.61), (554.83, 0.0414, 3.38), (924.71, 0.0563, 16.14), (1232.92, 0.0596, 36.96), (1849.38, 0.0625, 55.33), (2774.08, 0.0744, 93.86), ('inf', 0.0853, 162.66)],
|
( 22.76, 0.0225, 0.06),
|
||||||
'monthly': [(123.33, 0.0033, 0.00), (246.58, 0.0067, 0.41), (493.17, 0.0225, 1.24), (1109.67, 0.0414, 6.79), (1849.42, 0.0563, 32.31), (2465.83, 0.0596, 73.96), (3698.75, 0.0625, 110.70), (5548.17, 0.0744, 187.76), ('inf', 0.0853, 325.36)],
|
( 51.22, 0.0414, 0.32),
|
||||||
'annual': [(1480.00, 0.0033, 0.00), (2959.00, 0.0067, 4.88), (5918.00, 0.0225, 14.79), (13316.00, 0.0414, 81.37), (22193.00, 0.0563, 387.65), (29590.00, 0.0596, 887.43), (44385.00, 0.0625, 1328.29), (66578.00, 0.0744, 2252.98), ('inf', 0.0853, 3904.14)],
|
( 85.36, 0.0563, 1.50),
|
||||||
|
(113.81, 0.0596, 3.42),
|
||||||
|
(170.71, 0.0625, 5.12),
|
||||||
|
(256.07, 0.0744, 8.68),
|
||||||
|
( 'inf', 0.0853, 15.03),
|
||||||
|
),
|
||||||
|
'weekly': (
|
||||||
|
( 28.46, 0.0033, 0.00),
|
||||||
|
( 56.90, 0.0067, 0.09),
|
||||||
|
( 113.81, 0.0225, 0.28),
|
||||||
|
( 256.08, 0.0414, 1.56),
|
||||||
|
( 426.79, 0.0563, 7.45),
|
||||||
|
( 569.04, 0.0596, 17.06),
|
||||||
|
( 853.56, 0.0625, 25.54),
|
||||||
|
(1280.35, 0.0744, 43.32),
|
||||||
|
( 'inf', 0.0853, 75.07),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 56.92, 0.0033, 0.00),
|
||||||
|
( 113.81, 0.0067, 0.19),
|
||||||
|
( 227.62, 0.0225, 0.57),
|
||||||
|
( 512.15, 0.0414, 3.13),
|
||||||
|
( 853.58, 0.0563, 14.91),
|
||||||
|
(1138.08, 0.0596, 34.13),
|
||||||
|
(1707.12, 0.0625, 51.09),
|
||||||
|
(2560.69, 0.0744, 86.66),
|
||||||
|
( 'inf', 0.0853, 150.17),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 61.67, 0.0033, 0.00),
|
||||||
|
( 23.29, 0.0067, 0.20),
|
||||||
|
( 246.58, 0.0225, 0.61),
|
||||||
|
( 554.83, 0.0414, 3.38),
|
||||||
|
( 924.71, 0.0563, 16.14),
|
||||||
|
(1232.92, 0.0596, 36.96),
|
||||||
|
(1849.38, 0.0625, 55.33),
|
||||||
|
(2774.08, 0.0744, 93.86),
|
||||||
|
( 'inf', 0.0853, 162.66),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 123.33, 0.0033, 0.00),
|
||||||
|
( 246.58, 0.0067, 0.41),
|
||||||
|
( 493.17, 0.0225, 1.24),
|
||||||
|
(1109.67, 0.0414, 6.79),
|
||||||
|
(1849.42, 0.0563, 32.31),
|
||||||
|
(2465.83, 0.0596, 73.96),
|
||||||
|
(3698.75, 0.0625, 110.70),
|
||||||
|
(5548.17, 0.0744, 187.76),
|
||||||
|
( 'inf', 0.0853, 325.36),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 1480.00, 0.0033, 0.00),
|
||||||
|
( 2959.00, 0.0067, 4.88),
|
||||||
|
( 5918.00, 0.0225, 14.79),
|
||||||
|
(13316.00, 0.0414, 81.37),
|
||||||
|
(22193.00, 0.0563, 387.65),
|
||||||
|
(29590.00, 0.0596, 887.43),
|
||||||
|
(44385.00, 0.0625, 1328.29),
|
||||||
|
(66578.00, 0.0744, 2252.98),
|
||||||
|
( 'inf', 0.0853, 3904.14),
|
||||||
|
),
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
@@ -75,6 +198,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://tax.iowa.gov/sites/default/files/idr/documents/WH/IA%20Withholding%20Formula%20and%20Instructions%20TY2020.pdf-->
|
||||||
|
<!-- Step 2 -->
|
||||||
<record id="rule_parameter_us_ia_sit_standard_deduction_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_ia_sit_standard_deduction_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US IA Iowa Standard Deduction Rate</field>
|
<field name="name">US IA Iowa Standard Deduction Rate</field>
|
||||||
<field name="code">us_ia_sit_standard_deduction_rate</field>
|
<field name="code">us_ia_sit_standard_deduction_rate</field>
|
||||||
@@ -104,6 +229,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://tax.iowa.gov/sites/default/files/idr/documents/WH/IA%20Withholding%20Formula%20and%20Instructions%20TY2020.pdf -->
|
||||||
|
<!-- Step 4 -->
|
||||||
<record id="rule_parameter_us_ia_sit_deduction_allowance_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_ia_sit_deduction_allowance_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US IA Iowa Deduction Allowance Rate</field>
|
<field name="name">US IA Iowa Deduction Allowance Rate</field>
|
||||||
<field name="code">us_ia_sit_deduction_allowance_rate</field>
|
<field name="code">us_ia_sit_deduction_allowance_rate</field>
|
||||||
@@ -122,6 +249,7 @@
|
|||||||
<!-- Partners and Contribution Registers -->
|
<!-- Partners and Contribution Registers -->
|
||||||
<record id="res_partner_us_ia_dor" model="res.partner">
|
<record id="res_partner_us_ia_dor" model="res.partner">
|
||||||
<field name="name">US Iowa - Workforce Development - Unemployment Tax</field>
|
<field name="name">US Iowa - Workforce Development - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="contrib_register_us_ia_dor" model="hr.contribution.register">
|
<record id="contrib_register_us_ia_dor" model="hr.contribution.register">
|
||||||
<field name="name">US Iowa - Workforce Development - Unemployment Tax</field>
|
<field name="name">US Iowa - Workforce Development - Unemployment Tax</field>
|
||||||
@@ -130,6 +258,7 @@
|
|||||||
|
|
||||||
<record id="res_partner_us_ia_dor_sit" model="res.partner">
|
<record id="res_partner_us_ia_dor_sit" model="res.partner">
|
||||||
<field name="name">US Iowa - Department of Revenue - Income Tax</field>
|
<field name="name">US Iowa - Department of Revenue - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="contrib_register_us_ia_dor_sit" model="hr.contribution.register">
|
<record id="contrib_register_us_ia_dor_sit" model="hr.contribution.register">
|
||||||
<field name="name">US Iowa - Department of Revenue - Income Tax</field>
|
<field name="name">US Iowa - Department of Revenue - Income Tax</field>
|
||||||
|
|||||||
@@ -38,53 +38,325 @@
|
|||||||
<field name="code">us_id_sit_tax_rate</field>
|
<field name="code">us_id_sit_tax_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'single': {
|
'single': {
|
||||||
'weekly': ((235, 0.00, 0.00), (264, 0.00, 1.125), (294, 0.00, 3.125), (324, 1.00, 3.625), (353, 2.00, 4.625), (383, 4.00, 5.625), (457, 5.00, 6.625), ('inf', 10.00, 6.925)),
|
'weekly': (
|
||||||
'bi-weekly': ((469, 0.00, 0.00), (529, 0.00, 1.125), (588, 1.00, 3.125), (647, 3.00, 3.625), (706, 5.00, 4.625), (766, 7.00, 5.625), (914, 11.00, 6.625), ('inf', 21.00, 6.925)),
|
( 235, 0.00, 0.000),
|
||||||
'semi-monthly': ((508, 0.00, 0.00), (573, 0.00, 1.125), (637, 1.00, 3.125), (701, 3.00, 3.625), (765, 5.00, 4.625), (829, 8.00, 5.625), (990, 12.00, 6.625), ('inf', 22.00, 6.925)),
|
( 264, 0.00, 1.125),
|
||||||
'monthly': ((1017, 0.00, 0.00), (1145, 0.00, 1.125), (1273, 1.00, 3.125), (1402, 5.00, 3.625), (1530, 10.00, 4.625), (1659, 16.00, 5.625), (1980, 23.00, 6.625), ('inf', 45.00, 6.925)),
|
( 294, 0.00, 3.125),
|
||||||
'annually': ((12200, 0.00, 0.00), (13741, 0.00, 1.125), (15281, 17.00, 3.125), (16822, 65.00, 3.625), (18362, 121.00, 4.625), (19903, 192.00, 5.625), (23754, 279.00, 6.625), ('inf', 534.00, 6.925)),
|
( 324, 1.00, 3.625),
|
||||||
|
( 353, 2.00, 4.625),
|
||||||
|
( 383, 4.00, 5.625),
|
||||||
|
( 457, 5.00, 6.625),
|
||||||
|
('inf', 10.00, 6.925),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 469, 0.00, 0.000),
|
||||||
|
( 529, 0.00, 1.125),
|
||||||
|
( 588, 1.00, 3.125),
|
||||||
|
( 647, 3.00, 3.625),
|
||||||
|
( 706, 5.00, 4.625),
|
||||||
|
( 766, 7.00, 5.625),
|
||||||
|
( 914, 11.00, 6.625),
|
||||||
|
('inf', 21.00, 6.925),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 508, 0.00, 0.000),
|
||||||
|
( 573, 0.00, 1.125),
|
||||||
|
( 637, 1.00, 3.125),
|
||||||
|
( 701, 3.00, 3.625),
|
||||||
|
( 765, 5.00, 4.625),
|
||||||
|
( 829, 8.00, 5.625),
|
||||||
|
( 990, 12.00, 6.625),
|
||||||
|
('inf', 22.00, 6.925),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1017, 0.00, 0.000),
|
||||||
|
( 1145, 0.00, 1.125),
|
||||||
|
( 1273, 1.00, 3.125),
|
||||||
|
( 1402, 5.00, 3.625),
|
||||||
|
( 1530, 10.00, 4.625),
|
||||||
|
( 1659, 16.00, 5.625),
|
||||||
|
( 1980, 23.00, 6.625),
|
||||||
|
('inf', 45.00, 6.925),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
(12200, 0.00, 0.000),
|
||||||
|
(13741, 0.00, 1.125),
|
||||||
|
(15281, 17.00, 3.125),
|
||||||
|
(16822, 65.00, 3.625),
|
||||||
|
(18362, 121.00, 4.625),
|
||||||
|
(19903, 192.00, 5.625),
|
||||||
|
(23754, 279.00, 6.625),
|
||||||
|
('inf', 534.00, 6.925),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'married': {
|
'married': {
|
||||||
'weekly': ((469, 0.00, 0.00), (529, 0.00, 1.125), (588, 0.00, 3.125), (647, 1.00, 3.625), (706, 2.00, 4.625), (766, 4.00, 5.625), (914, 5.00, 6.625), ('inf', 10.00, 6.925)),
|
'weekly': (
|
||||||
'bi-weekly': ((938, 0.00, 0.00), (1057, 0.00, 1.125), (1175, 1.00, 3.125), (1294, 5.00, 3.625), (1412, 9.00, 4.625), (1531, 15.00, 5.625), (1827, 21.00, 6.625), ('inf', 41.00, 6.925)),
|
( 469, 0.00, 0.000),
|
||||||
'semi-monthly': ((1017, 0.00, 0.00), (1145, 0.00, 1.125), (1273, 1.00, 3.125), (1402, 5.00, 3.625), (1530, 10.00, 4.625), (1659, 16.00, 5.625), (1980, 23.00, 6.625), ('inf', 45.00, 6.925)),
|
( 529, 0.00, 1.125),
|
||||||
'monthly': ((2033, 0.00, 0.00), (2290, 0.00, 1.125), (2547, 3.00, 3.125), (2804, 11.00, 3.625), (3060, 20.00, 4.625), (3317, 32.00, 5.625), (3959, 47.00, 6.625), ('inf', 89.00, 6.925)),
|
( 588, 0.00, 3.125),
|
||||||
'annually': ((24400, 0.00, 0.00), (27482, 0.00, 1.125), (30562, 35.00, 3.125), (33644, 131.00, 3.625), (36724, 243.00, 4.625), (39806, 385.00, 5.625), (47508, 558.00, 6.625), ('inf', 1068.00, 6.925)),
|
( 647, 1.00, 3.625),
|
||||||
|
( 706, 2.00, 4.625),
|
||||||
|
( 766, 4.00, 5.625),
|
||||||
|
( 914, 5.00, 6.625),
|
||||||
|
('inf', 10.00, 6.925),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 938, 0.00, 0.000),
|
||||||
|
( 1057, 0.00, 1.125),
|
||||||
|
( 1175, 1.00, 3.125),
|
||||||
|
( 1294, 5.00, 3.625),
|
||||||
|
( 1412, 9.00, 4.625),
|
||||||
|
( 1531, 15.00, 5.625),
|
||||||
|
( 1827, 21.00, 6.625),
|
||||||
|
('inf', 41.00, 6.925),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 1017, 0.00, 0.000),
|
||||||
|
( 1145, 0.00, 1.125),
|
||||||
|
( 1273, 1.00, 3.125),
|
||||||
|
( 1402, 5.00, 3.625),
|
||||||
|
( 1530, 10.00, 4.625),
|
||||||
|
( 1659, 16.00, 5.625),
|
||||||
|
( 1980, 23.00, 6.625),
|
||||||
|
('inf', 45.00, 6.925),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 2033, 0.00, 0.000),
|
||||||
|
( 2290, 0.00, 1.125),
|
||||||
|
( 2547, 3.00, 3.125),
|
||||||
|
( 2804, 11.00, 3.625),
|
||||||
|
( 3060, 20.00, 4.625),
|
||||||
|
( 3317, 32.00, 5.625),
|
||||||
|
( 3959, 47.00, 6.625),
|
||||||
|
('inf', 89.00, 6.925),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
(24400, 0.00, 0.000),
|
||||||
|
(27482, 0.00, 1.125),
|
||||||
|
(30562, 35.00, 3.125),
|
||||||
|
(33644, 131.00, 3.625),
|
||||||
|
(36724, 243.00, 4.625),
|
||||||
|
(39806, 385.00, 5.625),
|
||||||
|
(47508, 558.00, 6.625),
|
||||||
|
('inf', 1068.00, 6.925),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'head of household': {
|
'head of household': {
|
||||||
'weekly': ((235, 0.00, 0.00), (264, 0.00, 1.125), (294, 0.00, 3.125), (324, 1.00, 3.625), (353, 2.00, 4.625), (383, 4.00, 5.625), (457, 5.00, 6.625), ('inf', 10.00, 6.925)),
|
'weekly': (
|
||||||
'bi-weekly': ((469, 0.00, 0.00), (529, 0.00, 1.125), (588, 1.00, 3.125), (647, 3.00, 3.625), (706, 5.00, 4.625), (766, 7.00, 5.625), (914, 11.00, 6.625), ('inf', 21.00, 6.925)),
|
( 235, 0.00, 0.000),
|
||||||
'semi-monthly': ((508, 0.00, 0.00), (573, 0.00, 1.125), (637, 1.00, 3.125), (701, 3.00, 3.625), (765, 5.00, 4.625), (829, 8.00, 5.625), (990, 12.00, 6.625), ('inf', 22.00, 6.925)),
|
( 264, 0.00, 1.125),
|
||||||
'monthly': ((1017, 0.00, 0.00), (1145, 0.00, 1.125), (1273, 1.00, 3.125), (1402, 5.00, 3.625), (1530, 10.00, 4.625), (1659, 16.00, 5.625), (1980, 23.00, 6.625), ('inf', 45.00, 6.925)),
|
( 294, 0.00, 3.125),
|
||||||
'annually': ((12200, 0.00, 0.00), (13741, 0.00, 1.125), (15281, 17.00, 3.125), (16822, 65.00, 3.625), (18362, 121.00, 4.625), (19903, 192.00, 5.625), (23754, 279.00, 6.625), ('inf', 534.00, 6.925)),
|
( 324, 1.00, 3.625),
|
||||||
|
( 353, 2.00, 4.625),
|
||||||
|
( 383, 4.00, 5.625),
|
||||||
|
( 457, 5.00, 6.625),
|
||||||
|
('inf', 10.00, 6.925),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 469, 0.00, 0.000),
|
||||||
|
( 529, 0.00, 1.125),
|
||||||
|
( 588, 1.00, 3.125),
|
||||||
|
( 647, 3.00, 3.625),
|
||||||
|
( 706, 5.00, 4.625),
|
||||||
|
( 766, 7.00, 5.625),
|
||||||
|
( 914, 11.00, 6.625),
|
||||||
|
('inf', 21.00, 6.925),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 508, 0.00, 0.000),
|
||||||
|
( 573, 0.00, 1.125),
|
||||||
|
( 637, 1.00, 3.125),
|
||||||
|
( 701, 3.00, 3.625),
|
||||||
|
( 765, 5.00, 4.625),
|
||||||
|
( 829, 8.00, 5.625),
|
||||||
|
( 990, 12.00, 6.625),
|
||||||
|
('inf', 22.00, 6.925),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1017, 0.00, 0.000),
|
||||||
|
( 1145, 0.00, 1.125),
|
||||||
|
( 1273, 1.00, 3.125),
|
||||||
|
( 1402, 5.00, 3.625),
|
||||||
|
( 1530, 10.00, 4.625),
|
||||||
|
( 1659, 16.00, 5.625),
|
||||||
|
( 1980, 23.00, 6.625),
|
||||||
|
('inf', 45.00, 6.925),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
(12200, 0.00, 0.000),
|
||||||
|
(13741, 0.00, 1.125),
|
||||||
|
(15281, 17.00, 3.125),
|
||||||
|
(16822, 65.00, 3.625),
|
||||||
|
(18362, 121.00, 4.625),
|
||||||
|
(19903, 192.00, 5.625),
|
||||||
|
(23754, 279.00, 6.625),
|
||||||
|
('inf', 534.00, 6.925),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://tax.idaho.gov/pubs/EPB00744_06-16-2020.pdf -->
|
||||||
|
<!-- Page 1 to 3 -->
|
||||||
<record id="rule_parameter_us_id_sit_tax_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_id_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US ID Idaho SIT Tax Rate</field>
|
<field name="name">US ID Idaho SIT Tax Rate</field>
|
||||||
<field name="code">us_id_sit_tax_rate</field>
|
<field name="code">us_id_sit_tax_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'single': {
|
'single': {
|
||||||
'weekly': ((235, 0.00, 0.00), (264, 0.00, 1.125), (294, 0.00, 3.125), (324, 1.00, 3.625), (353, 2.00, 4.625), (383, 4.00, 5.625), (457, 5.00, 6.625), ('inf', 10.00, 6.925)),
|
'weekly': (
|
||||||
'bi-weekly': ((469, 0.00, 0.00), (529, 0.00, 1.125), (588, 1.00, 3.125), (647, 3.00, 3.625), (706, 5.00, 4.625), (766, 7.00, 5.625), (914, 11.00, 6.625), ('inf', 21.00, 6.925)),
|
( 238, 0.00, 0.000),
|
||||||
'semi-monthly': ((508, 0.00, 0.00), (573, 0.00, 1.125), (637, 1.00, 3.125), (701, 3.00, 3.625), (765, 5.00, 4.625), (829, 8.00, 5.625), (990, 12.00, 6.625), ('inf', 22.00, 6.925)),
|
( 269, 0.00, 1.125),
|
||||||
'monthly': ((1017, 0.00, 0.00), (1145, 0.00, 1.125), (1273, 1.00, 3.125), (1402, 5.00, 3.625), (1530, 10.00, 4.625), (1659, 16.00, 5.625), (1980, 23.00, 6.625), ('inf', 45.00, 6.925)),
|
( 299, 0.00, 3.125),
|
||||||
'annually': ((12200, 0.00, 0.00), (13741, 0.00, 1.125), (15281, 17.00, 3.125), (16822, 65.00, 3.625), (18362, 121.00, 4.625), (19903, 192.00, 5.625), (23754, 279.00, 6.625), ('inf', 534.00, 6.925)),
|
( 329, 1.00, 3.625),
|
||||||
|
( 359, 2.00, 4.625),
|
||||||
|
( 389, 4.00, 5.625),
|
||||||
|
( 465, 5.00, 6.625),
|
||||||
|
('inf', 10.00, 6.925),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 477, 0.00, 0.000),
|
||||||
|
( 537, 0.00, 1.125),
|
||||||
|
( 598, 1.00, 3.125),
|
||||||
|
( 658, 3.00, 3.625),
|
||||||
|
( 718, 5.00, 4.625),
|
||||||
|
( 778, 8.00, 5.625),
|
||||||
|
( 929, 11.00, 6.625),
|
||||||
|
('inf', 21.00, 6.925),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 517, 0.00, 0.000),
|
||||||
|
( 582, 0.00, 1.125),
|
||||||
|
( 647, 1.00, 3.125),
|
||||||
|
( 713, 3.00, 3.625),
|
||||||
|
( 778, 5.00, 4.625),
|
||||||
|
( 843, 8.00, 5.625),
|
||||||
|
( 1007, 12.00, 6.625),
|
||||||
|
('inf', 23.00, 6.925),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1033, 0.00, 0.000),
|
||||||
|
( 1164, 0.00, 1.125),
|
||||||
|
( 1295, 1.00, 3.125),
|
||||||
|
( 1425, 6.00, 3.625),
|
||||||
|
( 1556, 10.00, 4.625),
|
||||||
|
( 1687, 16.00, 5.625),
|
||||||
|
( 2013, 24.00, 6.625),
|
||||||
|
('inf', 45.00, 6.925),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
(12400, 0.00, 0.000),
|
||||||
|
(13968, 0.00, 1.125),
|
||||||
|
(15536, 18.00, 3.125),
|
||||||
|
(17104, 67.00, 3.625),
|
||||||
|
(18672, 124.00, 4.625),
|
||||||
|
(20240, 197.00, 5.625),
|
||||||
|
(24160, 285.00, 6.625),
|
||||||
|
('inf', 545.00, 6.925),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'married': {
|
'married': {
|
||||||
'weekly': ((469, 0.00, 0.00), (529, 0.00, 1.125), (588, 0.00, 3.125), (647, 1.00, 3.625), (706, 2.00, 4.625), (766, 4.00, 5.625), (914, 5.00, 6.625), ('inf', 10.00, 6.925)),
|
'weekly': (
|
||||||
'bi-weekly': ((938, 0.00, 0.00), (1057, 0.00, 1.125), (1175, 1.00, 3.125), (1294, 5.00, 3.625), (1412, 9.00, 4.625), (1531, 15.00, 5.625), (1827, 21.00, 6.625), ('inf', 41.00, 6.925)),
|
( 477, 0.00, 0.000),
|
||||||
'semi-monthly': ((1017, 0.00, 0.00), (1145, 0.00, 1.125), (1273, 1.00, 3.125), (1402, 5.00, 3.625), (1530, 10.00, 4.625), (1659, 16.00, 5.625), (1980, 23.00, 6.625), ('inf', 45.00, 6.925)),
|
( 537, 0.00, 1.125),
|
||||||
'monthly': ((2033, 0.00, 0.00), (2290, 0.00, 1.125), (2547, 3.00, 3.125), (2804, 11.00, 3.625), (3060, 20.00, 4.625), (3317, 32.00, 5.625), (3959, 47.00, 6.625), ('inf', 89.00, 6.925)),
|
( 598, 0.00, 3.125),
|
||||||
'annually': ((24400, 0.00, 0.00), (27482, 0.00, 1.125), (30562, 35.00, 3.125), (33644, 131.00, 3.625), (36724, 243.00, 4.625), (39806, 385.00, 5.625), (47508, 558.00, 6.625), ('inf', 1068.00, 6.925)),
|
( 658, 1.00, 3.625),
|
||||||
|
( 718, 3.00, 4.625),
|
||||||
|
( 778, 5.00, 5.625),
|
||||||
|
( 929, 11.00, 6.625),
|
||||||
|
('inf', 21.00, 6.925),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 954, 0.00, 0.000),
|
||||||
|
( 1074, 0.00, 1.125),
|
||||||
|
( 1195, 1.00, 3.125),
|
||||||
|
( 1316, 5.00, 3.625),
|
||||||
|
( 1436, 9.00, 4.625),
|
||||||
|
( 1557, 15.00, 5.625),
|
||||||
|
( 1858, 22.00, 6.625),
|
||||||
|
('inf', 42.00, 6.925),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 1033, 0.00, 0.000),
|
||||||
|
( 1164, 0.00, 1.125),
|
||||||
|
( 1295, 1.00, 3.125),
|
||||||
|
( 1425, 6.00, 3.625),
|
||||||
|
( 1556, 10.00, 4.625),
|
||||||
|
( 1687, 16.00, 5.625),
|
||||||
|
( 2013, 24.00, 6.625),
|
||||||
|
('inf', 45.00, 6.925),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 2067, 0.00, 0.000),
|
||||||
|
( 2328, 0.00, 1.125),
|
||||||
|
( 2589, 3.00, 3.125),
|
||||||
|
( 2851, 11.00, 3.625),
|
||||||
|
( 3112, 21.00, 4.625),
|
||||||
|
( 3373, 33.00, 5.625),
|
||||||
|
( 4027, 47.00, 6.625),
|
||||||
|
('inf', 91.00, 6.925),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
(24400, 0.00, 0.000),
|
||||||
|
(27482, 0.00, 1.125),
|
||||||
|
(30562, 35.00, 3.125),
|
||||||
|
(33644, 131.00, 3.625),
|
||||||
|
(36724, 243.00, 4.625),
|
||||||
|
(39806, 385.00, 5.625),
|
||||||
|
(47508, 558.00, 6.625),
|
||||||
|
('inf', 1068.00, 6.925),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'head of household': {
|
'head of household': {
|
||||||
'weekly': ((235, 0.00, 0.00), (264, 0.00, 1.125), (294, 0.00, 3.125), (324, 1.00, 3.625), (353, 2.00, 4.625), (383, 4.00, 5.625), (457, 5.00, 6.625), ('inf', 10.00, 6.925)),
|
'weekly': (
|
||||||
'bi-weekly': ((469, 0.00, 0.00), (529, 0.00, 1.125), (588, 1.00, 3.125), (647, 3.00, 3.625), (706, 5.00, 4.625), (766, 7.00, 5.625), (914, 11.00, 6.625), ('inf', 21.00, 6.925)),
|
( 238, 0.00, 0.000),
|
||||||
'semi-monthly': ((508, 0.00, 0.00), (573, 0.00, 1.125), (637, 1.00, 3.125), (701, 3.00, 3.625), (765, 5.00, 4.625), (829, 8.00, 5.625), (990, 12.00, 6.625), ('inf', 22.00, 6.925)),
|
( 269, 0.00, 1.125),
|
||||||
'monthly': ((1017, 0.00, 0.00), (1145, 0.00, 1.125), (1273, 1.00, 3.125), (1402, 5.00, 3.625), (1530, 10.00, 4.625), (1659, 16.00, 5.625), (1980, 23.00, 6.625), ('inf', 45.00, 6.925)),
|
( 299, 0.00, 3.125),
|
||||||
'annually': ((12200, 0.00, 0.00), (13741, 0.00, 1.125), (15281, 17.00, 3.125), (16822, 65.00, 3.625), (18362, 121.00, 4.625), (19903, 192.00, 5.625), (23754, 279.00, 6.625), ('inf', 534.00, 6.925)),
|
( 329, 1.00, 3.625),
|
||||||
|
( 359, 2.00, 4.625),
|
||||||
|
( 389, 4.00, 5.625),
|
||||||
|
( 465, 5.00, 6.625),
|
||||||
|
('inf', 10.00, 6.925),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 477, 0.00, 0.000),
|
||||||
|
( 537, 0.00, 1.125),
|
||||||
|
( 598, 1.00, 3.125),
|
||||||
|
( 658, 3.00, 3.625),
|
||||||
|
( 718, 5.00, 4.625),
|
||||||
|
( 778, 8.00, 5.625),
|
||||||
|
( 929, 11.00, 6.625),
|
||||||
|
('inf', 21.00, 6.925),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 517, 0.00, 0.000),
|
||||||
|
( 582, 0.00, 1.125),
|
||||||
|
( 647, 1.00, 3.125),
|
||||||
|
( 713, 3.00, 3.625),
|
||||||
|
( 778, 5.00, 4.625),
|
||||||
|
( 843, 8.00, 5.625),
|
||||||
|
( 1007, 12.00, 6.625),
|
||||||
|
('inf', 23.00, 6.925),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1033, 0.00, 0.000),
|
||||||
|
( 1164, 0.00, 1.125),
|
||||||
|
( 1295, 1.00, 3.125),
|
||||||
|
( 1425, 6.00, 3.625),
|
||||||
|
( 1556, 10.00, 4.625),
|
||||||
|
( 1687, 16.00, 5.625),
|
||||||
|
( 2013, 24.00, 6.625),
|
||||||
|
('inf', 45.00, 6.925),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
(12400, 0.00, 0.000),
|
||||||
|
(13968, 0.00, 1.125),
|
||||||
|
(15536, 18.00, 3.125),
|
||||||
|
(17104, 67.00, 3.625),
|
||||||
|
(18672, 124.00, 4.625),
|
||||||
|
(20240, 197.00, 5.625),
|
||||||
|
(24160, 285.00, 6.625),
|
||||||
|
('inf', 545.00, 6.925),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
@@ -104,6 +376,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://tax.idaho.gov/i-1026.cfm?seg=compute -->
|
||||||
|
<!-- Idaho Child Tax Credit Allowances Table -->
|
||||||
<record id="rule_parameter_us_id_sit_ictcat_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_id_sit_ictcat_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US ID Idaho Child Tax Credit Allowance Rate</field>
|
<field name="name">US ID Idaho Child Tax Credit Allowance Rate</field>
|
||||||
<field name="code">us_id_sit_ictcat_rate</field>
|
<field name="code">us_id_sit_ictcat_rate</field>
|
||||||
|
|||||||
110
l10n_us_hr_payroll/data/state/in_indiana.xml
Normal file
110
l10n_us_hr_payroll/data/state/in_indiana.xml
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_in_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US IN Indiana SUTA Wage Base</field>
|
||||||
|
<field name="code">us_in_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">9500.00</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_in_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US IN Indiana SUTA Rate</field>
|
||||||
|
<field name="code">us_in_suta_rate</field>
|
||||||
|
<field name="parameter_value">2.5</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
<!-- state income rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_in_suta_income_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US IN Indiana SUTA Income Rate</field>
|
||||||
|
<field name="code">us_in_suta_income_rate</field>
|
||||||
|
<field name="parameter_value">3.23</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_in_sit_personal_exemption_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US IN Indiana SIT Personal Exemption Rate</field>
|
||||||
|
<field name="code">us_in_sit_personal_exemption_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'daily': ( 2.74, 5.48, 8.22, 10.96, 13.70, 16.44),
|
||||||
|
'weekly': ( 19.23, 38.46, 57.69, 76.92, 96.15, 115.38),
|
||||||
|
'bi-weekly': ( 38.46, 76.92, 115.38, 153.85, 192.31, 230.77),
|
||||||
|
'semi-monthly': ( 41.67, 83.33, 125.00, 166.67, 208.33, 250.00),
|
||||||
|
'monthly': ( 83.33, 166.67, 250.00, 333.33, 416.67, 500.00),
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_in_sit_dependent_exemption_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US IN Indiana SIT Dependent Exemption Rate</field>
|
||||||
|
<field name="code">us_in_sit_dependent_exemption_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'daily': ( 4.11, 8.22, 12.33, 16.44, 20.55),
|
||||||
|
'weekly': ( 28.85, 57.69, 86.54, 115.38, 144.23),
|
||||||
|
'bi-weekly': ( 57.69, 115.38, 173.08, 230.77, 288.46),
|
||||||
|
'semi-monthly': ( 62.50, 125.00, 187.50, 250.00, 312.50),
|
||||||
|
'monthly': (125.00, 250.00, 375.00, 500.00, 625.00),
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_in_dor" model="res.partner">
|
||||||
|
<field name="name">US Indiana - Department of Workforce Development - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_in_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Indiana - Department of Workforce Development - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_in_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_us_in_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US Indiana - Department of Revenue - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_in_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US Indiana - Department of Revenue - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_in_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Categories -->
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_in_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US IN Indiana State Unemployment</field>
|
||||||
|
<field name="code">ER_US_IN_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_in_suta_wage_base', rate='us_in_suta_rate', state_code='IN')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_in_suta_wage_base', rate='us_in_suta_rate', state_code='IN')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_in_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_in_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US IN Indiana State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_IN_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = in_indiana_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = in_indiana_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_in_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
186
l10n_us_hr_payroll/data/state/ks_kansas.xml
Normal file
186
l10n_us_hr_payroll/data/state/ks_kansas.xml
Normal file
@@ -0,0 +1,186 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ks_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US KS Kansas SUTA Wage Base</field>
|
||||||
|
<field name="code">us_ks_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">14000.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ks_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US KS Kansas SUTA Rate</field>
|
||||||
|
<field name="code">us_ks_suta_rate</field>
|
||||||
|
<field name="parameter_value">2.7</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Allowances -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ks_sit_allowances_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US KS Kansas Allowances Rate</field>
|
||||||
|
<field name="code">us_ks_sit_allowances_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'weekly' : 43.27,
|
||||||
|
'bi-weekly' : 86.54,
|
||||||
|
'semi-monthly': 93.75,
|
||||||
|
'monthly' : 187.50,
|
||||||
|
'quarterly' : 562.50,
|
||||||
|
'semi-annual': 1125.00,
|
||||||
|
'annually': 2250.00,
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Table from percentage table from https://www.ksrevenue.org/pdf/kw100.pdf -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ks_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US KS Kansas SIT Tax Rate</field>
|
||||||
|
<field name="code">us_ks_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': {
|
||||||
|
'weekly': (
|
||||||
|
( 58, 0.00, 0.00),
|
||||||
|
( 346, 3.10, 0.00),
|
||||||
|
( 635, 5.25, 8.94),
|
||||||
|
('inf', 5.70, 24.09),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 115, 0.00, 0.00),
|
||||||
|
( 692, 3.10, 0.00),
|
||||||
|
( 1269, 5.25, 17.88),
|
||||||
|
('inf', 5.70, 48.17),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 125, 0.00, 0.00),
|
||||||
|
( 750, 3.10, 0.00),
|
||||||
|
( 1375, 5.25, 19.38),
|
||||||
|
('inf', 5.70, 52.19),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 250, 0.00, 0.00),
|
||||||
|
( 1500, 3.10, 0.00),
|
||||||
|
( 2750, 5.25, 38.75),
|
||||||
|
('inf', 5.70, 104.38),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 750, 0.00, 0.00),
|
||||||
|
( 4500, 3.10, 0.00),
|
||||||
|
(8250, 5.25, 116.25),
|
||||||
|
('inf', 5.70, 313.13),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 1500, 0.00, 0.00),
|
||||||
|
( 9000, 3.10, 0.00),
|
||||||
|
(16500, 5.25, 232.50),
|
||||||
|
('inf', 5.70, 626.25),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 3000, 0.00, 0.00),
|
||||||
|
(18000, 3.10, 0.00),
|
||||||
|
(33000, 5.25, 465.00),
|
||||||
|
('inf', 5.70, 1252.50),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
'married': {
|
||||||
|
'weekly': (
|
||||||
|
( 144, 0.00, 0.00),
|
||||||
|
( 721, 3.10, 0.00),
|
||||||
|
(1298, 5.25, 17.88),
|
||||||
|
('inf', 5.70, 48.17),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 288, 0.00, 0.00),
|
||||||
|
( 1442, 3.10, 0.00),
|
||||||
|
( 2596, 5.25, 35.77),
|
||||||
|
('inf', 5.70, 96.35),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 313, 0.00, 0.00),
|
||||||
|
( 1563, 3.10, 0.00),
|
||||||
|
( 2813, 5.25, 38.75),
|
||||||
|
('inf', 5.70, 104.38),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 625, 0.00, 0.00),
|
||||||
|
( 3125, 3.10, 0.00),
|
||||||
|
( 5625, 5.25, 77.50),
|
||||||
|
('inf', 5.70, 208.75),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 1875, 0.00, 0.00),
|
||||||
|
( 9375, 3.10, 0.00),
|
||||||
|
(16875, 5.25, 232.50),
|
||||||
|
('inf', 5.70, 626.25),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 3750, 0.00, 0.00),
|
||||||
|
(18750, 3.10, 0.00),
|
||||||
|
(33750, 5.25, 465.00),
|
||||||
|
('inf', 5.70, 1252.50),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 7500, 0.00, 0.00),
|
||||||
|
(37500, 3.10, 0.00),
|
||||||
|
(67500, 5.25, 930.00),
|
||||||
|
('inf', 5.70, 2505.00),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_ks_dor" model="res.partner">
|
||||||
|
<field name="name">US Kansas - Department of Labor - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_ks_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Kansas - Department of Labor - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_ks_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_us_ks_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US Kansas - Department of Revenue - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_ks_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US Kansas - Department of Revenue - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_ks_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_ks_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US KS Kansas State Unemployment</field>
|
||||||
|
<field name="code">ER_US_KS_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_ks_suta_wage_base', rate='us_ks_suta_rate', state_code='KS')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_ks_suta_wage_base', rate='us_ks_suta_rate', state_code='KS')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_ks_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_ks_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US KS Kansas State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_KS_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = ks_kansas_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = ks_kansas_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_ks_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
91
l10n_us_hr_payroll/data/state/ky_kentucky.xml
Normal file
91
l10n_us_hr_payroll/data/state/ky_kentucky.xml
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ky_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US KY Kentucky SUTA Wage Base</field>
|
||||||
|
<field name="code">us_ky_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">10800.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ky_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US KY Kentucky SUTA Rate</field>
|
||||||
|
<field name="code">us_ky_suta_rate</field>
|
||||||
|
<field name="parameter_value">2.7</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<!-- Data from https://revenue.ky.gov/Forms/42A003(T)%20(12-2019)%202020%20Tax%20Tables.pdf -->
|
||||||
|
<record id="rule_parameter_us_ky_sit_standard_deduction_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US KY Kentucky Standard Deduction Rate</field>
|
||||||
|
<field name="code">us_ky_sit_standard_deduction_rate</field>
|
||||||
|
<field name="parameter_value">2650</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Data from https://revenue.ky.gov/Forms/42A003(T)%20(12-2019)%202020%20Tax%20Tables.pdf -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ky_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US KY Kentucky SIT Tax Rate</field>
|
||||||
|
<field name="code">us_ky_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">5.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_ky_dor" model="res.partner">
|
||||||
|
<field name="name">US Kentucky - Office of Unemployment Insurance - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_ky_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Kentucky - Office of Unemployment Insurance - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_ky_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_us_ky_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US Kentucky - Department of Revenue - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_ky_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US Kentucky - Department of Revenue - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_ky_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Categories -->
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_ky_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US KY Kentucky State Unemployment</field>
|
||||||
|
<field name="code">ER_US_KY_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_ky_suta_wage_base', rate='us_ky_suta_rate', state_code='KY')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_ky_suta_wage_base', rate='us_ky_suta_rate', state_code='KY')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_ky_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_ky_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US KY Kentucky State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_KY_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = ky_kentucky_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = ky_kentucky_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_ky_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
148
l10n_us_hr_payroll/data/state/la_louisiana.xml
Normal file
148
l10n_us_hr_payroll/data/state/la_louisiana.xml
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_la_suta_wage_base_2019" model="hr.payroll.rate">
|
||||||
|
<field name="name">US LA Louisiana SUTA Wage Base</field>
|
||||||
|
<field name="code">us_la_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">7700.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
<record id="rule_parameter_us_la_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US LA Louisiana SUTA Wage Base</field>
|
||||||
|
<field name="code">us_la_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">7700.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_la_suta_rate_2019" model="hr.payroll.rate">
|
||||||
|
<field name="name">US LA Louisiana SUTA Rate</field>
|
||||||
|
<field name="code">us_la_suta_rate</field>
|
||||||
|
<field name="parameter_value">1.14</field>
|
||||||
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
<record id="rule_parameter_us_la_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US LA Louisiana SUTA Rate</field>
|
||||||
|
<field name="code">us_la_suta_rate</field>
|
||||||
|
<field name="parameter_value">1.14</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
<!-- table data from http://www.revenue.louisiana.gov/taxforms/1306(7_09)W.pdf page 9. -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_la_sit_tax_rate_2019" model="hr.payroll.rate">
|
||||||
|
<field name="name">US LA Louisiana SIT Tax Rate</field>
|
||||||
|
<field name="code">us_la_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': (
|
||||||
|
(12500.00, 2.10),
|
||||||
|
(50000.00, 1.60),
|
||||||
|
( 'inf', 1.35),
|
||||||
|
),
|
||||||
|
'married': (
|
||||||
|
( 25000.00, 2.10),
|
||||||
|
(100000.00, 1.65),
|
||||||
|
( 'inf', 1.35),
|
||||||
|
),
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
<record id="rule_parameter_us_la_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US LA Louisiana SIT Tax Rate</field>
|
||||||
|
<field name="code">us_la_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': (
|
||||||
|
(12500.00, 2.10),
|
||||||
|
(50000.00, 1.60),
|
||||||
|
( 'inf', 1.35)
|
||||||
|
),
|
||||||
|
'married': (
|
||||||
|
( 25000.00, 2.10),
|
||||||
|
(100000.00, 1.65),
|
||||||
|
( 'inf', 1.35)
|
||||||
|
),
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_la_sit_personal_exemption_rate_2019" model="hr.payroll.rate">
|
||||||
|
<field name="name">US LA Louisiana Personal Exemption Rate</field>
|
||||||
|
<field name="code">us_la_sit_personal_exemption_rate</field>
|
||||||
|
<field name="parameter_value">4500</field>
|
||||||
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
<record id="rule_parameter_us_la_sit_personal_exemption_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US LA Louisiana Personal Exemption Rate</field>
|
||||||
|
<field name="code">us_la_sit_personal_exemption_rate</field>
|
||||||
|
<field name="parameter_value">4500</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_la_sit_dependent_rate_2019" model="hr.payroll.rate">
|
||||||
|
<field name="name">US LA Louisiana Dependent Rate</field>
|
||||||
|
<field name="code">us_la_sit_dependent_rate</field>
|
||||||
|
<field name="parameter_value">1000.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
<record id="rule_parameter_us_la_sit_dependent_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US LA Louisiana Dependent Rate</field>
|
||||||
|
<field name="code">us_la_sit_dependent_rate</field>
|
||||||
|
<field name="parameter_value">1000.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_la_dor" model="res.partner">
|
||||||
|
<field name="name">US Louisiana - Workforce Commission (LWC) - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_la_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Louisiana - Workforce Commission (LWC) - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_la_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_us_la_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US Louisiana - Department of Revenue (LDOR) - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_la_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US Louisiana - Department of Revenue (LDOR) - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_la_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_la_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US LA Louisiana State Unemployment</field>
|
||||||
|
<field name="code">ER_US_LA_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_la_suta_wage_base', rate='us_la_suta_rate', state_code='LA')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_la_suta_wage_base', rate='us_la_suta_rate', state_code='LA')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_la_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_la_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US LA Louisiana State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_LA_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = la_louisiana_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = la_louisiana_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_la_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
119
l10n_us_hr_payroll/data/state/me_maine.xml
Normal file
119
l10n_us_hr_payroll/data/state/me_maine.xml
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_me_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US ME Maine SUTA Wage Base</field>
|
||||||
|
<field name="code">us_me_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">12000.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_me_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US ME Maine SUTA Rate</field>
|
||||||
|
<field name="code">us_me_suta_rate</field>
|
||||||
|
<field name="parameter_value">1.92</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
<!-- table based on https://www.maine.gov/revenue/forms/with/2020/20_WH_Tab&Instructions.pdf step 6.-->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_me_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US ME Maine SIT Tax Rate</field>
|
||||||
|
<field name="code">us_me_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': (
|
||||||
|
( 22200, 0, 5.80),
|
||||||
|
( 52600, 1288, 6.75),
|
||||||
|
( 'inf', 3340, 7.15),
|
||||||
|
),
|
||||||
|
'married': (
|
||||||
|
( 44450, 0, 5.80),
|
||||||
|
( 105200, 2578, 6.75),
|
||||||
|
( 'inf', 6679, 7.15),
|
||||||
|
),
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_me_sit_standard_deduction_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US ME Maine Standard Deduction Rate</field>
|
||||||
|
<field name="code">us_me_sit_standard_deduction_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': {
|
||||||
|
( 82900, 9550),
|
||||||
|
(157900, 75000),
|
||||||
|
},
|
||||||
|
'married': {
|
||||||
|
(165800, 21950),
|
||||||
|
(315800, 150000),
|
||||||
|
},
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_me_sit_personal_exemption_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US ME Maine Personal Exemption Rate</field>
|
||||||
|
<field name="code">us_me_sit_personal_exemption_rate</field>
|
||||||
|
<field name="parameter_value">4300</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_me_dor" model="res.partner">
|
||||||
|
<field name="name">US Maine - Department Of Labor | ReEmploy - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_me_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Maine - Department Of Labor | ReEmploy - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_me_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_us_me_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US Maine - Department Of Revenue Services - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_me_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US Maine - Department Of Revenue Services - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_me_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Categories -->
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_me_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US ME Maine State Unemployment</field>
|
||||||
|
<field name="code">ER_US_ME_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_me_suta_wage_base', rate='us_me_suta_rate', state_code='ME')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_me_suta_wage_base', rate='us_me_suta_rate', state_code='ME')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_me_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_me_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US ME Maine State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_ME_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = me_maine_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = me_maine_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_me_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
@@ -37,37 +37,39 @@
|
|||||||
<field name="name">US MN Minnesota SIT Tax Rate</field>
|
<field name="name">US MN Minnesota SIT Tax Rate</field>
|
||||||
<field name="code">us_mn_sit_tax_rate</field>
|
<field name="code">us_mn_sit_tax_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'single': [
|
'single': (
|
||||||
( 28920, 2400, 5.35, 0.00),
|
( 28920, 2400, 5.35, 0.00),
|
||||||
( 89510, 28920, 7.05, 1418.82),
|
( 89510, 28920, 7.05, 1418.82),
|
||||||
(166290, 89510, 7.85, 5690.42),
|
(166290, 89510, 7.85, 5690.42),
|
||||||
( 'inf', 166290, 9.85, 11717.65),
|
( 'inf', 166290, 9.85, 11717.65),
|
||||||
],
|
),
|
||||||
'married': [
|
'married': (
|
||||||
( 47820, 9050, 5.35, 0.00),
|
( 47820, 9050, 5.35, 0.00),
|
||||||
( 163070, 47820, 7.05, 2074.20),
|
( 163070, 47820, 7.05, 2074.20),
|
||||||
( 282200, 163070, 7.85, 10199.33),
|
( 282200, 163070, 7.85, 10199.33),
|
||||||
( 'inf', 282200, 9.85, 19551.04),
|
( 'inf', 282200, 9.85, 19551.04),
|
||||||
],
|
),
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://www.revenue.state.mn.us/sites/default/files/2019-12/wh_inst_20_0.pdf -->
|
||||||
|
<!-- Chart for step 5 value -->
|
||||||
<record id="rule_parameter_us_mn_sit_tax_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_mn_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US MN Minnesota SIT Tax Rate</field>
|
<field name="name">US MN Minnesota SIT Tax Rate</field>
|
||||||
<field name="code">us_mn_sit_tax_rate</field>
|
<field name="code">us_mn_sit_tax_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'single': [
|
'single': (
|
||||||
( 30760, 3800, 5.35, 0.00),
|
( 30760, 3800, 5.35, 0.00),
|
||||||
( 92350, 30760, 6.80, 1442.36),
|
( 92350, 30760, 6.80, 1442.36),
|
||||||
(168200, 92350, 7.85, 5630.48),
|
(168200, 92350, 7.85, 5630.48),
|
||||||
( 'inf', 168200, 9.85, 11584.71),
|
( 'inf', 168200, 9.85, 11584.71),
|
||||||
],
|
),
|
||||||
'married': [
|
'married': (
|
||||||
( 51310, 11900, 5.35, 0.00),
|
( 51310, 11900, 5.35, 0.00),
|
||||||
( 168470, 51310, 6.80, 2108.44),
|
( 168470, 51310, 6.80, 2108.44),
|
||||||
( 285370, 168470, 7.85, 10075.32),
|
( 285370, 168470, 7.85, 10075.32),
|
||||||
( 'inf', 285370, 9.85, 19251.97),
|
( 'inf', 285370, 9.85, 19251.97),
|
||||||
],
|
),
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
@@ -80,6 +82,8 @@
|
|||||||
<field name="parameter_value">4250.0</field>
|
<field name="parameter_value">4250.0</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://www.revenue.state.mn.us/sites/default/files/2019-12/wh_inst_20_0.pdf -->
|
||||||
|
<!-- Step 3. -->
|
||||||
<record id="rule_parameter_us_mn_sit_allowances_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_mn_sit_allowances_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US MN Minnesota Allowances Rate</field>
|
<field name="name">US MN Minnesota Allowances Rate</field>
|
||||||
<field name="code">us_mn_sit_allowances_rate</field>
|
<field name="code">us_mn_sit_allowances_rate</field>
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
</data>
|
</data>
|
||||||
|
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
|
<!-- https://dor.mo.gov/forms/4282_2019.pdf -->
|
||||||
<record id="rule_parameter_us_mo_sit_rate_2019" model="hr.payroll.rate">
|
<record id="rule_parameter_us_mo_sit_rate_2019" model="hr.payroll.rate">
|
||||||
<field name="name">US MO Missouri SIT Rate Table</field>
|
<field name="name">US MO Missouri SIT Rate Table</field>
|
||||||
<field name="code">us_mo_sit_rate</field>
|
<field name="code">us_mo_sit_rate</field>
|
||||||
@@ -49,6 +50,8 @@
|
|||||||
]</field>
|
]</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://dor.mo.gov/forms/4282_2020.pdf -->
|
||||||
|
<!-- Income Tax Withholding Percentage Table-->
|
||||||
<record id="rule_parameter_us_mo_sit_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_mo_sit_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US MO Missouri SIT Rate Table</field>
|
<field name="name">US MO Missouri SIT Rate Table</field>
|
||||||
<field name="code">us_mo_sit_rate</field>
|
<field name="code">us_mo_sit_rate</field>
|
||||||
@@ -68,6 +71,7 @@
|
|||||||
</data>
|
</data>
|
||||||
|
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
|
<!-- https://dor.mo.gov/forms/4282_2019.pdf -->
|
||||||
<record id="rule_parameter_us_mo_sit_deduction_2019" model="hr.payroll.rate">
|
<record id="rule_parameter_us_mo_sit_deduction_2019" model="hr.payroll.rate">
|
||||||
<field name="name">US MO Missouri SIT Deduction</field>
|
<field name="name">US MO Missouri SIT Deduction</field>
|
||||||
<field name="code">us_mo_sit_deduction</field>
|
<field name="code">us_mo_sit_deduction</field>
|
||||||
@@ -78,6 +82,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://dor.mo.gov/forms/4282_2020.pdf -->
|
||||||
|
<!-- 2020 Missouri Withholding Tax Formula Page.12 -->
|
||||||
<record id="rule_parameter_us_mo_sit_deduction_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_mo_sit_deduction_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US MO Missouri SIT Deduction</field>
|
<field name="name">US MO Missouri SIT Deduction</field>
|
||||||
<field name="code">us_mo_sit_deduction</field>
|
<field name="code">us_mo_sit_deduction</field>
|
||||||
|
|||||||
@@ -43,6 +43,8 @@
|
|||||||
]</field>
|
]</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://www.dor.ms.gov/Documents/Computer%20Payroll%20Flowchart.pdf -->
|
||||||
|
<!-- Table D. -->
|
||||||
<record id="rule_parameter_us_ms_sit_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_ms_sit_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US MS Mississippi SIT Rate Table</field>
|
<field name="name">US MS Mississippi SIT Rate Table</field>
|
||||||
<field name="code">us_ms_sit_rate</field>
|
<field name="code">us_ms_sit_rate</field>
|
||||||
@@ -67,6 +69,19 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://www.dor.ms.gov/Documents/Computer%20Payroll%20Flowchart.pdf -->
|
||||||
|
<!-- Table C. -->
|
||||||
|
<record id="rule_parameter_us_ms_sit_deduction_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US MS Mississippi SIT Deduction</field>
|
||||||
|
<field name="code">us_ms_sit_deduction</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': 2300.0,
|
||||||
|
'head_of_household': 3400.0,
|
||||||
|
'married_dual': 2300.0,
|
||||||
|
'married': 4600.0,
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<!-- Partners and Contribution Registers -->
|
<!-- Partners and Contribution Registers -->
|
||||||
|
|||||||
@@ -52,39 +52,78 @@
|
|||||||
<field name="name">US MT Montana SIT Rate Table</field>
|
<field name="name">US MT Montana SIT Rate Table</field>
|
||||||
<field name="code">us_mt_sit_rate</field>
|
<field name="code">us_mt_sit_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'weekly': [
|
'weekly': (
|
||||||
( 135.00, 0.0, 1.80),
|
( 135.00, 0.0, 1.80),
|
||||||
( 288.00, 2.0, 4.40),
|
( 288.00, 2.0, 4.40),
|
||||||
( 2308.00, 9.0, 6.00),
|
( 2308.00, 9.0, 6.00),
|
||||||
( 'inf', 130.0, 6.60),
|
( 'inf', 130.0, 6.60),
|
||||||
],
|
),
|
||||||
'bi-weekly': [
|
'bi-weekly': (
|
||||||
( 269.00, 0.0, 1.80),
|
( 269.00, 0.0, 1.80),
|
||||||
( 577.00, 5.0, 4.40),
|
( 577.00, 5.0, 4.40),
|
||||||
( 4615.00, 18.0, 6.00),
|
( 4615.00, 18.0, 6.00),
|
||||||
( 'inf', 261.0, 6.60),
|
( 'inf', 261.0, 6.60),
|
||||||
],
|
),
|
||||||
'semi-monthly': [
|
'semi-monthly': (
|
||||||
( 292.00, 0.0, 1.80),
|
( 292.00, 0.0, 1.80),
|
||||||
( 625.00, 5.0, 4.40),
|
( 625.00, 5.0, 4.40),
|
||||||
( 5000.00, 20.0, 6.00),
|
( 5000.00, 20.0, 6.00),
|
||||||
( 'inf', 282.0, 6.60),
|
( 'inf', 282.0, 6.60),
|
||||||
],
|
),
|
||||||
'monthly': [
|
'monthly': (
|
||||||
( 583.00, 0.0, 1.80),
|
( 583.00, 0.0, 1.80),
|
||||||
( 1250.00, 11.0, 4.40),
|
( 1250.00, 11.0, 4.40),
|
||||||
( 10000.00, 40.0, 6.00),
|
( 10000.00, 40.0, 6.00),
|
||||||
( 'inf', 565.0, 6.60),
|
( 'inf', 565.0, 6.60),
|
||||||
],
|
),
|
||||||
'annually': [
|
'annually': (
|
||||||
( 7000.00, 0.0, 1.80),
|
( 7000.00, 0.0, 1.80),
|
||||||
( 15000.00, 126.0, 4.40),
|
( 15000.00, 126.0, 4.40),
|
||||||
( 120000.00, 478.0, 6.00),
|
( 120000.00, 478.0, 6.00),
|
||||||
( 'inf', 6778.0, 6.60),
|
( 'inf', 6778.0, 6.60),
|
||||||
],
|
),
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://app.mt.gov/myrevenue/Endpoint/DownloadPdf?yearId=705 -->
|
||||||
|
<!-- Table Montana Withholding Tax Formula for Computerized Payroll Systems -->
|
||||||
|
<record id="rule_parameter_us_mt_sit_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US MT Montana SIT Rate Table</field>
|
||||||
|
<field name="code">us_mt_sit_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'weekly': (
|
||||||
|
( 135.00, 0.0, 1.80),
|
||||||
|
( 288.00, 2.0, 4.40),
|
||||||
|
( 2308.00, 9.0, 6.00),
|
||||||
|
( 'inf', 130.0, 6.60),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 269.00, 0.0, 1.80),
|
||||||
|
( 577.00, 5.0, 4.40),
|
||||||
|
( 4615.00, 18.0, 6.00),
|
||||||
|
( 'inf', 261.0, 6.60),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 292.00, 0.0, 1.80),
|
||||||
|
( 625.00, 5.0, 4.40),
|
||||||
|
( 5000.00, 20.0, 6.00),
|
||||||
|
( 'inf', 282.0, 6.60),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 583.00, 0.0, 1.80),
|
||||||
|
( 1250.00, 11.0, 4.40),
|
||||||
|
( 10000.00, 40.0, 6.00),
|
||||||
|
( 'inf', 565.0, 6.60),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 7000.00, 0.0, 1.80),
|
||||||
|
( 15000.00, 126.0, 4.40),
|
||||||
|
( 120000.00, 478.0, 6.00),
|
||||||
|
( 'inf', 6778.0, 6.60),
|
||||||
|
),
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
@@ -100,6 +139,20 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://app.mt.gov/myrevenue/Endpoint/DownloadPdf?yearId=705 -->
|
||||||
|
<!-- Table Montana Withholding Tax Formula for Computerized Payroll Systems -->
|
||||||
|
<record id="rule_parameter_us_mt_sit_exemption_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US MT Montana SIT Exemption Rate Table</field>
|
||||||
|
<field name="code">us_mt_sit_exemption_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'weekly': 37.0,
|
||||||
|
'bi-weekly': 73.0,
|
||||||
|
'semi-monthly': 79.0,
|
||||||
|
'monthly': 158.0,
|
||||||
|
'annually': 1900.0,
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<!-- Partners and Contribution Registers -->
|
<!-- Partners and Contribution Registers -->
|
||||||
|
|||||||
@@ -33,6 +33,8 @@
|
|||||||
</data>
|
</data>
|
||||||
|
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
|
<!-- https://files.nc.gov/ncdor/documents/files/NC-30_book_Web_1-16-19_v4_Final.pdf -->
|
||||||
|
<!-- Allowance Table Page 19. SD For single or married SD for Head of household (SD Page. 16-18)-->
|
||||||
<record id="rule_parameter_us_nc_sit_allowance_rate_2019" model="hr.payroll.rate">
|
<record id="rule_parameter_us_nc_sit_allowance_rate_2019" model="hr.payroll.rate">
|
||||||
<field name="name">US NC North Carolina Allowance Rate</field>
|
<field name="name">US NC North Carolina Allowance Rate</field>
|
||||||
<field name="code">us_nc_sit_allowance_rate</field>
|
<field name="code">us_nc_sit_allowance_rate</field>
|
||||||
@@ -44,6 +46,8 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- https://files.nc.gov/ncdor/documents/files/2020-NC-30_Final.pdf -->
|
||||||
|
<!-- Allowance Table Page 19. SD For single or married SD for Head of household (SD Page. 16-18)-->
|
||||||
<record id="rule_parameter_us_nc_sit_allowance_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_nc_sit_allowance_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US NC North Carolina Allowance Rate</field>
|
<field name="name">US NC North Carolina Allowance Rate</field>
|
||||||
<field name="code">us_nc_sit_allowance_rate</field>
|
<field name="code">us_nc_sit_allowance_rate</field>
|
||||||
|
|||||||
272
l10n_us_hr_payroll/data/state/nd_north_dakota.xml
Normal file
272
l10n_us_hr_payroll/data/state/nd_north_dakota.xml
Normal file
@@ -0,0 +1,272 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_nd_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US ND North Dakota SUTA Wage Base</field>
|
||||||
|
<field name="code">us_nd_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">37900.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_nd_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US ND North Dakota SUTA Rate</field>
|
||||||
|
<field name="code">us_nd_suta_rate</field>
|
||||||
|
<field name="parameter_value">1.02</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
<!-- Table based on https://www.nd.gov/tax/data/upfiles/media/rates-and-instructions.pdf?20191208155535 -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_nd_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US ND North Dakota SIT Tax Rate</field>
|
||||||
|
<field name="code">us_nd_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': {
|
||||||
|
'weekly': (
|
||||||
|
( 119, 0.00, 0.00),
|
||||||
|
( 891, 0.00, 1.10),
|
||||||
|
( 1988, 8.49, 2.04),
|
||||||
|
( 4016, 30.87, 2.27),
|
||||||
|
( 8592, 76.91, 2.64),
|
||||||
|
('inf', 197.71, 2.90),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 238, 0.00, 0.00),
|
||||||
|
( 1782, 0.00, 1.10),
|
||||||
|
( 3975, 16.98, 2.04),
|
||||||
|
( 8033, 61.72, 2.27),
|
||||||
|
( 17185, 153.84, 2.64),
|
||||||
|
( 'inf', 395.45, 2.90),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 258, 0.00, 0.00),
|
||||||
|
( 1930, 0.00, 1.10),
|
||||||
|
( 4306, 18.39, 2.04),
|
||||||
|
( 8702, 66.86, 2.27),
|
||||||
|
( 18617, 166.65, 2.64),
|
||||||
|
( 'inf', 428.41, 2.90),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 517, 0.00, 0.00),
|
||||||
|
( 3860, 0.00, 1.10),
|
||||||
|
( 8613, 36.77, 2.04),
|
||||||
|
( 17404, 133.73, 2.27),
|
||||||
|
( 37233, 333.29, 2.64),
|
||||||
|
( 'inf', 856.78, 2.90),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 1550, 0.00, 0.00),
|
||||||
|
( 11581, 0.00, 1.10),
|
||||||
|
( 25838, 110.34, 2.04),
|
||||||
|
( 52213, 401.18, 2.27),
|
||||||
|
( 111700, 999.90, 2.64),
|
||||||
|
( 'inf', 2570.35, 2.90),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 3100, 0.00, 0.00),
|
||||||
|
( 23163, 0.00, 1.10),
|
||||||
|
( 51675, 220.69, 2.04),
|
||||||
|
( 104425, 802.34, 2.27),
|
||||||
|
( 223400, 1999.76, 2.64),
|
||||||
|
( 'inf', 5140.70, 2.90),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 6200, 0.00, 0.00),
|
||||||
|
( 46325, 0.00, 1.10),
|
||||||
|
( 103350, 441.38, 2.04),
|
||||||
|
( 208850, 1604.69, 2.27),
|
||||||
|
( 446800, 3999.54, 2.64),
|
||||||
|
( 'inf', 10281.42, 2.90),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
'married': {
|
||||||
|
'weekly': (
|
||||||
|
( 238, 0.00, 0.00),
|
||||||
|
( 883, 0.00, 1.10),
|
||||||
|
( 1796, 7.10, 2.04),
|
||||||
|
( 2611, 25.72, 2.27),
|
||||||
|
( 4475, 44.22, 2.64),
|
||||||
|
('inf', 93.43, 2.90),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 477, 0.00, 0.00),
|
||||||
|
( 1766, 0.00, 1.10),
|
||||||
|
( 3591, 14.18, 2.04),
|
||||||
|
( 5221, 51.41, 2.27),
|
||||||
|
( 8950, 88.41, 2.64),
|
||||||
|
( 'inf', 186.86, 2.90),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 517, 0.00, 0.00),
|
||||||
|
( 1914, 0.00, 1.10),
|
||||||
|
( 3891, 15.37, 2.04),
|
||||||
|
( 5656, 55.70, 2.27),
|
||||||
|
( 9696, 95.76, 2.64),
|
||||||
|
( 'inf', 202.42, 2.90),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1033, 0.00, 0.00),
|
||||||
|
( 3827, 0.00, 1.10),
|
||||||
|
( 7781, 30.73, 2.04),
|
||||||
|
( 11313, 111.40, 2.27),
|
||||||
|
( 19392, 191.57, 2.64),
|
||||||
|
( 'inf', 404.86, 2.90),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 3100, 0.00, 0.00),
|
||||||
|
( 11481, 0.00, 1.10),
|
||||||
|
( 23344, 92.19, 2.04),
|
||||||
|
( 33938, 334.20, 2.27),
|
||||||
|
( 58175, 574.68, 2.64),
|
||||||
|
( 'inf', 1214.54, 2.90),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 6200, 0.00, 0.00),
|
||||||
|
( 22963, 0.00, 1.10),
|
||||||
|
( 46688, 184.39, 2.04),
|
||||||
|
( 67875, 668.38, 2.27),
|
||||||
|
( 116350, 1149.33, 2.64),
|
||||||
|
( 'inf', 2429.07, 2.90),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 12400, 0.00, 0.00),
|
||||||
|
( 45925, 0.00, 1.10),
|
||||||
|
( 93375, 368.78, 2.04),
|
||||||
|
( 135750, 1336.76, 2.27),
|
||||||
|
( 232700, 2298.67, 2.64),
|
||||||
|
( 'inf', 4858.15, 2.90),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
'head_household':{
|
||||||
|
'weekly': (
|
||||||
|
( 119, 0.00, 0.00),
|
||||||
|
( 891, 0.00, 1.10),
|
||||||
|
( 1988, 8.49, 2.04),
|
||||||
|
( 4016, 30.87, 2.27),
|
||||||
|
( 8592, 76.91, 2.64),
|
||||||
|
('inf', 197.71, 2.90),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 238, 0.00, 0.00),
|
||||||
|
( 1782, 0.00, 1.10),
|
||||||
|
( 3975, 16.98, 2.04),
|
||||||
|
( 8033, 61.72, 2.27),
|
||||||
|
( 17185, 153.84, 2.64),
|
||||||
|
( 'inf', 395.45, 2.90),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 258, 0.00, 0.00),
|
||||||
|
( 1930, 0.00, 1.10),
|
||||||
|
( 4306, 18.39, 2.04),
|
||||||
|
( 8702, 66.86, 2.27),
|
||||||
|
( 18617, 166.65, 2.64),
|
||||||
|
( 'inf', 428.41, 2.90),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 517, 0.00, 0.00),
|
||||||
|
( 3860, 0.00, 1.10),
|
||||||
|
( 8613, 36.77, 2.04),
|
||||||
|
( 17404, 133.73, 2.27),
|
||||||
|
( 37233, 333.29, 2.64),
|
||||||
|
( 'inf', 856.78, 2.90),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 1550, 0.00, 0.00),
|
||||||
|
( 11581, 0.00, 1.10),
|
||||||
|
( 25838, 110.34, 2.04),
|
||||||
|
( 52213, 401.18, 2.27),
|
||||||
|
( 111700, 999.90, 2.64),
|
||||||
|
( 'inf', 2570.35, 2.90),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 3100, 0.00, 0.00),
|
||||||
|
( 23163, 0.00, 1.10),
|
||||||
|
( 51675, 220.69, 2.04),
|
||||||
|
( 104425, 802.34, 2.27),
|
||||||
|
( 223400, 1999.76, 2.64),
|
||||||
|
( 'inf', 5140.70, 2.90),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 6200, 0.00, 0.00),
|
||||||
|
( 46325, 0.00, 1.10),
|
||||||
|
( 103350, 441.38, 2.04),
|
||||||
|
( 208850, 1604.69, 2.27),
|
||||||
|
( 446800, 3999.54, 2.64),
|
||||||
|
( 'inf', 10281.42, 2.90),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_nd_sit_allowances_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US ND North Dakota Allowances Rate</field>
|
||||||
|
<field name="code">us_nd_sit_allowances_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'weekly' : 83.00,
|
||||||
|
'bi-weekly' : 165.00,
|
||||||
|
'semi-monthly': 179.00,
|
||||||
|
'monthly' : 358.00,
|
||||||
|
'quarterly' : 1075.00,
|
||||||
|
'semi-annual': 2150.00,
|
||||||
|
'annually': 4300.00,
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_nd_dor" model="res.partner">
|
||||||
|
<field name="name">US North Dakota - Office of State Tax Commissioner - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_nd_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US North Dakota - Office of State Tax Commissioner - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_nd_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_us_nd_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US North Dakota - Taxpayer Access Point - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_nd_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US North Dakota - Taxpayer Access Point - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_nd_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Categories -->
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_nd_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US ND North Dakota State Unemployment</field>
|
||||||
|
<field name="code">ER_US_ND_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_nd_suta_wage_base', rate='us_nd_suta_rate', state_code='ND')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_nd_suta_wage_base', rate='us_nd_suta_rate', state_code='ND')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_nd_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_nd_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US ND North Dakota State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_ND_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = nd_north_dakota_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = nd_north_dakota_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_nd_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
230
l10n_us_hr_payroll/data/state/ne_nebraska.xml
Normal file
230
l10n_us_hr_payroll/data/state/ne_nebraska.xml
Normal file
@@ -0,0 +1,230 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ne_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US NE Nebraska SUTA Wage Base</field>
|
||||||
|
<field name="code">us_ne_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">9000.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ne_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US NE Nebraska SUTA Rate</field>
|
||||||
|
<field name="code">us_ne_suta_rate</field>
|
||||||
|
<field name="parameter_value">1.25</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Table based on Percentage method from https://revenue.nebraska.gov/sites/revenue.nebraska.gov/files/doc/business/2017cir-en_whole.pdf -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ne_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US NE Nebraska SIT Tax Rate</field>
|
||||||
|
<field name="code">us_ne_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': {
|
||||||
|
'weekly': (
|
||||||
|
( 57, 0.00, 0.00),
|
||||||
|
( 105, 0.00, 2.26),
|
||||||
|
( 342, 1.08, 3.22),
|
||||||
|
( 496, 8.71, 4.91),
|
||||||
|
( 629, 16.27, 6.20),
|
||||||
|
( 1182, 24.52, 6.59),
|
||||||
|
('inf', 60.96, 6.95),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 114, 0.00, 0.00),
|
||||||
|
( 211, 0.00, 2.26),
|
||||||
|
( 684, 2.19, 3.22),
|
||||||
|
( 992, 17.42, 4.91),
|
||||||
|
( 1259, 32.54, 6.20),
|
||||||
|
( 2364, 49.09, 6.59),
|
||||||
|
('inf', 121.91, 6.95),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 124, 0.00, 0.00),
|
||||||
|
( 228, 0.00, 2.26),
|
||||||
|
( 741, 2.35, 3.22),
|
||||||
|
( 1074, 18.87, 4.91),
|
||||||
|
( 1364, 35.22, 6.20),
|
||||||
|
( 2561, 53.20, 6.59),
|
||||||
|
('inf', 132.08, 6.95),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 248, 0.00, 0.00),
|
||||||
|
( 457, 0.00, 2.26),
|
||||||
|
( 1483, 4.72, 3.22),
|
||||||
|
( 2148, 37.76, 4.91),
|
||||||
|
( 2728, 70.41, 6.20),
|
||||||
|
( 5123, 106.37, 6.59),
|
||||||
|
('inf', 264.20, 6.95),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 744, 0.00, 0.00),
|
||||||
|
( 1370, 0.00, 2.26),
|
||||||
|
( 4448, 14.15, 3.22),
|
||||||
|
( 6445, 113.26, 4.91),
|
||||||
|
( 8183, 211.31, 6.20),
|
||||||
|
( 15368, 319.07, 6.59),
|
||||||
|
( 'inf', 792.56, 6.95),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 1488, 0.00, 0.00),
|
||||||
|
( 2740, 0.00, 2.26),
|
||||||
|
( 8895, 28.30, 3.22),
|
||||||
|
( 12890, 226.49, 4.91),
|
||||||
|
( 16365, 422.64, 6.20),
|
||||||
|
( 30735, 638.09, 6.59),
|
||||||
|
( 'inf', 1585.07, 6.95),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 2975, 0.00, 0.00),
|
||||||
|
( 5480, 0.00, 2.26),
|
||||||
|
( 17790, 56.61, 3.22),
|
||||||
|
( 25780, 452.99, 4.91),
|
||||||
|
( 32730, 845.30, 6.20),
|
||||||
|
( 61470, 1276.20, 6.59),
|
||||||
|
( 'inf', 3170.17, 6.95),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
'married': {
|
||||||
|
'weekly': (
|
||||||
|
( 137, 0.00, 0.00),
|
||||||
|
( 204, 0.00, 2.26),
|
||||||
|
( 508, 1.51, 3.22),
|
||||||
|
( 790, 11.30, 4.91),
|
||||||
|
( 981, 25.15, 6.20),
|
||||||
|
( 1300, 36.99, 6.59),
|
||||||
|
('inf', 58.01, 6.95),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 273, 0.00, 0.00),
|
||||||
|
( 408, 0.00, 2.26),
|
||||||
|
( 1016, 3.05, 3.22),
|
||||||
|
( 1581, 22.63, 4.91),
|
||||||
|
( 1961, 50.37, 6.20),
|
||||||
|
( 2601, 73.93, 6.59),
|
||||||
|
('inf', 116.11, 6.95),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 296, 0.00, 0.00),
|
||||||
|
( 442, 0.00, 2.26),
|
||||||
|
( 1101, 3.30, 3.22),
|
||||||
|
( 1713, 24.52, 4.91),
|
||||||
|
( 2125, 54.57, 6.20),
|
||||||
|
( 2818, 80.11, 6.59),
|
||||||
|
('inf', 125.78, 6.95),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 592, 0.00, 0.00),
|
||||||
|
( 884, 0.00, 2.26),
|
||||||
|
( 2202, 6.60, 3.22),
|
||||||
|
( 3425, 49.04, 4.91),
|
||||||
|
( 4249, 109.09, 6.20),
|
||||||
|
( 5635, 160.18, 6.59),
|
||||||
|
('inf', 251.52, 6.95),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 1775, 0.00, 0.00),
|
||||||
|
( 2653, 0.00, 2.26),
|
||||||
|
( 6605, 19.84, 3.22),
|
||||||
|
( 10275, 147.09, 4.91),
|
||||||
|
( 12748, 327.29, 6.20),
|
||||||
|
( 16905, 480.62, 6.59),
|
||||||
|
( 'inf', 754.57, 6.95),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 3550, 0.00, 0.00),
|
||||||
|
( 5305, 0.00, 2.26),
|
||||||
|
( 13210, 39.66, 3.22),
|
||||||
|
( 20550, 294.20, 4.91),
|
||||||
|
( 25495, 654.59, 6.20),
|
||||||
|
( 33810, 961.18, 6.59),
|
||||||
|
( 'inf', 1509.14, 6.95),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 7100, 0.00, 0.00),
|
||||||
|
( 10610, 0.00, 2.26),
|
||||||
|
( 26420, 79.33, 3.22),
|
||||||
|
( 41100, 588.41, 4.91),
|
||||||
|
( 50990, 1309.20, 6.20),
|
||||||
|
( 67620, 1992.38, 6.59),
|
||||||
|
( 'inf', 3018.30, 6.95),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ne_sit_allowances_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US NE Nebraska Allowances Rate</field>
|
||||||
|
<field name="code">us_ne_sit_allowances_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'weekly' : 37.69,
|
||||||
|
'bi-weekly' : 75.38,
|
||||||
|
'semi-monthly': 81.67,
|
||||||
|
'monthly' : 163.33,
|
||||||
|
'quarterly' : 490.00,
|
||||||
|
'semi-annual': 980.00,
|
||||||
|
'annually': 1960.00,
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_ne_dor" model="res.partner">
|
||||||
|
<field name="name">US Nebraska - Nebraska Department of Labor - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_ne_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Nebraska - Nebraska Department of Labor - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_ne_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_us_ne_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US Nebraska - Nebraska Department of Revenue - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_ne_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US Nebraska - Nebraska Department of Revenue - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_ne_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Categories -->
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_ne_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US NE Nebraska State Unemployment</field>
|
||||||
|
<field name="code">ER_US_NE_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_ne_suta_wage_base', rate='us_ne_suta_rate', state_code='NE')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_ne_suta_wage_base', rate='us_ne_suta_rate', state_code='NE')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_ne_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_ne_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US NE Nebraska State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_NE_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = ne_nebraska_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = ne_nebraska_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_ne_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
@@ -148,101 +148,690 @@
|
|||||||
<field name="code">us_nj_sit_rate</field>
|
<field name="code">us_nj_sit_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'A': {
|
'A': {
|
||||||
'weekly': ((385, 0.0, 1.50), (673, 5.77, 2.00), (769, 11.54, 3.90), (1442, 15.29, 6.10), (9615, 56.34, 7.00), (96154, 628.46, 9.90), ('inf', 9195.77, 11.80)),
|
'weekly': (
|
||||||
'bi-weekly': ((769, 0.00, 1.50), (1346, 12.00, 2.00), (1538, 23.00, 3.90), (2885, 31.00, 6.10), (19231, 113.00, 7.00), (192308, 1257.00, 9.90), ('inf',18392.00, 11.80)),
|
( 385, 0.00, 1.50),
|
||||||
'semi-monthly': ((833, 0.00, 1.50), (1458, 13.00, 2.00), (1667, 25.00, 3.90), (3125, 33.00, 6.10), (20833, 122.00, 7.00), (208333, 1362.00, 9.90), ('inf', 19924.00, 11.80)),
|
( 673, 5.77, 2.00),
|
||||||
'monthly': ((1667, 0.00, 1.50), (2917, 25.00, 2.00), (3333, 50.00, 3.90), (6250, 66.00, 6.10), (41667, 244.00, 7.00), (416667, 2723.00, 9.90), ('inf', 39848.00, 11.80)),
|
( 769, 11.54, 3.90),
|
||||||
'quarterly': ((5000, 0.00, 1.50), (8750, 75.00, 2.00), (10000, 150.00, 3.90), (18750, 198.75, 6.10), (125000, 732.50, 7.00), (1250000, 8170.00, 9.90), ('inf', 119545.00, 11.80)),
|
( 1442, 15.29, 6.10),
|
||||||
'semi-annual': ((10000, 0.00, 1.50), (17500, 150.00, 2.00), (20000, 300.00, 3.90), (37500, 397.50, 6.10), (250000, 1465.00, 7.00), (2500000, 16340.00, 9.90), ('inf', 239090.00, 11.80)),
|
( 9615, 56.34, 7.00),
|
||||||
'annual': ((20000, 0.0, 1.50), (35000, 300.00, 2.00), (40000, 600.00, 3.90), (75000, 795.00, 6.10), (500000, 2930.00, 7.00), (5000000, 32680.00, 9.90), ('inf', 478180.00, 11.80)),
|
(96154, 628.46, 9.90),
|
||||||
|
('inf', 9195.77, 11.80),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 769, 0.00, 1.50),
|
||||||
|
( 1346, 12.00, 2.00),
|
||||||
|
( 1538, 23.00, 3.90),
|
||||||
|
( 2885, 31.00, 6.10),
|
||||||
|
( 19231, 113.00, 7.00),
|
||||||
|
(192308, 1257.00, 9.90),
|
||||||
|
( 'inf', 18392.00, 11.80),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 833, 0.00, 1.50),
|
||||||
|
( 1458, 13.00, 2.00),
|
||||||
|
( 1667, 25.00, 3.90),
|
||||||
|
( 3125, 33.00, 6.10),
|
||||||
|
( 20833, 122.00, 7.00),
|
||||||
|
(208333, 1362.00, 9.90),
|
||||||
|
( 'inf', 19924.00, 11.80),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1667, 0.00, 1.50),
|
||||||
|
( 2917, 25.00, 2.00),
|
||||||
|
( 3333, 50.00, 3.90),
|
||||||
|
( 6250, 66.00, 6.10),
|
||||||
|
( 41667, 244.00, 7.00),
|
||||||
|
(416667, 2723.00, 9.90),
|
||||||
|
( 'inf', 39848.00, 11.80),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 5000, 0.00, 1.50),
|
||||||
|
( 8750, 75.00, 2.00),
|
||||||
|
( 10000, 150.00, 3.90),
|
||||||
|
( 18750, 198.75, 6.10),
|
||||||
|
( 125000, 732.50, 7.00),
|
||||||
|
(1250000, 8170.00, 9.90),
|
||||||
|
( 'inf', 119545.00, 11.80),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 10000, 0.00, 1.50),
|
||||||
|
( 17500, 150.00, 2.00),
|
||||||
|
( 20000, 300.00, 3.90),
|
||||||
|
( 37500, 397.50, 6.10),
|
||||||
|
( 250000, 1465.00, 7.00),
|
||||||
|
(2500000, 16340.00, 9.90),
|
||||||
|
( 'inf', 239090.00, 11.80),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 20000, 0.00, 1.50),
|
||||||
|
( 35000, 300.00, 2.00),
|
||||||
|
( 40000, 600.00, 3.90),
|
||||||
|
( 75000, 795.00, 6.10),
|
||||||
|
( 500000, 2930.00, 7.00),
|
||||||
|
(5000000, 32680.00, 9.90),
|
||||||
|
( 'inf', 478180.00, 11.80),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'B': {
|
'B': {
|
||||||
'weekly': ((385, 0.0, 1.50), (962, 5.77, 2.00), (1346, 17.31, 2.70), (1538, 27.69, 3.9), (2885, 35.19, 6.10), (9615, 117.31, 7.00), (96154, 588.46, 9.90), ('inf', 9155.77, 11.80)),
|
'weekly': (
|
||||||
'bi-weekly': ((769, 0.0, 1.50), (1923, 12.00, 2.00), (2692, 35.00, 2.70), (3076, 55.00, 3.9), (5769, 70.00, 6.10), (19231, 235.00, 700), (192308, 1177.00, 9.90), ('inf', 18312.00, 11.80)),
|
( 385, 0.00, 1.50),
|
||||||
'semi-monthly': ((833, 0.0, 1.50), (2083, 12.50, 2.00), (2917, 37.50, 2.70), (3333, 59.99, 3.9), (6250, 76.25, 6.10), (20833, 254.19, 7.00), (208333, 1275.00, 9.90), ('inf', 19838.00, 11.80)),
|
( 962, 5.77, 2.00),
|
||||||
'monthly': ((1667, 0.0, 1.50), (4167, 25.00, 2.00), (5833, 75.00, 2.70), (6667, 120.00, 3.9), (12500, 153.00, 6.10), (41667, 508.00, 7.00), (416667, 2550.00, 9.90), ('inf', 39675.00, 11.80)),
|
( 1346, 17.31, 2.70),
|
||||||
'quarterly': ((5000, 0.0, 1.50), (12500, 75.00, 2.00), (17500, 225.00, 2.70), (20000, 360.00, 3.9), (37500, 397.50, 6.10), (125000, 1525.00, 7.00), (1250000, 7650.00, 9.90), ('inf', 119025.00, 11.80)),
|
( 1538, 27.69, 3.90),
|
||||||
'semi-annual': ((10000, 0.0, 1.50), (25000, 150.00, 2.00), (35000, 450.00, 2.70), (40000, 720.00, 3.9), (75000, 915.00, 6.10), (250000, 3050.00, 7.00), (2500000, 15300.00, 9.90), ('inf', 238050.00, 11.80)),
|
( 2885, 35.19, 6.10),
|
||||||
'annual': ((20000, 0.0, 1.50), (50000, 300.00, 2.00), (70000, 900.00, 2.70), (80000, 1440.00, 3.9), (150000, 1830.00, 6.10), (500000, 6100.00, 7.00), (5000000, 30600.00, 9.90), ('inf', 476100.00, 11.80)),
|
( 9615, 117.31, 7.00),
|
||||||
|
(96154, 588.46, 9.90),
|
||||||
|
('inf', 9155.77, 11.80),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 769, 0.00, 1.50),
|
||||||
|
( 1923, 12.00, 2.00),
|
||||||
|
( 2692, 35.00, 2.70),
|
||||||
|
( 3076, 55.00, 3.90),
|
||||||
|
( 5769, 70.00, 6.10),
|
||||||
|
( 19231, 235.00, 7.00),
|
||||||
|
(192308, 1177.00, 9.90),
|
||||||
|
( 'inf', 18312.00, 11.80),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 833, 0.00, 1.50),
|
||||||
|
( 2083, 12.50, 2.00),
|
||||||
|
( 2917, 37.50, 2.70),
|
||||||
|
( 3333, 59.99, 3.90),
|
||||||
|
( 6250, 76.25, 6.10),
|
||||||
|
( 20833, 254.19, 7.00),
|
||||||
|
(208333, 1275.00, 9.90),
|
||||||
|
( 'inf', 19838.00, 11.80),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1667, 0.00, 1.50),
|
||||||
|
( 4167, 25.00, 2.00),
|
||||||
|
( 5833, 75.00, 2.70),
|
||||||
|
( 6667, 120.00, 3.90),
|
||||||
|
( 12500, 153.00, 6.10),
|
||||||
|
( 41667, 508.00, 7.00),
|
||||||
|
(416667, 2550.00, 9.90),
|
||||||
|
( 'inf', 39675.00, 11.80),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 5000, 0.00, 1.50),
|
||||||
|
( 12500, 75.00, 2.00),
|
||||||
|
( 17500, 225.00, 2.70),
|
||||||
|
( 20000, 360.00, 3.90),
|
||||||
|
( 37500, 397.50, 6.10),
|
||||||
|
( 125000, 1525.00, 7.00),
|
||||||
|
(1250000, 7650.00, 9.90),
|
||||||
|
( 'inf', 119025.00, 11.80),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 10000, 0.00, 1.50),
|
||||||
|
( 25000, 150.00, 2.00),
|
||||||
|
( 35000, 450.00, 2.70),
|
||||||
|
( 40000, 720.00, 3.90),
|
||||||
|
( 75000, 915.00, 6.10),
|
||||||
|
( 250000, 3050.00, 7.00),
|
||||||
|
(2500000, 15300.00, 9.90),
|
||||||
|
( 'inf', 238050.00, 11.80),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 20000, 0.00, 1.50),
|
||||||
|
( 50000, 300.00, 2.00),
|
||||||
|
( 70000, 900.00, 2.70),
|
||||||
|
(80000, 1440.00, 3.90),
|
||||||
|
( 150000, 1830.00, 6.10),
|
||||||
|
( 500000, 6100.00, 7.00),
|
||||||
|
(5000000, 30600.00, 9.90),
|
||||||
|
( 'inf', 476100.00, 11.80),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'C': {
|
'C': {
|
||||||
'weekly': ((385, 0.0, 1.50), (769, 5.77, 2.30), (962, 14.62, 2.80), (1154, 20.00, 3.50), (2885, 26.73, 5.60), (9615, 123.65, 6.60), (96154, 567.88, 9.90), ('inf', 9135.19, 11.80)),
|
'weekly': (
|
||||||
'bi-weekly': ((769, 0.0, 1.50), (1538, 11.54, 2.30), (1923, 29.23, 2.80), (2308, 40.00, 3.50), (5769, 53.46, 5.60), (19231, 247.31, 6.60), (192308, 1135.77, 9.90), ('inf', 18270.38, 11.80)),
|
( 385, 0.00, 1.50),
|
||||||
'semi-monthly': ((833, 0.0, 1.50), (1667, 12.50, 2.30), (2083, 31.67, 2.80), (2500, 43.33, 3.50), (6250, 57.92, 5.60), (20833, 267.92, 6.60), (208333, 1230.42, 9.90), ('inf', 19792.92, 11.80)),
|
( 769, 5.77, 2.30),
|
||||||
'monthly': ((1667, 0.0, 1.50), (3333, 25.00, 2.30), (4167, 63.33, 2.80), (5000, 86.67, 3.50), (12500, 115.83, 5.60), (41667, 535.85, 6.60), (416667, 2460.83, 9.90), ('inf', 39585.83, 11.80)),
|
( 962, 14.62, 2.80),
|
||||||
'quarterly': ((5000, 0.0, 1.50), (10000, 75.00, 2.30), (12500, 190.00, 2.80), (15000, 260.00, 3.50), (37500, 347.50, 5.60), (125000, 1607.50, 6.60), (1250000, 7382.50, 9.90), ('inf', 118757.50, 11.80)),
|
( 1154, 20.00, 3.50),
|
||||||
'semi-annual': ((10000, 0.0, 1.50), (20000, 150.00, 2.30), (25000, 380.00, 2.80), (30000, 520.00, 3.50), (75000, 695.00, 5.60), (250000, 3215.00, 6.60), (2500000, 14765.00, 9.90), ('inf', 237515.00, 11.80)),
|
( 2885, 26.73, 5.60),
|
||||||
'annual': ((20000, 0.0, 1.50), (40000, 300.00, 2.30), (50000, 760.00, 2.80), (60000, 1040.00, 3.50), (150000, 1390.00, 5.60), (500000, 6430.00, 6.60), (5000000, 29530.00, 9.90), ('inf', 475030.00, 11.80)),
|
( 9615, 123.65, 6.60),
|
||||||
|
(96154, 567.88, 9.90),
|
||||||
|
('inf', 9135.19, 11.80),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 769, 0.00, 1.50),
|
||||||
|
( 1538, 11.54, 2.30),
|
||||||
|
( 1923, 29.23, 2.80),
|
||||||
|
( 2308, 40.00, 3.50),
|
||||||
|
( 5769, 53.46, 5.60),
|
||||||
|
( 19231, 247.31, 6.60),
|
||||||
|
(192308, 1135.77, 9.90),
|
||||||
|
( 'inf', 18270.38, 11.80),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 833, 0.00, 1.50),
|
||||||
|
( 1667, 12.50, 2.30),
|
||||||
|
( 2083, 31.67, 2.80),
|
||||||
|
( 2500, 43.33, 3.50),
|
||||||
|
( 6250, 57.92, 5.60),
|
||||||
|
( 20833, 267.92, 6.60),
|
||||||
|
(208333, 1230.42, 9.90),
|
||||||
|
( 'inf', 19792.92, 11.80),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1667, 0.00, 1.50),
|
||||||
|
( 3333, 25.00, 2.30),
|
||||||
|
( 4167, 63.33, 2.80),
|
||||||
|
( 5000, 86.67, 3.50),
|
||||||
|
( 12500, 115.83, 5.60),
|
||||||
|
( 41667, 535.85, 6.60),
|
||||||
|
(416667, 2460.83, 9.90),
|
||||||
|
( 'inf', 39585.83, 11.80),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 5000, 0.00, 1.50),
|
||||||
|
( 10000, 75.00, 2.30),
|
||||||
|
( 12500, 190.00, 2.80),
|
||||||
|
( 15000, 260.00, 3.50),
|
||||||
|
( 37500, 347.50, 5.60),
|
||||||
|
( 125000, 1607.50, 6.60),
|
||||||
|
(1250000, 7382.50, 9.90),
|
||||||
|
( 'inf', 118757.50, 11.80),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 10000, 0.00, 1.50),
|
||||||
|
( 20000, 150.00, 2.30),
|
||||||
|
( 25000, 380.00, 2.80),
|
||||||
|
( 30000, 520.00, 3.50),
|
||||||
|
( 75000, 695.00, 5.60),
|
||||||
|
( 250000, 3215.00, 6.60),
|
||||||
|
(2500000, 14765.00, 9.90),
|
||||||
|
( 'inf', 237515.00, 11.80),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 20000, 0.00, 1.50),
|
||||||
|
( 40000, 300.00, 2.30),
|
||||||
|
( 50000, 760.00, 2.80),
|
||||||
|
( 60000, 1040.00, 3.50),
|
||||||
|
( 150000, 1390.00, 5.60),
|
||||||
|
( 500000, 6430.00, 6.60),
|
||||||
|
(5000000, 29530.00, 9.90),
|
||||||
|
( 'inf', 475030.00, 11.80),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'D': {
|
'D': {
|
||||||
'weekly': ((385, 0.0, 1.50), (769, 5.77, 2.70), (962, 16.15, 3.40), (1154, 22.69, 4.30), (2885, 30.96, 5.60), (9615, 127.88, 6.50), (96154, 565.38, 9.90), ('inf', 9132.69, 11.80)),
|
'weekly': (
|
||||||
'bi-weekly': ((769, 0.0, 1.50), (1538, 11.54, 2.70), (1923, 32.31, 3.40), (2308, 45.38, 4.30), (5769, 61.92, 5.60), (19231, 255.77, 6.50), (192308, 1130.77, 9.90), ('inf', 18265.38, 11.80)),
|
( 385, 0.00, 1.50),
|
||||||
'semi-monthly': ((833, 0.0, 1.50), (1667, 12.50, 2.70), (2083, 35.00, 3.40), (2500, 49.17, 4.30), (6250, 67.08, 5.60), (20833, 277.08, 6.50), (208333, 1225.00, 9.90), ('inf', 19787.50, 11.80)),
|
( 769, 5.77, 2.70),
|
||||||
'monthly': ((1667, 0.0, 1.50), (3333, 25.00, 2.70), (4167, 70.00, 3.40), (5000, 98.33, 4.00), (12500, 134.17, 5.60), (41667, 554.17, 6.50), (416667, 2450.00, 9.90), ('inf', 39575.00, 11.80)),
|
( 962, 16.15, 3.40),
|
||||||
'quarterly': ((5000, 0.0, 1.50), (10000, 75.00, 2.07), (12500, 210.00, 3.40), (15000, 295.00, 4.30), (37500, 402.50, 5.60), (125000, 1662.50, 6.50), (1250000, 7350.00, 9.90), ('inf', 118725.00, 11.80)),
|
( 1154, 22.69, 4.30),
|
||||||
'semi-annual': ((10000, 0.0, 1.50), (20000, 150.00, 2.70), (25000, 420.00, 3.40), (30000, 590.00, 4.30), (75000, 805.00, 5.60), (250000, 3325.00, 6.50), (2500000, 14700.00, 9.90), ('inf', 237450.00, 11.80)),
|
( 2885, 30.96, 5.60),
|
||||||
'annual': ((20000, 0.0, 1.50), (40000, 300.00, 2.70), (50000, 840.00, 3.40), (60000, 1180.00, 4.30), (150000, 1610.00, 5.60), (250000, 6650.00, 6.50), (2500000, 29400.00, 9.90), ('inf', 474900.00, 11.80)),
|
( 9615, 127.88, 6.50),
|
||||||
|
( 96154, 565.38, 9.90),
|
||||||
|
( 'inf', 9132.69, 11.80),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 769, 0.00, 1.50),
|
||||||
|
( 1538, 11.54, 2.70),
|
||||||
|
( 1923, 32.31, 3.40),
|
||||||
|
( 2308, 45.38, 4.30),
|
||||||
|
( 5769, 61.92, 5.60),
|
||||||
|
( 19231, 255.77, 6.50),
|
||||||
|
(192308, 1130.77, 9.90),
|
||||||
|
( 'inf', 18265.38, 11.80),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 833, 0.00, 1.50),
|
||||||
|
( 1667, 12.50, 2.70),
|
||||||
|
( 2083, 35.00, 3.40),
|
||||||
|
( 2500, 49.17, 4.30),
|
||||||
|
( 6250, 67.08, 5.60),
|
||||||
|
( 20833, 277.08, 6.50),
|
||||||
|
(208333, 1225.00, 9.90),
|
||||||
|
( 'inf', 19787.50, 11.80),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1667, 0.00, 1.50),
|
||||||
|
( 3333, 25.00, 2.70),
|
||||||
|
( 4167, 70.00, 3.40),
|
||||||
|
( 5000, 98.33, 4.00),
|
||||||
|
( 12500, 134.17, 5.60),
|
||||||
|
( 41667, 554.17, 6.50),
|
||||||
|
(416667, 2450.00, 9.90),
|
||||||
|
( 'inf', 39575.00, 11.80),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 5000, 0.00, 1.50),
|
||||||
|
( 10000, 75.00, 2.07),
|
||||||
|
( 12500, 210.00, 3.40),
|
||||||
|
( 15000, 295.00, 4.30),
|
||||||
|
( 37500, 402.50, 5.60),
|
||||||
|
( 125000, 1662.50, 6.50),
|
||||||
|
(1250000, 7350.00, 9.90),
|
||||||
|
( 'inf', 118725.00, 11.80),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 10000, 0.00, 1.50),
|
||||||
|
( 20000, 150.00, 2.70),
|
||||||
|
( 25000, 420.00, 3.40),
|
||||||
|
( 30000, 590.00, 4.30),
|
||||||
|
( 75000, 805.00, 5.60),
|
||||||
|
( 250000, 3325.00, 6.50),
|
||||||
|
(2500000, 14700.00, 9.90),
|
||||||
|
( 'inf', 237450.00, 11.80),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 20000, 0.00, 1.50),
|
||||||
|
( 40000, 300.00, 2.70),
|
||||||
|
( 50000, 840.00, 3.40),
|
||||||
|
( 60000, 1180.00, 4.30),
|
||||||
|
( 150000, 1610.00, 5.60),
|
||||||
|
( 250000, 6650.00, 6.50),
|
||||||
|
(2500000, 29400.00, 9.90),
|
||||||
|
( 'inf', 474900.00, 11.80),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'E': {
|
'E': {
|
||||||
'weekly': ((385, 0.0, 1.50), (673, 5.77, 2.00), (1923, 11.54, 5.80), (9615, 84.04, 6.50), (96154, 584.04, 9.90), ('inf', 9151.35, 11.80)),
|
'weekly': (
|
||||||
'bi-weekly': ((769, 0.0, 1.50), (1346, 12.00, 2.00), (3846, 23.00, 5.80), (19231, 168.00, 6.50), (192308, 1168.00, 9.90), ('inf', 18303.00, 11.80)),
|
( 385, 0.00, 1.50),
|
||||||
'semi-monthly': ((833, 0.0, 1.50), (1458, 13.00, 2.00), (4167, 25.00, 5.80), (20833, 182.00, 6.50), (208333, 1265.00, 9.90), ('inf', 19828.00, 11.80)),
|
( 673, 5.77, 2.00),
|
||||||
'monthly': ((1667, 0.0, 1.50), (2916, 25.00, 2.00), (8333, 50.00, 5.80), (41667, 364.00, 6.50), (416667, 2531.00, 9.90), ('inf', 39656, 11.80)),
|
( 1923, 11.54, 5.80),
|
||||||
'quarterly': ((5000, 0.0, 1.50), (8750, 75.00, 2.00), (25000, 150.00, 5.80), (125000, 1092.50, 6.50), (1250000, 7592.50, 9.90), ('inf', 118967.50, 11.80)),
|
( 9615, 84.04, 6.50),
|
||||||
'semi-annual': ((10000, 0.0, 1.50), (17500, 150.00, 2.00), (50000, 300.00, 5.80), (250000, 2185.00, 6.50), (2500000, 15185.00, 9.90), ('inf', 237935.00, 11.80)),
|
( 96154, 584.04, 9.90),
|
||||||
'annual': ((20000, 0.0, 1.50), (35000, 300.00, 2.00), (100000, 600.00, 5.80), (500000, 4370.00, 6.50), (5000000, 30370.00, 9.90), ('inf', 475870.00, 11.80)),
|
( 'inf', 9151.35, 11.80),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 769, 0.00, 1.50),
|
||||||
|
( 1346, 12.00, 2.00),
|
||||||
|
( 3846, 23.00, 5.80),
|
||||||
|
( 19231, 168.00, 6.50),
|
||||||
|
(192308, 1168.00, 9.90),
|
||||||
|
( 'inf', 18303.00, 11.80),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 833, 0.00, 1.50),
|
||||||
|
( 1458, 13.00, 2.00),
|
||||||
|
( 4167, 25.00, 5.80),
|
||||||
|
( 20833, 182.00, 6.50),
|
||||||
|
(208333, 1265.00, 9.90),
|
||||||
|
( 'inf', 19828.00, 11.80),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1667, 0.00, 1.50),
|
||||||
|
( 2916, 25.00, 2.00),
|
||||||
|
( 8333, 50.00, 5.80),
|
||||||
|
( 41667, 364.00, 6.50),
|
||||||
|
(416667, 2531.00, 9.90),
|
||||||
|
( 'inf', 39656.00, 11.80),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 5000, 0.00, 1.50),
|
||||||
|
( 8750, 75.00, 2.00),
|
||||||
|
( 25000, 150.00, 5.80),
|
||||||
|
( 125000, 1092.50, 6.50),
|
||||||
|
(1250000, 7592.50, 9.90),
|
||||||
|
( 'inf', 118967.50, 11.80),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 10000, 0.00, 1.50),
|
||||||
|
( 17500, 150.00, 2.00),
|
||||||
|
( 50000, 300.00, 5.80),
|
||||||
|
( 250000, 2185.00, 6.50),
|
||||||
|
(2500000, 15185.00, 9.90),
|
||||||
|
( 'inf', 237935.00, 11.80),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 20000, 0.00, 1.50),
|
||||||
|
( 35000, 300.00, 2.00),
|
||||||
|
( 100000, 600.00, 5.80),
|
||||||
|
( 500000, 4370.00, 6.50),
|
||||||
|
(5000000, 30370.00, 9.90),
|
||||||
|
( 'inf', 475870.00, 11.80),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- Table from Percentage Method Calculations https://www.state.nj.us/treasury/taxation/pdf/current/njwt.pdf -->
|
||||||
<record id="rule_parameter_us_nj_sit_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_nj_sit_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US NJ NewJersey SIT Rate Table</field>
|
<field name="name">US NJ NewJersey SIT Rate Table</field>
|
||||||
<field name="code">us_nj_sit_rate</field>
|
<field name="code">us_nj_sit_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'A': {
|
'A': {
|
||||||
'weekly': ((385, 0.0, 1.50), (673, 5.77, 2.00), (769, 11.54, 3.90), (1442, 15.29, 6.10), (9615, 56.34, 7.00), (96154, 628.46, 9.90), ('inf', 9195.77, 11.80)),
|
'weekly': (
|
||||||
'bi-weekly': ((769, 0.00, 1.50), (1346, 12.00, 2.00), (1538, 23.00, 3.90), (2885, 31.00, 6.10), (19231, 113.00, 7.00), (192308, 1257.00, 9.90), ('inf',18392.00, 11.80)),
|
( 385, 0.00, 1.50),
|
||||||
'semi-monthly': ((833, 0.00, 1.50), (1458, 13.00, 2.00), (1667, 25.00, 3.90), (3125, 33.00, 6.10), (20833, 122.00, 57.00), (208333, 1362.00, 9.90), ('inf', 19924.00, 11.80)),
|
( 673, 5.77, 2.00),
|
||||||
'monthly': ((1667, 0.00, 1.50), (2917, 25.00, 2.00), (3333, 50.00, 3.90), (6250, 66.00, 6.10), (41667, 244.00, 57.00), (416667, 2723.00, 9.90), ('inf', 39848.00, 11.80)),
|
( 769, 11.54, 3.90),
|
||||||
'quarterly': ((5000, 0.00, 1.50), (8750, 75.00, 2.00), (10000, 150.00, 3.90), (18750, 198.75, 6.10), (125000, 732.50, 57.00), (1250000, 8170.00, 9.90), ('inf', 119545.00, 11.80)),
|
( 1442, 15.29, 6.10),
|
||||||
'semi-annual': ((10000, 0.00, 1.50), (17500, 150.00, 2.00), (20000, 300.00, 3.90), (37500, 397.50, 6.10), (250000, 1465.00, 57.00), (2500000, 16340.00, 9.90), ('inf', 239090.00, 11.80)),
|
( 9615, 56.34, 7.00),
|
||||||
'annual': ((20000, 0.0, 1.50), (35000, 300.00, 2.00), (40000, 600.00, 3.90), (75000, 795.00, 6.10), (500000, 2930.00, 57.00), (5000000, 32680.00, 9.90), ('inf', 478180.00, 11.80)),
|
(96154, 628.46, 9.90),
|
||||||
|
('inf', 9195.77, 11.80),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 769, 0.00, 1.50),
|
||||||
|
( 1346, 12.00, 2.00),
|
||||||
|
( 1538, 23.00, 3.90),
|
||||||
|
( 2885, 31.00, 6.10),
|
||||||
|
( 19231, 113.00, 7.00),
|
||||||
|
(192308, 1257.00, 9.90),
|
||||||
|
( 'inf', 18392.00, 11.80),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 833, 0.00, 1.50),
|
||||||
|
( 1458, 13.00, 2.00),
|
||||||
|
( 1667, 25.00, 3.90),
|
||||||
|
( 3125, 33.00, 6.10),
|
||||||
|
( 20833, 122.00, 7.00),
|
||||||
|
(208333, 1362.00, 9.90),
|
||||||
|
( 'inf', 19924.00, 11.80),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1667, 0.00, 1.50),
|
||||||
|
( 2917, 25.00, 2.00),
|
||||||
|
( 3333, 50.00, 3.90),
|
||||||
|
( 6250, 66.00, 6.10),
|
||||||
|
( 41667, 244.00, 7.00),
|
||||||
|
(416667, 2723.00, 9.90),
|
||||||
|
( 'inf', 39848.00, 11.80),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 5000, 0.00, 1.50),
|
||||||
|
( 8750, 75.00, 2.00),
|
||||||
|
( 10000, 150.00, 3.90),
|
||||||
|
( 18750, 198.75, 6.10),
|
||||||
|
( 125000, 732.50, 7.00),
|
||||||
|
(1250000, 8170.00, 9.90),
|
||||||
|
( 'inf', 119545.00, 11.80),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 10000, 0.00, 1.50),
|
||||||
|
( 17500, 150.00, 2.00),
|
||||||
|
( 20000, 300.00, 3.90),
|
||||||
|
( 37500, 397.50, 6.10),
|
||||||
|
( 250000, 1465.00, 7.00),
|
||||||
|
(2500000, 16340.00, 9.90),
|
||||||
|
( 'inf', 239090.00, 11.80),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 20000, 0.00, 1.50),
|
||||||
|
( 35000, 300.00, 2.00),
|
||||||
|
( 40000, 600.00, 3.90),
|
||||||
|
( 75000, 795.00, 6.10),
|
||||||
|
( 500000, 2930.00, 7.00),
|
||||||
|
(5000000, 32680.00, 9.90),
|
||||||
|
( 'inf', 478180.00, 11.80),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'B': {
|
'B': {
|
||||||
'weekly': ((385, 0.0, 1.50), (962, 5.77, 2.00), (1346, 17.31, 2.70), (1538, 27.69, 3.9), (2885, 35.19, 6.10), (9615, 117.31, 7.00), (96154, 588.46, 9.90), ('inf', 9155.77, 11.80)),
|
'weekly': (
|
||||||
'bi-weekly': ((769, 0.0, 1.50), (1923, 12.00, 2.00), (2692, 35.00, 2.70), (3076, 55.00, 3.9), (5769, 70.00, 6.10), (19231, 235.00, 700), (192308, 1177.00, 9.90), ('inf', 18312.00, 11.80)),
|
( 385, 0.00, 1.50),
|
||||||
'semi-monthly': ((833, 0.0, 1.50), (2083, 12.50, 2.00), (2917, 37.50, 2.70), (3333, 59.99, 3.9), (6250, 76.25, 6.10), (20833, 254.19, 7.00), (208333, 1275.00, 9.90), ('inf', 19838.00, 11.80)),
|
( 962, 5.77, 2.00),
|
||||||
'monthly': ((1667, 0.0, 1.50), (4167, 25.00, 2.00), (5833, 75.00, 2.70), (6667, 120.00, 3.9), (12500, 153.00, 6.10), (41667, 508.00, 7.00), (416667, 2550.00, 9.90), ('inf', 39675.00, 11.80)),
|
( 1346, 17.31, 2.70),
|
||||||
'quarterly': ((5000, 0.0, 1.50), (12500, 75.00, 2.00), (17500, 225.00, 2.70), (20000, 360.00, 3.9), (37500, 397.50, 6.10), (125000, 1525.00, 7.00), (1250000, 7650.00, 9.90), ('inf', 119025.00, 11.80)),
|
( 1538, 27.69, 3.90),
|
||||||
'semi-annual': ((10000, 0.0, 1.50), (25000, 150.00, 2.00), (35000, 450.00, 2.70), (40000, 720.00, 3.9), (75000, 915.00, 6.10), (250000, 3050.00, 7.00), (2500000, 15300.00, 9.90), ('inf', 238050.00, 11.80)),
|
( 2885, 35.19, 6.10),
|
||||||
'annual': ((20000, 0.0, 1.50), (50000, 300.00, 2.00), (70000, 900.00, 2.70), (80000, 1440.00, 3.9), (150000, 1830.00, 6.10), (500000, 6100.00, 7.00), (5000000, 30600.00, 9.90), ('inf', 476100.00, 11.80)),
|
( 9615, 117.31, 7.00),
|
||||||
|
(96154, 588.46, 9.90),
|
||||||
|
('inf', 9155.77, 11.80),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 769, 0.00, 1.50),
|
||||||
|
( 1923, 12.00, 2.00),
|
||||||
|
( 2692, 35.00, 2.70),
|
||||||
|
( 3076, 55.00, 3.90),
|
||||||
|
( 5769, 70.00, 6.10),
|
||||||
|
( 19231, 235.00, 7.00),
|
||||||
|
(192308, 1177.00, 9.90),
|
||||||
|
( 'inf', 18312.00, 11.80),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 833, 0.00, 1.50),
|
||||||
|
( 2083, 12.50, 2.00),
|
||||||
|
( 2917, 37.50, 2.70),
|
||||||
|
( 3333, 59.99, 3.90),
|
||||||
|
( 6250, 76.25, 6.10),
|
||||||
|
( 20833, 254.19, 7.00),
|
||||||
|
(208333, 1275.00, 9.90),
|
||||||
|
( 'inf', 19838.00, 11.80),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1667, 0.00, 1.50),
|
||||||
|
( 4167, 25.00, 2.00),
|
||||||
|
( 5833, 75.00, 2.70),
|
||||||
|
( 6667, 120.00, 3.90),
|
||||||
|
( 12500, 153.00, 6.10),
|
||||||
|
( 41667, 508.00, 7.00),
|
||||||
|
(416667, 2550.00, 9.90),
|
||||||
|
( 'inf', 39675.00, 11.80),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 5000, 0.00, 1.50),
|
||||||
|
( 12500, 75.00, 2.00),
|
||||||
|
( 17500, 225.00, 2.70),
|
||||||
|
( 20000, 360.00, 3.90),
|
||||||
|
( 37500, 397.50, 6.10),
|
||||||
|
( 125000, 1525.00, 7.00),
|
||||||
|
(1250000, 7650.00, 9.90),
|
||||||
|
( 'inf', 119025.00, 11.80),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 10000, 0.00, 1.50),
|
||||||
|
( 25000, 150.00, 2.00),
|
||||||
|
( 35000, 450.00, 2.70),
|
||||||
|
( 40000, 720.00, 3.90),
|
||||||
|
( 75000, 915.00, 6.10),
|
||||||
|
( 250000, 3050.00, 7.00),
|
||||||
|
(2500000, 15300.00, 9.90),
|
||||||
|
( 'inf', 238050.00, 11.80),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 20000, 0.00, 1.50),
|
||||||
|
( 50000, 300.00, 2.00),
|
||||||
|
( 70000, 900.00, 2.70),
|
||||||
|
(80000, 1440.00, 3.90),
|
||||||
|
( 150000, 1830.00, 6.10),
|
||||||
|
( 500000, 6100.00, 7.00),
|
||||||
|
(5000000, 30600.00, 9.90),
|
||||||
|
( 'inf', 476100.00, 11.80),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'C': {
|
'C': {
|
||||||
'weekly': ((385, 0.0, 1.50), (769, 5.77, 2.30), (962, 14.62, 2.80), (1154, 20.00, 3.50), (2885, 26.73, 5.60), (9615, 123.65, 6.60), (96154, 567.88, 9.90), ('inf', 9135.19, 11.80)),
|
'weekly': (
|
||||||
'bi-weekly': ((769, 0.0, 1.50), (1538, 11.54, 2.30), (1923, 29.23, 2.80), (2308, 40.00, 3.50), (5769, 53.46, 5.60), (19231, 247.31, 6.60), (192308, 1135.77, 9.90), ('inf', 18270.38, 11.80)),
|
( 385, 0.00, 1.50),
|
||||||
'semi-monthly': ((833, 0.0, 1.50), (1667, 12.50, 2.30), (2083, 31.67, 2.80), (2500, 43.33, 3.50), (6250, 57.92, 5.60), (20833, 267.92, 6.60), (208333, 1230.42, 9.90), ('inf', 19792.92, 11.80)),
|
( 769, 5.77, 2.30),
|
||||||
'monthly': ((1667, 0.0, 1.50), (3333, 25.00, 2.30), (4167, 63.33, 2.80), (5000, 86.67, 3.50), (12500, 115.83, 5.60), (41667, 535.85, 6.60), (416667, 2460.83, 9.90), ('inf', 39585.83, 11.80)),
|
( 962, 14.62, 2.80),
|
||||||
'quarterly': ((5000, 0.0, 1.50), (10000, 75.00, 2.30), (12500, 190.00, 2.80), (15000, 260.00, 3.50), (37500, 347.50, 5.60), (125000, 1607.50, 6.60), (1250000, 7382.50, 9.90), ('inf', 118757.50, 11.80)),
|
( 1154, 20.00, 3.50),
|
||||||
'semi-annual': ((10000, 0.0, 1.50), (20000, 150.00, 2.30), (25000, 380.00, 2.80), (30000, 520.00, 3.50), (75000, 695.00, 5.60), (250000, 3215.00, 6.60), (2500000, 14765.00, 9.90), ('inf', 237515.00, 11.80)),
|
( 2885, 26.73, 5.60),
|
||||||
'annual': ((20000, 0.0, 1.50), (40000, 300.00, 2.30), (50000, 760.00, 2.80), (60000, 1040.00, 3.50), (150000, 1390.00, 5.60), (500000, 6430.00, 6.60), (5000000, 29530.00, 9.90), ('inf', 475030.00, 11.80)),
|
( 9615, 123.65, 6.60),
|
||||||
|
(96154, 567.88, 9.90),
|
||||||
|
('inf', 9135.19, 11.80),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 769, 0.00, 1.50),
|
||||||
|
( 1538, 11.54, 2.30),
|
||||||
|
( 1923, 29.23, 2.80),
|
||||||
|
( 2308, 40.00, 3.50),
|
||||||
|
( 5769, 53.46, 5.60),
|
||||||
|
( 19231, 247.31, 6.60),
|
||||||
|
(192308, 1135.77, 9.90),
|
||||||
|
( 'inf', 18270.38, 11.80),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 833, 0.00, 1.50),
|
||||||
|
( 1667, 12.50, 2.30),
|
||||||
|
( 2083, 31.67, 2.80),
|
||||||
|
( 2500, 43.33, 3.50),
|
||||||
|
( 6250, 57.92, 5.60),
|
||||||
|
( 20833, 267.92, 6.60),
|
||||||
|
(208333, 1230.42, 9.90),
|
||||||
|
( 'inf', 19792.92, 11.80),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1667, 0.00, 1.50),
|
||||||
|
( 3333, 25.00, 2.30),
|
||||||
|
( 4167, 63.33, 2.80),
|
||||||
|
( 5000, 86.67, 3.50),
|
||||||
|
( 12500, 115.83, 5.60),
|
||||||
|
( 41667, 535.85, 6.60),
|
||||||
|
(416667, 2460.83, 9.90),
|
||||||
|
( 'inf', 39585.83, 11.80),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 5000, 0.00, 1.50),
|
||||||
|
( 10000, 75.00, 2.30),
|
||||||
|
( 12500, 190.00, 2.80),
|
||||||
|
( 15000, 260.00, 3.50),
|
||||||
|
( 37500, 347.50, 5.60),
|
||||||
|
( 125000, 1607.50, 6.60),
|
||||||
|
(1250000, 7382.50, 9.90),
|
||||||
|
( 'inf', 118757.50, 11.80),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 10000, 0.00, 1.50),
|
||||||
|
( 20000, 150.00, 2.30),
|
||||||
|
( 25000, 380.00, 2.80),
|
||||||
|
( 30000, 520.00, 3.50),
|
||||||
|
( 75000, 695.00, 5.60),
|
||||||
|
( 250000, 3215.00, 6.60),
|
||||||
|
(2500000, 14765.00, 9.90),
|
||||||
|
( 'inf', 237515.00, 11.80),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 20000, 0.00, 1.50),
|
||||||
|
( 40000, 300.00, 2.30),
|
||||||
|
( 50000, 760.00, 2.80),
|
||||||
|
( 60000, 1040.00, 3.50),
|
||||||
|
( 150000, 1390.00, 5.60),
|
||||||
|
( 500000, 6430.00, 6.60),
|
||||||
|
(5000000, 29530.00, 9.90),
|
||||||
|
( 'inf', 475030.00, 11.80),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'D': {
|
'D': {
|
||||||
'weekly': ((385, 0.0, 1.50), (769, 5.77, 2.70), (962, 16.15, 3.40), (1154, 22.69, 4.30), (2885, 30.96, 5.60), (9615, 127.88, 6.50), (96154, 565.38, 9.90), ('inf', 9132.69, 11.80)),
|
'weekly': (
|
||||||
'bi-weekly': ((769, 0.0, 1.50), (1538, 11.54, 2.70), (1923, 32.31, 3.40), (2308, 45.38, 4.30), (5769, 61.92, 5.60), (19231, 255.77, 6.50), (192308, 1130.77, 9.90), ('inf', 18265.38, 11.80)),
|
( 385, 0.00, 1.50),
|
||||||
'semi-monthly': ((833, 0.0, 1.50), (1667, 12.50, 2.70), (2083, 35.00, 3.40), (2500, 49.17, 4.30), (6250, 67.08, 5.60), (20833, 277.08, 6.50), (208333, 1225.00, 9.90), ('inf', 19787.50, 11.80)),
|
( 769, 5.77, 2.70),
|
||||||
'monthly': ((1667, 0.0, 1.50), (3333, 25.00, 2.70), (4167, 70.00, 3.40), (5000, 98.33, 4.00), (12500, 134.17, 5.60), (41667, 554.17, 6.50), (416667, 2450.00, 9.90), ('inf', 39575.00, 11.80)),
|
( 962, 16.15, 3.40),
|
||||||
'quarterly': ((5000, 0.0, 1.50), (10000, 75.00, 2.07), (12500, 210.00, 3.40), (15000, 295.00, 4.30), (37500, 402.50, 5.60), (125000, 1662.50, 6.50), (1250000, 7350.00, 9.90), ('inf', 118725.00, 11.80)),
|
( 1154, 22.69, 4.30),
|
||||||
'semi-annual': ((10000, 0.0, 1.50), (20000, 150.00, 2.70), (25000, 420.00, 3.40), (30000, 590.00, 4.30), (75000, 805.00, 5.60), (250000, 3325.00, 6.50), (2500000, 14700.00, 9.90), ('inf', 237450.00, 11.80)),
|
( 2885, 30.96, 5.60),
|
||||||
'annual': ((20000, 0.0, 1.50), (40000, 300.00, 2.70), (50000, 840.00, 3.40), (60000, 1180.00, 4.30), (150000, 1610.00, 5.60), (250000, 6650.00, 6.50), (2500000, 29400.00, 9.90), ('inf', 474900.00, 11.80)),
|
( 9615, 127.88, 6.50),
|
||||||
|
( 96154, 565.38, 9.90),
|
||||||
|
( 'inf', 9132.69, 11.80),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 769, 0.00, 1.50),
|
||||||
|
( 1538, 11.54, 2.70),
|
||||||
|
( 1923, 32.31, 3.40),
|
||||||
|
( 2308, 45.38, 4.30),
|
||||||
|
( 5769, 61.92, 5.60),
|
||||||
|
( 19231, 255.77, 6.50),
|
||||||
|
(192308, 1130.77, 9.90),
|
||||||
|
( 'inf', 18265.38, 11.80),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 833, 0.00, 1.50),
|
||||||
|
( 1667, 12.50, 2.70),
|
||||||
|
( 2083, 35.00, 3.40),
|
||||||
|
( 2500, 49.17, 4.30),
|
||||||
|
( 6250, 67.08, 5.60),
|
||||||
|
( 20833, 277.08, 6.50),
|
||||||
|
(208333, 1225.00, 9.90),
|
||||||
|
( 'inf', 19787.50, 11.80),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1667, 0.00, 1.50),
|
||||||
|
( 3333, 25.00, 2.70),
|
||||||
|
( 4167, 70.00, 3.40),
|
||||||
|
( 5000, 98.33, 4.00),
|
||||||
|
( 12500, 134.17, 5.60),
|
||||||
|
( 41667, 554.17, 6.50),
|
||||||
|
(416667, 2450.00, 9.90),
|
||||||
|
( 'inf', 39575.00, 11.80),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 5000, 0.00, 1.50),
|
||||||
|
( 10000, 75.00, 2.07),
|
||||||
|
( 12500, 210.00, 3.40),
|
||||||
|
( 15000, 295.00, 4.30),
|
||||||
|
( 37500, 402.50, 5.60),
|
||||||
|
( 125000, 1662.50, 6.50),
|
||||||
|
(1250000, 7350.00, 9.90),
|
||||||
|
( 'inf', 118725.00, 11.80),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 10000, 0.00, 1.50),
|
||||||
|
( 20000, 150.00, 2.70),
|
||||||
|
( 25000, 420.00, 3.40),
|
||||||
|
( 30000, 590.00, 4.30),
|
||||||
|
( 75000, 805.00, 5.60),
|
||||||
|
( 250000, 3325.00, 6.50),
|
||||||
|
(2500000, 14700.00, 9.90),
|
||||||
|
( 'inf', 237450.00, 11.80),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 20000, 0.00, 1.50),
|
||||||
|
( 40000, 300.00, 2.70),
|
||||||
|
( 50000, 840.00, 3.40),
|
||||||
|
( 60000, 1180.00, 4.30),
|
||||||
|
( 150000, 1610.00, 5.60),
|
||||||
|
( 250000, 6650.00, 6.50),
|
||||||
|
(2500000, 29400.00, 9.90),
|
||||||
|
( 'inf', 474900.00, 11.80),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'E': {
|
'E': {
|
||||||
'weekly': ((385, 0.0, 1.50), (673, 5.77, 2.00), (1923, 11.54, 5.80), (9615, 84.04, 6.50), (96154, 584.04, 9.90), ('inf', 9151.35, 11.80)),
|
'weekly': (
|
||||||
'bi-weekly': ((769, 0.0, 1.50), (1346, 12.00, 2.00), (3846, 23.00, 5.80), (19231, 168.00, 6.50), (192308, 1168.00, 9.90), ('inf', 18303.00, 11.80)),
|
( 385, 0.00, 1.50),
|
||||||
'semi-monthly': ((833, 0.0, 1.50), (1458, 13.00, 2.00), (4167, 25.00, 5.80), (20833, 182.00, 6.50), (208333, 1265.00, 9.90), ('inf', 19828.00, 11.80)),
|
( 673, 5.77, 2.00),
|
||||||
'monthly': ((1667, 0.0, 1.50), (2916, 25.00, 2.00), (8333, 50.00, 5.80), (41667, 364.00, 6.50), (416667, 2531.00, 9.90), ('inf', 39656, 11.80)),
|
( 1923, 11.54, 5.80),
|
||||||
'quarterly': ((5000, 0.0, 1.50), (8750, 75.00, 2.00), (25000, 150.00, 5.80), (125000, 1092.50, 6.50), (1250000, 7592.50, 9.90), ('inf', 118967.50, 11.80)),
|
( 9615, 84.04, 6.50),
|
||||||
'semi-annual': ((10000, 0.0, 1.50), (17500, 150.00, 2.00), (50000, 300.00, 5.80), (250000, 2185.00, 6.50), (2500000, 15185.00, 9.90), ('inf', 237935.00, 11.80)),
|
( 96154, 584.04, 9.90),
|
||||||
'annual': ((20000, 0.0, 1.50), (35000, 300.00, 2.00), (100000, 600.00, 5.80), (500000, 4370.00, 6.50), (5000000, 30370.00, 9.90), ('inf', 475870.00, 11.80)),
|
( 'inf', 9151.35, 11.80),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 769, 0.00, 1.50),
|
||||||
|
( 1346, 12.00, 2.00),
|
||||||
|
( 3846, 23.00, 5.80),
|
||||||
|
( 19231, 168.00, 6.50),
|
||||||
|
(192308, 1168.00, 9.90),
|
||||||
|
( 'inf', 18303.00, 11.80),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 833, 0.00, 1.50),
|
||||||
|
( 1458, 13.00, 2.00),
|
||||||
|
( 4167, 25.00, 5.80),
|
||||||
|
( 20833, 182.00, 6.50),
|
||||||
|
(208333, 1265.00, 9.90),
|
||||||
|
( 'inf', 19828.00, 11.80),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1667, 0.00, 1.50),
|
||||||
|
( 2916, 25.00, 2.00),
|
||||||
|
( 8333, 50.00, 5.80),
|
||||||
|
( 41667, 364.00, 6.50),
|
||||||
|
(416667, 2531.00, 9.90),
|
||||||
|
( 'inf', 39656.00, 11.80),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 5000, 0.00, 1.50),
|
||||||
|
( 8750, 75.00, 2.00),
|
||||||
|
( 25000, 150.00, 5.80),
|
||||||
|
( 125000, 1092.50, 6.50),
|
||||||
|
(1250000, 7592.50, 9.90),
|
||||||
|
( 'inf', 118967.50, 11.80),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 10000, 0.00, 1.50),
|
||||||
|
( 17500, 150.00, 2.00),
|
||||||
|
( 50000, 300.00, 5.80),
|
||||||
|
( 250000, 2185.00, 6.50),
|
||||||
|
(2500000, 15185.00, 9.90),
|
||||||
|
( 'inf', 237935.00, 11.80),
|
||||||
|
),
|
||||||
|
'annual': (
|
||||||
|
( 20000, 0.00, 1.50),
|
||||||
|
( 35000, 300.00, 2.00),
|
||||||
|
( 100000, 600.00, 5.80),
|
||||||
|
( 500000, 4370.00, 6.50),
|
||||||
|
(5000000, 30370.00, 9.90),
|
||||||
|
( 'inf', 475870.00, 11.80),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
@@ -265,6 +854,7 @@
|
|||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
<!-- Allownce Value table https://www.state.nj.us/treasury/taxation/pdf/current/njwt.pdf -->
|
||||||
<record id="rule_parameter_us_nj_sit_allowance_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_nj_sit_allowance_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US NJ NewJersey SIT Allowance Rate</field>
|
<field name="name">US NJ NewJersey SIT Allowance Rate</field>
|
||||||
<field name="code">us_nj_sit_allowance_rate</field>
|
<field name="code">us_nj_sit_allowance_rate</field>
|
||||||
|
|||||||
@@ -21,37 +21,227 @@
|
|||||||
</data>
|
</data>
|
||||||
|
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
|
<!-- Table based on Percentage method from https://s3.amazonaws.com/realFile34821a95-73ca-43e7-b06d-fad20f5183fd/a9bf1098-533b-4a3d-806a-4bf6336af6e4?response-content-disposition=filename%3D%22FYI-104+-+New+Mexico+Withholding+Tax+-+Effective+January+1%2C+2020.pdf%22&response-content-type=application%2Fpdf&AWSAccessKeyId=AKIAJBI25DHBYGD7I7TA&Signature=OK0i%2F7YIRTdSEQHWAC2UY3ukZVI%3D&Expires=1597878297 -->
|
||||||
<record id="rule_parameter_us_nm_sit_tax_rate_2020" model="hr.payroll.rate">
|
<record id="rule_parameter_us_nm_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
<field name="name">US NM New Mexico SIT Tax Rate</field>
|
<field name="name">US NM New Mexico SIT Tax Rate</field>
|
||||||
<field name="code">us_nm_sit_tax_rate</field>
|
<field name="code">us_nm_sit_tax_rate</field>
|
||||||
<field name="parameter_value">{
|
<field name="parameter_value">{
|
||||||
'single': {
|
'single': {
|
||||||
'weekly': ((119, 0.00, 0.0), (225, 0.00, 1.7), (331, 1.80, 3.2), (427, 5.18, 4.7), (619, 9.70, 4.9), (927, 19.13, 4.9), (1369, 34.20, 4.9), ('inf', 55.88, 4.9)),
|
'weekly': (
|
||||||
'bi-weekly': ((238, 0.00, 0.0), (450, 0.00, 1.7), (662, 3.60, 3.2), (854, 10.37, 4.7), (1238, 19.40, 4.9), (1854, 38.25, 4.9), (2738, 68.40, 4.9), ('inf', 111.75, 4.9)),
|
( 119, 0.00, 0.0),
|
||||||
'semi-monthly': ((258, 0.00, 0.0), (488, 0.00, 1.7), (717, 3.90, 3.2), (925, 11.23, 4.7), (1342, 21.02, 4.9), (2008, 41.44, 4.9), (2967, 74.10, 4.9), ('inf', 121.06, 4.9)),
|
( 225, 0.00, 1.7),
|
||||||
'monthly': ((517, 0.00, 0.0), (975, 0.00, 1.7), (1433, 7.79, 3.2), (1850, 22.46, 4.7), (2683, 42.04, 4.9), (4017, 82.88, 4.9), (5933, 148.21, 4.9), ('inf', 242.13, 4.9)),
|
( 331, 1.80, 3.2),
|
||||||
'quarterly': ((1550, 0.00, 0.0), (2925, 0.00, 1.7), (4300, 23.38, 3.2), (5550, 67.38, 4.7), (8050, 126.13, 4.9), (12050, 248.63, 4.9), (17800, 444.63, 4.9), ('inf', 726.38, 4.9)),
|
( 427, 5.18, 4.7),
|
||||||
'semi-annual': ((3100, 0.00, 0.0), (5850, 0.00, 1.7), (8600, 46.75, 3.2), (11100, 134.75, 4.7), (16100, 252.25, 4.9), (24100, 497.25, 4.9), (35600, 889.25, 4.9), ('inf', 1452.75, 4.9)),
|
( 619, 9.70, 4.9),
|
||||||
'annually': ((6200, 0.00, 0.0), (11700, 0.00, 1.7), (17200, 93.50, 3.2), (22200, 269.50, 4.7), (32200, 504.50, 4.9), (48200, 994.50, 4.9), (71200, 1778.50, 4.9), ('inf', 2905.50, 4.9)),
|
( 927, 19.13, 4.9),
|
||||||
|
( 1369, 34.20, 4.9),
|
||||||
|
('inf', 55.88, 4.9),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 238, 0.00, 0.0),
|
||||||
|
( 450, 0.00, 1.7),
|
||||||
|
( 662, 3.60, 3.2),
|
||||||
|
( 854, 10.37, 4.7),
|
||||||
|
( 1238, 19.40, 4.9),
|
||||||
|
( 1854, 38.25, 4.9),
|
||||||
|
( 2738, 68.40, 4.9),
|
||||||
|
('inf', 111.75, 4.9),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 258, 0.00, 0.0),
|
||||||
|
( 488, 0.00, 1.7),
|
||||||
|
( 717, 3.90, 3.2),
|
||||||
|
( 925, 11.23, 4.7),
|
||||||
|
( 1342, 21.02, 4.9),
|
||||||
|
( 2008, 41.44, 4.9),
|
||||||
|
( 2967, 74.10, 4.9),
|
||||||
|
('inf', 121.06, 4.9),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 517, 0.00, 0.0),
|
||||||
|
( 975, 0.00, 1.7),
|
||||||
|
( 1433, 7.79, 3.2),
|
||||||
|
( 1850, 22.46, 4.7),
|
||||||
|
( 2683, 42.04, 4.9),
|
||||||
|
( 4017, 82.88, 4.9),
|
||||||
|
( 5933, 148.21, 4.9),
|
||||||
|
('inf', 242.13, 4.9),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 1550, 0.00, 0.0),
|
||||||
|
( 2925, 0.00, 1.7),
|
||||||
|
( 4300, 23.38, 3.2),
|
||||||
|
( 5550, 67.38, 4.7),
|
||||||
|
( 8050, 126.13, 4.9),
|
||||||
|
( 12050, 248.63, 4.9),
|
||||||
|
( 17800, 444.63, 4.9),
|
||||||
|
( 'inf', 726.38, 4.9),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 3100, 0.00, 0.0),
|
||||||
|
( 5850, 0.00, 1.7),
|
||||||
|
( 8600, 46.75, 3.2),
|
||||||
|
(11100, 134.75, 4.7),
|
||||||
|
(16100, 252.25, 4.9),
|
||||||
|
(24100, 497.25, 4.9),
|
||||||
|
(35600, 889.25, 4.9),
|
||||||
|
('inf', 1452.75, 4.9),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 6200, 0.00, 0.0),
|
||||||
|
(11700, 0.00, 1.7),
|
||||||
|
(17200, 93.50, 3.2),
|
||||||
|
(22200, 269.50, 4.7),
|
||||||
|
(32200, 504.50, 4.9),
|
||||||
|
(48200, 994.50, 4.9),
|
||||||
|
(71200, 1778.50, 4.9),
|
||||||
|
('inf', 2905.50, 4.9),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'married': {
|
'married': {
|
||||||
'weekly': ((238, 0.00, 0.0), (392, 0.00, 1.7), (546, 2.62, 3.2), (700, 7.54, 4.7), (1008, 14.77, 4.9), (1469, 29.85, 4.9), (2162, 52.46, 4.9), ('inf', 86.38, 4.9)),
|
'weekly': (
|
||||||
'bi-weekly': ((477, 0.00, 0.0), (785, 0.00, 1.7), (1092, 5.23, 3.2), (1400, 15.08, 4.7), (2015, 29.54, 4.9), (2938, 59.69, 4.9), (4323, 104.92, 4.9), ('inf', 172.77, 4.9)),
|
( 238, 0.00, 0.0),
|
||||||
'semi-monthly': ((517, 0.00, 0.0), (850, 0.00, 1.7), (1183, 5.67, 3.2), (1517, 16.33, 4.7), (2183, 32.00, 4.9), (3183, 64.67, 4.9), (4683, 113.67, 4.9), ('inf', 187.17, 4.9)),
|
( 392, 0.00, 1.7),
|
||||||
'monthly': ((1033, 0.00, 0.0), (1700, 0.00, 1.7), (2367, 11.33, 3.2), (3033, 32.67, 4.7), (4367, 64.00, 4.9), (6367, 129.33, 4.9), (9367, 227.33, 4.9), ('inf', 374.33, 4.9)),
|
( 546, 2.62, 3.2),
|
||||||
'quarterly': ((3100, 0.00, 0.0), (5100, 0.00, 1.7), (7100, 34.00, 3.2), (9100, 98.00, 4.7), (13100, 192.00, 4.9), (19100, 388.00, 4.9), (28100, 682.00, 4.9), ('inf', 1123.00, 4.9)),
|
( 700, 7.54, 4.7),
|
||||||
'semi-annual': ((6200, 0.00, 0.0), (10200, 0.00, 1.7), (14200, 68.00, 3.2), (18200, 196.00, 4.7), (26200, 384.00, 4.9), (38200, 776.00, 4.9), (56200, 1364.00, 4.9), ('inf', 2246.00, 4.9)),
|
( 1008, 14.77, 4.9),
|
||||||
'annually': ((12400, 0.00, 0.0), (20400, 0.00, 1.7), (28400, 136.00, 3.2), (36400, 392.00, 4.7), (52400, 768.00, 4.9), (76400, 1552.00, 4.9), (112400, 2728.00, 4.9), ('inf', 4492.00, 4.9)),
|
( 1469, 29.85, 4.9),
|
||||||
|
( 2162, 52.46, 4.9),
|
||||||
|
('inf', 86.38, 4.9),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 477, 0.00, 0.0),
|
||||||
|
( 785, 0.00, 1.7),
|
||||||
|
( 1092, 5.23, 3.2),
|
||||||
|
( 1400, 15.08, 4.7),
|
||||||
|
(2015, 29.54, 4.9),
|
||||||
|
( 2938, 59.69, 4.9),
|
||||||
|
( 4323, 104.92, 4.9),
|
||||||
|
('inf', 172.77, 4.9),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 517, 0.00, 0.0),
|
||||||
|
( 850, 0.00, 1.7),
|
||||||
|
( 1183, 5.67, 3.2),
|
||||||
|
( 1517, 16.33, 4.7),
|
||||||
|
( 2183, 32.00, 4.9),
|
||||||
|
( 3183, 64.67, 4.9),
|
||||||
|
( 4683, 113.67, 4.9),
|
||||||
|
('inf', 187.17, 4.9),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1033, 0.00, 0.0),
|
||||||
|
( 1700, 0.00, 1.7),
|
||||||
|
( 2367, 11.33, 3.2),
|
||||||
|
( 3033, 32.67, 4.7),
|
||||||
|
( 4367, 64.00, 4.9),
|
||||||
|
( 6367, 129.33, 4.9),
|
||||||
|
( 9367, 227.33, 4.9),
|
||||||
|
('inf', 374.33, 4.9),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 3100, 0.00, 0.0),
|
||||||
|
( 5100, 0.00, 1.7),
|
||||||
|
( 7100, 34.00, 3.2),
|
||||||
|
( 9100, 98.00, 4.7),
|
||||||
|
(13100, 192.00, 4.9),
|
||||||
|
(19100, 388.00, 4.9),
|
||||||
|
(28100, 682.00, 4.9),
|
||||||
|
('inf', 1123.00, 4.9),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 6200, 0.00, 0.0),
|
||||||
|
(10200, 0.00, 1.7),
|
||||||
|
(14200, 68.00, 3.2),
|
||||||
|
(18200, 196.00, 4.7),
|
||||||
|
(26200, 384.00, 4.9),
|
||||||
|
(38200, 776.00, 4.9),
|
||||||
|
(56200, 1364.00, 4.9),
|
||||||
|
('inf', 2246.00, 4.9),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 12400, 0.00, 0.0),
|
||||||
|
( 20400, 0.00, 1.7),
|
||||||
|
( 28400, 136.00, 3.2),
|
||||||
|
( 36400, 392.00, 4.7),
|
||||||
|
( 52400, 768.00, 4.9),
|
||||||
|
( 76400, 1552.00, 4.9),
|
||||||
|
(112400, 2728.00, 4.9),
|
||||||
|
( 'inf', 4492.00, 4.9),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
'married_as_single': {
|
'married_as_single': {
|
||||||
'weekly': ((179, 0.00, 0.0), (333, 0.00, 1.7), (487, 2.62, 3.2), (641, 7.54, 4.7), (949, 14.77, 4.9), (1410, 29.85, 4.9), (2102, 52.46, 4.9), ('inf', 86.38, 4.9)),
|
'weekly': (
|
||||||
'bi-weekly': ((359, 0.00, 0.0), (666, 0.00, 1.7), (974, 5.23, 3.2), (1282, 15.08, 4.7), (1897, 29.54, 4.9), (2820, 59.69, 4.9), (4205, 104.92, 4.9), ('inf', 172.77, 4.9)),
|
( 179, 0.00, 0.0),
|
||||||
'semi-monthly': ((389, 0.00, 0.0), (722, 0.00, 1.7), (1055, 5.67, 3.2), (1389, 16.33, 4.7), (2055, 32.00, 4.9), (3055, 64.67, 4.9), (4555, 113.67, 4.9), ('inf', 187.17, 4.9)),
|
( 333, 0.00, 1.7),
|
||||||
'monthly': ((777, 0.00, 0.0), (1444, 0.00, 1.7), (2110, 11.33, 3.2), (2777, 32.67, 4.7), (4110, 64.00, 4.9), (6110, 129.33, 4.9), (9110, 227.33, 4.9), ('inf', 374.33, 4.9)),
|
( 487, 2.62, 3.2),
|
||||||
'quarterly': ((2331, 0.00, 0.0), (4331, 0.00, 1.7), (6331, 34.00, 3.2), (8331, 98.00, 4.7), (12331, 192.00, 4.9), (18331, 388.00, 4.9), (27331, 682.00, 4.9), ('inf', 1123.00, 4.9)),
|
( 641, 7.54, 4.7),
|
||||||
'semi-annual': ((4663, 0.00, 0.0), (8663, 0.00, 1.7), (12663, 68.00, 3.2), (16663, 196.00, 4.7), (24663, 384.00, 4.9), (36663, 776.00, 4.9), (54663, 1364.00, 4.9), ('inf', 2246.00, 4.9)),
|
( 949, 14.77, 4.9),
|
||||||
'annually': ((9325, 0.00, 0.0), (17325, 0.00, 1.7), (25325, 136.00, 3.2), (33325, 392.00, 4.7), (49325, 768.00, 4.9), (73325, 1552.00, 4.9), (109325, 2728.00, 4.9), ('inf', 4492.00, 4.9)),
|
( 1410, 29.85, 4.9),
|
||||||
}
|
( 2102, 52.46, 4.9),
|
||||||
|
('inf', 86.38, 4.9),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 359, 0.00, 0.0),
|
||||||
|
( 666, 0.00, 1.7),
|
||||||
|
( 974, 5.23, 3.2),
|
||||||
|
( 1282, 15.08, 4.7),
|
||||||
|
( 1897, 29.54, 4.9),
|
||||||
|
( 2820, 59.69, 4.9),
|
||||||
|
( 4205, 104.92, 4.9),
|
||||||
|
('inf', 172.77, 4.9),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 389, 0.00, 0.0),
|
||||||
|
( 722, 0.00, 1.7),
|
||||||
|
( 1055, 5.67, 3.2),
|
||||||
|
( 1389, 16.33, 4.7),
|
||||||
|
( 2055, 32.00, 4.9),
|
||||||
|
( 3055, 64.67, 4.9),
|
||||||
|
( 4555, 113.67, 4.9),
|
||||||
|
('inf', 187.17, 4.9),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 777, 0.00, 0.0),
|
||||||
|
( 1444, 0.00, 1.7),
|
||||||
|
( 2110, 11.33, 3.2),
|
||||||
|
( 2777, 32.67, 4.7),
|
||||||
|
( 4110, 64.00, 4.9),
|
||||||
|
( 6110, 129.33, 4.9),
|
||||||
|
( 9110, 227.33, 4.9),
|
||||||
|
('inf', 374.33, 4.9),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 2331, 0.00, 0.0),
|
||||||
|
( 4331, 0.00, 1.7),
|
||||||
|
( 6331, 34.00, 3.2),
|
||||||
|
( 8331, 98.00, 4.7),
|
||||||
|
( 12331, 192.00, 4.9),
|
||||||
|
( 18331, 388.00, 4.9),
|
||||||
|
( 27331, 682.00, 4.9),
|
||||||
|
( 'inf', 1123.00, 4.9),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 4663, 0.00, 0.0),
|
||||||
|
( 8663, 0.00, 1.7),
|
||||||
|
( 12663, 68.00, 3.2),
|
||||||
|
( 16663, 196.00, 4.7),
|
||||||
|
( 24663, 384.00, 4.9),
|
||||||
|
( 36663, 776.00, 4.9),
|
||||||
|
( 54663, 1364.00, 4.9),
|
||||||
|
( 'inf', 2246.00, 4.9),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 9325, 0.00, 0.0),
|
||||||
|
( 17325, 0.00, 1.7),
|
||||||
|
( 25325, 136.00, 3.2),
|
||||||
|
( 33325, 392.00, 4.7),
|
||||||
|
( 49325, 768.00, 4.9),
|
||||||
|
( 73325, 1552.00, 4.9),
|
||||||
|
(109325, 2728.00, 4.9),
|
||||||
|
( 'inf', 4492.00, 4.9),
|
||||||
|
),
|
||||||
|
},
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
49
l10n_us_hr_payroll/data/state/nv_nevada.xml
Normal file
49
l10n_us_hr_payroll/data/state/nv_nevada.xml
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_nv_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US NV Nevada SUTA Wage Base</field>
|
||||||
|
<field name="code">us_nv_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">32500.00</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_nv_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US NV Nevada SUTA Rate</field>
|
||||||
|
<field name="code">us_nv_suta_rate</field>
|
||||||
|
<field name="parameter_value">2.95</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_nv_dor" model="res.partner">
|
||||||
|
<field name="name">US Nevada - Department of Employment, Training, and Rehabilitation, Employment Security Division - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_nv_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Nevada - Department of Employment, Training, and Rehabilitation, Employment Security Division - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_nv_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Categories -->
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_nv_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US NV Nevada State Unemployment (RT-6)</field>
|
||||||
|
<field name="code">ER_US_NV_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_nv_suta_wage_base', rate='us_nv_suta_rate', state_code='NV')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_nv_suta_wage_base', rate='us_nv_suta_rate', state_code='NV')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_nv_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
@@ -251,7 +251,7 @@
|
|||||||
(2205350, 0.9454, 161786.00),
|
(2205350, 0.9454, 161786.00),
|
||||||
( 'inf', 0.0962, 209056.00),
|
( 'inf', 0.0962, 209056.00),
|
||||||
),
|
),
|
||||||
}
|
},
|
||||||
}</field>
|
}</field>
|
||||||
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
294
l10n_us_hr_payroll/data/state/ok_oklahoma.xml
Normal file
294
l10n_us_hr_payroll/data/state/ok_oklahoma.xml
Normal file
@@ -0,0 +1,294 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ok_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US OK Oklahoma SUTA Wage Base</field>
|
||||||
|
<field name="code">us_ok_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">18700.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ok_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US OK Oklahoma SUTA Rate</field>
|
||||||
|
<field name="code">us_ok_suta_rate</field>
|
||||||
|
<field name="parameter_value">1.5</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
<!-- table from https://www.ok.gov/tax/documents/2020WHTables.pdf -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ok_sit_allowances_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US OK Oklahoma Allowances Rate</field>
|
||||||
|
<field name="code">us_ok_sit_allowances_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'weekly' : 19.23,
|
||||||
|
'bi-weekly' : 38.46,
|
||||||
|
'semi-monthly': 41.67,
|
||||||
|
'monthly' : 83.33,
|
||||||
|
'quarterly' : 250.00,
|
||||||
|
'semi-annual': 500.00,
|
||||||
|
'annually': 1000.00,
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- table from https://www.ok.gov/tax/documents/2020WHTables.pdf -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ok_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US OK Oklahoma SIT Tax Rate</field>
|
||||||
|
<field name="code">us_ok_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': {
|
||||||
|
'weekly': (
|
||||||
|
( 122, 0.00, 0.00),
|
||||||
|
( 141, 0.50, 0.00),
|
||||||
|
( 170, 1.00, 0.10),
|
||||||
|
( 194, 2.00, 0.38),
|
||||||
|
( 216, 3.00, 0.87),
|
||||||
|
( 261, 4.00, 1.53),
|
||||||
|
('inf', 5.00, 3.30),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 244, 0.00, 0.00),
|
||||||
|
( 283, 0.50, 0.00),
|
||||||
|
( 340, 1.00, 0.19),
|
||||||
|
( 388, 2.00, 0.77),
|
||||||
|
( 433, 3.00, 1.73),
|
||||||
|
( 521, 4.00, 3.06),
|
||||||
|
('inf', 5.00, 6.60),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 265, 0.00, 0.00),
|
||||||
|
( 306, 0.50, 0.00),
|
||||||
|
( 369, 1.00, 0.21),
|
||||||
|
( 421, 2.00, 0.83),
|
||||||
|
( 469, 3.00, 1.88),
|
||||||
|
( 565, 4.00, 3.31),
|
||||||
|
('inf', 5.00, 7.15),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 529, 0.00, 0.00),
|
||||||
|
( 613, 0.50, 0.00),
|
||||||
|
( 738, 1.00, 0.42),
|
||||||
|
( 842, 2.00, 1.67),
|
||||||
|
( 938, 3.00, 3.75),
|
||||||
|
(1129, 4.00, 6.63),
|
||||||
|
('inf', 5.00, 14.29),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 1588, 0.00, 0.00),
|
||||||
|
( 1838, 0.50, 0.00),
|
||||||
|
( 2213, 1.00, 1.25),
|
||||||
|
( 2525, 2.00, 5.00),
|
||||||
|
( 2813, 3.00, 11.25),
|
||||||
|
( 3388, 4.00, 19.88),
|
||||||
|
('inf', 5.00, 42.88),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 3175, 0.00, 0.00),
|
||||||
|
( 3675, 0.50, 0.00),
|
||||||
|
( 4425, 1.00, 2.50),
|
||||||
|
( 5050, 2.00, 10.00),
|
||||||
|
(5625, 3.00, 22.50),
|
||||||
|
( 6775, 4.00, 39.75),
|
||||||
|
('inf', 5.00, 85.75),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 6350, 0.00, 0.00),
|
||||||
|
( 7350, 0.50, 0.00),
|
||||||
|
( 8850, 1.00, 5.00),
|
||||||
|
(10100, 2.00, 20.00),
|
||||||
|
(11250, 3.00, 45.00),
|
||||||
|
(13550, 4.00, 79.50),
|
||||||
|
('inf', 5.00, 171.50),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
'married': {
|
||||||
|
'weekly': (
|
||||||
|
( 244, 0.00, 0.00),
|
||||||
|
( 283, 0.50, 0.00),
|
||||||
|
( 340, 1.00, 0.19),
|
||||||
|
( 388, 2.00, 0.77),
|
||||||
|
( 433, 3.00, 1.73),
|
||||||
|
( 479, 4.00, 3.06),
|
||||||
|
('inf', 5.00, 4.90),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 488, 0.00, 0.00),
|
||||||
|
( 565, 0.50, 0.00),
|
||||||
|
( 681, 1.00, 0.38),
|
||||||
|
( 777, 2.00, 1.54),
|
||||||
|
( 865, 3.00, 3.46),
|
||||||
|
( 958, 4.00, 6.12),
|
||||||
|
('inf', 5.00, 9.81),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 529, 0.00, 0.00),
|
||||||
|
( 613, 0.50, 0.00),
|
||||||
|
( 738, 1.00, 0.42),
|
||||||
|
( 842, 2.00, 1.67),
|
||||||
|
( 938, 3.00, 3.75),
|
||||||
|
( 1038, 4.00, 6.63),
|
||||||
|
('inf', 5.00, 10.63),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 1058, 0.00, 0.00),
|
||||||
|
( 1225, 0.50, 0.00),
|
||||||
|
( 1475, 1.00, 0.83),
|
||||||
|
( 1683, 2.00, 3.33),
|
||||||
|
( 1875, 3.00, 7.50),
|
||||||
|
( 2075, 4.00, 13.25),
|
||||||
|
('inf', 5.00, 21.25),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 3175, 0.00, 0.00),
|
||||||
|
( 3675, 0.50, 0.00),
|
||||||
|
( 4425, 1.00, 2.50),
|
||||||
|
( 5050, 2.00, 10.00),
|
||||||
|
( 5625, 3.00, 22.50),
|
||||||
|
( 6225, 4.00, 39.75),
|
||||||
|
('inf', 5.00, 63.75),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 6350, 0.00, 0.00),
|
||||||
|
( 7350, 0.50, 0.00),
|
||||||
|
( 8850, 1.00, 5.00),
|
||||||
|
( 10100, 2.00, 20.00),
|
||||||
|
( 11250, 3.00, 45.00),
|
||||||
|
( 12450, 4.00, 79.50),
|
||||||
|
( 'inf', 5.00, 127.50),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 12700, 0.00, 0.00),
|
||||||
|
( 14700, 0.50, 0.00),
|
||||||
|
( 17700, 1.00, 10.00),
|
||||||
|
( 20200, 2.00, 40.00),
|
||||||
|
( 22500, 3.00, 90.00),
|
||||||
|
( 24900, 4.00, 159.00),
|
||||||
|
( 'inf', 5.00, 255.00),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
'head_household': {
|
||||||
|
'weekly': (
|
||||||
|
( 122, 0.00, 0.00),
|
||||||
|
( 141, 0.50, 0.00),
|
||||||
|
( 170, 1.00, 0.10),
|
||||||
|
( 194, 2.00, 0.38),
|
||||||
|
( 216, 3.00, 0.87),
|
||||||
|
( 261, 4.00, 1.53),
|
||||||
|
('inf', 5.00, 3.30),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 244, 0.00, 0.00),
|
||||||
|
( 283, 0.50, 0.00),
|
||||||
|
( 340, 1.00, 0.19),
|
||||||
|
( 388, 2.00, 0.77),
|
||||||
|
( 433, 3.00, 1.73),
|
||||||
|
( 521, 4.00, 3.06),
|
||||||
|
('inf', 5.00, 6.60),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 265, 0.00, 0.00),
|
||||||
|
( 306, 0.50, 0.00),
|
||||||
|
( 369, 1.00, 0.21),
|
||||||
|
( 421, 2.00, 0.83),
|
||||||
|
( 469, 3.00, 1.88),
|
||||||
|
( 565, 4.00, 3.31),
|
||||||
|
('inf', 5.00, 7.15),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 529, 0.00, 0.00),
|
||||||
|
( 613, 0.50, 0.00),
|
||||||
|
( 738, 1.00, 0.42),
|
||||||
|
( 842, 2.00, 1.67),
|
||||||
|
( 938, 3.00, 3.75),
|
||||||
|
( 1129, 4.00, 6.63),
|
||||||
|
('inf', 5.00, 14.29),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 1588, 0.00, 0.00),
|
||||||
|
( 1838, 0.50, 0.00),
|
||||||
|
( 2213, 1.00, 1.25),
|
||||||
|
( 2525, 2.00, 5.00),
|
||||||
|
( 2813, 3.00, 11.25),
|
||||||
|
( 3388, 4.00, 19.88),
|
||||||
|
('inf', 5.00, 42.88),
|
||||||
|
),
|
||||||
|
'semi-annual': (
|
||||||
|
( 3175, 0.00, 0.00),
|
||||||
|
( 3675, 0.50, 0.00),
|
||||||
|
( 4425, 1.00, 2.50),
|
||||||
|
( 5050, 2.00, 10.00),
|
||||||
|
( 5625, 3.00, 22.50),
|
||||||
|
( 6775, 4.00, 39.75),
|
||||||
|
('inf', 5.00, 85.75),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 6350, 0.00, 0.00),
|
||||||
|
( 7350, 0.50, 0.00),
|
||||||
|
( 8850, 1.00, 5.00),
|
||||||
|
(10100, 2.00, 20.00),
|
||||||
|
(11250, 3.00, 45.00),
|
||||||
|
(13550, 4.00, 79.50),
|
||||||
|
('inf', 5.00, 171.50),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_ok_dor" model="res.partner">
|
||||||
|
<field name="name">US Oklahoma - Employment Security Commission - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_ok_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Oklahoma - Employment Security Commission - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_ok_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_us_ok_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US Oklahoma - Tax Commission - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_ok_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US Oklahoma - Tax Commission - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_ok_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Categories -->
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_ok_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US OK Oklahoma State Unemployment</field>
|
||||||
|
<field name="code">ER_US_OK_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_ok_suta_wage_base', rate='us_ok_suta_rate', state_code='OK')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_ok_suta_wage_base', rate='us_ok_suta_rate', state_code='OK')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_ok_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_ok_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US OK Oklahoma State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_OK_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = ok_oklahoma_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = ok_oklahoma_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_ok_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
135
l10n_us_hr_payroll/data/state/ri_rhode_island.xml
Normal file
135
l10n_us_hr_payroll/data/state/ri_rhode_island.xml
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ri_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US RI Rhode Island SUTA Wage Base</field>
|
||||||
|
<field name="code">us_ri_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">24000.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ri_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US RI Rhode Island SUTA Rate</field>
|
||||||
|
<field name="code">us_ri_suta_rate</field>
|
||||||
|
<field name="parameter_value">1.06</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Withhooding tax exemption based on two table on page 7. from http://www.tax.ri.gov/forms/2020/Withholding/2020%20Withhholding%20Tax%20Booklet.pdf -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ri_sit_exemption_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US RI Rhode Island Exemption Rate</field>
|
||||||
|
<field name="code">us_ri_sit_exemption_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'weekly' : (( 0.00, 19.23), ( 4451.92, 0.00)),
|
||||||
|
'bi-weekly' : (( 0.00, 38.46), ( 8903.85, 0.00)),
|
||||||
|
'semi-monthly': (( 0.00, 41.67), ( 9645.83, 0.00)),
|
||||||
|
'monthly' : (( 0.00, 83.33), ( 19291.67, 0.00)),
|
||||||
|
'quarterly' : (( 0.00, 250.00), ( 57875.00, 0.00)),
|
||||||
|
'semi-annually': (( 0.00, 500.00), ( 115750.00, 0.00)),
|
||||||
|
'annually': (( 0.00, 1000.0), ( 231500.00, 0000)),
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ri_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US RI Rhode Island SIT Tax Rate</field>
|
||||||
|
<field name="code">us_ri_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'weekly': (
|
||||||
|
( 1255, 0.00, 3.75),
|
||||||
|
( 2853, 47.06, 4.75),
|
||||||
|
('inf', 122.97, 5.99),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 2510, 0.00, 3.75),
|
||||||
|
( 5706, 94.13, 4.75),
|
||||||
|
('inf', 245.94, 5.99),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 2719, 0.00, 3.75),
|
||||||
|
( 6181, 101.96, 4.75),
|
||||||
|
('inf', 266.41, 5.99),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 5438, 0.00, 3.75),
|
||||||
|
(12363, 203.93, 4.75),
|
||||||
|
('inf', 532.87, 5.99),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
(16313, 0.00, 3.75),
|
||||||
|
(37088, 611.74, 4.75),
|
||||||
|
('inf', 1598.55, 5.99),
|
||||||
|
),
|
||||||
|
'semi-annually': (
|
||||||
|
(32625, 0.00, 3.75),
|
||||||
|
(74175, 1223.44, 4.75),
|
||||||
|
('inf', 3197.07, 5.99),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 65250, 0.00, 3.75),
|
||||||
|
(148350, 2446.88, 4.75),
|
||||||
|
( 'inf', 6394.13, 5.99),
|
||||||
|
),
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_ri_dor" model="res.partner">
|
||||||
|
<field name="name">US Rhode Island - Department of Labor and Training - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_ri_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Rhode Island - Department of Labor and Training - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_ri_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_us_ri_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US Rhode Island - Division of Taxations - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_ri_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US Rhode Island - Division of Taxations - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_ri_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Categories -->
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_ri_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US RI Rhode Island State Unemployment</field>
|
||||||
|
<field name="code">ER_US_RI_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_ri_suta_wage_base', rate='us_ri_suta_rate', state_code='RI')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_ri_suta_wage_base', rate='us_ri_suta_rate', state_code='RI')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_ri_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_ri_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US RI Rhode Island State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_RI_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = ri_rhode_island_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = ri_rhode_island_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_ri_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
146
l10n_us_hr_payroll/data/state/sc_south_carolina.xml
Normal file
146
l10n_us_hr_payroll/data/state/sc_south_carolina.xml
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_sc_suta_wage_base_2019" model="hr.payroll.rate">
|
||||||
|
<field name="name">US SC South Carolina SUTA Wage Base</field>
|
||||||
|
<field name="code">us_sc_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">14000.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
<record id="rule_parameter_us_sc_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US SC South Carolina SUTA Wage Base</field>
|
||||||
|
<field name="code">us_sc_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">14000.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_sc_suta_rate_2019" model="hr.payroll.rate">
|
||||||
|
<field name="name">US SC South Carolina SUTA Rate</field>
|
||||||
|
<field name="code">us_sc_suta_rate</field>
|
||||||
|
<field name="parameter_value">1.09</field>
|
||||||
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
<!-- Tax rate from https://taxnews.ey.com/news/2019-2183-south-carolina-2020-sui-tax-rates-to-decrease-due-to-elimination-of-the-variable-solvency-surcharge-wage-base-unchanged -->
|
||||||
|
<record id="rule_parameter_us_sc_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US SC South Carolina SUTA Rate</field>
|
||||||
|
<field name="code">us_sc_suta_rate</field>
|
||||||
|
<field name="parameter_value">0.55</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_sc_sit_tax_rate_2019" model="hr.payroll.rate">
|
||||||
|
<field name="name">US SC South Carolina SIT Tax Rate</field>
|
||||||
|
<field name="code">us_sc_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">[
|
||||||
|
( 2450, 1.1, 0.0),
|
||||||
|
( 4900, 3.0, 26.95),
|
||||||
|
( 7350, 4.0, 100.45),
|
||||||
|
( 9800, 5.0, 198.45),
|
||||||
|
(12250, 6.0, 320.95),
|
||||||
|
('inf', 7.0, 467.95),
|
||||||
|
]</field>
|
||||||
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
<!-- Substraction Method table from https://dor.sc.gov/forms-site/Forms/WH1603F_2020.pdf-->
|
||||||
|
<record id="rule_parameter_us_sc_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US SC South Carolina SIT Tax Rate</field>
|
||||||
|
<field name="code">us_sc_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">[
|
||||||
|
( 2620, 0.8, 0.0),
|
||||||
|
( 5240, 3.0, 57.64),
|
||||||
|
( 7860, 4.0, 110.04),
|
||||||
|
(10490, 5.0, 188.64),
|
||||||
|
(13110, 6.0, 293.54),
|
||||||
|
('inf', 7.0, 424.64),
|
||||||
|
]</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_sc_sit_personal_exemption_rate_2019" model="hr.payroll.rate">
|
||||||
|
<field name="name">US SC South Carolina Personal Exemption Rate</field>
|
||||||
|
<field name="code">us_sc_sit_personal_exemption_rate</field>
|
||||||
|
<field name="parameter_value">2510</field>
|
||||||
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
<record id="rule_parameter_us_sc_sit_personal_exemption_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US SC South Carolina Personal Exemption Rate</field>
|
||||||
|
<field name="code">us_sc_sit_personal_exemption_rate</field>
|
||||||
|
<field name="parameter_value">2590</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_sc_sit_standard_deduction_rate_2019" model="hr.payroll.rate">
|
||||||
|
<field name="name">US SC South Carolina Standard Deduction Rate</field>
|
||||||
|
<field name="code">us_sc_sit_standard_deduction_rate</field>
|
||||||
|
<field name="parameter_value">3470.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
<record id="rule_parameter_us_sc_sit_standard_deduction_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US SC South Carolina Standard Deduction Rate</field>
|
||||||
|
<field name="code">us_sc_sit_standard_deduction_rate</field>
|
||||||
|
<field name="parameter_value">3820.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_sc_dor" model="res.partner">
|
||||||
|
<field name="name">US South Carolina - Department of Labor and Industrial Relations - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_sc_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US South Carolina - Department of Labor and Industrial Relations - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_sc_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<record id="res_partner_us_sc_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US South Carolina - Department of Taxation - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_sc_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US South Carolina - Department of Taxation - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_sc_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Categories -->
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_sc_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US SC South Carolina State Unemployment</field>
|
||||||
|
<field name="code">ER_US_SC_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_sc_suta_wage_base', rate='us_sc_suta_rate', state_code='SC')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_sc_suta_wage_base', rate='us_sc_suta_rate', state_code='SC')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_sc_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_sc_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US SC South Carolina State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_SC_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = sc_south_carolina_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = sc_south_carolina_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_sc_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
48
l10n_us_hr_payroll/data/state/sd_south_dakota.xml
Normal file
48
l10n_us_hr_payroll/data/state/sd_south_dakota.xml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_sd_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US SD South Dakota SUTA Wage Base</field>
|
||||||
|
<field name="code">us_sd_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">15000.00</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_sd_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US SD South Dakota SUTA Rate</field>
|
||||||
|
<field name="code">us_sd_suta_rate</field>
|
||||||
|
<field name="parameter_value">1.75</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_sd_dor" model="res.partner">
|
||||||
|
<field name="name">US South Dakota - Department of Labor - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_sd_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US South Dakota - Department of Labor - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_sd_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_sd_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US SD South Dakota State Unemployment</field>
|
||||||
|
<field name="code">ER_US_SD_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_sd_suta_wage_base', rate='us_sd_suta_rate', state_code='SD')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_sd_suta_wage_base', rate='us_sd_suta_rate', state_code='SD')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_sd_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
48
l10n_us_hr_payroll/data/state/tn_tennessee.xml
Normal file
48
l10n_us_hr_payroll/data/state/tn_tennessee.xml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_tn_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US TN Tennessee SUTA Wage Base</field>
|
||||||
|
<field name="code">us_tn_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">7000.00</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_tn_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US TN Tennessee SUTA Rate</field>
|
||||||
|
<field name="code">us_tn_suta_rate</field>
|
||||||
|
<field name="parameter_value">2.7</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_tn_dor" model="res.partner">
|
||||||
|
<field name="name">US Tennessee - Department of Revenue - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_tn_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Tennessee - Department of Revenue - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_tn_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_tn_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US TN Tennessee State Unemployment</field>
|
||||||
|
<field name="code">ER_US_TN_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_tn_suta_wage_base', rate='us_tn_suta_rate', state_code='TN')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_tn_suta_wage_base', rate='us_tn_suta_rate', state_code='TN')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_tn_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
153
l10n_us_hr_payroll/data/state/ut_utah.xml
Normal file
153
l10n_us_hr_payroll/data/state/ut_utah.xml
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ut_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US UT Utah SUTA Wage Base</field>
|
||||||
|
<field name="code">us_ut_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">36600.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ut_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US UT Utah SUTA Rate</field>
|
||||||
|
<field name="code">us_ut_suta_rate</field>
|
||||||
|
<field name="parameter_value">0.1</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ut_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US UT Utah TAX Rate</field>
|
||||||
|
<field name="code">us_ut_tax_rate</field>
|
||||||
|
<field name="parameter_value">0.0495</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Table based on https://tax.utah.gov/forms/pubs/pub-14.pdf -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ut_sit_allowances_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US UT Utah Allowances Rate</field>
|
||||||
|
<field name="code">us_ut_sit_allowances_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': {
|
||||||
|
'weekly' : 7,
|
||||||
|
'bi-weekly' : 14,
|
||||||
|
'semi-monthly': 15,
|
||||||
|
'monthly' : 30,
|
||||||
|
'quarterly' : 90,
|
||||||
|
'semi-annual': 180,
|
||||||
|
'annually': 360,
|
||||||
|
},
|
||||||
|
'married': {
|
||||||
|
'weekly' : 14,
|
||||||
|
'bi-weekly' : 28,
|
||||||
|
'semi-monthly': 30,
|
||||||
|
'monthly' : 60,
|
||||||
|
'quarterly' : 180,
|
||||||
|
'semi-annual': 360,
|
||||||
|
'annually': 720,
|
||||||
|
},
|
||||||
|
'head_household': {
|
||||||
|
'weekly' : 7,
|
||||||
|
'bi-weekly' : 14,
|
||||||
|
'semi-monthly': 15,
|
||||||
|
'monthly' : 30,
|
||||||
|
'quarterly' : 90,
|
||||||
|
'semi-annual': 180,
|
||||||
|
'annually': 360,
|
||||||
|
},
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
<!-- Table based on https://tax.utah.gov/forms/pubs/pub-14.pdf -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_ut_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US UT Utah SIT Tax Rate</field>
|
||||||
|
<field name="code">us_ut_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': {
|
||||||
|
'weekly': ((137, 1.3)),
|
||||||
|
'bi-weekly': ((274, 1.3)),
|
||||||
|
'semi-monthly': ((297, 1.3)),
|
||||||
|
'monthly': ((594, 1.3)),
|
||||||
|
'quarterly': ((1782, 1.3)),
|
||||||
|
'semi-annual': ((3564, 1.3)),
|
||||||
|
'annually': ((7128, 1.3)),
|
||||||
|
},
|
||||||
|
'married': {
|
||||||
|
'weekly': ((274, 1.3)),
|
||||||
|
'bi-weekly': (548, 1.3),
|
||||||
|
'semi-monthly': ((594, 1.3)),
|
||||||
|
'monthly': ((1188, 1.3)),
|
||||||
|
'quarterly': ((3564, 1.3)),
|
||||||
|
'semi-annual': ((7128, 1.3)),
|
||||||
|
'annually': ((14256, 1.3)),
|
||||||
|
},
|
||||||
|
'head_household': {
|
||||||
|
'weekly': ((137, 1.3)),
|
||||||
|
'bi-weekly': ((274, 1.3)),
|
||||||
|
'semi-monthly': ((297, 1.3)),
|
||||||
|
'monthly': ((594, 1.3)),
|
||||||
|
'quarterly': ((1782, 1.3)),
|
||||||
|
'semi-annual': ((3564, 1.3)),
|
||||||
|
'annually': ((7128, 1.3)),
|
||||||
|
},
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_ut_dor" model="res.partner">
|
||||||
|
<field name="name">US Utah - Employment Security Commission - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_ut_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Utah - Employment Security Commission - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_ut_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_us_ut_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US Utah - Tax Commission - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_ut_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US Utah - Tax Commission - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_ut_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_ut_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US UT Utah State Unemployment</field>
|
||||||
|
<field name="code">ER_US_UT_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_ut_suta_wage_base', rate='us_ut_suta_rate', state_code='UT')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_ut_suta_wage_base', rate='us_ut_suta_rate', state_code='UT')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_ut_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_ut_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US UT Utah State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_UT_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = ut_utah_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = ut_utah_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_ut_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
185
l10n_us_hr_payroll/data/state/vt_vermont.xml
Normal file
185
l10n_us_hr_payroll/data/state/vt_vermont.xml
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base from https://labor.vermont.gov/unemployment-insurance/ui-employers/quarterly-reporting-taxable-wage-information -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_vt_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US VT Vermont SUTA Wage Base</field>
|
||||||
|
<field name="code">us_vt_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">16100.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_vt_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US VT Vermont SUTA Rate</field>
|
||||||
|
<field name="code">us_vt_suta_rate</field>
|
||||||
|
<field name="parameter_value">1.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_vt_sit_allowances_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US VT Vermont Allowances Rate</field>
|
||||||
|
<field name="code">us_vt_sit_allowances_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'weekly' : 83.65,
|
||||||
|
'bi-weekly' : 167.31,
|
||||||
|
'semi-monthly': 181.25,
|
||||||
|
'monthly' : 362.50,
|
||||||
|
'quarterly' : 1087.50,
|
||||||
|
'annually': 4350.00,
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
<!-- Table based on https://tax.vermont.gov/sites/tax/files/documents/WithholdingInstructions.pdf-->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_vt_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US VT Vermont SIT Tax Rate</field>
|
||||||
|
<field name="code">us_vt_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': {
|
||||||
|
'weekly': (
|
||||||
|
( 60, 0.00, 0.00),
|
||||||
|
( 836, 0.00, 3.35),
|
||||||
|
( 1941, 26.00, 6.60),
|
||||||
|
( 3983, 98.93, 7.60),
|
||||||
|
('inf', 254.12, 8.75),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 120, 0.00, 0.00),
|
||||||
|
( 1672, 0.00, 3.35),
|
||||||
|
( 3882, 51.99, 6.60),
|
||||||
|
( 7966, 197.85, 7.60),
|
||||||
|
('inf', 508.24, 8.75),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 130, 0.00, 0.00),
|
||||||
|
( 1811, 0.00, 3.35),
|
||||||
|
( 4205, 56.31, 6.60),
|
||||||
|
( 8630, 214.32, 7.60),
|
||||||
|
('inf', 550.62, 8.75),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 260, 0.00, 0.00),
|
||||||
|
( 3623, 0.00, 3.35),
|
||||||
|
( 8410, 112.66, 6.60),
|
||||||
|
(17260, 428.60, 7.60),
|
||||||
|
('inf', 1101.20, 8.75),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 781, 0.00, 0.00),
|
||||||
|
(10869, 0.00, 3.35),
|
||||||
|
(25231, 337.95, 6.60),
|
||||||
|
(51781, 1285.84, 7.60),
|
||||||
|
('inf', 3303.64, 8.75),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 3125, 0.00, 0.00),
|
||||||
|
( 43475, 0.00, 3.35),
|
||||||
|
(100925, 1351.73, 6.60),
|
||||||
|
(207125, 5143.43, 7.60),
|
||||||
|
( 'inf', 13214.63, 8.75),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
'married': {
|
||||||
|
'weekly': (
|
||||||
|
( 180, 0.00, 0.00),
|
||||||
|
( 1477, 0.00, 3.35),
|
||||||
|
( 3315, 43.45, 6.60),
|
||||||
|
( 4956, 164.76, 7.60),
|
||||||
|
('inf', 289.47, 8.75),
|
||||||
|
),
|
||||||
|
'bi-weekly': (
|
||||||
|
( 361, 0.00, 0.00),
|
||||||
|
( 2955, 0.00, 3.35),
|
||||||
|
( 6630, 86.90, 6.60),
|
||||||
|
(9913, 329.45, 7.60),
|
||||||
|
('inf', 578.96, 8.75),
|
||||||
|
),
|
||||||
|
'semi-monthly': (
|
||||||
|
( 391, 0.00, 0.00),
|
||||||
|
( 3201, 0.00, 3.35),
|
||||||
|
( 7182, 94.14, 6.60),
|
||||||
|
(10739, 356.88, 7.60),
|
||||||
|
('inf', 627.21, 8.75),
|
||||||
|
),
|
||||||
|
'monthly': (
|
||||||
|
( 781, 0.00, 0.00),
|
||||||
|
( 6402, 0.00, 3.35),
|
||||||
|
(14365, 188.30, 6.60),
|
||||||
|
(21477, 713.86, 7.60),
|
||||||
|
('inf', 1254.37, 8.75),
|
||||||
|
),
|
||||||
|
'quarterly': (
|
||||||
|
( 2344, 0.00, 0.00),
|
||||||
|
(19206, 0.00, 3.35),
|
||||||
|
(43094, 564.88, 6.60),
|
||||||
|
(64431, 2141.49, 7.60),
|
||||||
|
('inf', 3763.10, 8.75),
|
||||||
|
),
|
||||||
|
'annually': (
|
||||||
|
( 9375, 0.00, 0.00),
|
||||||
|
( 76825, 0.00, 3.35),
|
||||||
|
(172375, 2259.58, 6.60),
|
||||||
|
(257725, 8565.88, 7.60),
|
||||||
|
( 'inf', 15052.48, 8.75),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_vt_dor" model="res.partner">
|
||||||
|
<field name="name">US Vermont - Employment Security Commission - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_vt_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Vermont - Employment Security Commission - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_vt_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<record id="res_partner_us_vt_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US Vermont - Tax Commission - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_vt_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US Vermont - Tax Commission - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_vt_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_vt_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US VT Vermont State Unemployment</field>
|
||||||
|
<field name="code">ER_US_VT_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_vt_suta_wage_base', rate='us_vt_suta_rate', state_code='VT')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_vt_suta_wage_base', rate='us_vt_suta_rate', state_code='VT')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_vt_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_vt_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US VT Vermont State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_VT_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = vt_vermont_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = vt_vermont_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_vt_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
109
l10n_us_hr_payroll/data/state/wi_wisconsin.xml
Normal file
109
l10n_us_hr_payroll/data/state/wi_wisconsin.xml
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_wi_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US WI Wisconsin SUTA Wage Base</field>
|
||||||
|
<field name="code">us_wi_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">14000.00</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<!-- Rate based on this file https://dwd.wisconsin.gov/ui/employers/taxrates.htm -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_wi_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US WI Wisconsin SUTA Rate</field>
|
||||||
|
<field name="code">us_wi_suta_rate</field>
|
||||||
|
<field name="parameter_value">3.05</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_wi_sit_exemption_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US WI Wisconsin Exemption Rate</field>
|
||||||
|
<field name="code">us_wi_sit_exemption_rate</field>
|
||||||
|
<field name="parameter_value">22</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Table based on https://www.revenue.wi.gov/DOR%20Publications/pb166.pdf page 25. -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_wi_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US WI Wisconsin SIT Tax Rate</field>
|
||||||
|
<field name="code">us_wi_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': (
|
||||||
|
( 5730, 0.0000, 0.00),
|
||||||
|
( 15200, 4.0000, 0.00),
|
||||||
|
( 16486, 4.4800, 378.80),
|
||||||
|
( 26227, 6.5408, 436.41),
|
||||||
|
( 62950, 7.0224, 1073.55),
|
||||||
|
(240190, 6.2700, 3652.39),
|
||||||
|
( 'inf', 7.6500, 14765.34),
|
||||||
|
),
|
||||||
|
'married': (
|
||||||
|
( 7870, 0.0000, 0.00),
|
||||||
|
( 18780, 4.0000, 0.00),
|
||||||
|
( 21400, 5.8400, 436.40),
|
||||||
|
( 28308, 7.0080, 589.41),
|
||||||
|
( 60750, 7.5240, 1073.52),
|
||||||
|
(240190, 6.2700, 3514.46),
|
||||||
|
( 'inf', 7.6500, 14765.35),
|
||||||
|
),
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_wi_dor" model="res.partner">
|
||||||
|
<field name="name">US Wisconsin - Department of Workforce Development - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_wi_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Wisconsin - Department of Workforce Development - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_wi_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_us_wi_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US Wisconsin - Department of Revenue - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_wi_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US Wisconsin - Department of Revenue - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_wi_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_wi_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US WI Wisconsin State Unemployment</field>
|
||||||
|
<field name="code">ER_US_WI_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_wi_suta_wage_base', rate='us_wi_suta_rate', state_code='WI')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_wi_suta_wage_base', rate='us_wi_suta_rate', state_code='WI')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_wi_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_wi_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US WI Wisconsin State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_WI_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = wi_wisconsin_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = wi_wisconsin_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_wi_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
209
l10n_us_hr_payroll/data/state/wv_west_virginia.xml
Normal file
209
l10n_us_hr_payroll/data/state/wv_west_virginia.xml
Normal file
@@ -0,0 +1,209 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_wv_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US WV West Virginia SUTA Wage Base</field>
|
||||||
|
<field name="code">us_wv_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">12000.0</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_wv_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US WV West Virginia SUTA Rate</field>
|
||||||
|
<field name="code">us_wv_suta_rate</field>
|
||||||
|
<field name="parameter_value">2.7</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Table base on this https://tax.wv.gov/Documents/TaxForms/it100.1a.pdf page 16-->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_wv_sit_exemption_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US WV West Virginia Exemption Rate</field>
|
||||||
|
<field name="code">us_wv_sit_exemption_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'weekly' : 38.46,
|
||||||
|
'bi-weekly' : 76.92,
|
||||||
|
'semi-monthly': 83.33,
|
||||||
|
'monthly' : 166.67,
|
||||||
|
'annually': 2000.00,
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Table base on this https://tax.wv.gov/Documents/TaxForms/it100.1a.pdf page 17-->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_wv_sit_tax_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US WV West Virginia SIT Tax Rate</field>
|
||||||
|
<field name="code">us_wv_sit_tax_rate</field>
|
||||||
|
<field name="parameter_value">{
|
||||||
|
'single': {
|
||||||
|
'weekly':(
|
||||||
|
( 192, 0.00, 3.0),
|
||||||
|
( 481, 5.76, 4.0),
|
||||||
|
( 769, 17.32, 4.5),
|
||||||
|
( 1154, 30.28, 6.0),
|
||||||
|
('inf', 53.38, 6.5),
|
||||||
|
),
|
||||||
|
'bi-weekly':(
|
||||||
|
( 385, 0.00, 3.0),
|
||||||
|
( 962, 11.55, 4.0),
|
||||||
|
( 1538, 34.63, 4.5),
|
||||||
|
( 2308, 60.55, 6.0),
|
||||||
|
('inf', 106.75, 6.5),
|
||||||
|
),
|
||||||
|
'semi-monthly':(
|
||||||
|
( 417, 0.00, 3.0),
|
||||||
|
( 1042 , 12.51, 4.0),
|
||||||
|
( 1667, 37.51, 4.5),
|
||||||
|
( 2500, 65.64, 6.0),
|
||||||
|
('inf', 115.62, 6.5),
|
||||||
|
),
|
||||||
|
'monthly':(
|
||||||
|
( 833, 0.00, 3.0),
|
||||||
|
( 2083, 24.99, 4.0),
|
||||||
|
( 3333, 74.99, 4.5),
|
||||||
|
( 5000, 131.24, 6.0),
|
||||||
|
('inf', 231.26, 6.5),
|
||||||
|
),
|
||||||
|
'annually':(
|
||||||
|
( 10000, 0.00, 3.0),
|
||||||
|
( 25000, 300.00, 4.0),
|
||||||
|
( 40000, 900.00, 4.5),
|
||||||
|
( 60000, 1575.00, 6.0),
|
||||||
|
( 'inf', 2775.00, 6.5),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
'married': {
|
||||||
|
'weekly':(
|
||||||
|
( 115, 0.00, 3.0),
|
||||||
|
( 288, 3.45, 4.0),
|
||||||
|
( 462, 10.37, 4.5),
|
||||||
|
( 692, 18.20, 6.0),
|
||||||
|
('inf', 32.00, 6.5),
|
||||||
|
),
|
||||||
|
'bi-weekly':(
|
||||||
|
( 231, 0.00, 3.0),
|
||||||
|
( 577, 6.93, 4.0),
|
||||||
|
( 923, 20.77, 4.5),
|
||||||
|
( 1385, 36.34, 6.0),
|
||||||
|
('inf', 64.06, 6.5),
|
||||||
|
),
|
||||||
|
'semi-monthly':(
|
||||||
|
( 250, 0.00, 3.0),
|
||||||
|
( 625, 7.50, 4.0),
|
||||||
|
( 1000, 22.50, 4.5),
|
||||||
|
( 1500, 39.38, 6.0),
|
||||||
|
('inf', 69.38, 6.5),
|
||||||
|
),
|
||||||
|
'monthly':(
|
||||||
|
( 500, 0.00, 3.0),
|
||||||
|
( 1250, 15.00, 4.0),
|
||||||
|
( 2000, 45.00, 4.5),
|
||||||
|
( 3000, 78.75, 6.0),
|
||||||
|
('inf', 138.75, 6.5),
|
||||||
|
),
|
||||||
|
'annually':(
|
||||||
|
( 6000, 0.00, 3.0),
|
||||||
|
(15000, 180.00, 4.0),
|
||||||
|
(24000, 540.00, 4.5),
|
||||||
|
(36000, 945.00, 6.0),
|
||||||
|
('inf', 1665.00, 6.5),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
'head_household': {
|
||||||
|
'weekly':(
|
||||||
|
( 192, 0.00, 3.0),
|
||||||
|
( 481, 5.76, 4.0),
|
||||||
|
( 769, 17.32, 4.5),
|
||||||
|
( 1154, 30.28, 6.0),
|
||||||
|
('inf', 53.38, 6.5),
|
||||||
|
),
|
||||||
|
'bi-weekly':(
|
||||||
|
( 385, 0.00, 3.0),
|
||||||
|
( 962, 11.55, 4.0),
|
||||||
|
( 1538, 34.63, 4.5),
|
||||||
|
( 2308, 60.55, 6.0),
|
||||||
|
('inf', 106.75, 6.5),
|
||||||
|
),
|
||||||
|
'semi-monthly':(
|
||||||
|
( 417, 0.00, 3.0),
|
||||||
|
( 1042, 12.51, 4.0),
|
||||||
|
( 1667, 37.51, 4.5),
|
||||||
|
( 2500, 65.64, 6.0),
|
||||||
|
('inf', 115.62, 6.5),
|
||||||
|
),
|
||||||
|
'monthly':(
|
||||||
|
( 833, 0.00, 3.0),
|
||||||
|
( 2083, 24.99, 4.0),
|
||||||
|
( 3333, 74.99, 4.5),
|
||||||
|
( 5000, 131.24, 6.0),
|
||||||
|
('inf', 231.26, 6.5),
|
||||||
|
),
|
||||||
|
'annually':(
|
||||||
|
( 10000, 0.00, 3.0),
|
||||||
|
( 25000, 300.00, 4.0),
|
||||||
|
( 40000, 900.00, 4.5),
|
||||||
|
( 60000, 1575.00, 6.0),
|
||||||
|
( 'inf', 2775.00, 6.5),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
}</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_wv_dor" model="res.partner">
|
||||||
|
<field name="name">US West Virginia - WorkForce - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_wv_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US West Virginia - WorkForce - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_wv_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="res_partner_us_wv_dor_sit" model="res.partner">
|
||||||
|
<field name="name">US West Virginia - Department of Revenue - Income Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_wv_dor_sit" model="hr.contribution.register">
|
||||||
|
<field name="name">US West Virginia - Department of Revenue - Income Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_wv_dor_sit"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<!-- Categories -->
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_wv_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US WV West Virginia State Unemployment</field>
|
||||||
|
<field name="code">ER_US_WV_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_wv_suta_wage_base', rate='us_wv_suta_rate', state_code='WV')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_wv_suta_wage_base', rate='us_wv_suta_rate', state_code='WV')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_wv_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="hr_payroll_rule_ee_us_wv_sit" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="195"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_ee_us_sit"/>
|
||||||
|
<field name="name">EE: US WV West Virginia State Income Tax Withholding</field>
|
||||||
|
<field name="code">EE_US_WV_SIT</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = wv_west_virginia_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = wv_west_virginia_state_income_withholding(payslip, categories, worked_days, inputs)</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_wv_dor_sit"/>
|
||||||
|
<field name="appears_on_payslip" eval="True"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
60
l10n_us_hr_payroll/data/state/wy_wyoming.xml
Normal file
60
l10n_us_hr_payroll/data/state/wy_wyoming.xml
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<!-- Wage Base -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_wy_suta_wage_base_2019" model="hr.payroll.rate">
|
||||||
|
<field name="name">US WY Wyoming SUTA Wage Base</field>
|
||||||
|
<field name="code">us_wy_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">25400.00</field>
|
||||||
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
<record id="rule_parameter_us_wy_suta_wage_base_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US WY Wyoming SUTA Wage Base</field>
|
||||||
|
<field name="code">us_wy_suta_wage_base</field>
|
||||||
|
<field name="parameter_value">26400.00</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Rate -->
|
||||||
|
<data noupdate="1">
|
||||||
|
<record id="rule_parameter_us_wy_suta_rate_2019" model="hr.payroll.rate">
|
||||||
|
<field name="name">US WY Wyoming SUTA Rate</field>
|
||||||
|
<field name="code">us_wy_suta_rate</field>
|
||||||
|
<field name="parameter_value">2.10</field>
|
||||||
|
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
<record id="rule_parameter_us_wy_suta_rate_2020" model="hr.payroll.rate">
|
||||||
|
<field name="name">US WY Wyoming SUTA Rate</field>
|
||||||
|
<field name="code">us_wy_suta_rate</field>
|
||||||
|
<field name="parameter_value">8.5</field>
|
||||||
|
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
|
||||||
|
</record>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
<!-- Partners and Contribution Registers -->
|
||||||
|
<record id="res_partner_us_wy_dor" model="res.partner">
|
||||||
|
<field name="name">US Wyoming - Department of Workforce Services (WDWS) - Unemployment Tax</field>
|
||||||
|
<field name="supplier">1</field>
|
||||||
|
</record>
|
||||||
|
<record id="contrib_register_us_wy_dor" model="hr.contribution.register">
|
||||||
|
<field name="name">US Wyoming - Department of Workforce Services (WDWS) - Unemployment Tax</field>
|
||||||
|
<field name="partner_id" ref="res_partner_us_wy_dor"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Rules -->
|
||||||
|
<record id="hr_payroll_rule_er_us_wy_suta" model="hr.salary.rule">
|
||||||
|
<field name="sequence" eval="450"/>
|
||||||
|
<field name="category_id" ref="hr_payroll_category_er_us_suta"/>
|
||||||
|
<field name="name">ER: US WY Wyoming State Unemployment</field>
|
||||||
|
<field name="code">ER_US_WY_SUTA</field>
|
||||||
|
<field name="condition_select">python</field>
|
||||||
|
<field name="condition_python">result, _ = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_wy_suta_wage_base', rate='us_wy_suta_rate', state_code='WY')</field>
|
||||||
|
<field name="amount_select">code</field>
|
||||||
|
<field name="amount_python_compute">result, result_rate = general_state_unemployment(payslip, categories, worked_days, inputs, wage_base='us_wy_suta_wage_base', rate='us_wy_suta_rate', state_code='WY')</field>
|
||||||
|
<field name="register_id" ref="contrib_register_us_wy_dor"/>
|
||||||
|
<field name="appears_on_payslip" eval="False"/>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
@@ -231,6 +231,11 @@ XMLIDS_TO_REMOVE_2020 = [
|
|||||||
'l10n_us_pa_hr_payroll.hr_payroll_rules_pa_unemp_wages_2018',
|
'l10n_us_pa_hr_payroll.hr_payroll_rules_pa_unemp_wages_2018',
|
||||||
'l10n_us_pa_hr_payroll.hr_payroll_rules_pa_inc_withhold_add',
|
'l10n_us_pa_hr_payroll.hr_payroll_rules_pa_inc_withhold_add',
|
||||||
|
|
||||||
|
'l10n_us_sc_hr_payroll.hr_payroll_sc_unemp_wages',
|
||||||
|
'l10n_us_sc_hr_payroll.hr_payroll_sc_unemp',
|
||||||
|
'l10n_us_sc_hr_payroll.hr_payroll_sc_income_withhold',
|
||||||
|
'l10n_us_sc_hr_payroll.hr_payroll_rules_sc_unemp_wages',
|
||||||
|
|
||||||
'l10n_us_tx_hr_payroll.contrib_register_txdor',
|
'l10n_us_tx_hr_payroll.contrib_register_txdor',
|
||||||
'l10n_us_tx_hr_payroll.hr_payroll_tx_unemp_wages',
|
'l10n_us_tx_hr_payroll.hr_payroll_tx_unemp_wages',
|
||||||
'l10n_us_tx_hr_payroll.hr_payroll_tx_unemp',
|
'l10n_us_tx_hr_payroll.hr_payroll_tx_unemp',
|
||||||
@@ -249,6 +254,10 @@ XMLIDS_TO_REMOVE_2020 = [
|
|||||||
'l10n_us_wa_hr_payroll.hr_payroll_wa_lni_withhold',
|
'l10n_us_wa_hr_payroll.hr_payroll_wa_lni_withhold',
|
||||||
'l10n_us_wa_hr_payroll.hr_payroll_rules_wa_unemp_wages_2018',
|
'l10n_us_wa_hr_payroll.hr_payroll_rules_wa_unemp_wages_2018',
|
||||||
|
|
||||||
|
'l10n_us_wy_hr_payroll.hr_payroll_wy_unemp_wages',
|
||||||
|
'l10n_us_wy_hr_payroll.hr_payroll_wy_unemp',
|
||||||
|
'l10n_us_wy_hr_payroll.hr_payroll_rules_wy_unemp_wages'
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
XMLIDS_TO_RENAME_2020 = {
|
XMLIDS_TO_RENAME_2020 = {
|
||||||
@@ -409,6 +418,13 @@ XMLIDS_TO_RENAME_2020 = {
|
|||||||
'l10n_us_pa_hr_payroll.hr_payroll_rules_pa_unemp_company_2018': 'l10n_us_hr_payroll.hr_payroll_rule_er_us_pa_suta',
|
'l10n_us_pa_hr_payroll.hr_payroll_rules_pa_unemp_company_2018': 'l10n_us_hr_payroll.hr_payroll_rule_er_us_pa_suta',
|
||||||
'l10n_us_pa_hr_payroll.hr_payroll_rules_pa_inc_withhold_2018': 'l10n_us_hr_payroll.hr_payroll_rule_ee_us_pa_sit',
|
'l10n_us_pa_hr_payroll.hr_payroll_rules_pa_inc_withhold_2018': 'l10n_us_hr_payroll.hr_payroll_rule_ee_us_pa_sit',
|
||||||
|
|
||||||
|
'l10n_us_sc_hr_payroll.res_partner_sc_dew_unemp': 'l10n_us_hr.payroll.res_partner_us_sc_dor',
|
||||||
|
'l10n_us_sc_hr_payroll.res_partner_sc_dor_withhold': 'l10n_us_hr.payroll.res_partner_us_sc_dor_sit',
|
||||||
|
'l10n_us_sc_hr_payroll.contrib_register_sc_dew_unemp': 'l10n_us_hr.payroll.contrib_register_us_sc_dor',
|
||||||
|
'l10n_us_sc_hr_payroll.contrib_register_sc_dor_withhold': 'l10n_us_hr.payroll.contrib_register_us_sc_dor_sit',
|
||||||
|
'l10n_us_sc_hr_payroll.hr_payroll_rules_sc_unemp': 'l10n_us_hr.payroll.hr_payroll_rule_er_us_sc_suta',
|
||||||
|
'l10n_us_sc_hr_payroll.hr_payroll_rules_sc_inc_withhold': 'l10n_us_hr.payroll.hr_payroll_rule_ee_us_sc_sit',
|
||||||
|
|
||||||
'l10n_us_tx_hr_payroll.res_partner_txdor': 'l10n_us_hr_payroll.res_partner_us_tx_dor',
|
'l10n_us_tx_hr_payroll.res_partner_txdor': 'l10n_us_hr_payroll.res_partner_us_tx_dor',
|
||||||
'l10n_us_tx_hr_payroll.contrib_register_txdor': 'l10n_us_hr_payroll.contrib_register_us_tx_dor',
|
'l10n_us_tx_hr_payroll.contrib_register_txdor': 'l10n_us_hr_payroll.contrib_register_us_tx_dor',
|
||||||
'l10n_us_tx_hr_payroll.hr_payroll_rules_tx_unemp_2018': 'l10n_us_hr_payroll.hr_payroll_rule_er_us_tx_suta',
|
'l10n_us_tx_hr_payroll.hr_payroll_rules_tx_unemp_2018': 'l10n_us_hr_payroll.hr_payroll_rule_er_us_tx_suta',
|
||||||
@@ -430,6 +446,10 @@ XMLIDS_TO_RENAME_2020 = {
|
|||||||
'l10n_us_wa_hr_payroll.hr_payroll_rules_wa_lni_withhold': 'l10n_us_hr_payroll.hr_payroll_rule_ee_us_wa_lni',
|
'l10n_us_wa_hr_payroll.hr_payroll_rules_wa_lni_withhold': 'l10n_us_hr_payroll.hr_payroll_rule_ee_us_wa_lni',
|
||||||
'l10n_us_wa_hr_payroll.hr_payroll_rules_wa_lni': 'l10n_us_hr_payroll.hr_payroll_rule_er_us_wa_lni',
|
'l10n_us_wa_hr_payroll.hr_payroll_rules_wa_lni': 'l10n_us_hr_payroll.hr_payroll_rule_er_us_wa_lni',
|
||||||
|
|
||||||
|
'l10n_us_wy_hr_payroll.res_partner_wy_dws_unemp': 'l10n_us_hr_payroll.res_partner_us_wy_dor',
|
||||||
|
'l10n_us_wy_hr_payroll.contrib_register_wy_dws_unemp': 'l10n_us_hr_payroll.contrib_register_us_wy_dor',
|
||||||
|
'l10n_us_wy_hr_payroll.hr_payroll_rules_wy_unemp': 'l10n_us_hr_payroll.hr_payroll_rule_er_us_wy_suta',
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
XMLIDS_COPY_ACCOUNTING_2020 = {
|
XMLIDS_COPY_ACCOUNTING_2020 = {
|
||||||
|
|||||||
@@ -26,19 +26,33 @@ from .state.hi_hawaii import hi_hawaii_state_income_withholding
|
|||||||
from .state.ia_iowa import ia_iowa_state_income_withholding
|
from .state.ia_iowa import ia_iowa_state_income_withholding
|
||||||
from .state.id_idaho import id_idaho_state_income_withholding
|
from .state.id_idaho import id_idaho_state_income_withholding
|
||||||
from .state.il_illinois import il_illinois_state_income_withholding
|
from .state.il_illinois import il_illinois_state_income_withholding
|
||||||
|
from .state.in_indiana import in_indiana_state_income_withholding
|
||||||
|
from .state.ks_kansas import ks_kansas_state_income_withholding
|
||||||
|
from .state.ky_kentucky import ky_kentucky_state_income_withholding
|
||||||
|
from .state.la_louisiana import la_louisiana_state_income_withholding
|
||||||
|
from .state.me_maine import me_maine_state_income_withholding
|
||||||
from .state.mi_michigan import mi_michigan_state_income_withholding
|
from .state.mi_michigan import mi_michigan_state_income_withholding
|
||||||
from .state.mn_minnesota import mn_minnesota_state_income_withholding
|
from .state.mn_minnesota import mn_minnesota_state_income_withholding
|
||||||
from .state.mo_missouri import mo_missouri_state_income_withholding
|
from .state.mo_missouri import mo_missouri_state_income_withholding
|
||||||
from .state.ms_mississippi import ms_mississippi_state_income_withholding
|
from .state.ms_mississippi import ms_mississippi_state_income_withholding
|
||||||
from .state.mt_montana import mt_montana_state_income_withholding
|
from .state.mt_montana import mt_montana_state_income_withholding
|
||||||
from .state.nc_northcarolina import nc_northcarolina_state_income_withholding
|
from .state.nc_northcarolina import nc_northcarolina_state_income_withholding
|
||||||
|
from .state.nd_north_dakota import nd_north_dakota_state_income_withholding
|
||||||
|
from .state.ne_nebraska import ne_nebraska_state_income_withholding
|
||||||
from .state.nj_newjersey import nj_newjersey_state_income_withholding
|
from .state.nj_newjersey import nj_newjersey_state_income_withholding
|
||||||
from .state.nm_new_mexico import nm_new_mexico_state_income_withholding
|
from .state.nm_new_mexico import nm_new_mexico_state_income_withholding
|
||||||
from .state.ny_new_york import ny_new_york_state_income_withholding
|
from .state.ny_new_york import ny_new_york_state_income_withholding
|
||||||
from .state.oh_ohio import oh_ohio_state_income_withholding
|
from .state.oh_ohio import oh_ohio_state_income_withholding
|
||||||
|
from .state.ok_oklahoma import ok_oklahoma_state_income_withholding
|
||||||
|
from .state.ri_rhode_island import ri_rhode_island_state_income_withholding
|
||||||
|
from .state.sc_south_carolina import sc_south_carolina_state_income_withholding
|
||||||
|
from .state.ut_utah import ut_utah_state_income_withholding
|
||||||
|
from .state.vt_vermont import vt_vermont_state_income_withholding
|
||||||
from .state.va_virginia import va_virginia_state_income_withholding
|
from .state.va_virginia import va_virginia_state_income_withholding
|
||||||
from .state.wa_washington import wa_washington_fml_er, \
|
from .state.wa_washington import wa_washington_fml_er, \
|
||||||
wa_washington_fml_ee
|
wa_washington_fml_ee
|
||||||
|
from .state.wi_wisconsin import wi_wisconsin_state_income_withholding
|
||||||
|
from .state.wv_west_virginia import wv_west_virginia_state_income_withholding
|
||||||
|
|
||||||
|
|
||||||
class HRPayslip(models.Model):
|
class HRPayslip(models.Model):
|
||||||
@@ -83,19 +97,33 @@ class HRPayslip(models.Model):
|
|||||||
'ia_iowa_state_income_withholding': ia_iowa_state_income_withholding,
|
'ia_iowa_state_income_withholding': ia_iowa_state_income_withholding,
|
||||||
'id_idaho_state_income_withholding': id_idaho_state_income_withholding,
|
'id_idaho_state_income_withholding': id_idaho_state_income_withholding,
|
||||||
'il_illinois_state_income_withholding': il_illinois_state_income_withholding,
|
'il_illinois_state_income_withholding': il_illinois_state_income_withholding,
|
||||||
|
'in_indiana_state_income_withholding': in_indiana_state_income_withholding,
|
||||||
|
'ks_kansas_state_income_withholding': ks_kansas_state_income_withholding,
|
||||||
|
'ky_kentucky_state_income_withholding':ky_kentucky_state_income_withholding,
|
||||||
|
'la_louisiana_state_income_withholding': la_louisiana_state_income_withholding,
|
||||||
|
'me_maine_state_income_withholding': me_maine_state_income_withholding,
|
||||||
'mi_michigan_state_income_withholding': mi_michigan_state_income_withholding,
|
'mi_michigan_state_income_withholding': mi_michigan_state_income_withholding,
|
||||||
'mn_minnesota_state_income_withholding': mn_minnesota_state_income_withholding,
|
'mn_minnesota_state_income_withholding': mn_minnesota_state_income_withholding,
|
||||||
'mo_missouri_state_income_withholding': mo_missouri_state_income_withholding,
|
'mo_missouri_state_income_withholding': mo_missouri_state_income_withholding,
|
||||||
'ms_mississippi_state_income_withholding': ms_mississippi_state_income_withholding,
|
'ms_mississippi_state_income_withholding': ms_mississippi_state_income_withholding,
|
||||||
'mt_montana_state_income_withholding': mt_montana_state_income_withholding,
|
'mt_montana_state_income_withholding': mt_montana_state_income_withholding,
|
||||||
'nc_northcarolina_state_income_withholding': nc_northcarolina_state_income_withholding,
|
'nc_northcarolina_state_income_withholding': nc_northcarolina_state_income_withholding,
|
||||||
|
'nd_north_dakota_state_income_withholding': nd_north_dakota_state_income_withholding,
|
||||||
|
'ne_nebraska_state_income_withholding': ne_nebraska_state_income_withholding,
|
||||||
'nj_newjersey_state_income_withholding': nj_newjersey_state_income_withholding,
|
'nj_newjersey_state_income_withholding': nj_newjersey_state_income_withholding,
|
||||||
'nm_new_mexico_state_income_withholding': nm_new_mexico_state_income_withholding,
|
'nm_new_mexico_state_income_withholding': nm_new_mexico_state_income_withholding,
|
||||||
'ny_new_york_state_income_withholding': ny_new_york_state_income_withholding,
|
'ny_new_york_state_income_withholding': ny_new_york_state_income_withholding,
|
||||||
'oh_ohio_state_income_withholding': oh_ohio_state_income_withholding,
|
'oh_ohio_state_income_withholding': oh_ohio_state_income_withholding,
|
||||||
|
'ok_oklahoma_state_income_withholding': ok_oklahoma_state_income_withholding,
|
||||||
|
'ri_rhode_island_state_income_withholding': ri_rhode_island_state_income_withholding,
|
||||||
|
'sc_south_carolina_state_income_withholding': sc_south_carolina_state_income_withholding,
|
||||||
|
'ut_utah_state_income_withholding': ut_utah_state_income_withholding,
|
||||||
|
'vt_vermont_state_income_withholding': vt_vermont_state_income_withholding,
|
||||||
'va_virginia_state_income_withholding': va_virginia_state_income_withholding,
|
'va_virginia_state_income_withholding': va_virginia_state_income_withholding,
|
||||||
'wa_washington_fml_er': wa_washington_fml_er,
|
'wa_washington_fml_er': wa_washington_fml_er,
|
||||||
'wa_washington_fml_ee': wa_washington_fml_ee,
|
'wa_washington_fml_ee': wa_washington_fml_ee,
|
||||||
|
'wi_wisconsin_state_income_withholding': wi_wisconsin_state_income_withholding,
|
||||||
|
'wv_west_virginia_state_income_withholding': wv_west_virginia_state_income_withholding,
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_year(self):
|
def get_year(self):
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ def al_alabama_state_income_withholding(payslip, categories, worked_days, inputs
|
|||||||
if not wage:
|
if not wage:
|
||||||
return 0.0, 0.0
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
exemptions = payslip.contract_id.us_payroll_config_value('al_a4_sit_exemptions')
|
||||||
|
if not exemptions:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
personal_exempt = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_exempt')
|
personal_exempt = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_exempt')
|
||||||
if personal_exempt:
|
if personal_exempt:
|
||||||
return 0.0, 0.0
|
return 0.0, 0.0
|
||||||
@@ -25,7 +29,6 @@ def al_alabama_state_income_withholding(payslip, categories, worked_days, inputs
|
|||||||
pay_periods = payslip.dict.get_pay_periods_in_year()
|
pay_periods = payslip.dict.get_pay_periods_in_year()
|
||||||
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
tax_table = payslip.dict.rule_parameter('us_al_sit_tax_rate')
|
tax_table = payslip.dict.rule_parameter('us_al_sit_tax_rate')
|
||||||
exemptions = payslip.dict.contract_id.us_payroll_config_value('al_a4_sit_exemptions')
|
|
||||||
dependent_rate = payslip.dict.rule_parameter('us_al_sit_dependent_rate')
|
dependent_rate = payslip.dict.rule_parameter('us_al_sit_dependent_rate')
|
||||||
standard_deduction = payslip.dict.rule_parameter('us_al_sit_standard_deduction_rate').get(exemptions, 0.0)
|
standard_deduction = payslip.dict.rule_parameter('us_al_sit_standard_deduction_rate').get(exemptions, 0.0)
|
||||||
personal_exemption = payslip.dict.rule_parameter('us_al_sit_personal_exemption_rate').get(exemptions, 0.0)
|
personal_exemption = payslip.dict.rule_parameter('us_al_sit_personal_exemption_rate').get(exemptions, 0.0)
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ def ar_arkansas_state_income_withholding(payslip, categories, worked_days, input
|
|||||||
|
|
||||||
# Determine Wage
|
# Determine Wage
|
||||||
wage = sit_wage(payslip, categories)
|
wage = sit_wage(payslip, categories)
|
||||||
if wage == 0.0:
|
if not wage:
|
||||||
return 0.0, 0.0
|
return 0.0, 0.0
|
||||||
|
|
||||||
pay_periods = payslip.dict.get_pay_periods_in_year()
|
pay_periods = payslip.dict.get_pay_periods_in_year()
|
||||||
|
|||||||
@@ -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.dict.contract_id.us_payroll_config_value('ga_g4_sit_filing_status')
|
ga_filing_status = payslip.dict.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
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ def ia_iowa_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
|
||||||
|
|
||||||
|
if payslip.contract_id.us_payroll_config_value('state_income_tax_exempt'):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
# Determine Wage
|
# Determine Wage
|
||||||
wage = sit_wage(payslip, categories)
|
wage = sit_wage(payslip, categories)
|
||||||
if not wage:
|
if not wage:
|
||||||
@@ -27,7 +30,8 @@ def ia_iowa_state_income_withholding(payslip, categories, worked_days, inputs):
|
|||||||
deduction_per_allowance = payslip.dict.rule_parameter('us_ia_sit_deduction_allowance_rate')[schedule_pay]
|
deduction_per_allowance = payslip.dict.rule_parameter('us_ia_sit_deduction_allowance_rate')[schedule_pay]
|
||||||
|
|
||||||
t1 = wage + fed_withholding
|
t1 = wage + fed_withholding
|
||||||
t2 = t1 - standard_deduction[0] if allowances < 2 else standard_deduction[1]
|
standard_deduction_amt = standard_deduction[0] if allowances < 2 else standard_deduction[1]
|
||||||
|
t2 = t1 - standard_deduction_amt
|
||||||
t3 = 0.0
|
t3 = 0.0
|
||||||
last = 0.0
|
last = 0.0
|
||||||
for row in tax_table:
|
for row in tax_table:
|
||||||
|
|||||||
34
l10n_us_hr_payroll/models/state/in_indiana.py
Normal file
34
l10n_us_hr_payroll/models/state/in_indiana.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def in_indiana_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'IN'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
schedule_pay = payslip.dict.contract_id.schedule_pay
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
personal_exemption = payslip.dict.contract_id.us_payroll_config_value('in_w4_sit_personal_exemption')
|
||||||
|
personal_exemption_rate = payslip.dict.rule_parameter('us_in_sit_personal_exemption_rate')[schedule_pay][personal_exemption - 1]
|
||||||
|
dependent_exemption = payslip.dict.contract_id.us_payroll_config_value('in_w4_sit_dependent_exemption')
|
||||||
|
dependent_exemption_rate = payslip.dict.rule_parameter('us_in_sit_dependent_exemption_rate')[schedule_pay][dependent_exemption - 1]
|
||||||
|
income_tax_rate = payslip.dict.rule_parameter('us_in_suta_income_rate')
|
||||||
|
|
||||||
|
taxable_income = wage - (personal_exemption_rate + dependent_exemption_rate)
|
||||||
|
withholding = taxable_income * (income_tax_rate / 100.0)
|
||||||
|
|
||||||
|
withholding = max(withholding, 0.0)
|
||||||
|
withholding += additional
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
44
l10n_us_hr_payroll/models/state/ks_kansas.py
Normal file
44
l10n_us_hr_payroll/models/state/ks_kansas.py
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def ks_kansas_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'KS'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
filing_status = payslip.dict.contract_id.us_payroll_config_value('ks_k4_sit_filing_status')
|
||||||
|
if not filing_status:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
schedule_pay = payslip.dict.contract_id.schedule_pay
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
allowances = payslip.dict.contract_id.us_payroll_config_value('ks_k4_sit_allowances')
|
||||||
|
allowances_amt = payslip.dict.rule_parameter('us_ks_sit_allowances_rate')[schedule_pay]
|
||||||
|
tax_table = payslip.dict.rule_parameter('us_ks_sit_tax_rate')[filing_status].get(schedule_pay)
|
||||||
|
|
||||||
|
taxable_income = wage - (allowances * allowances_amt)
|
||||||
|
withholding = 0.0
|
||||||
|
last = 0.0
|
||||||
|
for row in tax_table:
|
||||||
|
amt, rate, flat_fee = row
|
||||||
|
if wage <= float(amt):
|
||||||
|
withholding = ((taxable_income - last) * (rate / 100)) + flat_fee
|
||||||
|
break
|
||||||
|
last = amt
|
||||||
|
|
||||||
|
withholding = max(withholding, 0.0)
|
||||||
|
withholding += additional
|
||||||
|
withholding = round(withholding)
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
32
l10n_us_hr_payroll/models/state/ky_kentucky.py
Normal file
32
l10n_us_hr_payroll/models/state/ky_kentucky.py
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def ky_kentucky_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'KY'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
pay_periods = payslip.dict.get_pay_periods_in_year()
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
tax_rate = payslip.dict.rule_parameter('us_ky_sit_tax_rate')
|
||||||
|
standard_deduction = payslip.dict.rule_parameter('us_ky_sit_standard_deduction_rate')
|
||||||
|
|
||||||
|
taxable_income = (wage * pay_periods) - standard_deduction
|
||||||
|
withholding = taxable_income * (tax_rate / 100)
|
||||||
|
|
||||||
|
withholding = max(withholding, 0.0)
|
||||||
|
withholding /= pay_periods
|
||||||
|
withholding += additional
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
62
l10n_us_hr_payroll/models/state/la_louisiana.py
Normal file
62
l10n_us_hr_payroll/models/state/la_louisiana.py
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def la_louisiana_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'LA'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
filing_status = payslip.dict.contract_id.us_payroll_config_value('la_l4_sit_filing_status')
|
||||||
|
if not filing_status:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
pay_periods = payslip.dict.get_pay_periods_in_year()
|
||||||
|
personal_exemptions = payslip.dict.contract_id.us_payroll_config_value('la_l4_sit_exemptions')
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
dependent_exemptions = payslip.dict.contract_id.us_payroll_config_value('la_l4_sit_dependents')
|
||||||
|
tax_table = payslip.dict.rule_parameter('us_la_sit_tax_rate')[filing_status]
|
||||||
|
exemption_rate = payslip.dict.rule_parameter('us_la_sit_personal_exemption_rate')
|
||||||
|
dependent_rate = payslip.dict.rule_parameter('us_la_sit_dependent_rate')
|
||||||
|
|
||||||
|
annual_wage = wage * pay_periods
|
||||||
|
|
||||||
|
effect_cap = 0.0
|
||||||
|
multiplier = 0.0
|
||||||
|
if filing_status == 'single':
|
||||||
|
effect_cap = 12500.00
|
||||||
|
multiplier = 1.60
|
||||||
|
elif filing_status == 'married':
|
||||||
|
effect_cap = 25000.00
|
||||||
|
multiplier = 1.65
|
||||||
|
|
||||||
|
after_credits_under = (2.100 / 100) * (((personal_exemptions * exemption_rate) +
|
||||||
|
(dependent_exemptions * dependent_rate)) / pay_periods)
|
||||||
|
after_credits_over = 0.00
|
||||||
|
if after_credits_under > effect_cap:
|
||||||
|
after_credits_under = effect_cap
|
||||||
|
after_credits_over_check = ((personal_exemptions * exemption_rate) + (dependent_exemptions * dependent_rate)) - effect_cap
|
||||||
|
after_credits_over = (multiplier / 100.00) * (after_credits_over_check / pay_periods) if after_credits_over_check > 0 else 0.00
|
||||||
|
withholding = 0.0
|
||||||
|
last = 0.0
|
||||||
|
for amt, rate in tax_table:
|
||||||
|
withholding = withholding + ((rate / 100.0) * (wage - (last / pay_periods)))
|
||||||
|
if annual_wage <= float(amt):
|
||||||
|
break
|
||||||
|
last = amt
|
||||||
|
|
||||||
|
withholding = withholding - (after_credits_under + after_credits_over)
|
||||||
|
withholding = round(withholding, 2)
|
||||||
|
withholding += additional
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
62
l10n_us_hr_payroll/models/state/me_maine.py
Normal file
62
l10n_us_hr_payroll/models/state/me_maine.py
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def me_maine_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
WAGE = GROSS + DED_FIT_EXEMPT
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'ME'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
filing_status = payslip.dict.contract_id.us_payroll_config_value('me_w4me_sit_filing_status')
|
||||||
|
if not filing_status:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
exempt = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_exempt')
|
||||||
|
if exempt:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
pay_periods = payslip.dict.get_pay_periods_in_year()
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
allowances = payslip.dict.contract_id.us_payroll_config_value('me_w4me_sit_allowances')
|
||||||
|
tax_rate = payslip.dict.rule_parameter('us_me_sit_tax_rate')[filing_status]
|
||||||
|
personal_exemption = payslip.dict.rule_parameter('us_me_sit_personal_exemption_rate')
|
||||||
|
standard_deduction = payslip.dict.rule_parameter('us_me_sit_standard_deduction_rate')[filing_status]
|
||||||
|
|
||||||
|
taxable_income = wage * pay_periods
|
||||||
|
exemption_amt = allowances * personal_exemption
|
||||||
|
last = 0.0
|
||||||
|
standard_deduction_amt = 0.0
|
||||||
|
for row in standard_deduction:
|
||||||
|
amt, flat_amt = row
|
||||||
|
if taxable_income < 82900:
|
||||||
|
standard_deduction_amt = flat_amt
|
||||||
|
break
|
||||||
|
elif taxable_income < amt:
|
||||||
|
standard_deduction_amt = last * (amt - taxable_income) / flat_amt
|
||||||
|
break
|
||||||
|
last = flat_amt
|
||||||
|
annual_income = taxable_income - (exemption_amt + standard_deduction_amt)
|
||||||
|
withholding = 0.0
|
||||||
|
for row in tax_rate:
|
||||||
|
amt, flat_fee, rate = row
|
||||||
|
if annual_income < float(amt):
|
||||||
|
withholding = ((annual_income - last) * (rate / 100)) + flat_fee
|
||||||
|
break
|
||||||
|
last = amt
|
||||||
|
|
||||||
|
withholding = max(withholding, 0.0)
|
||||||
|
withholding = round(withholding / pay_periods)
|
||||||
|
withholding += additional
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
45
l10n_us_hr_payroll/models/state/nd_north_dakota.py
Normal file
45
l10n_us_hr_payroll/models/state/nd_north_dakota.py
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def nd_north_dakota_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
WAGE = GROSS + DED_FIT_EXEMPT
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'ND'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
filing_status = payslip.dict.contract_id.us_payroll_config_value('nd_w4_sit_filing_status')
|
||||||
|
if not filing_status:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
schedule_pay = payslip.dict.contract_id.schedule_pay
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
allowance = payslip.dict.contract_id.us_payroll_config_value('nd_w4_sit_allowances')
|
||||||
|
allowance_rate = payslip.dict.rule_parameter('us_nd_sit_allowances_rate')[schedule_pay]
|
||||||
|
tax_rate = payslip.dict.rule_parameter('us_nd_sit_tax_rate')[filing_status].get(schedule_pay)
|
||||||
|
|
||||||
|
taxable_income = wage - (allowance * allowance_rate)
|
||||||
|
withholding = 0.0
|
||||||
|
last = 0.0
|
||||||
|
for row in tax_rate:
|
||||||
|
amt, flat_fee, rate = row
|
||||||
|
if taxable_income < float(amt):
|
||||||
|
withholding = ((taxable_income - last) * (rate / 100)) + flat_fee
|
||||||
|
break
|
||||||
|
last = amt
|
||||||
|
|
||||||
|
withholding = round(withholding)
|
||||||
|
withholding = max(withholding, 0.0)
|
||||||
|
withholding += additional
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
49
l10n_us_hr_payroll/models/state/ne_nebraska.py
Normal file
49
l10n_us_hr_payroll/models/state/ne_nebraska.py
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def ne_nebraska_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
WAGE = GROSS + DED_FIT_EXEMPT
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'NE'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
personal_exempt = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_exempt')
|
||||||
|
if personal_exempt:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
filing_status = payslip.dict.contract_id.us_payroll_config_value('ne_w4n_sit_filing_status')
|
||||||
|
if not filing_status:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
schedule_pay = payslip.dict.contract_id.schedule_pay
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
allowances = payslip.dict.contract_id.us_payroll_config_value('ne_w4n_sit_allowances')
|
||||||
|
tax_rate = payslip.dict.rule_parameter('us_ne_sit_tax_rate')[filing_status].get(schedule_pay)
|
||||||
|
sit_allowance = payslip.dict.rule_parameter('us_ne_sit_allowances_rate')[schedule_pay]
|
||||||
|
|
||||||
|
allowance_amt = allowances * sit_allowance
|
||||||
|
taxable_income = wage - allowance_amt
|
||||||
|
withholding = 0.0
|
||||||
|
last = 0.0
|
||||||
|
for row in tax_rate:
|
||||||
|
amt, flat_fee, rate = row
|
||||||
|
if taxable_income < float(amt):
|
||||||
|
withholding = ((taxable_income - last) * (rate / 100)) + flat_fee
|
||||||
|
break
|
||||||
|
last = amt
|
||||||
|
|
||||||
|
withholding = max(withholding, 0.0)
|
||||||
|
withholding += additional
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
47
l10n_us_hr_payroll/models/state/ok_oklahoma.py
Normal file
47
l10n_us_hr_payroll/models/state/ok_oklahoma.py
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def ok_oklahoma_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'OK'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
if payslip.dict.contract_id.us_payroll_config_value('state_income_tax_exempt'):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
filing_status = payslip.dict.contract_id.us_payroll_config_value('ok_w4_sit_filing_status')
|
||||||
|
if not filing_status:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
schedule_pay = payslip.dict.contract_id.schedule_pay
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
allowances = payslip.dict.contract_id.us_payroll_config_value('ok_w4_sit_allowances')
|
||||||
|
allowances_amt = payslip.dict.rule_parameter('us_ok_sit_allowances_rate')[schedule_pay]
|
||||||
|
tax_table = payslip.dict.rule_parameter('us_ok_sit_tax_rate')[filing_status].get(schedule_pay)
|
||||||
|
|
||||||
|
taxable_income = wage - (allowances * allowances_amt)
|
||||||
|
withholding = 0.0
|
||||||
|
last = 0.0
|
||||||
|
for row in tax_table:
|
||||||
|
amt, rate, flat_fee = row
|
||||||
|
if wage <= float(amt):
|
||||||
|
withholding = ((taxable_income - last) * (rate / 100)) + flat_fee
|
||||||
|
break
|
||||||
|
last = amt
|
||||||
|
|
||||||
|
withholding = max(withholding, 0.0)
|
||||||
|
withholding += additional
|
||||||
|
withholding = round(withholding)
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
48
l10n_us_hr_payroll/models/state/ri_rhode_island.py
Normal file
48
l10n_us_hr_payroll/models/state/ri_rhode_island.py
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def ri_rhode_island_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'RI'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
if payslip.dict.contract_id.us_payroll_config_value('state_income_tax_exempt'):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
schedule_pay = payslip.dict.contract_id.schedule_pay
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
allowances = payslip.dict.contract_id.us_payroll_config_value('ri_w4_sit_allowances')
|
||||||
|
exemption_rate = payslip.dict.rule_parameter('us_ri_sit_exemption_rate')[schedule_pay]
|
||||||
|
tax_table = payslip.dict.rule_parameter('us_ri_sit_tax_rate')[schedule_pay]
|
||||||
|
|
||||||
|
exemption_amt = 0.0
|
||||||
|
for row in exemption_rate:
|
||||||
|
amt, flat_fee = row
|
||||||
|
if wage > amt:
|
||||||
|
exemption_amt = flat_fee
|
||||||
|
|
||||||
|
taxable_income = wage - (allowances * exemption_amt)
|
||||||
|
withholding = 0.0
|
||||||
|
last = 0.0
|
||||||
|
for row in tax_table:
|
||||||
|
amt, flat_fee, rate = row
|
||||||
|
if wage <= float(amt):
|
||||||
|
withholding = ((taxable_income - last) * (rate / 100)) + flat_fee
|
||||||
|
break
|
||||||
|
last = amt
|
||||||
|
|
||||||
|
withholding = max(withholding, 0.0)
|
||||||
|
withholding += additional
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
50
l10n_us_hr_payroll/models/state/sc_south_carolina.py
Normal file
50
l10n_us_hr_payroll/models/state/sc_south_carolina.py
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def sc_south_carolina_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
WAGE = GROSS + DED_FIT_EXEMPT
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'SC'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
personal_exempt = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_exempt')
|
||||||
|
if personal_exempt:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
pay_periods = payslip.dict.get_pay_periods_in_year()
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
allowances = payslip.dict.contract_id.us_payroll_config_value('sc_w4_sit_allowances')
|
||||||
|
tax_rate = payslip.dict.rule_parameter('us_sc_sit_tax_rate')
|
||||||
|
personal_exemption = payslip.dict.rule_parameter('us_sc_sit_personal_exemption_rate')
|
||||||
|
deduction = payslip.dict.rule_parameter('us_sc_sit_standard_deduction_rate')
|
||||||
|
|
||||||
|
annual_wage = wage * pay_periods
|
||||||
|
personal_exemption_amt = allowances * personal_exemption
|
||||||
|
standard_deduction = 0.0
|
||||||
|
if allowances > 0:
|
||||||
|
if (annual_wage * 0.1) > deduction:
|
||||||
|
standard_deduction = deduction
|
||||||
|
else:
|
||||||
|
standard_deduction = annual_wage * (10 / 100)
|
||||||
|
taxable_income = annual_wage - personal_exemption_amt - standard_deduction
|
||||||
|
withholding = 0.0
|
||||||
|
last = 0.0
|
||||||
|
for cap, rate, flat_amt in tax_rate:
|
||||||
|
if float(cap) > taxable_income:
|
||||||
|
withholding = (taxable_income * (rate / 100.0) - flat_amt)
|
||||||
|
break
|
||||||
|
withholding /= pay_periods
|
||||||
|
withholding += additional
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
39
l10n_us_hr_payroll/models/state/ut_utah.py
Normal file
39
l10n_us_hr_payroll/models/state/ut_utah.py
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def ut_utah_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'UT'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
filing_status = payslip.dict.contract_id.us_payroll_config_value('ut_w4_sit_filing_status')
|
||||||
|
if not filing_status:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
schedule_pay = payslip.dict.contract_id.schedule_pay
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
tax_rate = payslip.dict.rule_parameter('us_ut_tax_rate')
|
||||||
|
allowances = payslip.dict.rule_parameter('us_ut_sit_allowances_rate')[filing_status].get(schedule_pay)
|
||||||
|
tax_table = payslip.dict.rule_parameter('us_ut_sit_tax_rate')[filing_status].get(schedule_pay)
|
||||||
|
|
||||||
|
taxable_income = wage * tax_rate
|
||||||
|
withholding = 0.0
|
||||||
|
amt, rate = tax_table
|
||||||
|
withholding = taxable_income - (allowances - ((wage - amt) * (rate / 100)))
|
||||||
|
|
||||||
|
withholding = max(withholding, 0.0)
|
||||||
|
withholding += additional
|
||||||
|
withholding = round(withholding)
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
46
l10n_us_hr_payroll/models/state/vt_vermont.py
Normal file
46
l10n_us_hr_payroll/models/state/vt_vermont.py
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def vt_vermont_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'VT'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
if payslip.dict.contract_id.us_payroll_config_value('state_income_tax_exempt'):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
filing_status = payslip.dict.contract_id.us_payroll_config_value('vt_w4vt_sit_filing_status')
|
||||||
|
if not filing_status:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
schedule_pay = payslip.dict.contract_id.schedule_pay
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
allowances = payslip.dict.contract_id.us_payroll_config_value('vt_w4vt_sit_allowances')
|
||||||
|
allowance_amt = payslip.dict.rule_parameter('us_vt_sit_allowances_rate')[schedule_pay]
|
||||||
|
tax_table = payslip.dict.rule_parameter('us_vt_sit_tax_rate')[filing_status].get(schedule_pay)
|
||||||
|
|
||||||
|
taxable_income = wage - (allowances * allowance_amt)
|
||||||
|
withholding = 0.0
|
||||||
|
last = 0.0
|
||||||
|
for row in tax_table:
|
||||||
|
amt, flat_fee, rate = row
|
||||||
|
if wage <= float(amt):
|
||||||
|
withholding = ((taxable_income - last) * (rate / 100)) + flat_fee
|
||||||
|
break
|
||||||
|
last = amt
|
||||||
|
|
||||||
|
withholding = max(withholding, 0.0)
|
||||||
|
withholding += additional
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
47
l10n_us_hr_payroll/models/state/wi_wisconsin.py
Normal file
47
l10n_us_hr_payroll/models/state/wi_wisconsin.py
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def wi_wisconsin_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'WI'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
if payslip.dict.contract_id.us_payroll_config_value('state_income_tax_exempt'):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
filing_status = payslip.dict.contract_id.us_payroll_config_value('wi_wt4_sit_filing_status')
|
||||||
|
if not filing_status:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
pay_periods = payslip.dict.get_pay_periods_in_year()
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
exemptions = payslip.dict.contract_id.us_payroll_config_value('wi_wt4_sit_exemptions')
|
||||||
|
exemption_amt = payslip.dict.rule_parameter('us_wi_sit_exemption_rate')
|
||||||
|
tax_table = payslip.dict.rule_parameter('us_wi_sit_tax_rate')[filing_status]
|
||||||
|
|
||||||
|
taxable_income = wage * pay_periods
|
||||||
|
withholding = 0.0
|
||||||
|
last = 0.0
|
||||||
|
for row in tax_table:
|
||||||
|
amt, rate, flat_fee = row
|
||||||
|
if taxable_income <= float(amt):
|
||||||
|
withholding = (((taxable_income - last) * (rate / 100)) + flat_fee) - (exemptions * exemption_amt)
|
||||||
|
break
|
||||||
|
last = amt
|
||||||
|
|
||||||
|
withholding = max(withholding, 0.0)
|
||||||
|
withholding /= pay_periods
|
||||||
|
withholding += additional
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
44
l10n_us_hr_payroll/models/state/wv_west_virginia.py
Normal file
44
l10n_us_hr_payroll/models/state/wv_west_virginia.py
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .general import _state_applies, sit_wage
|
||||||
|
|
||||||
|
|
||||||
|
def wv_west_virginia_state_income_withholding(payslip, categories, worked_days, inputs):
|
||||||
|
"""
|
||||||
|
Returns SIT eligible wage and rate.
|
||||||
|
|
||||||
|
:return: result, result_rate (wage, percent)
|
||||||
|
"""
|
||||||
|
state_code = 'WV'
|
||||||
|
if not _state_applies(payslip, state_code):
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
# Determine Wage
|
||||||
|
wage = sit_wage(payslip, categories)
|
||||||
|
if not wage:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
filing_status = payslip.dict.contract_id.us_payroll_config_value('wv_it104_sit_filing_status')
|
||||||
|
if not filing_status:
|
||||||
|
return 0.0, 0.0
|
||||||
|
|
||||||
|
schedule_pay = payslip.dict.contract_id.schedule_pay
|
||||||
|
additional = payslip.dict.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
|
||||||
|
exemptions = payslip.dict.contract_id.us_payroll_config_value('wv_it104_sit_exemptions')
|
||||||
|
exemption_amt = payslip.dict.rule_parameter('us_wv_sit_exemption_rate')[schedule_pay]
|
||||||
|
tax_table = payslip.dict.rule_parameter('us_wv_sit_tax_rate')[filing_status].get(schedule_pay)
|
||||||
|
|
||||||
|
taxable_income = wage - (exemptions * exemption_amt)
|
||||||
|
withholding = 0.0
|
||||||
|
last = 0.0
|
||||||
|
for row in tax_table:
|
||||||
|
amt, flat_fee, rate = row
|
||||||
|
if taxable_income <= float(amt):
|
||||||
|
withholding = ((taxable_income - last) * (rate / 100)) + flat_fee
|
||||||
|
break
|
||||||
|
last = amt
|
||||||
|
|
||||||
|
withholding = max(withholding, 0.0)
|
||||||
|
withholding += additional
|
||||||
|
withholding = round(withholding)
|
||||||
|
return wage, -((withholding / wage) * 100.0)
|
||||||
@@ -52,7 +52,7 @@ class HRContractUSPayrollConfig(models.Model):
|
|||||||
help='Form W4 (2020+) 4(c)')
|
help='Form W4 (2020+) 4(c)')
|
||||||
|
|
||||||
al_a4_sit_exemptions = fields.Selection([
|
al_a4_sit_exemptions = fields.Selection([
|
||||||
('0', '0'),
|
('', '0'),
|
||||||
('S', 'S'),
|
('S', 'S'),
|
||||||
('MS', 'MS'),
|
('MS', 'MS'),
|
||||||
('M', 'M'),
|
('M', 'M'),
|
||||||
@@ -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'),
|
||||||
@@ -124,6 +124,29 @@ class HRContractUSPayrollConfig(models.Model):
|
|||||||
il_w4_sit_basic_allowances = fields.Integer(string='Illinois IL-W-4 Number of Basic Allowances', help='IL-W-4 Step 1.')
|
il_w4_sit_basic_allowances = fields.Integer(string='Illinois IL-W-4 Number of Basic Allowances', help='IL-W-4 Step 1.')
|
||||||
il_w4_sit_additional_allowances = fields.Integer(string='Illinois IL-W-4 Number of Additional Allowances', help='IL-W-4 Step 2.')
|
il_w4_sit_additional_allowances = fields.Integer(string='Illinois IL-W-4 Number of Additional Allowances', help='IL-W-4 Step 2.')
|
||||||
|
|
||||||
|
in_w4_sit_personal_exemption = fields.Integer(string='Indiana In-W-4 Number of Personal Exemption', help='IN-W-4 5.')
|
||||||
|
in_w4_sit_dependent_exemption = fields.Integer(string='Indiana In-W-4 Number of Dependent Exemption', help='IN-W-4 6.')
|
||||||
|
|
||||||
|
ks_k4_sit_filing_status = fields.Selection([
|
||||||
|
('single', 'Single'),
|
||||||
|
('married', 'Joint'),
|
||||||
|
], string='Kansas K-4 Filing Status', help='KS K-4 3.')
|
||||||
|
ks_k4_sit_allowances = fields.Integer(string='Kansas KS K-4 Number of Allowances', help='KS K-4 Step 4.')
|
||||||
|
|
||||||
|
la_l4_sit_filing_status = fields.Selection([
|
||||||
|
('single', 'Single'),
|
||||||
|
('married', 'Married'),
|
||||||
|
], string='Louisiana LA L-4 Filing Status', help='LA L-4 3.')
|
||||||
|
la_l4_sit_exemptions = fields.Integer(string='Louisiana LA L-4 Number of Exemptions', help='LA L-4 6.')
|
||||||
|
la_l4_sit_dependents = fields.Integer(string='Louisiana LA L-4 Number of Dependents', help='LA L-4 7.')
|
||||||
|
|
||||||
|
me_w4me_sit_filing_status = fields.Selection([
|
||||||
|
('', 'Exempt'),
|
||||||
|
('single', 'Single or Head of Household'),
|
||||||
|
('married', 'Married'),
|
||||||
|
], string='Maine W-4ME Filing Status', help='ME W-4ME 3.')
|
||||||
|
me_w4me_sit_allowances = fields.Integer(string='Maine Allowances', help='W-4ME 4.')
|
||||||
|
|
||||||
mi_w4_sit_exemptions = fields.Integer(string='Michigan MI W-4 Exemptions', help='MI-W4 6.')
|
mi_w4_sit_exemptions = fields.Integer(string='Michigan MI W-4 Exemptions', help='MI-W4 6.')
|
||||||
|
|
||||||
mn_w4mn_sit_filing_status = fields.Selection([
|
mn_w4mn_sit_filing_status = fields.Selection([
|
||||||
@@ -167,11 +190,24 @@ class HRContractUSPayrollConfig(models.Model):
|
|||||||
('', 'Exempt'),
|
('', 'Exempt'),
|
||||||
('single', 'Single'),
|
('single', 'Single'),
|
||||||
('married', 'Married'),
|
('married', 'Married'),
|
||||||
('surviving_spouse', 'Surviving Spouse'),
|
|
||||||
('head_household', 'Head of Household')
|
('head_household', 'Head of Household')
|
||||||
], string='North Carolina NC-4 Filing Status', help='NC-4')
|
], string='North Carolina NC-4 Filing Status', help='NC-4')
|
||||||
nc_nc4_sit_allowances = fields.Integer(string='North Carolina NC-4 Allowances', help='NC-4 1.')
|
nc_nc4_sit_allowances = fields.Integer(string='North Carolina NC-4 Allowances', help='NC-4 1.')
|
||||||
|
|
||||||
|
nd_w4_sit_filing_status = fields.Selection([
|
||||||
|
('', 'Exempt'),
|
||||||
|
('single', 'Single'),
|
||||||
|
('married', 'Married'),
|
||||||
|
('head_household', 'Head of Household')
|
||||||
|
], string='North Dakota ND W-4 Filing Status', help='ND W-4')
|
||||||
|
nd_w4_sit_allowances = fields.Integer(string='North Dakota ND W-4')
|
||||||
|
|
||||||
|
ne_w4n_sit_filing_status = fields.Selection([
|
||||||
|
('single', 'Single'),
|
||||||
|
('married', 'Married'),
|
||||||
|
], string='Nebraska NE W-4N Filing Status', help='NE W-4N')
|
||||||
|
ne_w4n_sit_allowances = fields.Integer(string='Nebraska NE W-4N Allowances', help='NE W-4N 1.')
|
||||||
|
|
||||||
nj_njw4_sit_filing_status = fields.Selection([
|
nj_njw4_sit_filing_status = fields.Selection([
|
||||||
('', 'Exempt'),
|
('', 'Exempt'),
|
||||||
('single', 'Single'),
|
('single', 'Single'),
|
||||||
@@ -200,7 +236,43 @@ class HRContractUSPayrollConfig(models.Model):
|
|||||||
oh_it4_sit_exemptions = fields.Integer(string='Ohio IT-4 Exemptions',
|
oh_it4_sit_exemptions = fields.Integer(string='Ohio IT-4 Exemptions',
|
||||||
help='Line 4')
|
help='Line 4')
|
||||||
|
|
||||||
|
ok_w4_sit_filing_status = fields.Selection([
|
||||||
|
('single', 'Single'),
|
||||||
|
('married', 'Married'),
|
||||||
|
('head_household', 'Married, but withhold at higher Single rate')
|
||||||
|
], string='Oklahoma OK-W-4 Filing Status', help='OK-W-4')
|
||||||
|
ok_w4_sit_allowances = fields.Integer(string='Oklahoma OK-W-4 Allowances', help='OK-W-4 5.')
|
||||||
|
|
||||||
|
ri_w4_sit_allowances = fields.Integer(string='Rhode Island RI W-4 Allowances', help='RI W-4 1.')
|
||||||
|
|
||||||
|
sc_w4_sit_allowances = fields.Integer(string='South Carolina SC W-4 Allowances', help='SC W-4 5.')
|
||||||
|
|
||||||
|
ut_w4_sit_filing_status = fields.Selection([
|
||||||
|
('single', 'Single'),
|
||||||
|
('married', 'Married'),
|
||||||
|
('head_household', 'Head of Household')
|
||||||
|
], string='Utah UT W-4 Filing Status', help='UT W-4 C.')
|
||||||
|
|
||||||
|
vt_w4vt_sit_filing_status = fields.Selection([
|
||||||
|
('single', 'Single'),
|
||||||
|
('married', 'Married'),
|
||||||
|
], string='Vermont VT W-4VT Filing Status', help='VT W-4VT')
|
||||||
|
vt_w4vt_sit_allowances = fields.Integer(string='Vermont VT W-4VT Allowances', help='VT W-4VT 5.')
|
||||||
|
|
||||||
va_va4_sit_exemptions = fields.Integer(string='Virginia VA-4(P) Personal Exemptions',
|
va_va4_sit_exemptions = fields.Integer(string='Virginia VA-4(P) Personal Exemptions',
|
||||||
help='VA-4(P) 1(a)')
|
help='VA-4(P) 1(a)')
|
||||||
va_va4_sit_other_exemptions = fields.Integer(string='Virginia VA-4(P) Age & Blindness Exemptions',
|
va_va4_sit_other_exemptions = fields.Integer(string='Virginia VA-4(P) Age & Blindness Exemptions',
|
||||||
help='VA-4(P) 1(b)')
|
help='VA-4(P) 1(b)')
|
||||||
|
|
||||||
|
wi_wt4_sit_filing_status = fields.Selection([
|
||||||
|
('single', 'Single'),
|
||||||
|
('married', 'Married'),
|
||||||
|
], string='Wisconsin WT-4 Filing Status', help='WI WT-4')
|
||||||
|
wi_wt4_sit_exemptions = fields.Integer(string='Wisconsin Exemptions', help='WI WT-4 1.(d)')
|
||||||
|
|
||||||
|
wv_it104_sit_filing_status = fields.Selection([
|
||||||
|
('single', 'Single'),
|
||||||
|
('married', 'Married'),
|
||||||
|
('head_household', 'Head of Household')
|
||||||
|
], string='West Virginia WV/IT-104 Filing Status', help='WV WV/IT-104')
|
||||||
|
wv_it104_sit_exemptions = fields.Integer(string='West Virginia Exemptions', help='WV WV/IT-104 4.')
|
||||||
|
|||||||
@@ -47,6 +47,17 @@ from . import test_us_id_idaho_payslip_2020
|
|||||||
from . import test_us_il_illinois_payslip_2019
|
from . import test_us_il_illinois_payslip_2019
|
||||||
from . import test_us_il_illinois_payslip_2020
|
from . import test_us_il_illinois_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_in_indiana_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_ky_kentucky_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_ks_kansas_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_la_louisiana_payslip_2019
|
||||||
|
from . import test_us_la_louisiana_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_me_maine_payslip_2020
|
||||||
|
|
||||||
from . import test_us_mi_michigan_payslip_2019
|
from . import test_us_mi_michigan_payslip_2019
|
||||||
from . import test_us_mi_michigan_payslip_2020
|
from . import test_us_mi_michigan_payslip_2020
|
||||||
|
|
||||||
@@ -65,6 +76,10 @@ from . import test_us_mt_montana_payslip_2020
|
|||||||
from . import test_us_nc_northcarolina_payslip_2019
|
from . import test_us_nc_northcarolina_payslip_2019
|
||||||
from . import test_us_nc_northcarolina_payslip_2020
|
from . import test_us_nc_northcarolina_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_nd_north_dakota_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_ne_nebraska_payslip_2020
|
||||||
|
|
||||||
from . import test_us_nh_new_hampshire_payslip_2020
|
from . import test_us_nh_new_hampshire_payslip_2020
|
||||||
|
|
||||||
from . import test_us_nj_newjersey_payslip_2019
|
from . import test_us_nj_newjersey_payslip_2019
|
||||||
@@ -72,20 +87,44 @@ from . import test_us_nj_newjersey_payslip_2020
|
|||||||
|
|
||||||
from . import test_us_nm_new_mexico_payslip_2020
|
from . import test_us_nm_new_mexico_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_nv_nevada_payslip_2020
|
||||||
|
|
||||||
from . import test_us_ny_new_york_payslip_2019
|
from . import test_us_ny_new_york_payslip_2019
|
||||||
from . import test_us_ny_new_york_payslip_2020
|
from . import test_us_ny_new_york_payslip_2020
|
||||||
|
|
||||||
from . import test_us_oh_ohio_payslip_2019
|
from . import test_us_oh_ohio_payslip_2019
|
||||||
from . import test_us_oh_ohio_payslip_2020
|
from . import test_us_oh_ohio_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_ok_oklahoma_payslip_2020
|
||||||
|
|
||||||
from . import test_us_pa_pennsylvania_payslip_2019
|
from . import test_us_pa_pennsylvania_payslip_2019
|
||||||
from . import test_us_pa_pennsylvania_payslip_2020
|
from . import test_us_pa_pennsylvania_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_ri_rhode_island_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_sc_south_carolina_payslip_2019
|
||||||
|
from . import test_us_sc_south_carolina_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_sd_south_dakota_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_tn_tennessee_payslip_2020
|
||||||
|
|
||||||
from . import test_us_tx_texas_payslip_2019
|
from . import test_us_tx_texas_payslip_2019
|
||||||
from . import test_us_tx_texas_payslip_2020
|
from . import test_us_tx_texas_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_us_utah_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_vt_vermont_payslip_2020
|
||||||
|
|
||||||
from . import test_us_va_virginia_payslip_2019
|
from . import test_us_va_virginia_payslip_2019
|
||||||
from . import test_us_va_virginia_payslip_2020
|
from . import test_us_va_virginia_payslip_2020
|
||||||
|
|
||||||
from . import test_us_wa_washington_payslip_2019
|
from . import test_us_wa_washington_payslip_2019
|
||||||
from . import test_us_wa_washington_payslip_2020
|
from . import test_us_wa_washington_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_wv_west_virginia_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_wi_wisconsin_payslip_2020
|
||||||
|
|
||||||
|
from . import test_us_wy_wyoming_payslip_2019
|
||||||
|
from . import test_us_wy_wyoming_payslip_2020
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ class TestUsALPayslip(TestUsPayslip):
|
|||||||
contract = self._createContract(employee,
|
contract = self._createContract(employee,
|
||||||
wage=salary,
|
wage=salary,
|
||||||
state_id=self.get_us_state('AL'),
|
state_id=self.get_us_state('AL'),
|
||||||
al_a4_sit_exemptions='0',
|
al_a4_sit_exemptions='',
|
||||||
state_income_tax_additional_withholding=0.0,
|
state_income_tax_additional_withholding=0.0,
|
||||||
state_income_tax_exempt=True,
|
state_income_tax_exempt=True,
|
||||||
al_a4_sit_dependents=dependents,
|
al_a4_sit_dependents=dependents,
|
||||||
|
|||||||
@@ -33,4 +33,4 @@ class TestUsALPayslip(TestUsPayslip):
|
|||||||
self._test_sit(850.0, 'M', False, 0.0, 2.0, 'weekly', date(2020, 1, 1), 29.98)
|
self._test_sit(850.0, 'M', False, 0.0, 2.0, 'weekly', date(2020, 1, 1), 29.98)
|
||||||
self._test_sit(5000.0, 'H', False, 0.0, 2.0, 'bi-weekly', date(2020, 1, 1), 191.15)
|
self._test_sit(5000.0, 'H', False, 0.0, 2.0, 'bi-weekly', date(2020, 1, 1), 191.15)
|
||||||
self._test_sit(20000.0, 'MS', False, 2.0, 0, 'monthly', date(2020, 1, 1), 757.6)
|
self._test_sit(20000.0, 'MS', False, 2.0, 0, 'monthly', date(2020, 1, 1), 757.6)
|
||||||
self._test_sit(5500.0, '0', True, 2.0, 150, 'weekly', date(2020, 1, 1), 0)
|
self._test_sit(5500.0, '', True, 2.0, 150, 'weekly', date(2020, 1, 1), 0.00)
|
||||||
|
|||||||
@@ -30,6 +30,6 @@ class TestUsARPayslip(TestUsPayslip):
|
|||||||
self._test_er_suta('AR', self.AR_UNEMP, date(2020, 1, 1), wage_base=self.AR_UNEMP_MAX_WAGE)
|
self._test_er_suta('AR', self.AR_UNEMP, date(2020, 1, 1), wage_base=self.AR_UNEMP_MAX_WAGE)
|
||||||
self._test_sit(5000.0, True, 0.0, 0, 'monthly', date(2020, 1, 1), 0.0)
|
self._test_sit(5000.0, True, 0.0, 0, 'monthly', date(2020, 1, 1), 0.0)
|
||||||
self._test_sit(5000.0, False, 0.0, 0, 'monthly', date(2020, 1, 1), 221.0)
|
self._test_sit(5000.0, False, 0.0, 0, 'monthly', date(2020, 1, 1), 221.0)
|
||||||
self._test_sit(5000.0, False, 0.0, 150, 'monthly', date(2020, 1, 1), 371.0)
|
self._test_sit(700.0, False, 0.0, 150, 'weekly', date(2020, 1, 1), 175.0)
|
||||||
self._test_sit(5000.0, False, 2.0, 0, 'monthly', date(2020, 1, 1), 217)
|
self._test_sit(7000.0, False, 2.0, 0, 'semi-monthly', date(2020, 1, 1), 420.0)
|
||||||
self._test_sit(5000.0, False, 2.0, 150, 'monthly', date(2020, 1, 1), 367)
|
self._test_sit(3000.0, False, 1.0, 0, 'bi-weekly', date(2020, 1, 1), 142.0)
|
||||||
|
|||||||
@@ -31,3 +31,4 @@ class TestUsAZPayslip(TestUsPayslip):
|
|||||||
self._test_sit(1000.0, 10.0, 2.70, 'monthly', date(2020, 1, 1), 37.0)
|
self._test_sit(1000.0, 10.0, 2.70, 'monthly', date(2020, 1, 1), 37.0)
|
||||||
self._test_sit(15000.0, 0.0, 3.60, 'weekly', date(2020, 1, 1), 540.0)
|
self._test_sit(15000.0, 0.0, 3.60, 'weekly', date(2020, 1, 1), 540.0)
|
||||||
self._test_sit(8000.0, 0.0, 4.20, 'semi-monthly', date(2020, 1, 1), 336.0)
|
self._test_sit(8000.0, 0.0, 4.20, 'semi-monthly', date(2020, 1, 1), 336.0)
|
||||||
|
self._test_sit(8000.0, 0.0, 0.00, 'semi-monthly', date(2020, 1, 1), 0.0)
|
||||||
|
|||||||
@@ -40,3 +40,4 @@ class TestUsCAPayslip(TestUsPayslip):
|
|||||||
self._test_sit(1800.0, 'married', 4, 0, 0, 'semi-monthly', date(2020, 1, 1), 0.84)
|
self._test_sit(1800.0, 'married', 4, 0, 0, 'semi-monthly', date(2020, 1, 1), 0.84)
|
||||||
self._test_sit(45000.0, 'married', 4, 0, 0, 'annually', date(2020, 1, 1), 59.78)
|
self._test_sit(45000.0, 'married', 4, 0, 0, 'annually', date(2020, 1, 1), 59.78)
|
||||||
self._test_sit(45000.0, 'married', 4, 0, 20.0, 'annually', date(2020, 1, 1), 79.78)
|
self._test_sit(45000.0, 'married', 4, 0, 20.0, 'annually', date(2020, 1, 1), 79.78)
|
||||||
|
self._test_sit(6000.0, '', 4, 0, 20.0, 'annually', date(2020, 1, 1), 0.00)
|
||||||
|
|||||||
@@ -34,3 +34,4 @@ class TestUsCOPayslip(TestUsPayslip):
|
|||||||
self._test_sit(20000.0, 'married', 0.0, 'quarterly', date(2020, 1, 1), 833.4)
|
self._test_sit(20000.0, 'married', 0.0, 'quarterly', date(2020, 1, 1), 833.4)
|
||||||
self._test_sit(20000.0, 'married', 10.0, 'quarterly', date(2020, 1, 1), 843.4)
|
self._test_sit(20000.0, 'married', 10.0, 'quarterly', date(2020, 1, 1), 843.4)
|
||||||
self._test_sit(20000.0, 'married', 0.0, 'quarterly', date(2020, 1, 1), 0.0, True)
|
self._test_sit(20000.0, 'married', 0.0, 'quarterly', date(2020, 1, 1), 0.0, True)
|
||||||
|
self._test_sit(800.0, '', 0.0, 'weekly', date(2020, 1, 1), 0.00)
|
||||||
|
|||||||
@@ -32,3 +32,4 @@ class TestUsCTPayslip(TestUsPayslip):
|
|||||||
self._test_sit(5000.0, 'f', 15.0, 'monthly', date(2020, 1, 1), 230.25)
|
self._test_sit(5000.0, 'f', 15.0, 'monthly', date(2020, 1, 1), 230.25)
|
||||||
self._test_sit(15000.0, 'c', 0.0, 'monthly', date(2020, 1, 1), 783.33)
|
self._test_sit(15000.0, 'c', 0.0, 'monthly', date(2020, 1, 1), 783.33)
|
||||||
self._test_sit(18000.0, 'b', 0.0, 'weekly', date(2020, 1, 1), 1254.35)
|
self._test_sit(18000.0, 'b', 0.0, 'weekly', date(2020, 1, 1), 1254.35)
|
||||||
|
self._test_sit(500.0, 'd', 0.0, 'weekly', date(2020, 1, 1), 21.15)
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ class TestUsGAPayslip(TestUsPayslip):
|
|||||||
salary = 25000.00
|
salary = 25000.00
|
||||||
schedule_pay = 'monthly'
|
schedule_pay = 'monthly'
|
||||||
allowances = 2
|
allowances = 2
|
||||||
filing_status = 'exempt'
|
filing_status = ''
|
||||||
additional_wh = 15.00
|
additional_wh = 15.00
|
||||||
|
|
||||||
employee = self._createEmployee()
|
employee = self._createEmployee()
|
||||||
|
|||||||
@@ -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,
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -33,3 +33,5 @@ class TestUsHIPayslip(TestUsPayslip):
|
|||||||
self._test_sit(5000.0, 'married', 0.0, 2.0, 'monthly', date(2020, 1, 1), 287.1)
|
self._test_sit(5000.0, 'married', 0.0, 2.0, 'monthly', date(2020, 1, 1), 287.1)
|
||||||
self._test_sit(5000.0, 'married', 10.0, 2.0, 'monthly', date(2020, 1, 1), 297.1)
|
self._test_sit(5000.0, 'married', 10.0, 2.0, 'monthly', date(2020, 1, 1), 297.1)
|
||||||
self._test_sit(50000.0, 'head_of_household', 0.0, 3.0, 'weekly', date(2020, 1, 1), 3933.65)
|
self._test_sit(50000.0, 'head_of_household', 0.0, 3.0, 'weekly', date(2020, 1, 1), 3933.65)
|
||||||
|
self._test_sit(750.0, 'single', 10.0, 3.0, 'bi-weekly', date(2020, 1, 1), 40.59)
|
||||||
|
self._test_sit(3000.0, '', 0.0, 3.0, 'weekly', date(2020, 1, 1), 0.00)
|
||||||
|
|||||||
@@ -11,11 +11,12 @@ class TestUsIAPayslip(TestUsPayslip):
|
|||||||
IA_UNEMP_MAX_WAGE = 31600.00
|
IA_UNEMP_MAX_WAGE = 31600.00
|
||||||
IA_UNEMP = 1.0
|
IA_UNEMP = 1.0
|
||||||
|
|
||||||
def _test_sit(self, wage, additional_withholding, allowances, schedule_pay, date_start, expected_withholding):
|
def _test_sit(self, wage, exempt, additional_withholding, allowances, schedule_pay, date_start, expected_withholding):
|
||||||
employee = self._createEmployee()
|
employee = self._createEmployee()
|
||||||
contract = self._createContract(employee,
|
contract = self._createContract(employee,
|
||||||
wage=wage,
|
wage=wage,
|
||||||
state_id=self.get_us_state('IA'),
|
state_id=self.get_us_state('IA'),
|
||||||
|
state_income_tax_exempt=exempt,
|
||||||
state_income_tax_additional_withholding=additional_withholding,
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
ia_w4_sit_allowances=allowances,
|
ia_w4_sit_allowances=allowances,
|
||||||
schedule_pay=schedule_pay)
|
schedule_pay=schedule_pay)
|
||||||
@@ -24,10 +25,12 @@ class TestUsIAPayslip(TestUsPayslip):
|
|||||||
cats = self._getCategories(payslip)
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
self._log('Computed period tax: ' + str(expected_withholding))
|
self._log('Computed period tax: ' + str(expected_withholding))
|
||||||
self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding)
|
self.assertPayrollAlmostEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding)
|
||||||
|
|
||||||
def test_2020_taxes_example(self):
|
def test_2020_taxes_example(self):
|
||||||
self._test_er_suta('IA', self.IA_UNEMP, date(2020, 1, 1), wage_base=self.IA_UNEMP_MAX_WAGE)
|
self._test_er_suta('IA', self.IA_UNEMP, date(2020, 1, 1), wage_base=self.IA_UNEMP_MAX_WAGE)
|
||||||
self._test_sit(3000.0, 0.0, 1.0, 'bi-weekly', date(2020, 1, 1), 146.68)
|
self._test_sit(2100.0, False, 0.0, 3.0, 'bi-weekly', date(2020, 1, 1), 83.5)
|
||||||
self._test_sit(3000.0, 10.0, 1.0, 'bi-weekly', date(2020, 1, 1), 156.68)
|
self._test_sit(3000.0, True, 10.0, 1.0, 'bi-weekly', date(2020, 1, 1), 0.00)
|
||||||
self._test_sit(30000.0, 0.0, 1.0, 'weekly', date(2020, 1, 1), 1640.04)
|
self._test_sit(300.0, False, 0.0, 1.0, 'weekly', date(2020, 1, 1), 6.77)
|
||||||
|
self._test_sit(5000.0, False, 0.0, 1.0, 'monthly', date(2020, 1, 1), 230.76)
|
||||||
|
self._test_sit(7500.0, False, 10.0, 2.0, 'semi-monthly', date(2020, 1, 1), 432.84)
|
||||||
|
|||||||
@@ -30,6 +30,6 @@ class TestUsIDPayslip(TestUsPayslip):
|
|||||||
self._test_er_suta('ID', self.ID_UNEMP, date(2020, 1, 1), wage_base=self.ID_UNEMP_MAX_WAGE)
|
self._test_er_suta('ID', self.ID_UNEMP, date(2020, 1, 1), wage_base=self.ID_UNEMP_MAX_WAGE)
|
||||||
self._test_sit(1212.0, 'single', 4.0, 'bi-weekly', date(2020, 1, 1), 10.0)
|
self._test_sit(1212.0, 'single', 4.0, 'bi-weekly', date(2020, 1, 1), 10.0)
|
||||||
self._test_sit(10000.0, 'married', 1.0, 'annually', date(2020, 1, 1), 0.0)
|
self._test_sit(10000.0, 'married', 1.0, 'annually', date(2020, 1, 1), 0.0)
|
||||||
self._test_sit(52000.0, 'married', 4.0, 'monthly', date(2020, 1, 1), 3348.02)
|
self._test_sit(52000.0, 'married', 4.0, 'monthly', date(2020, 1, 1), 3345.0)
|
||||||
self._test_sit(5000.0, 'head of household', 0.0, 'semi-monthly', date(2020, 1, 1), 300.0)
|
self._test_sit(5000.0, 'head of household', 0.0, 'semi-monthly', date(2020, 1, 1), 300.0)
|
||||||
self._test_sit(5900.0, 'single', 5.0, 'weekly', date(2020, 1, 1), 367.0)
|
self._test_sit(5900.0, 'single', 5.0, 'weekly', date(2020, 1, 1), 367.0)
|
||||||
|
|||||||
36
l10n_us_hr_payroll/tests/test_us_in_indiana_payslip_2020.py
Executable file
36
l10n_us_hr_payroll/tests/test_us_in_indiana_payslip_2020.py
Executable file
@@ -0,0 +1,36 @@
|
|||||||
|
# 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 TestUsINPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
IN_UNEMP_MAX_WAGE = 9500.0
|
||||||
|
IN_UNEMP = 2.5
|
||||||
|
# Calculation based on https://www.in.gov/dor/files/dn01.pdf
|
||||||
|
|
||||||
|
def _test_sit(self, wage, additional_withholding, personal_exemption, dependent_exemption, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('IN'),
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
in_w4_sit_personal_exemption=personal_exemption,
|
||||||
|
in_w4_sit_dependent_exemption=dependent_exemption,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
self._log('Computed period tax: ' + str(expected_withholding))
|
||||||
|
self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding)
|
||||||
|
|
||||||
|
def test_2020_taxes_example(self):
|
||||||
|
self._test_er_suta('IN', self.IN_UNEMP, date(2020, 1, 1), wage_base=self.IN_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(800.0, 0.0, 5.0, 3.0, 'weekly', date(2020, 1, 1), 19.94)
|
||||||
|
self._test_sit(800.0, 10.0, 5.0, 3.0, 'weekly', date(2020, 1, 1), 29.94)
|
||||||
|
self._test_sit(9000.0, 0.0, 4.0, 3.0, 'monthly', date(2020, 1, 1), 267.82)
|
||||||
|
self._test_sit(10000.0, 0.0, 2.0, 2.0, 'bi-weekly', date(2020, 1, 1), 316.79)
|
||||||
36
l10n_us_hr_payroll/tests/test_us_ks_kansas_payslip_2020.py
Executable file
36
l10n_us_hr_payroll/tests/test_us_ks_kansas_payslip_2020.py
Executable file
@@ -0,0 +1,36 @@
|
|||||||
|
# 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 TestUsKSPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
KS_UNEMP_MAX_WAGE = 14000.0
|
||||||
|
KS_UNEMP = 2.7
|
||||||
|
# Calculation based on example https://revenue.ky.gov/Forms/42A003(T)%20(12-2019)%202020%20Tax%20Tables.pdf
|
||||||
|
|
||||||
|
def _test_sit(self, wage, filing_status, allowances, additional_withholding, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('KS'),
|
||||||
|
ks_k4_sit_filing_status=filing_status,
|
||||||
|
ks_k4_sit_allowances=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._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('KS', self.KS_UNEMP, date(2020, 1, 1), wage_base=self.KS_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(6250, 'married', 2, 0, 'semi-monthly', date(2020, 1, 1), 290.00)
|
||||||
|
self._test_sit(5000, 'single', 1, 0, 'monthly', date(2020, 1, 1), 222.00)
|
||||||
|
self._test_sit(1500, 'married', 0, 0, 'bi-weekly', date(2020, 1, 1), 39.00)
|
||||||
|
self._test_sit(750, 'single', 2, 10, 'weekly', date(2020, 1, 1), 36.00)
|
||||||
35
l10n_us_hr_payroll/tests/test_us_ky_kentucky_payslip_2020.py
Executable file
35
l10n_us_hr_payroll/tests/test_us_ky_kentucky_payslip_2020.py
Executable file
@@ -0,0 +1,35 @@
|
|||||||
|
# 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 TestUsKYPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
KY_UNEMP_MAX_WAGE = 10800.0
|
||||||
|
KY_UNEMP = 2.7
|
||||||
|
# Calculation based on example https://revenue.ky.gov/Forms/42A003(T)%20(12-2019)%202020%20Tax%20Tables.pdf
|
||||||
|
|
||||||
|
def _test_sit(self, wage, additional_withholding, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('KY'),
|
||||||
|
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._log('Computed period tax: ' + str(expected_withholding))
|
||||||
|
self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding)
|
||||||
|
|
||||||
|
def test_2020_taxes_example(self):
|
||||||
|
self._test_er_suta('KY', self.KY_UNEMP, date(2020, 1, 1), wage_base=self.KY_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(3020, 0.0, 'monthly', date(2020, 1, 1), 139.96)
|
||||||
|
self._test_sit(1500, 0.0, 'bi-weekly', date(2020, 1, 1), 69.90)
|
||||||
|
self._test_sit(1500, 10.0, 'bi-weekly', date(2020, 1, 1), 79.90)
|
||||||
|
self._test_sit(750, 00.0, 'weekly', date(2020, 1, 1), 34.95)
|
||||||
|
self._test_sit(7000, 0.0, 'semi-monthly', date(2020, 1, 1), 344.48)
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .common import TestUsPayslip, process_payslip
|
||||||
|
|
||||||
|
|
||||||
|
class TestUsLAPayslip(TestUsPayslip):
|
||||||
|
|
||||||
|
# TAXES AND RATES
|
||||||
|
LA_UNEMP_MAX_WAGE = 7700.00
|
||||||
|
LA_UNEMP = -(1.14 / 100.0)
|
||||||
|
|
||||||
|
def test_taxes_single_weekly(self):
|
||||||
|
salary = 700.00
|
||||||
|
schedule_pay = 'weekly'
|
||||||
|
filing_status = 'single'
|
||||||
|
exemptions = 1
|
||||||
|
dependents = 2
|
||||||
|
additional_withholding = 0
|
||||||
|
# SEE http://revenue.louisiana.gov/TaxForms/1306(1_12)TF.pdf for example calculations
|
||||||
|
# wh_to test is 19.42
|
||||||
|
# Our algorithm correctly rounds whereas theirs does it prematurely.
|
||||||
|
wh_to_check = -19.43
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=salary,
|
||||||
|
state_id=self.get_us_state('LA'),
|
||||||
|
la_l4_sit_filing_status=filing_status,
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
la_l4_sit_exemptions=exemptions,
|
||||||
|
la_l4_sit_dependents=dependents,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
|
||||||
|
self._log('2019 Louisiana tax first payslip weekly:')
|
||||||
|
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.LA_UNEMP)
|
||||||
|
self.assertPayrollEqual(cats['EE_US_SIT'], wh_to_check)
|
||||||
|
|
||||||
|
process_payslip(payslip)
|
||||||
|
|
||||||
|
remaining_la_unemp_wages = self.LA_UNEMP_MAX_WAGE - salary if (self.LA_UNEMP_MAX_WAGE - 2*salary < salary) \
|
||||||
|
else salary
|
||||||
|
|
||||||
|
self._log('2019 Louisiana tax second payslip weekly:')
|
||||||
|
payslip = self._createPayslip(employee, '2019-02-01', '2019-02-28')
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
self.assertPayrollEqual(cats['ER_US_SUTA'], remaining_la_unemp_wages * self.LA_UNEMP)
|
||||||
|
|
||||||
|
def test_taxes_married_biweekly(self):
|
||||||
|
salary = 4600.00
|
||||||
|
schedule_pay = 'bi-weekly'
|
||||||
|
filing_status = 'married'
|
||||||
|
exemptions = 2
|
||||||
|
dependents = 3
|
||||||
|
additional_withholding = 0
|
||||||
|
# SEE http://revenue.louisiana.gov/TaxForms/1306(1_12)TF.pdf for example calculations
|
||||||
|
# wh_to test is 157.12
|
||||||
|
wh_to_check = -157.12
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=salary,
|
||||||
|
state_id=self.get_us_state('LA'),
|
||||||
|
la_l4_sit_filing_status=filing_status,
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
la_l4_sit_exemptions=exemptions,
|
||||||
|
la_l4_sit_dependents=dependents,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
|
||||||
|
self._log('2019 Louisiana tax first payslip bi-weekly:')
|
||||||
|
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.LA_UNEMP)
|
||||||
|
self.assertPayrollEqual(cats['EE_US_SIT'], wh_to_check)
|
||||||
|
|
||||||
|
process_payslip(payslip)
|
||||||
|
|
||||||
|
remaining_la_unemp_wages = self.LA_UNEMP_MAX_WAGE - salary if (self.LA_UNEMP_MAX_WAGE - 2*salary < salary) \
|
||||||
|
else salary
|
||||||
|
|
||||||
|
self._log('2019 Louisiana tax second payslip bi-weekly:')
|
||||||
|
payslip = self._createPayslip(employee, '2019-02-01', '2019-02-28')
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
self.assertPayrollEqual(cats['ER_US_SUTA'], remaining_la_unemp_wages * self.LA_UNEMP)
|
||||||
36
l10n_us_hr_payroll/tests/test_us_la_louisiana_payslip_2020.py
Executable file
36
l10n_us_hr_payroll/tests/test_us_la_louisiana_payslip_2020.py
Executable file
@@ -0,0 +1,36 @@
|
|||||||
|
# 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 TestUsLAPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
LA_UNEMP_MAX_WAGE = 7700.0
|
||||||
|
LA_UNEMP = 1.14
|
||||||
|
# Calculation based on http://revenue.louisiana.gov/TaxForms/1306(1_12)TF.pdf
|
||||||
|
|
||||||
|
def _test_sit(self, wage, filing_status, additional_withholding, exemptions, dependents, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('LA'),
|
||||||
|
la_l4_sit_filing_status=filing_status,
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
la_l4_sit_exemptions=exemptions,
|
||||||
|
la_l4_sit_dependents=dependents,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
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('LA', self.LA_UNEMP, date(2020, 1, 1), wage_base=self.LA_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(700.0, 'single', 0.0, 1.0, 2.0, 'weekly', date(2020, 1, 1), 19.43)
|
||||||
|
self._test_sit(4600.0, 'married', 0.0, 2.0, 3.0, 'bi-weekly', date(2020, 1, 1), 157.12)
|
||||||
|
self._test_sit(6000.0, 'single', 10.0, 2.0, 3.0, 'monthly', date(2020, 1, 1), 219.08)
|
||||||
39
l10n_us_hr_payroll/tests/test_us_me_maine_payslip_2020.py
Normal file
39
l10n_us_hr_payroll/tests/test_us_me_maine_payslip_2020.py
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# 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 TestUsMEPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
ME_UNEMP_MAX_WAGE = 12000.0
|
||||||
|
ME_UNEMP = 1.92
|
||||||
|
# Calculation based on this file page.6 and 7 https://www.maine.gov/revenue/forms/with/2020/20_WH_Tab&Instructions.pdf
|
||||||
|
|
||||||
|
def _test_sit(self, wage, filing_status, additional_withholding, exempt, allowances, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('ME'),
|
||||||
|
me_w4me_sit_filing_status=filing_status,
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
state_income_tax_exempt=exempt,
|
||||||
|
me_w4me_sit_allowances=allowances,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
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('ME', self.ME_UNEMP, date(2020, 1, 1), wage_base=self.ME_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(300.0, 'single', 0.0, False, 2, 'weekly', date(2020, 1, 1), 0.0)
|
||||||
|
self._test_sit(800.0, 'single', 0.0, False, 2, 'bi-weekly', date(2020, 1, 1), 6.00)
|
||||||
|
self._test_sit(4500.0, 'married', 0.0, True, 0, 'weekly', date(2020, 1, 1), 0.00)
|
||||||
|
self._test_sit(4500.0, 'married', 0.0, False, 2, 'monthly', date(2020, 1, 1), 113.00)
|
||||||
|
self._test_sit(4500.0, 'married', 10.0, False, 2, 'weekly', date(2020, 1, 1), 287.00)
|
||||||
|
self._test_sit(7000.0, '', 10.0, False, 2, 'weekly', date(2020, 1, 1), 0.00)
|
||||||
@@ -27,9 +27,9 @@ class TestUsMIPayslip(TestUsPayslip):
|
|||||||
|
|
||||||
def test_2020_taxes_example(self):
|
def test_2020_taxes_example(self):
|
||||||
self._test_er_suta('MI', self.MI_UNEMP, date(2020, 1, 1), wage_base=self.MI_UNEMP_MAX_WAGE)
|
self._test_er_suta('MI', self.MI_UNEMP, date(2020, 1, 1), wage_base=self.MI_UNEMP_MAX_WAGE)
|
||||||
self._test_sit(5000.0, 1, 100.0, 'weekly', date(2020, 1, 1), 308.62)
|
self._test_sit(750.0, 1, 100.0, 'weekly', date(2020, 1, 1), 127.99)
|
||||||
self._test_sit(5000.0, 1, 0.0, 'weekly', date(2020, 1, 1), 208.62)
|
self._test_sit(1750.0, 1, 0.0, 'bi-weekly', date(2020, 1, 1), 66.61)
|
||||||
self._test_sit(5000.0, 1, 5.0, 'semi-monthly', date(2020, 1, 1), 209.09)
|
self._test_sit(5000.0, 1, 5.0, 'semi-monthly', date(2020, 1, 1), 209.09)
|
||||||
self._test_sit(5000.0, 1, 5.0, 'monthly', date(2020, 1, 1), 200.68)
|
self._test_sit(8000.0, 1, 5.0, 'monthly', date(2020, 1, 1), 328.18)
|
||||||
self._test_sit(5000.0, 200, 0.0, 'monthly', date(2020, 1, 1), 0.0)
|
self._test_sit(5000.0, 2, 0.0, 'monthly', date(2020, 1, 1), 178.86)
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
# 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
|
from .common import TestUsPayslip
|
||||||
|
|
||||||
|
|
||||||
@@ -8,98 +9,26 @@ class TestUsMoPayslip(TestUsPayslip):
|
|||||||
MO_UNEMP_MAX_WAGE = 11500.0
|
MO_UNEMP_MAX_WAGE = 11500.0
|
||||||
MO_UNEMP = 2.376
|
MO_UNEMP = 2.376
|
||||||
|
|
||||||
TAX = [
|
def _test_sit(self, wage, filing_status, additional_withholding, schedule_pay, date_start, expected_withholding):
|
||||||
(1073.0, 1.5),
|
|
||||||
(1073.0, 2.0),
|
|
||||||
(1073.0, 2.5),
|
|
||||||
(1073.0, 3.0),
|
|
||||||
(1073.0, 3.5),
|
|
||||||
(1073.0, 4.0),
|
|
||||||
(1073.0, 4.5),
|
|
||||||
(1073.0, 5.0),
|
|
||||||
( 'inf', 5.4),
|
|
||||||
]
|
|
||||||
STD_DED = {
|
|
||||||
'': 0.0, # Exempt
|
|
||||||
'single': 12400.0,
|
|
||||||
'married': 24800.0,
|
|
||||||
'head_of_household': 18650.0,
|
|
||||||
}
|
|
||||||
|
|
||||||
def _test_sit(self, filing_status, schedule_pay):
|
|
||||||
wage = 5000.0
|
|
||||||
employee = self._createEmployee()
|
employee = self._createEmployee()
|
||||||
contract = self._createContract(employee,
|
contract = self._createContract(employee,
|
||||||
wage=wage,
|
wage=wage,
|
||||||
state_id=self.get_us_state('MO'),
|
state_id=self.get_us_state('MO'),
|
||||||
mo_mow4_sit_filing_status=filing_status,
|
mo_mow4_sit_filing_status=filing_status,
|
||||||
state_income_tax_additional_withholding=0.0,
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
schedule_pay=schedule_pay)
|
schedule_pay=schedule_pay)
|
||||||
|
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
|
||||||
payslip = self._createPayslip(employee, '2020-01-01', '2020-01-31')
|
|
||||||
payslip.compute_sheet()
|
payslip.compute_sheet()
|
||||||
cats = self._getCategories(payslip)
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
pp = payslip.get_pay_periods_in_year()
|
self._log('Computed period tax: ' + str(expected_withholding))
|
||||||
gross_salary = wage * pp
|
self.assertPayrollAlmostEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding)
|
||||||
standard_deduction = self.STD_DED[filing_status]
|
|
||||||
|
|
||||||
mo_taxable_income = gross_salary - standard_deduction
|
def test_2020_taxes_example(self):
|
||||||
self._log('%s = %s - %s -' % (mo_taxable_income, gross_salary, standard_deduction))
|
|
||||||
|
|
||||||
remaining_taxable_income = mo_taxable_income
|
|
||||||
tax = 0.0
|
|
||||||
for amt, rate in self.TAX:
|
|
||||||
amt = float(amt)
|
|
||||||
rate = rate / 100.0
|
|
||||||
self._log(str(amt) + ' : ' + str(rate) + ' : ' + str(remaining_taxable_income))
|
|
||||||
if (remaining_taxable_income - amt) > 0.0 or (remaining_taxable_income - amt) == 0.0:
|
|
||||||
tax += rate * amt
|
|
||||||
else:
|
|
||||||
tax += rate * remaining_taxable_income
|
|
||||||
break
|
|
||||||
remaining_taxable_income = remaining_taxable_income - amt
|
|
||||||
|
|
||||||
tax = -tax
|
|
||||||
self._log('Computed annual tax: ' + str(tax))
|
|
||||||
|
|
||||||
tax = tax / pp
|
|
||||||
tax = round(tax)
|
|
||||||
self._log('Computed period tax: ' + str(tax))
|
|
||||||
self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), tax if filing_status else 0.0)
|
|
||||||
|
|
||||||
contract.us_payroll_config_id.state_income_tax_additional_withholding = 100.0
|
|
||||||
payslip.compute_sheet()
|
|
||||||
cats = self._getCategories(payslip)
|
|
||||||
self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), (tax - 100.0) if filing_status else 0.0)
|
|
||||||
|
|
||||||
contract.us_payroll_config_id.mo_mow4_sit_withholding = 200.0
|
|
||||||
payslip.compute_sheet()
|
|
||||||
cats = self._getCategories(payslip)
|
|
||||||
self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), -200.0 if filing_status else 0.0)
|
|
||||||
|
|
||||||
def test_2020_taxes_single(self):
|
|
||||||
self._test_er_suta('MO', self.MO_UNEMP, date(2020, 1, 1), wage_base=self.MO_UNEMP_MAX_WAGE)
|
self._test_er_suta('MO', self.MO_UNEMP, date(2020, 1, 1), wage_base=self.MO_UNEMP_MAX_WAGE)
|
||||||
self._test_sit('single', 'weekly')
|
self._test_sit(750.0, 'single', 0.0, 'weekly', date(2020, 1, 1), 24.00)
|
||||||
|
self._test_sit(2500.0, 'single', 5.0, 'bi-weekly', date(2020, 1, 1), 107.00)
|
||||||
|
self._test_sit(7000.0, 'married', 0.0, 'monthly', date(2020, 1, 1), 251.00)
|
||||||
|
self._test_sit(5000.0, 'married', 10.0, 'semi-monthly', date(2020, 1, 1), 217.00)
|
||||||
|
self._test_sit(6000.0, '', 0.0, 'monthly', date(2020, 1, 1), 0.00)
|
||||||
|
|
||||||
def test_2020_spouse_not_employed(self):
|
|
||||||
self._test_sit('married', 'semi-monthly')
|
|
||||||
|
|
||||||
def test_2020_head_of_household(self):
|
|
||||||
self._test_sit('head_of_household', 'monthly')
|
|
||||||
|
|
||||||
def test_2020_underflow(self):
|
|
||||||
# Payroll Period Weekly
|
|
||||||
salary = 200.0
|
|
||||||
|
|
||||||
employee = self._createEmployee()
|
|
||||||
|
|
||||||
contract = self._createContract(employee,
|
|
||||||
wage=salary,
|
|
||||||
state_id=self.get_us_state('MO'))
|
|
||||||
|
|
||||||
payslip = self._createPayslip(employee, '2020-01-01', '2020-01-31')
|
|
||||||
payslip.compute_sheet()
|
|
||||||
cats = self._getCategories(payslip)
|
|
||||||
|
|
||||||
self.assertPayrollEqual(cats['EE_US_SIT'], 0.0)
|
|
||||||
|
|||||||
@@ -1,120 +1,35 @@
|
|||||||
# 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
|
from .common import TestUsPayslip
|
||||||
|
|
||||||
|
|
||||||
class TestUsMsPayslip(TestUsPayslip):
|
class TestUsMsPayslip(TestUsPayslip):
|
||||||
# Calculations from https://www.dor.ms.gov/Documents/Computer%20Payroll%20Accounting%201-2-19.pdf
|
# Calculations from https://www.dor.ms.gov/Documents/Computer%20Payroll%20Flowchart.pdf
|
||||||
MS_UNEMP = 1.2
|
MS_UNEMP = 1.2
|
||||||
MS_UNEMP_MAX_WAGE = 14000.0
|
MS_UNEMP_MAX_WAGE = 14000.0
|
||||||
|
|
||||||
def test_2020_taxes_one(self):
|
def _test_sit(self, wage, filing_status, additional_withholding, exemption, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('MS'),
|
||||||
|
ms_89_350_sit_filing_status=filing_status,
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
ms_89_350_sit_exemption_value=exemption,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
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('MS', self.MS_UNEMP, date(2020, 1, 1), wage_base=self.MS_UNEMP_MAX_WAGE)
|
self._test_er_suta('MS', self.MS_UNEMP, date(2020, 1, 1), wage_base=self.MS_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(1250.0, 'head_of_household', 0.0, 11000, 'semi-monthly', date(2020, 1, 1), 22.00)
|
||||||
|
self._test_sit(500.0, '', 5.0, 0, 'bi-weekly', date(2020, 1, 1), 0.00)
|
||||||
|
self._test_sit(12000.0, 'single', 0.0, 11000, 'monthly', date(2020, 1, 1), 525.00)
|
||||||
|
self._test_sit(2500.0, 'married', 5.0, 500, 'bi-weekly', date(2020, 1, 1), 111.00)
|
||||||
|
|
||||||
salary = 1250.0
|
|
||||||
ms_89_350_exemption = 11000.0
|
|
||||||
|
|
||||||
employee = self._createEmployee()
|
|
||||||
contract = self._createContract(employee,
|
|
||||||
wage=salary,
|
|
||||||
state_id=self.get_us_state('MS'),
|
|
||||||
ms_89_350_sit_filing_status='head_of_household',
|
|
||||||
ms_89_350_sit_exemption_value=ms_89_350_exemption,
|
|
||||||
state_income_tax_additional_withholding=0.0,
|
|
||||||
schedule_pay='semi-monthly')
|
|
||||||
|
|
||||||
self._log('2020 Mississippi tax single first payslip:')
|
|
||||||
payslip = self._createPayslip(employee, '2020-01-01', '2020-01-31')
|
|
||||||
|
|
||||||
payslip.compute_sheet()
|
|
||||||
|
|
||||||
cats = self._getCategories(payslip)
|
|
||||||
|
|
||||||
STDED = 3400.0 # Head of Household
|
|
||||||
AGP = salary * 24 # Semi-Monthly
|
|
||||||
TI = AGP - (ms_89_350_exemption + STDED)
|
|
||||||
self.assertPayrollEqual(TI, 15600.0)
|
|
||||||
TAX = ((TI - 10000) * 0.05) + 260 # Over 10,000
|
|
||||||
self.assertPayrollEqual(TAX, 540.0)
|
|
||||||
|
|
||||||
ms_withhold = round(TAX / 24) # Semi-Monthly
|
|
||||||
self.assertPayrollEqual(cats['EE_US_SIT'], -ms_withhold)
|
|
||||||
|
|
||||||
def test_2020_taxes_one_exempt(self):
|
|
||||||
salary = 1250.0
|
|
||||||
ms_89_350_exemption = 11000.0
|
|
||||||
|
|
||||||
employee = self._createEmployee()
|
|
||||||
contract = self._createContract(employee,
|
|
||||||
wage=salary,
|
|
||||||
state_id=self.get_us_state('MS'),
|
|
||||||
ms_89_350_sit_filing_status='',
|
|
||||||
ms_89_350_sit_exemption_value=ms_89_350_exemption,
|
|
||||||
state_income_tax_additional_withholding=0.0,
|
|
||||||
schedule_pay='semi-monthly')
|
|
||||||
|
|
||||||
self._log('2020 Mississippi tax single first payslip:')
|
|
||||||
payslip = self._createPayslip(employee, '2020-01-01', '2020-01-31')
|
|
||||||
|
|
||||||
payslip.compute_sheet()
|
|
||||||
|
|
||||||
cats = self._getCategories(payslip)
|
|
||||||
self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), 0.0)
|
|
||||||
|
|
||||||
def test_2020_taxes_additional(self):
|
|
||||||
salary = 1250.0
|
|
||||||
ms_89_350_exemption = 11000.0
|
|
||||||
additional = 40.0
|
|
||||||
|
|
||||||
employee = self._createEmployee()
|
|
||||||
contract = self._createContract(employee,
|
|
||||||
wage=salary,
|
|
||||||
state_id=self.get_us_state('MS'),
|
|
||||||
ms_89_350_sit_filing_status='single',
|
|
||||||
ms_89_350_sit_exemption_value=ms_89_350_exemption,
|
|
||||||
state_income_tax_additional_withholding=additional,
|
|
||||||
schedule_pay='monthly')
|
|
||||||
|
|
||||||
self._log('2020 Mississippi tax single first payslip:')
|
|
||||||
payslip = self._createPayslip(employee, '2020-01-01', '2020-01-31')
|
|
||||||
|
|
||||||
payslip.compute_sheet()
|
|
||||||
|
|
||||||
cats = self._getCategories(payslip)
|
|
||||||
|
|
||||||
STDED = 2300.0 # Single
|
|
||||||
AGP = salary * 12 # Monthly
|
|
||||||
TI = AGP - (ms_89_350_exemption + STDED)
|
|
||||||
self.assertPayrollEqual(TI, 1700.0)
|
|
||||||
TAX = ((TI - 3000) * 0.03)
|
|
||||||
self.assertPayrollEqual(TAX, -39.0)
|
|
||||||
|
|
||||||
ms_withhold = round(TAX / 12) # Monthly
|
|
||||||
self.assertTrue(ms_withhold <= 0.0)
|
|
||||||
self.assertPayrollEqual(cats['EE_US_SIT'], -40.0) # only additional
|
|
||||||
|
|
||||||
# Test with higher wage
|
|
||||||
salary = 1700.0
|
|
||||||
employee = self._createEmployee()
|
|
||||||
contract = self._createContract(employee,
|
|
||||||
wage=salary,
|
|
||||||
state_id=self.get_us_state('MS'),
|
|
||||||
ms_89_350_sit_filing_status='single',
|
|
||||||
ms_89_350_sit_exemption_value=ms_89_350_exemption,
|
|
||||||
state_income_tax_additional_withholding=additional,
|
|
||||||
schedule_pay='monthly')
|
|
||||||
payslip = self._createPayslip(employee, '2020-01-01', '2020-01-31')
|
|
||||||
payslip.compute_sheet()
|
|
||||||
cats = self._getCategories(payslip)
|
|
||||||
|
|
||||||
STDED = 2300.0 # Single
|
|
||||||
AGP = salary * 12 # Monthly
|
|
||||||
TI = AGP - (ms_89_350_exemption + STDED)
|
|
||||||
self.assertPayrollEqual(TI, 7100.0)
|
|
||||||
TAX = ((TI - 5000) * 0.04) + 60.0
|
|
||||||
self.assertPayrollEqual(TAX, 144.0)
|
|
||||||
|
|
||||||
ms_withhold = round(TAX / 12) # Monthly
|
|
||||||
self.assertPayrollEqual(ms_withhold, 12.0)
|
|
||||||
self.assertPayrollEqual(cats['EE_US_SIT'], -(ms_withhold + additional))
|
|
||||||
|
|||||||
@@ -1,17 +1,37 @@
|
|||||||
# 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 TestUsMtPayslip(TestUsPayslip):
|
class TestUsMtPayslip(TestUsPayslip):
|
||||||
# Calculations from https://app.mt.gov/myrevenue/Endpoint/DownloadPdf?yearId=705
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
MT_UNEMP_WAGE_MAX = 34100.0
|
MT_UNEMP_WAGE_MAX = 34100.0
|
||||||
MT_UNEMP = 1.18
|
MT_UNEMP = 1.18
|
||||||
MT_UNEMP_AFT = 0.13
|
MT_UNEMP_AFT = 0.13
|
||||||
|
|
||||||
|
# Calculations from https://app.mt.gov/myrevenue/Endpoint/DownloadPdf?yearId=705
|
||||||
|
def _test_sit(self, wage, additional_withholding, exemptions, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('MT'),
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
mt_mw4_sit_exemptions=exemptions,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
self._log('Computed period tax: ' + str(expected_withholding))
|
||||||
|
self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding)
|
||||||
|
|
||||||
def test_2020_taxes_one(self):
|
def test_2020_taxes_one(self):
|
||||||
combined_rate = self.MT_UNEMP + self.MT_UNEMP_AFT # Combined for test as they both go to the same category and have the same cap
|
combined_rate = self.MT_UNEMP + self.MT_UNEMP_AFT # Combined for test as they both go to the same category and have the same cap
|
||||||
self._test_er_suta('MT', combined_rate, date(2020, 1, 1), wage_base=self.MT_UNEMP_WAGE_MAX)
|
self._test_er_suta('MT', combined_rate, date(2020, 1, 1), wage_base=self.MT_UNEMP_WAGE_MAX)
|
||||||
|
self._test_sit(550.0, 0.0, 5.0, 'semi-monthly', date(2020, 1, 1), 3.0)
|
||||||
# TODO Montana Incometax rates for 2020 when released
|
self._test_sit(2950.0, 10.0, 2.0, 'bi-weekly', date(2020, 1, 1), 162.0)
|
||||||
|
self._test_sit(5000.0, 0.0, 1.0, 'monthly', date(2020, 1, 1), 256.0)
|
||||||
|
self._test_sit(750.0, 0.0, 1.0, 'weekly', date(2020, 1, 1), 34.0)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class TestUsNCPayslip(TestUsPayslip):
|
|||||||
NC_UNEMP_MAX_WAGE = 25200.0
|
NC_UNEMP_MAX_WAGE = 25200.0
|
||||||
NC_UNEMP = 1.0
|
NC_UNEMP = 1.0
|
||||||
NC_INC_TAX = 0.0535
|
NC_INC_TAX = 0.0535
|
||||||
|
# Example based on https://files.nc.gov/ncdor/documents/files/NC-30_book_Web_1-16-19_v4_Final.pdf
|
||||||
def _test_sit(self, wage, filing_status, allowances, additional_withholding, schedule_pay, date_start, expected_withholding):
|
def _test_sit(self, wage, filing_status, allowances, additional_withholding, schedule_pay, date_start, expected_withholding):
|
||||||
|
|
||||||
employee = self._createEmployee()
|
employee = self._createEmployee()
|
||||||
@@ -34,3 +34,4 @@ class TestUsNCPayslip(TestUsPayslip):
|
|||||||
self._test_sit(20000.0, 'single', 1, 100.0, 'weekly', date(2020, 1, 1), 1156.0)
|
self._test_sit(20000.0, 'single', 1, 100.0, 'weekly', date(2020, 1, 1), 1156.0)
|
||||||
self._test_sit(5000.0, 'married', 1, 0.0, 'weekly', date(2020, 1, 1), 254.0)
|
self._test_sit(5000.0, 'married', 1, 0.0, 'weekly', date(2020, 1, 1), 254.0)
|
||||||
self._test_sit(4000.0, 'head_household', 1, 5.0, 'semi-monthly', date(2020, 1, 1), 177.0)
|
self._test_sit(4000.0, 'head_household', 1, 5.0, 'semi-monthly', date(2020, 1, 1), 177.0)
|
||||||
|
self._test_sit(7000.0, '', 1, 5.0, 'monthly', date(2020, 1, 1), 0.0)
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# 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 TestUsNDPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
ND_UNEMP_MAX_WAGE = 37900.0
|
||||||
|
ND_UNEMP = 1.02
|
||||||
|
# Calculation based on this file page.47 https://www.nd.gov/tax/data/upfiles/media/rates-and-instructions.pdf?20200110115917
|
||||||
|
|
||||||
|
def _test_sit(self, wage, filing_status, additional_withholding, allowances, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('ND'),
|
||||||
|
nd_w4_sit_filing_status=filing_status,
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
nd_w4_sit_allowances=allowances,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
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('ND', self.ND_UNEMP, date(2020, 1, 1), wage_base=self.ND_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(700.0, 'single', 0.0, 0.0, 'weekly', date(2020, 1, 1), 6.0)
|
||||||
|
self._test_sit(5000.0, 'married', 0.0, 2.0, 'bi-weekly', date(2020, 1, 1), 76.0)
|
||||||
|
self._test_sit(25000.0, 'head_household', 0.0, 0.0, 'monthly', date(2020, 1, 1), 534.0)
|
||||||
|
self._test_sit(25000.0, 'head_household', 10.0, 2.0, 'monthly', date(2020, 1, 1), 525.0)
|
||||||
|
self._test_sit(3000.0, '', 10.0, 2.0, 'monthly', date(2020, 1, 1), 0.0)
|
||||||
38
l10n_us_hr_payroll/tests/test_us_ne_nebraska_payslip_2020.py
Normal file
38
l10n_us_hr_payroll/tests/test_us_ne_nebraska_payslip_2020.py
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
# 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 TestUsNEPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
NE_UNEMP_MAX_WAGE = 9000.0
|
||||||
|
NE_UNEMP = 1.25
|
||||||
|
|
||||||
|
def _test_sit(self, wage, filing_status, exempt, additional_withholding, allowances, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('NE'),
|
||||||
|
ne_w4n_sit_filing_status=filing_status,
|
||||||
|
state_income_tax_exempt=exempt,
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
ne_w4n_sit_allowances=allowances,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
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('NE', self.NE_UNEMP, date(2020, 1, 1), wage_base=self.NE_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(750.0, 'single', False, 0.0, 2, 'weekly', date(2020, 1, 1), 27.53)
|
||||||
|
self._test_sit(9500.0, 'single', False, 0.0, 1, 'bi-weekly', date(2020, 1, 1), 612.63)
|
||||||
|
self._test_sit(10500.0, 'married', False, 0.0, 1, 'bi-weekly', date(2020, 1, 1), 659.85)
|
||||||
|
self._test_sit(9500.0, 'single', True, 0.0, 1, 'bi-weekly', date(2020, 1, 1), 0.0)
|
||||||
|
self._test_sit(10500.0, 'single', False, 10.0, 2, 'monthly', date(2020, 1, 1), 625.2)
|
||||||
|
self._test_sit(4000.0, 'single', False, 0.0, 1, 'monthly', date(2020, 1, 1), 179.44)
|
||||||
@@ -46,3 +46,6 @@ class TestUsNJPayslip(TestUsPayslip):
|
|||||||
self._test_sit(300.0, 'single', 1, 'weekly', date(2020, 1, 1), 4.21)
|
self._test_sit(300.0, 'single', 1, 'weekly', date(2020, 1, 1), 4.21)
|
||||||
self._test_sit(375.0, 'married_separate', 3, 'weekly', date(2020, 1, 1), 4.76)
|
self._test_sit(375.0, 'married_separate', 3, 'weekly', date(2020, 1, 1), 4.76)
|
||||||
self._test_sit(1400.0, 'head_household', 3, 'weekly', date(2020, 1, 1), 27.60)
|
self._test_sit(1400.0, 'head_household', 3, 'weekly', date(2020, 1, 1), 27.60)
|
||||||
|
self._test_sit(1400.0, '', 3, 'weekly', date(2020, 1, 1), 0.00)
|
||||||
|
self._test_sit(2500.0, 'single', 3, 'bi-weekly', date(2020, 1, 1), 82.66)
|
||||||
|
self._test_sit(15000.0, 'married_joint', 2, 'monthly', date(2020, 1, 1), 844.85)
|
||||||
|
|||||||
@@ -33,3 +33,4 @@ class TestUsNMPayslip(TestUsPayslip):
|
|||||||
self._test_sit(1000.0, 'married', 10.0, 'weekly', date(2020, 1, 1), 39.47)
|
self._test_sit(1000.0, 'married', 10.0, 'weekly', date(2020, 1, 1), 39.47)
|
||||||
self._test_sit(25000.0, 'single', 0.0, 'bi-weekly', date(2020, 1, 1), 1202.60)
|
self._test_sit(25000.0, 'single', 0.0, 'bi-weekly', date(2020, 1, 1), 1202.60)
|
||||||
self._test_sit(25000.0, 'married_as_single', 0.0, 'monthly', date(2020, 1, 1), 1152.95)
|
self._test_sit(25000.0, 'married_as_single', 0.0, 'monthly', date(2020, 1, 1), 1152.95)
|
||||||
|
self._test_sit(4400.0, '', 0.0, 'monthly', date(2020, 1, 1), 0.00)
|
||||||
|
|||||||
16
l10n_us_hr_payroll/tests/test_us_nv_nevada_payslip_2020.py
Executable file
16
l10n_us_hr_payroll/tests/test_us_nv_nevada_payslip_2020.py
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from datetime import date
|
||||||
|
from .common import TestUsPayslip
|
||||||
|
|
||||||
|
|
||||||
|
class TestUsNVPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
NV_UNEMP_MAX_WAGE = 32500.0
|
||||||
|
NV_UNEMP = 2.95
|
||||||
|
|
||||||
|
def test_2020_taxes(self):
|
||||||
|
# Only has state unemployment
|
||||||
|
self._test_er_suta('NV', self.NV_UNEMP, date(2020, 1, 1), wage_base=self.NV_UNEMP_MAX_WAGE)
|
||||||
@@ -131,3 +131,30 @@ class TestUsNYPayslip(TestUsPayslip):
|
|||||||
|
|
||||||
self.assertPayrollEqual(cats['EE_US_SIT'], wh)
|
self.assertPayrollEqual(cats['EE_US_SIT'], wh)
|
||||||
|
|
||||||
|
def test_exempt_example3(self):
|
||||||
|
salary = 50000
|
||||||
|
schedule_pay = 'monthly'
|
||||||
|
allowances = 3
|
||||||
|
additional = 0
|
||||||
|
filing_status = ''
|
||||||
|
wh = 0.0
|
||||||
|
|
||||||
|
employee = self._createEmployee()
|
||||||
|
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=salary,
|
||||||
|
state_id=self.get_us_state('NY'),
|
||||||
|
ny_it2104_sit_filing_status=filing_status,
|
||||||
|
state_income_tax_additional_withholding=additional,
|
||||||
|
ny_it2104_sit_allowances=allowances,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
|
||||||
|
self._log('2019 New York tax first payslip:')
|
||||||
|
payslip = self._createPayslip(employee, '2019-01-01', '2019-01-31')
|
||||||
|
|
||||||
|
payslip.compute_sheet()
|
||||||
|
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
self.assertPayrollEqual(cats['EE_US_SIT'], wh)
|
||||||
|
|
||||||
|
|||||||
38
l10n_us_hr_payroll/tests/test_us_ok_oklahoma_payslip_2020.py
Executable file
38
l10n_us_hr_payroll/tests/test_us_ok_oklahoma_payslip_2020.py
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
# 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 TestUsOKPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
OK_UNEMP_MAX_WAGE = 18700.0
|
||||||
|
OK_UNEMP = 1.5
|
||||||
|
# Calculation based on example https://www.ok.gov/tax/documents/2020WHTables.pdf
|
||||||
|
|
||||||
|
def _test_sit(self, wage, filing_status, allowances, additional_withholding, exempt, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('OK'),
|
||||||
|
ok_w4_sit_filing_status=filing_status,
|
||||||
|
ok_w4_sit_allowances=allowances,
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
state_income_tax_exempt=exempt,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
self._log('Computed period tax: ' + str(expected_withholding))
|
||||||
|
self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding)
|
||||||
|
|
||||||
|
def test_2020_taxes_example(self):
|
||||||
|
self._test_er_suta('OK', self.OK_UNEMP, date(2020, 1, 1), wage_base=self.OK_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(1825, 'married', 2, 0, False, 'semi-monthly', date(2020, 1, 1), 46.00)
|
||||||
|
self._test_sit(1825, 'married', 2, 0, True, 'monthly', date(2020, 1, 1), 0.00)
|
||||||
|
self._test_sit(1000, 'single', 1, 0, False, 'weekly', date(2020, 1, 1), 39.00)
|
||||||
|
self._test_sit(1000, 'single', 1, 10, False, 'weekly', date(2020, 1, 1), 49.00)
|
||||||
|
self._test_sit(5000, 'head_household', 2, 10, False, 'monthly', date(2020, 1, 1), 210.00)
|
||||||
37
l10n_us_hr_payroll/tests/test_us_ri_rhode_island_payslip_2020.py
Executable file
37
l10n_us_hr_payroll/tests/test_us_ri_rhode_island_payslip_2020.py
Executable file
@@ -0,0 +1,37 @@
|
|||||||
|
# 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 TestUsRIPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
RI_UNEMP_MAX_WAGE = 24000.0
|
||||||
|
RI_UNEMP = 1.06
|
||||||
|
# Calculation based on example http://www.tax.ri.gov/forms/2020/Withholding/2020%20Withhholding%20Tax%20Booklet.pdf
|
||||||
|
|
||||||
|
def _test_sit(self, wage, allowances, additional_withholding, exempt, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('RI'),
|
||||||
|
ri_w4_sit_allowances=allowances,
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
state_income_tax_exempt=exempt,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
self._log('Computed period tax: ' + str(expected_withholding))
|
||||||
|
self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding)
|
||||||
|
|
||||||
|
def test_2020_taxes_example(self):
|
||||||
|
self._test_er_suta('RI', self.RI_UNEMP, date(2020, 1, 1), wage_base=self.RI_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(2195, 1, 0, False, 'weekly', date(2020, 1, 1), 90.80)
|
||||||
|
self._test_sit(1800, 2, 10, True, 'weekly', date(2020, 1, 1), 0.00)
|
||||||
|
self._test_sit(10000, 1, 0, False, 'bi-weekly', date(2020, 1, 1), 503.15)
|
||||||
|
self._test_sit(18000, 2, 0, False, 'monthly', date(2020, 1, 1), 860.54)
|
||||||
|
self._test_sit(18000, 2, 10, False, 'monthly', date(2020, 1, 1), 870.55)
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from .common import TestUsPayslip, process_payslip
|
||||||
|
|
||||||
|
|
||||||
|
class TestUsSCPayslip(TestUsPayslip):
|
||||||
|
|
||||||
|
# Taxes and Rates
|
||||||
|
SC_UNEMP_MAX_WAGE = 14000.0
|
||||||
|
US_SC_UNEMP = -1.09 / 100
|
||||||
|
US_SC_exemption_amount = 2510.00
|
||||||
|
|
||||||
|
def test_2019_taxes_weekly(self):
|
||||||
|
# We will hand calculate the amount to test for state withholding.
|
||||||
|
schedule_pay = 'weekly'
|
||||||
|
salary = 50000.00 # Employee is paid 50000 per week to be in top tax bracket
|
||||||
|
allowances = 2
|
||||||
|
# Calculate annual wages
|
||||||
|
annual = 50000 * 52.0
|
||||||
|
# From our annual we deduct personal exemption amounts.
|
||||||
|
# We deduct 2510.00 per exemption. Since we have two exemptions:
|
||||||
|
personal_exemption = self.US_SC_exemption_amount * allowances # 5020.0
|
||||||
|
# From annual, we will also deduct a standard_deduction of 3470.00 or .1 of salary, which ever
|
||||||
|
# is small -> if 1 or more exemptions, else 0
|
||||||
|
standard_deduction = 3470.00
|
||||||
|
taxable_income = annual - personal_exemption - standard_deduction # 2591510.0
|
||||||
|
# We then calculate the amounts off the SC tax pdf tables.
|
||||||
|
# 2591478.0 is in the highest bracket
|
||||||
|
test_amt = (taxable_income * (7.0 / 100.0)) - 467.95
|
||||||
|
test_amt = 180935.51
|
||||||
|
# Make it per period then negative
|
||||||
|
test_amt = (test_amt / 52.0) # Divided by 52 since it is weekly.
|
||||||
|
# test_amt = 3479.52
|
||||||
|
test_amt = -test_amt
|
||||||
|
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=salary,
|
||||||
|
state_id=self.get_us_state('SC'),
|
||||||
|
state_income_tax_exempt=False,
|
||||||
|
sc_w4_sit_allowances=allowances,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
|
||||||
|
self._log('2019 South Carolina tax first payslip:')
|
||||||
|
payslip = self._createPayslip(employee, '2019-01-01', '2019-01-31')
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
self.assertPayrollAlmostEqual(cats['ER_US_SUTA'], self.SC_UNEMP_MAX_WAGE * self.US_SC_UNEMP)
|
||||||
|
self.assertPayrollAlmostEqual(cats['EE_US_SIT'], test_amt)
|
||||||
|
|
||||||
|
process_payslip(payslip)
|
||||||
|
|
||||||
|
remaining_SC_UNEMP_wages = self.SC_UNEMP_MAX_WAGE - annual if (annual < self.SC_UNEMP_MAX_WAGE) \
|
||||||
|
else 0.00
|
||||||
|
|
||||||
|
self._log('2019 South Carolina tax second payslip:')
|
||||||
|
|
||||||
|
payslip = self._createPayslip(employee, '2019-02-01', '2019-02-28')
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
self.assertEqual(0.0, remaining_SC_UNEMP_wages)
|
||||||
|
self.assertPayrollEqual(cats['ER_US_SUTA'], remaining_SC_UNEMP_wages * self.US_SC_UNEMP)
|
||||||
|
|
||||||
|
def test_2019_taxes_filing_status(self):
|
||||||
|
salary = 20000.00 # Wages per pay period
|
||||||
|
schedule_pay = 'monthly'
|
||||||
|
annual = salary * 12
|
||||||
|
allowances = 1
|
||||||
|
# Hand Calculations
|
||||||
|
personal_exemption = 2510.00
|
||||||
|
standard_deduction = min(3470.00, .1 * annual) # 3470.0 but min is shown for the process
|
||||||
|
taxable = annual - personal_exemption - standard_deduction
|
||||||
|
# taxable = 234020
|
||||||
|
test_amt = ((taxable) * (7.0 / 100.0)) - 467.95 # 15991.850000000002
|
||||||
|
test_amt = test_amt / 12.0 # Put it into monthly -> 1332.654166666667
|
||||||
|
# Make it negative
|
||||||
|
test_amt = -test_amt
|
||||||
|
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=salary,
|
||||||
|
state_id=self.get_us_state('SC'),
|
||||||
|
state_income_tax_exempt=False,
|
||||||
|
sc_w4_sit_allowances=allowances,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
|
||||||
|
self._log('2019 South Carolina 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.SC_UNEMP_MAX_WAGE * self.US_SC_UNEMP)
|
||||||
|
self.assertPayrollAlmostEqual(cats['EE_US_SIT'], test_amt)
|
||||||
|
|
||||||
|
process_payslip(payslip)
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
# 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 TestUsSCPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
SC_UNEMP_MAX_WAGE = 14000.0
|
||||||
|
SC_UNEMP = 0.55
|
||||||
|
# Calculation based on https://dor.sc.gov/forms-site/Forms/WH1603F_2020.pdf
|
||||||
|
|
||||||
|
def _test_sit(self, wage, additional_withholding, exempt, allowances, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('SC'),
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
state_income_tax_exempt=exempt,
|
||||||
|
sc_w4_sit_allowances=allowances,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
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('SC', self.SC_UNEMP, date(2020, 1, 1), wage_base=self.SC_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(750.0, 0.0, False, 3.0, 'weekly', date(2020, 1, 1), 28.73)
|
||||||
|
self._test_sit(800.0, 0.0, True, 0.0, 'weekly', date(2020, 1, 1), 0.00)
|
||||||
|
self._test_sit(9000.0, 0.0, False, 0.0, 'monthly', date(2020, 1, 1), 594.61)
|
||||||
|
self._test_sit(5000.0, 10.0, False, 2.0, 'semi-monthly', date(2020, 1, 1), 316.06)
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from datetime import date
|
||||||
|
from .common import TestUsPayslip
|
||||||
|
|
||||||
|
|
||||||
|
class TestUsSDPayslip(TestUsPayslip):
|
||||||
|
# TAXES AND RATES
|
||||||
|
SD_UNEMP_MAX_WAGE = 15000.00
|
||||||
|
SD_UNEMP = 1.75
|
||||||
|
|
||||||
|
def test_2020_taxes(self):
|
||||||
|
self._test_er_suta('SD', self.SD_UNEMP, date(2020, 1, 1), wage_base=self.SD_UNEMP_MAX_WAGE)
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
|
||||||
|
|
||||||
|
from datetime import date
|
||||||
|
from .common import TestUsPayslip
|
||||||
|
|
||||||
|
|
||||||
|
class TestUsTNPayslip(TestUsPayslip):
|
||||||
|
# TAXES AND RATES
|
||||||
|
TN_UNEMP_MAX_WAGE = 7000.00
|
||||||
|
TN_UNEMP = 2.7
|
||||||
|
|
||||||
|
def test_2020_taxes(self):
|
||||||
|
self._test_er_suta('TN', self.TN_UNEMP, date(2020, 1, 1), wage_base=self.TN_UNEMP_MAX_WAGE)
|
||||||
36
l10n_us_hr_payroll/tests/test_us_us_utah_payslip_2020.py
Executable file
36
l10n_us_hr_payroll/tests/test_us_us_utah_payslip_2020.py
Executable file
@@ -0,0 +1,36 @@
|
|||||||
|
# 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 TestUsUTPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
UT_UNEMP_MAX_WAGE = 36600.0
|
||||||
|
UT_UNEMP = 0.1
|
||||||
|
# Calculation based on example https://tax.utah.gov/forms/pubs/pub-14.pdf
|
||||||
|
|
||||||
|
def _test_sit(self, wage, filing_status, additional_withholding, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('UT'),
|
||||||
|
ut_w4_sit_filing_status=filing_status,
|
||||||
|
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._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('UT', self.UT_UNEMP, date(2020, 1, 1), wage_base=self.UT_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(400, 'single', 0, 'weekly', date(2020, 1, 1), 16.00)
|
||||||
|
self._test_sit(1000, 'single', 0, 'bi-weekly', date(2020, 1, 1), 45.00)
|
||||||
|
self._test_sit(855, 'married', 0, 'semi-monthly', date(2020, 1, 1), 16.00)
|
||||||
|
self._test_sit(2500, 'married', 0, 'monthly', date(2020, 1, 1), 81.00)
|
||||||
|
self._test_sit(8000, 'head_household', 10, 'quarterly', date(2020, 1, 1), 397.00)
|
||||||
37
l10n_us_hr_payroll/tests/test_us_vt_vermont_payslip_2020.py
Executable file
37
l10n_us_hr_payroll/tests/test_us_vt_vermont_payslip_2020.py
Executable file
@@ -0,0 +1,37 @@
|
|||||||
|
# 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 TestUsVTPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
VT_UNEMP_MAX_WAGE = 16100.0
|
||||||
|
VT_UNEMP = 1.0
|
||||||
|
# Calculation based on example https://tax.vermont.gov/sites/tax/files/documents/WithholdingInstructions.pdf
|
||||||
|
|
||||||
|
def _test_sit(self, wage, filing_status, allowances, additional_withholding, exempt, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('VT'),
|
||||||
|
vt_w4vt_sit_filing_status=filing_status,
|
||||||
|
vt_w4vt_sit_allowances=allowances,
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
state_income_tax_exempt=exempt,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
self._log('Computed period tax: ' + str(expected_withholding))
|
||||||
|
self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding)
|
||||||
|
|
||||||
|
def test_2020_taxes_example(self):
|
||||||
|
self._test_er_suta('VT', self.VT_UNEMP, date(2020, 1, 1), wage_base=self.VT_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(1800, 'married', 2, 0, False, 'weekly', date(2020, 1, 1), 53.73)
|
||||||
|
self._test_sit(1800, 'married', 2, 10, False, 'weekly', date(2020, 1, 1), 63.73)
|
||||||
|
self._test_sit(1000, 'single', 1, 0, True, 'weekly', date(2020, 1, 1), 0.00)
|
||||||
|
self._test_sit(8000, 'single', 1, 10, False, 'bi-weekly', date(2020, 1, 1), 506.58)
|
||||||
39
l10n_us_hr_payroll/tests/test_us_wi_wisconsin_payslip_2020.py
Executable file
39
l10n_us_hr_payroll/tests/test_us_wi_wisconsin_payslip_2020.py
Executable file
@@ -0,0 +1,39 @@
|
|||||||
|
# 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 TestUsWIPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
WI_UNEMP_MAX_WAGE = 14000.0
|
||||||
|
WI_UNEMP = 3.05
|
||||||
|
# Calculation based on example https://www.revenue.wi.gov/DOR%20Publications/pb166.pdf
|
||||||
|
|
||||||
|
def _test_sit(self, wage, filing_status, exemption, additional_withholding, exempt, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('WI'),
|
||||||
|
wi_wt4_sit_filing_status=filing_status,
|
||||||
|
wi_wt4_sit_exemptions=exemption,
|
||||||
|
state_income_tax_additional_withholding=additional_withholding,
|
||||||
|
state_income_tax_exempt=exempt,
|
||||||
|
schedule_pay=schedule_pay)
|
||||||
|
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
|
||||||
|
payslip.compute_sheet()
|
||||||
|
cats = self._getCategories(payslip)
|
||||||
|
|
||||||
|
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('WI', self.WI_UNEMP, date(2020, 1, 1), wage_base=self.WI_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(300, 'single', 1, 0, False, 'weekly', date(2020, 1, 1), 7.21)
|
||||||
|
self._test_sit(700, 'married', 3, 0, False, 'bi-weekly', date(2020, 1, 1), 13.35)
|
||||||
|
self._test_sit(7000, 'single', 1, 10, True, 'bi-weekly', date(2020, 1, 1), 0.00)
|
||||||
|
self._test_sit(10000, 'married', 3, 10, False, 'bi-weekly', date(2020, 1, 1), 633.65)
|
||||||
|
# ((48000 - 26227) * (7.0224 /100) + 1073.55 - 44) / 12
|
||||||
|
self._test_sit(4000, 'single', 2, 0, False, 'monthly', date(2020, 1, 1), 213.21)
|
||||||
36
l10n_us_hr_payroll/tests/test_us_wv_west_virginia_payslip_2020.py
Executable file
36
l10n_us_hr_payroll/tests/test_us_wv_west_virginia_payslip_2020.py
Executable file
@@ -0,0 +1,36 @@
|
|||||||
|
# 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 TestUsWVPayslip(TestUsPayslip):
|
||||||
|
###
|
||||||
|
# 2020 Taxes and Rates
|
||||||
|
###
|
||||||
|
WV_UNEMP_MAX_WAGE = 12000.0
|
||||||
|
WV_UNEMP = 2.7
|
||||||
|
# Calculation based on example https://tax.wv.gov/Documents/TaxForms/it100.1a.pdf
|
||||||
|
|
||||||
|
def _test_sit(self, wage, filing_status, exemption, additional_withholding, schedule_pay, date_start, expected_withholding):
|
||||||
|
employee = self._createEmployee()
|
||||||
|
contract = self._createContract(employee,
|
||||||
|
wage=wage,
|
||||||
|
state_id=self.get_us_state('WV'),
|
||||||
|
wv_it104_sit_filing_status=filing_status,
|
||||||
|
wv_it104_sit_exemptions=exemption,
|
||||||
|
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._log('Computed period tax: ' + str(expected_withholding))
|
||||||
|
self.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding)
|
||||||
|
|
||||||
|
def test_2020_taxes_example(self):
|
||||||
|
self._test_er_suta('WV', self.WV_UNEMP, date(2020, 1, 1), wage_base=self.WV_UNEMP_MAX_WAGE)
|
||||||
|
self._test_sit(1250, 'married', 2, 0, 'semi-monthly', date(2020, 1, 1), 44.00)
|
||||||
|
self._test_sit(1300, 'single', 1, 0, 'bi-weekly', date(2020, 1, 1), 46.00)
|
||||||
|
self._test_sit(1300, 'single', 1, 10, 'bi-weekly', date(2020, 1, 1), 56.00)
|
||||||
|
self._test_sit(15000, 'single', 2, 0, 'monthly', date(2020, 1, 1), 860.00)
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user