[IMP] l10n_us_hr_payroll: Improved comments, Tax table, filing status and test case for AL Alabama 2020

This commit is contained in:
Bhoomi Vaishnani
2020-08-19 21:10:21 -04:00
parent 8470d9edc4
commit 87e5042522
4 changed files with 48 additions and 17 deletions

View File

@@ -46,16 +46,32 @@
<data noupdate="1"> <data noupdate="1">
<record id="rule_parameter_us_al_sit_tax_rate_2019" model="hr.rule.parameter.value"> <record id="rule_parameter_us_al_sit_tax_rate_2019" model="hr.rule.parameter.value">
<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="rule_parameter_id" ref="rule_parameter_us_al_sit_tax_rate"/> <field name="rule_parameter_id" ref="rule_parameter_us_al_sit_tax_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/> <field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record> </record>
<record id="rule_parameter_us_al_sit_tax_rate_2020" model="hr.rule.parameter.value"> <record id="rule_parameter_us_al_sit_tax_rate_2020" model="hr.rule.parameter.value">
<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="rule_parameter_id" ref="rule_parameter_us_al_sit_tax_rate"/> <field name="rule_parameter_id" ref="rule_parameter_us_al_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/> <field name="date_from" eval="datetime(2020, 1, 1).date()"/>
@@ -68,6 +84,8 @@
<field name="country_id" ref="base.us"/> <field name="country_id" ref="base.us"/>
</record> </record>
<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.rule.parameter.value"> <record id="rule_parameter_us_al_sit_dependent_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">[ <field name="parameter_value">[
( 1000, 20000), ( 1000, 20000),
@@ -77,6 +95,8 @@
<field name="rule_parameter_id" ref="rule_parameter_us_al_sit_dependent_rate"/> <field name="rule_parameter_id" ref="rule_parameter_us_al_sit_dependent_rate"/>
<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.rule.parameter.value"> <record id="rule_parameter_us_al_sit_dependent_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">[ <field name="parameter_value">[
( 1000, 20000), ( 1000, 20000),
@@ -94,24 +114,28 @@
<field name="country_id" ref="base.us"/> <field name="country_id" ref="base.us"/>
</record> </record>
<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.rule.parameter.value"> <record id="rule_parameter_us_al_sit_standard_deduction_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">{ <field name="parameter_value">{
'0': ((23499.0, 2500.0), (33000.0, 2500.0, 25.0, 500.0), ('inf', 2000.0)), '0': ((23499.0, 2500.0), (33000.0, 2500.0, 25.0, 500.0), ('inf', 2000.0)),
'S': ((23499.0, 2500.0), (33000.0, 2500.0, 25.0, 500.0), ('inf', 2000.0)), 'S': ((23499.0, 2500.0), (33000.0, 2500.0, 25.0, 500.0), ('inf', 2000.0)),
'MS': ((10749.0, 3750.0), (15500.0, 3750.0, 88.0, 250.0), ('inf', 2000.0)), 'MS': ((10749.0, 3750.0), (15500.0, 3750.0, 88.0, 250.0), ('inf', 2000.0)),
'M': ((23499.0, 7500.0), (33000.0, 7500.0, 175.0, 500.0), ('inf', 4000.0)), 'M': ((23499.0, 7500.0), (33000.0, 7500.0, 175.0, 500.0), ('inf', 4000.0)),
'H': ((23499.0, 4700.0), (33000.0, 7500.0, 175.0, 500.0), ('inf', 4000.0)), 'H': ((23499.0, 4700.0), (33000.0, 7500.0, 175.0, 500.0), ('inf', 4000.0)),
}</field> }</field>
<field name="rule_parameter_id" ref="rule_parameter_us_al_sit_standard_deduction_rate"/> <field name="rule_parameter_id" ref="rule_parameter_us_al_sit_standard_deduction_rate"/>
<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.rule.parameter.value"> <record id="rule_parameter_us_al_sit_standard_deduction_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{ <field name="parameter_value">{
'0': ((23499.0, 2500.0), (33000.0, 2500.0, 25.0, 500.0), ('inf', 2000.0)), '0': ((23499.0, 2500.0), (33000.0, 2500.0, 25.0, 500.0), ('inf', 2000.0)),
'S': ((23499.0, 2500.0), (33000.0, 2500.0, 25.0, 500.0), ('inf', 2000.0)), 'S': ((23499.0, 2500.0), (33000.0, 2500.0, 25.0, 500.0), ('inf', 2000.0)),
'MS': ((10749.0, 3750.0), (15500.0, 3750.0, 88.0, 250.0), ('inf', 2000.0)), 'MS': ((10749.0, 3750.0), (15500.0, 3750.0, 88.0, 250.0), ('inf', 2000.0)),
'M': ((23499.0, 7500.0), (33000.0, 7500.0, 175.0, 500.0), ('inf', 4000.0)), 'M': ((23499.0, 7500.0), (33000.0, 7500.0, 175.0, 500.0), ('inf', 4000.0)),
'H': ((23499.0, 4700.0), (33000.0, 7500.0, 175.0, 500.0), ('inf', 4000.0)), 'H': ((23499.0, 4700.0), (33000.0, 7500.0, 175.0, 500.0), ('inf', 4000.0)),
}</field> }</field>
<field name="rule_parameter_id" ref="rule_parameter_us_al_sit_standard_deduction_rate"/> <field name="rule_parameter_id" ref="rule_parameter_us_al_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/> <field name="date_from" eval="datetime(2020, 1, 1).date()"/>
@@ -124,6 +148,8 @@
<field name="country_id" ref="base.us"/> <field name="country_id" ref="base.us"/>
</record> </record>
<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.rule.parameter.value"> <record id="rule_parameter_us_al_sit_personal_exemption_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">{ <field name="parameter_value">{
'0' : 0, '0' : 0,
@@ -135,6 +161,8 @@
<field name="rule_parameter_id" ref="rule_parameter_us_al_sit_personal_exemption_rate"/> <field name="rule_parameter_id" ref="rule_parameter_us_al_sit_personal_exemption_rate"/>
<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.rule.parameter.value"> <record id="rule_parameter_us_al_sit_personal_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{ <field name="parameter_value">{
'0' : 0, '0' : 0,

View File

@@ -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.contract_id.us_payroll_config_value('state_income_tax_exempt') personal_exempt = payslip.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.contract_id.us_payroll_config_value('state_income_tax_additional_withholding') additional = payslip.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
tax_table = payslip.rule_parameter('us_al_sit_tax_rate') tax_table = payslip.rule_parameter('us_al_sit_tax_rate')
exemptions = payslip.contract_id.us_payroll_config_value('al_a4_sit_exemptions')
dependent_rate = payslip.rule_parameter('us_al_sit_dependent_rate') dependent_rate = payslip.rule_parameter('us_al_sit_dependent_rate')
standard_deduction = payslip.rule_parameter('us_al_sit_standard_deduction_rate').get(exemptions, 0.0) standard_deduction = payslip.rule_parameter('us_al_sit_standard_deduction_rate').get(exemptions, 0.0)
personal_exemption = payslip.rule_parameter('us_al_sit_personal_exemption_rate').get(exemptions, 0.0) personal_exemption = payslip.rule_parameter('us_al_sit_personal_exemption_rate').get(exemptions, 0.0)

View File

@@ -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'),

View File

@@ -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)