[REL] hr_payroll_hibou,l10n_us_hr_payroll,l10n_us_hr_payroll_401k: 2022

This commit is contained in:
Jared Kipe
2022-01-13 13:47:56 -08:00
parent 379c8e4dbd
commit 33ab9f3019
186 changed files with 5783 additions and 11308 deletions

View File

@@ -28,6 +28,26 @@
"--test-enable", "--no-xmlrpc", "--stop-after-init"],
"console": "integratedTerminal"
},
{
"name": "Odoo: INIT 'hr_payroll_hibou'",
"type": "python",
"request": "launch",
"program": "/opt/odoo/hibou-suite/odoo-run.py",
"args": ["-i", "hr_payroll_hibou",
"-u", "hr_payroll_hibou",
"--stop-after-init"],
"console": "integratedTerminal"
},
{
"name": "Odoo: TEST 'hr_payroll_hibou'",
"type": "python",
"request": "launch",
"program": "/opt/odoo/hibou-suite/odoo-run.py",
"args": ["-i", "hr_payroll_hibou",
"-u", "hr_payroll_hibou",
"--test-enable", "--no-xmlrpc", "--stop-after-init"],
"console": "integratedTerminal"
},
{
"name": "Odoo: server",
"type": "python",

View File

@@ -42,8 +42,8 @@ class PublisherWarrantyContract(models.AbstractModel):
allow_message = get_param('database.hibou_allow_message')
return {
'expiration_date': get_param('database.hibou_professional_expiration_date'),
'expiration_reason': get_param('database.hibou_professional_expiration_reason'),
'expiration_date': expiration_date,
'expiration_reason': expiration_reason,
'expiring': expiring,
'expired': expired,
'professional_code': get_param('database.hibou_professional_code'),

View File

@@ -0,0 +1 @@
from . import models

View File

@@ -0,0 +1,31 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
{
'name': 'Hibou Payroll',
'author': 'Hibou Corp. <hello@hibou.io>',
'version': '13.0.2.0.0',
'category': 'Payroll Localization',
'depends': [
'hr_payroll',
'hr_contract_reports',
'hibou_professional',
],
'description': """
Hibou Payroll
=============
Base module for fixing specific qwerks or assumptions in the way Payroll Odoo Enterprise Edition behaves.
""",
'data': [
'security/ir.model.access.csv',
'data/cron_data.xml',
'views/payroll_views.xml',
'views/res_config_settings_views.xml',
'views/update_views.xml',
],
'demo': [
],
'auto_install': True,
'license': 'OPL-1',
}

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Cron jobs -->
<record model="ir.cron" id="payroll_publisher_update_cron">
<field name="name">Payroll Update: download latest parameter values/rates.</field>
<field name="model_id" ref="hr_payroll_hibou.model_hr_payroll_publisher_update"/>
<field name="state">code</field>
<field name="code">model.cron_payroll_update()</field>
<field name="interval_number">1</field>
<field name="interval_type">weeks</field>
<field name="numbercall">-1</field>
<field name="nextcall" eval="(datetime.now() + timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="doall" eval="False"/>
</record>
</data>
</odoo>

212
hr_payroll_hibou/i18n/es.po Normal file
View File

@@ -0,0 +1,212 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_payroll_hibou
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-10-12 01:26+0000\n"
"PO-Revision-Date: 2021-10-12 01:26+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: hr_payroll_hibou
#: model:ir.model.fields.selection,name:hr_payroll_hibou.selection__res_config_settings__payslip_sum_type__date
msgid "Accounting Date"
msgstr "Fecha de Contabilidad"
#. module: hr_payroll_hibou
#: model:ir.model.fields,field_description:hr_payroll_hibou.field_res_config_settings__module_hr_payroll_attendance
msgid "Attendance Entries & Overtime"
msgstr "Entradas de Asistencias y Horas Extras"
#. module: hr_payroll_hibou
#: model:ir.model.fields,help:hr_payroll_hibou.field_res_config_settings__payslip_sum_type
msgid ""
"Behavior for what payslips are considered during rule execution. Stock Odoo behavior would not consider a payslip starting on 2019-12-30 ending on 2020-01-07 when summing a 2020 payslip category.\n"
"\n"
"Accounting Date requires Payroll Accounting and will fall back to date_to as the 'closest behavior'."
msgstr ""
"El comportamiento que se considera en los recibos de nómina durante la ejecución de una regla. El comportamiento de Stock Odoo no considerará a un recibo de nomina a partir de 2019-12-30 y que termina en 2020-01-07 al sumar una categoría de nómina de 2020.\n"
"\n"
"La fecha de contabilidad requiere contabilidad de nomina y usara date_to de respaldo como el 'comportamiento más cercana'."
#. module: hr_payroll_hibou
#: model:ir.model.fields,field_description:hr_payroll_hibou.field_res_config_settings__module_hr_payroll_commission
msgid "Commission"
msgstr "Comisión"
#. module: hr_payroll_hibou
#: model:ir.model,name:hr_payroll_hibou.model_res_config_settings
msgid "Config Settings"
msgstr "Opciones de configuración"
#. module: hr_payroll_hibou
#: model_terms:ir.ui.view,arch_db:hr_payroll_hibou.res_config_settings_view_form_hibou
msgid "Configure Matching & Limits"
msgstr "Configurar Contribuciones & Limites"
#. module: hr_payroll_hibou
#: model_terms:ir.ui.view,arch_db:hr_payroll_hibou.res_config_settings_view_form_hibou
msgid ""
"Customize the behavior of what payslips are eligible when summing over date ranges in rules.\n"
" Generally, \"Date To\" or \"Accounting Date\" would be preferred in the United States and anywhere\n"
" else where the ending date on the payslip is used to calculate wage bases."
msgstr ""
"Personalizar el comportamiento de las nóminas elegibles al sumar rangos de fechas en las reglas.\n"
" Generalmente, \"Hasta La Fecha\" o \"Fecha Contable\" sería preferible en los Estados Unidos y en cualquier lugar\n"
" donde la fecha de finalización en la nómina se utiliza para calcular las bases salariales.."
#. module: hr_payroll_hibou
#: model:ir.model.fields.selection,name:hr_payroll_hibou.selection__res_config_settings__payslip_sum_type__date_from
msgid "Date From"
msgstr "Desde la Fecha"
#. module: hr_payroll_hibou
#: model:ir.model.fields.selection,name:hr_payroll_hibou.selection__res_config_settings__payslip_sum_type__date_to
msgid "Date To"
msgstr "Hasta la Fecha"
#. module: hr_payroll_hibou
#: model:ir.model.fields,field_description:hr_payroll_hibou.field_hr_payroll_structure_type__default_schedule_pay
msgid "Default Scheduled Pay"
msgstr "Pago Programado Predeterminado"
#. module: hr_payroll_hibou
#: model:ir.model.fields,help:hr_payroll_hibou.field_hr_payroll_structure__schedule_pay
#: model:ir.model.fields,help:hr_payroll_hibou.field_hr_payroll_structure_type__default_schedule_pay
msgid "Defines the frequency of the wage payment."
msgstr "Define la frecuencia del pago de salario."
#. module: hr_payroll_hibou
#: model:ir.model,name:hr_payroll_hibou.model_hr_contract
msgid "Employee Contract"
msgstr "Contrato del empleado"
#. module: hr_payroll_hibou
#: model_terms:ir.ui.view,arch_db:hr_payroll_hibou.res_config_settings_view_form_hibou
msgid ""
"Extend Attendance into Payroll with Work Types, Overtime!\n"
" <strong>Hibou Professional</strong>"
msgstr ""
"¡Extender asistencias en nóminas con tipos de trabajos, Horas Extra!\n"
" <strong>Hibou Profesional</strong>"
#. module: hr_payroll_hibou
#: model_terms:ir.ui.view,arch_db:hr_payroll_hibou.res_config_settings_view_form_hibou
msgid ""
"Extend Timesheets into Payroll with Work Types, Overtime!\n"
" <strong>Hibou Professional</strong>"
msgstr ""
"¡Extender hojas de asistencia en nominas con tipos de trabajos, Horas Extra!\n"
" <strong>Hibou Profesional</strong>"
#. module: hr_payroll_hibou
#: model_terms:ir.ui.view,arch_db:hr_payroll_hibou.res_config_settings_view_form_hibou
msgid "Hibou Payroll"
msgstr "Hibou Nómina"
#. module: hr_payroll_hibou
#: model:ir.model.fields.selection,name:hr_payroll_hibou.selection__hr_contract__wage_type__hourly
msgid "Hourly Wage"
msgstr "Salario por Hora"
#. module: hr_payroll_hibou
#: model_terms:ir.ui.view,arch_db:hr_payroll_hibou.res_config_settings_view_form_hibou
msgid ""
"Pay Commissions in Payroll!\n"
" <strong>Hibou Professional</strong>"
msgstr ""
"¡Paga comisiones en Nómina!\n"
" <strong>Hibou Profesional</strong>"
#. module: hr_payroll_hibou
#: model:ir.model,name:hr_payroll_hibou.model_hr_payslip
msgid "Pay Slip"
msgstr "Recibo de nómina"
#. module: hr_payroll_hibou
#: model:ir.model.fields,field_description:hr_payroll_hibou.field_res_config_settings__module_hr_payroll_payment
msgid "Payments & Advanced Accounting"
msgstr "Pagos & Contabilidad Avanzada"
#. module: hr_payroll_hibou
#: model:ir.model.fields,field_description:hr_payroll_hibou.field_res_config_settings__payslip_sum_type
#: model_terms:ir.ui.view,arch_db:hr_payroll_hibou.res_config_settings_view_form_hibou
msgid "Payslip Sum Behavior"
msgstr "Comportamiento de la suma de recibos de nómina"
#. module: hr_payroll_hibou
#: model:ir.model.fields.selection,name:hr_payroll_hibou.selection__hr_contract__wage_type__monthly
msgid "Period Fixed Wage"
msgstr "Periodo Salario Fijo"
#. module: hr_payroll_hibou
#: model_terms:ir.ui.view,arch_db:hr_payroll_hibou.res_config_settings_view_form_hibou
msgid ""
"Provide retirement plans with optional company matching.\n"
" <strong>Hibou Professional</strong>"
msgstr ""
"Proporcionar planes de jubilación con contribucion opcional de la compañía.\n"
" <strong>Hibou Profesional</strong>"
#. module: hr_payroll_hibou
#: model_terms:ir.ui.view,arch_db:hr_payroll_hibou.res_config_settings_view_form_hibou
msgid ""
"Register payments on payslips! Have control over journal entries created from\n"
" payroll to include partner details, set grouping options, and apply fiscal position\n"
" account mappings.\n"
" <strong>Hibou Professional</strong>"
msgstr ""
"Registrar pagos en recibos de nomina! Ten control sobre sus asientos contables creado desde\n"
" la nomina para incluir detalles del socio, establecer opciones de agrupamiento, y aplicar la asignación de cuentas\n"
" de posición fiscal.\n"
" <strong>Hibou Profesional</strong>"
#. module: hr_payroll_hibou
#: model:ir.model,name:hr_payroll_hibou.model_hr_payroll_structure
msgid "Salary Structure"
msgstr "Estructura salarial"
#. module: hr_payroll_hibou
#: model:ir.model,name:hr_payroll_hibou.model_hr_payroll_structure_type
msgid "Salary Structure Type"
msgstr "Tipo de estructura salarial"
#. module: hr_payroll_hibou
#: model:ir.model.fields,field_description:hr_payroll_hibou.field_hr_payroll_structure__schedule_pay
msgid "Scheduled Pay"
msgstr "Pago Programado"
#. module: hr_payroll_hibou
#: model:ir.model.fields.selection,name:hr_payroll_hibou.selection__hr_payroll_structure__schedule_pay__semi-monthly
#: model:ir.model.fields.selection,name:hr_payroll_hibou.selection__hr_payroll_structure_type__default_schedule_pay__semi-monthly
msgid "Semi-monthly"
msgstr "Semestral"
#. module: hr_payroll_hibou
#: model:ir.model.fields,field_description:hr_payroll_hibou.field_res_config_settings__module_hr_payroll_timesheet
msgid "Timesheet Entries & Overtime"
msgstr "Entradas de hojas de asistencias y horas extra"
#. module: hr_payroll_hibou
#: model:ir.model.fields,field_description:hr_payroll_hibou.field_res_config_settings__module_l10n_us_hr_payroll
msgid "USA Payroll"
msgstr "Nómina de EE.UU"
#. module: hr_payroll_hibou
#: model:ir.model.fields,field_description:hr_payroll_hibou.field_res_config_settings__module_l10n_us_hr_payroll_401k
#: model_terms:ir.ui.view,arch_db:hr_payroll_hibou.res_config_settings_view_form_hibou
msgid "USA Payroll 401k"
msgstr "Nómina de EE.UUU 401K"
#. module: hr_payroll_hibou
#: model:ir.model.fields,field_description:hr_payroll_hibou.field_hr_contract__wage_type
#: model:ir.model.fields,field_description:hr_payroll_hibou.field_hr_payslip__wage_type
msgid "Wage Type"
msgstr "Tipo de salario"

View File

@@ -0,0 +1,6 @@
from . import browsable_object
from . import hr_contract
from . import hr_payslip
from . import hr_salary_rule
from . import res_config_settings
from . import update

View File

@@ -0,0 +1,151 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
from odoo import fields
from odoo.addons.hr_payroll.models import browsable_object
class BrowsableObject(object):
def __init__(self, employee_id, dict, env):
self.employee_id = employee_id
self.dict = dict
self.env = env
# Customization to allow changing the behavior of the discrete browsable objects.
# you can think of this as 'compiling' the query based on the configuration.
sum_field = env['ir.config_parameter'].sudo().get_param('hr_payroll.payslip.sum_behavior', 'date_from')
if sum_field == 'date' and 'date' not in env['hr.payslip']:
# missing attribute, closest by definition
sum_field = 'date_to'
if not sum_field:
sum_field = 'date_from'
self._compile_browsable_query(sum_field)
def __getattr__(self, attr):
return attr in self.dict and self.dict.__getitem__(attr) or 0.0
def __getitem__(self, key):
return self.dict[key] or 0.0
def _compile_browsable_query(self, sum_field):
pass
class InputLine(BrowsableObject):
"""a class that will be used into the python code, mainly for usability purposes"""
def _compile_browsable_query(self, sum_field):
self.__browsable_query = """
SELECT sum(amount) as sum
FROM hr_payslip as hp, hr_payslip_input as pi
WHERE hp.employee_id = %s AND hp.state = 'done'
AND hp.{sum_field} >= %s AND hp.date_to <= %s AND hp.id = pi.payslip_id AND pi.code = %s""".format(sum_field=sum_field)
def sum(self, code, from_date, to_date=None):
if to_date is None:
to_date = fields.Date.today()
self.env.cr.execute(self.__browsable_query, (self.employee_id, from_date, to_date, code))
return self.env.cr.fetchone()[0] or 0.0
class WorkedDays(BrowsableObject):
"""a class that will be used into the python code, mainly for usability purposes"""
def _compile_browsable_query(self, sum_field):
self.__browsable_query = """
SELECT sum(number_of_days) as number_of_days, sum(number_of_hours) as number_of_hours
FROM hr_payslip as hp, hr_payslip_worked_days as pi
WHERE hp.employee_id = %s AND hp.state = 'done'
AND hp.{sum_field} >= %s AND hp.date_to <= %s AND hp.id = pi.payslip_id AND pi.code = %s""".format(sum_field=sum_field)
def _sum(self, code, from_date, to_date=None):
if to_date is None:
to_date = fields.Date.today()
self.env.cr.execute(self.__browsable_query, (self.employee_id, from_date, to_date, code))
return self.env.cr.fetchone()
def sum(self, code, from_date, to_date=None):
res = self._sum(code, from_date, to_date)
return res and res[0] or 0.0
def sum_hours(self, code, from_date, to_date=None):
res = self._sum(code, from_date, to_date)
return res and res[1] or 0.0
class Payslips(BrowsableObject):
"""a class that will be used into the python code, mainly for usability purposes"""
def _compile_browsable_query(self, sum_field):
# Note that the core odoo has this as `hp.credit_note = False` but what if it is NULL?
# reverse of the desired behavior.
self.__browsable_query_rule = """
SELECT sum(case when hp.credit_note is not True then (pl.total) else (-pl.total) end)
FROM hr_payslip as hp, hr_payslip_line as pl
WHERE hp.employee_id = %s AND hp.state = 'done'
AND hp.{sum_field} >= %s AND hp.date_to <= %s AND hp.id = pl.slip_id AND pl.code = %s""".format(sum_field=sum_field)
# Original (non-recursive)
# self.__browsable_query_category = """
# SELECT sum(case when hp.credit_note is not True then (pl.total) else (-pl.total) end)
# FROM hr_payslip as hp, hr_payslip_line as pl, hr_salary_rule_category as rc
# WHERE hp.employee_id = %s AND hp.state = 'done'
# AND hp.{sum_field} >= %s AND hp.date_to <= %s AND hp.id = pl.slip_id
# AND rc.id = pl.category_id AND rc.code = %s""".format(sum_field=sum_field)
# Hibou Recursive version
self.__browsable_query_category = """
WITH RECURSIVE
category_by_code as (
SELECT id
FROM hr_salary_rule_category
WHERE code = %s
),
category_ids as (
SELECT COALESCE((SELECT id FROM category_by_code), -1) AS id
UNION ALL
SELECT rc.id
FROM hr_salary_rule_category AS rc
JOIN category_ids AS rcs ON rcs.id = rc.parent_id
)
SELECT sum(case when hp.credit_note is not True then (pl.total) else (-pl.total) end)
FROM hr_payslip as hp, hr_payslip_line as pl
WHERE hp.employee_id = %s AND hp.state = 'done'
AND hp.{sum_field} >= %s AND hp.date_to <= %s AND hp.id = pl.slip_id
AND pl.category_id in (SELECT id from category_ids)""".format(sum_field=sum_field)
def sum(self, code, from_date, to_date=None):
if to_date is None:
to_date = fields.Date.today()
self.env.cr.execute(self.__browsable_query_rule, (self.employee_id, from_date, to_date, code))
res = self.env.cr.fetchone()
return res and res[0] or 0.0
def rule_parameter(self, code):
return self.env['hr.rule.parameter']._get_parameter_from_code(code, self.dict.date_to)
def sum_category(self, code, from_date, to_date=None):
if to_date is None:
to_date = fields.Date.today()
self.env['hr.payslip'].flush(['credit_note', 'employee_id', 'state', 'date_from', 'date_to'])
self.env['hr.payslip.line'].flush(['total', 'slip_id', 'category_id'])
self.env['hr.salary.rule.category'].flush(['code'])
# standard version
# self.env.cr.execute(self.__browsable_query_category, (self.employee_id, from_date, to_date, code))
# recursive category version
self.env.cr.execute(self.__browsable_query_category, (code, self.employee_id, from_date, to_date))
res = self.env.cr.fetchone()
return res and res[0] or 0.0
@property
def paid_amount(self):
return self.dict._get_paid_amount()
# Patch over Core
browsable_object.BrowsableObject.__init__ = BrowsableObject.__init__
browsable_object.BrowsableObject._compile_browsable_query = BrowsableObject._compile_browsable_query
browsable_object.InputLine._compile_browsable_query = InputLine._compile_browsable_query
browsable_object.InputLine.sum = InputLine.sum
browsable_object.WorkedDays._compile_browsable_query = WorkedDays._compile_browsable_query
browsable_object.WorkedDays.sum = WorkedDays.sum
browsable_object.Payslips._compile_browsable_query = Payslips._compile_browsable_query
browsable_object.Payslips.sum = Payslips.sum
browsable_object.Payslips.sum_category = Payslips.sum_category

View File

@@ -0,0 +1,20 @@
from odoo import fields, models
class HrContract(models.Model):
_inherit = 'hr.contract'
wage_type = fields.Selection([('monthly', 'Period Fixed Wage'), ('hourly', 'Hourly Wage')],
default='monthly', required=True, related=False)
def _get_contract_wage(self, work_type=None):
# Override if you pay differently for different work types
# In 14.0, this utilizes new computed field mechanism,
# but will still get the 'wage' field by default.
self.ensure_one()
return self[self._get_contract_wage_field(work_type=work_type)]
def _get_contract_wage_field(self, work_type=None):
if self.wage_type == 'hourly':
return 'hourly_wage'
return super()._get_contract_wage_field()

View File

@@ -0,0 +1,27 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
from odoo import fields, models
class HrPayslip(models.Model):
_inherit = 'hr.payslip'
# We need to be able to support more complexity,
# namely, that different employees will be paid by different wage types as 'salary' vs 'hourly'
wage_type = fields.Selection(related='contract_id.wage_type')
def get_year(self):
"""
# Helper method to get the year (normalized between Odoo Versions)
:return: int year of payslip
"""
return self.date_to.year
def _get_contract_wage(self, work_type=None):
# Override if you pay differently for different work types
# In 14.0, this utilizes new computed field mechanism,
# but will still get the 'wage' field by default.
# This would be a good place to override though with a 'work type'
# based mechanism, like a minimum rate or 'rate card' implementation
return self.contract_id._get_contract_wage(work_type=work_type)

View File

@@ -0,0 +1,26 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
from odoo import fields, models
class HrPayrollStructure(models.Model):
_inherit = 'hr.payroll.structure'
schedule_pay = fields.Selection(selection_add=[
('semi-monthly', 'Semi-monthly'),
], ondelete={'semi-monthly': 'set null'})
class HrPayrollStructureType(models.Model):
_inherit = 'hr.payroll.structure.type'
default_schedule_pay = fields.Selection(selection_add=[
('semi-monthly', 'Semi-monthly'),
])
class HrRuleParameter(models.Model):
_inherit = 'hr.rule.parameter'
update_locked = fields.Boolean(string='Update Lock',
help='Lock parameter to prevent updating rates from publisher.')

View File

@@ -0,0 +1,32 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
# TODO We need MORE here...
module_hr_payroll_payment = fields.Boolean(string='Payments & Advanced Accounting')
module_hr_payroll_attendance = fields.Boolean(string='Attendance Entries & Overtime')
module_hr_payroll_timesheet = fields.Boolean(string='Timesheet Entries & Overtime')
module_hr_payroll_commission = fields.Boolean(string='Commission')
module_l10n_us_hr_payroll = fields.Boolean(string='USA Payroll')
module_l10n_us_hr_payroll_401k = fields.Boolean(string='USA Payroll 401k')
payslip_sum_type = fields.Selection([
('date_from', 'Date From'),
('date_to', 'Date To'),
('date', 'Accounting Date'),
], 'Payslip Sum Behavior', help="Behavior for what payslips are considered "
"during rule execution. Stock Odoo behavior "
"would not consider a payslip starting on 2019-12-30 "
"ending on 2020-01-07 when summing a 2020 payslip category.\n\n"
"Accounting Date requires Payroll Accounting and will "
"fall back to date_to as the 'closest behavior'.",
config_parameter='hr_payroll.payslip.sum_behavior')
def set_values(self):
super(ResConfigSettings, self).set_values()
self.env['ir.config_parameter'].set_param('hr_payroll.payslip.sum_behavior',
self.payslip_sum_type or 'date_from')

View File

@@ -0,0 +1,161 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
import requests
import json
from odoo import api, fields, models, _
from odoo.exceptions import UserError
class HRPayrollPublisherUpdate(models.Model):
_name = 'hr.payroll.publisher.update'
_description = 'Payroll Update'
_order = 'id DESC'
def _default_request_modules(self):
request_modules = self.env.context.get('default_request_modules')
if not request_modules:
request_modules = '\n'.join(self.env['publisher_warranty.contract'].hibou_payroll_modules_to_update())
return request_modules
state = fields.Selection([
('draft', 'Draft'),
('result', 'Result'),
('done', 'Done'),
('error', 'Error'),
], default='draft')
request_modules = fields.Char(default=_default_request_modules,
states={'done': [('readonly', True)],
'error': [('readonly', True)]})
result = fields.Text(readonly=True)
parameter_codes_retrieved = fields.Text(readonly=True)
error = fields.Text(readonly=True)
@api.model
def cron_payroll_update(self):
update = self.create({})
if update.request_modules:
update.button_send()
else:
update.unlink()
def button_send(self):
self.ensure_one()
if not self.request_modules:
raise UserError('One or more modules needed.')
if self.result:
raise UserError('Already retrieved')
self._send()
if self.result and not self.state == 'error':
self._process_result()
def _send(self):
try:
self.env['publisher_warranty.contract'].hibou_payroll_update(self)
except UserError as e:
self.set_error_state(e.name)
def set_error_state(self, message=''):
self.write({
'state': 'error',
'error': message,
})
def set_result(self, result):
self.write({
'state': 'result',
'result': result,
'error': False,
})
def button_process_result(self):
self.ensure_one()
if not self.result:
raise UserError('No Result to process.')
self._process_result()
def _process_result(self):
try:
result_dict = json.loads(self.result)
parameter_values = result_dict.get('payroll_parameter_values')
if not parameter_values or not isinstance(parameter_values, list):
self.set_error_state('Result is missing expected parameter values.')
parameter_map = {}
parameter_model = self.env['hr.rule.parameter'].sudo()
for code, date_from, pv in parameter_values:
date_from = fields.Date.from_string(date_from)
if code not in parameter_map:
parameter_map[code] = parameter_model.search([('code', '=', code)], limit=1)
parameter = parameter_map[code]
if not parameter or parameter.update_locked:
continue
# watch out for versions of Odoo where this is not datetime.date
parameter_version = parameter.parameter_version_ids.filtered(lambda p: p.date_from == date_from)
if not parameter_version:
parameter.write({
'parameter_version_ids': [(0, 0, {
'date_from': date_from,
'parameter_value': pv,
})]
})
elif parameter_version.parameter_value != pv:
parameter_version.write({
'parameter_value': pv,
})
# We have applied all of the updates. Set statistics.
self.write({
'state': 'done',
'error': '',
'parameter_codes_retrieved': '\n'.join('%s%s' % (c, '' if p and not p.update_locked else ' (LOCKED)' if p.update_locked else ' (MISSING)') for c, p in parameter_map.items()),
})
except Exception as e:
self.set_error_state(str(e))
class PublisherWarrantyContract(models.AbstractModel):
_inherit = 'publisher_warranty.contract'
CONFIG_HIBOU_URL_PAYROLL = 'https://api.hibou.io/hibouapi/v1/professional/payroll'
@api.model
def hibou_payroll_modules_to_update(self):
# Filled downstream
return []
@api.model
def hibou_payroll_update(self, update_request):
# Check status locally
status = self.hibou_professional_status()
if status['expired']:
raise UserError('Hibou Professional Subscription Expired, you cannot retrieve updates.')
if status['expiration_reason'] == 'trial':
raise UserError('Hibou Professional Subscription Trial, not eligible for updates.')
if not status['professional_code']:
raise UserError('Hibou Professional Subscription Missing, please setup your subscription.')
if self.env.context.get('test_payroll_update_result'):
update_request.set_result(self.env.context.get('test_payroll_update_result'))
return
try:
res = self._hibou_payroll_update(update_request.request_modules)
if res.get('error'):
update_request.set_error_state(str(res.get('error')))
else:
update_request.set_result(json.dumps(res))
except Exception as e:
update_request.set_error_state(str(e))
def _hibou_payroll_update(self, payroll_modules):
data = self._get_hibou_message()
data['payroll_modules'] = payroll_modules
data = {
'jsonrpc': '2.0',
'method': 'call',
'params': data,
}
r = requests.post(self.CONFIG_HIBOU_URL_PAYROLL, json=data, timeout=30)
r.raise_for_status()
wrapper = r.json()
return wrapper.get('result', {})

View File

@@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
hr_payroll_hibou.access_hr_payroll_publisher_update,access_hr_payroll_publisher_update,hr_payroll_hibou.model_hr_payroll_publisher_update,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 hr_payroll_hibou.access_hr_payroll_publisher_update access_hr_payroll_publisher_update hr_payroll_hibou.model_hr_payroll_publisher_update base.group_user 1 1 1 1

View File

@@ -0,0 +1,7 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
from . import common
from . import test_contract_wage_type
from . import test_special
from . import test_update

162
hr_payroll_hibou/tests/common.py Executable file
View File

@@ -0,0 +1,162 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
from logging import getLogger
from sys import float_info as sys_float_info
from collections import defaultdict
from odoo.tests import common
from odoo.tools.float_utils import float_round as odoo_float_round
def process_payslip(payslip):
try:
return payslip.action_payslip_done()
except AttributeError:
# v9
return payslip.process_sheet()
class TestPayslip(common.TransactionCase):
debug = False
_logger = getLogger(__name__)
def process_payslip(self, payslip=None):
if not payslip:
return process_payslip(self.payslip)
return process_payslip(payslip)
def setUp(self):
super(TestPayslip, self).setUp()
self.contract_model = self.env['hr.contract']
self.env.user.tz = 'PST8PDT'
self.env.ref('resource.resource_calendar_std').tz = 'PST8PDT'
self.env['ir.config_parameter'].set_param('hr_payroll.payslip.sum_behavior', 'date_to')
self.structure_type = self.env['hr.payroll.structure.type'].create({
'name': 'Test Structure Type',
})
self.structure = self.env['hr.payroll.structure'].create({
'name': 'Test Structure',
'type_id': self.structure_type.id,
})
self._log('structue_type %s and structure %s' % (self.structure_type, self.structure))
self.structure_type.default_struct_id = self.structure
self.resource_calendar = self.ref('resource.resource_calendar_std')
float_info = sys_float_info
def float_round(self, value, digits):
return odoo_float_round(value, digits)
_payroll_digits = -1
@property
def payroll_digits(self):
if self._payroll_digits == -1:
self._payroll_digits = self.env['decimal.precision'].precision_get('Payroll')
return self._payroll_digits
def _log(self, message):
if self.debug:
self._logger.warning(message)
def _createEmployee(self):
employee = self.env['hr.employee'].create({
'birthday': '1985-03-14',
'country_id': self.ref('base.us'),
'department_id': self.ref('hr.dep_rd'),
'gender': 'male',
'name': 'Jared'
})
employee.address_home_id = self.env['res.partner'].create({
'name': 'Jared (private)',
})
return employee
def _get_contract_defaults(self, contract_values):
if not contract_values.get('state'):
contract_values['state'] = 'open' # Running
if not contract_values.get('structure_type_id'):
contract_values['structure_type_id'] = self.structure_type.id
if not contract_values.get('date_start'):
contract_values['date_start'] = '2016-01-01'
if not contract_values.get('date_end'):
contract_values['date_end'] = '2030-12-31'
if not contract_values.get('resource_calendar_id'):
contract_values['resource_calendar_id'] = self.resource_calendar
# Compatibility with earlier Odoo versions
if not contract_values.get('journal_id') and hasattr(self.contract_model, 'journal_id'):
try:
contract_values['journal_id'] = self.env['account.journal'].search([('type', '=', 'general')], limit=1).id
except KeyError:
# Accounting not installed
pass
def _createContract(self, employee, **kwargs):
if not 'schedule_pay' in kwargs:
kwargs['schedule_pay'] = 'monthly'
schedule_pay = kwargs['schedule_pay']
contract_values = {
'name': 'Test Contract',
'employee_id': employee.id,
}
for key, val in kwargs.items():
# Assume any Odoo object is in a Many2one
if hasattr(val, 'id'):
val = val.id
found = False
if hasattr(self.contract_model, key):
contract_values[key] = val
found = True
if not found:
self._logger.warning('cannot locate attribute names "%s" on hr.contract().' % (key, ))
self._get_contract_defaults(contract_values)
contract = self.contract_model.create(contract_values)
# Compatibility with Odoo 14
contract.structure_type_id.default_struct_id.schedule_pay = schedule_pay
return contract
def _createPayslip(self, employee, date_from, date_to, skip_compute=False):
slip = self.env['hr.payslip'].create({
'name': 'Test %s From: %s To: %s' % (employee.name, date_from, date_to),
'employee_id': employee.id,
'date_from': date_from,
'date_to': date_to
})
# Included in hr.payslip.action_refresh_from_work_entries() as ov 14.0 EE
# slip._onchange_employee()
# as is the 'compute' that is almost always called immediaately after
if not skip_compute:
slip.action_refresh_from_work_entries()
return slip
def _getCategories(self, payslip):
categories = defaultdict(float)
for line in payslip.line_ids:
self._log(' line code: ' + str(line.code) +
' category code: ' + line.category_id.code +
' total: ' + str(line.total) +
' rate: ' + str(line.rate) +
' amount: ' + str(line.amount))
category_id = line.category_id
category_code = line.category_id.code
while category_code:
categories[category_code] += line.total
category_id = category_id.parent_id
category_code = category_id.code
return categories
def _getRules(self, payslip):
rules = defaultdict(float)
for line in payslip.line_ids:
rules[line.code] += line.total
return rules
def assertPayrollEqual(self, first, second):
self.assertAlmostEqual(first, second, self.payroll_digits)
def assertPayrollAlmostEqual(self, first, second):
self.assertAlmostEqual(first, second, self.payroll_digits-1)

View File

@@ -0,0 +1,26 @@
from .common import TestPayslip, process_payslip
class TestContractWageType(TestPayslip):
def test_per_contract_wage_type_salary(self):
self.debug = True
salary = 80000.0
employee = self._createEmployee()
contract = self._createContract(employee, wage=salary, hourly_wage=salary/100.0, wage_type='monthly', schedule_pay='bi-weekly')
payslip = self._createPayslip(employee, '2019-12-30', '2020-01-12')
self.assertEqual(contract.wage_type, 'monthly')
self.assertEqual(payslip.wage_type, 'monthly')
cats = self._getCategories(payslip)
self.assertEqual(cats['BASIC'], salary)
def test_per_contract_wage_type_hourly(self):
self.debug = True
hourly_wage = 21.50
employee = self._createEmployee()
contract = self._createContract(employee, wage=hourly_wage*100.0, hourly_wage=hourly_wage, wage_type='hourly', schedule_pay='bi-weekly')
payslip = self._createPayslip(employee, '2019-12-30', '2020-01-12')
self.assertEqual(contract.wage_type, 'hourly')
self.assertEqual(payslip.wage_type, 'hourly')
cats = self._getCategories(payslip)
self.assertEqual(cats['BASIC'], hourly_wage * 80.0)

View File

@@ -1,17 +1,25 @@
from .common import TestUsPayslip, process_payslip
from .common import TestPayslip, process_payslip
class TestSpecial(TestUsPayslip):
class TestSpecial(TestPayslip):
def test_get_year(self):
salary = 80000.0
employee = self._createEmployee()
# so the schedule_pay is now on the Structure...
contract = self._createContract(employee, wage=salary)
payslip = self._createPayslip(employee, '2020-01-01', '2020-01-14')
self.assertEqual(payslip.get_year(), 2020)
def test_semi_monthly(self):
salary = 80000.0
employee = self._createEmployee()
# so the schedule_pay is now on the Structure...
contract = self._createContract(employee, wage=salary, schedule_pay='semi-monthly')
payslip = self._createPayslip(employee, '2020-01-01', '2020-01-14')
payslip.compute_sheet()
payslip = self._createPayslip(employee, '2019-01-01', '2019-01-14')
def test_payslip_sum_behavior(self):
us_structure = self.env.ref('l10n_us_hr_payroll.hr_payroll_structure')
self.env['ir.config_parameter'].set_param('hr_payroll.payslip.sum_behavior', 'date')
rule_category_comp = self.env.ref('hr_payroll.COMP')
test_rule_category = self.env['hr.salary.rule.category'].create({
'name': 'Test Sum Behavior',
@@ -20,7 +28,7 @@ class TestSpecial(TestUsPayslip):
})
test_rule = self.env['hr.salary.rule'].create({
'sequence': 450,
'struct_id': us_structure.id,
'struct_id': self.structure.id,
'category_id': test_rule_category.id,
'name': 'Test Sum Behavior',
'code': 'test_sum_behavior',
@@ -28,8 +36,8 @@ class TestSpecial(TestUsPayslip):
'condition_python': 'result = 1',
'amount_select': 'code',
'amount_python_compute': '''
ytd_category = payslip.sum_category('test_sum_behavior', '2021-01-01', '2022-01-01')
ytd_rule = payslip.sum('test_sum_behavior', '2021-01-01', '2022-01-01')
ytd_category = payslip.sum_category('test_sum_behavior', '2020-01-01', '2021-01-01')
ytd_rule = payslip.sum('test_sum_behavior', '2020-01-01', '2021-01-01')
result = 0.0
if ytd_category != ytd_rule:
# error
@@ -42,16 +50,16 @@ elif ytd_rule == 0.0:
salary = 80000.0
employee = self._createEmployee()
contract = self._createContract(employee, wage=salary, schedule_pay='bi-weekly')
payslip = self._createPayslip(employee, '2020-12-30', '2021-01-12')
payslip.compute_sheet()
payslip = self._createPayslip(employee, '2019-12-30', '2020-01-12')
cats = self._getCategories(payslip)
self.assertEqual(cats['BASIC'], salary)
self.assertEqual(cats['test_sum_behavior'], 1.0)
process_payslip(payslip)
# Basic date_from behavior.
self.env['ir.config_parameter'].set_param('hr_payroll.payslip.sum_behavior', 'date_from')
# The the date_from on the last payslip will not be found
payslip = self._createPayslip(employee, '2021-01-13', '2021-01-27')
payslip = self._createPayslip(employee, '2020-01-13', '2020-01-27')
payslip.compute_sheet()
cats = self._getCategories(payslip)
self.assertEqual(cats['test_sum_behavior'], 1.0)
@@ -59,14 +67,13 @@ elif ytd_rule == 0.0:
# date_to behavior.
self.env['ir.config_parameter'].set_param('hr_payroll.payslip.sum_behavior', 'date_to')
# The date_to on the last payslip is found
payslip = self._createPayslip(employee, '2021-01-13', '2021-01-27')
payslip = self._createPayslip(employee, '2020-01-13', '2020-01-27')
payslip.compute_sheet()
cats = self._getCategories(payslip)
self.assertEqual(cats['test_sum_behavior'], 0.0)
def test_recursive_salary_rule_category(self):
# self.debug = True
us_structure = self.env.ref('l10n_us_hr_payroll.hr_payroll_structure')
self.debug = True
# In this scenario, you are in rule code that will check for the category
# and a subcategory will also
alw_category = self.env.ref('hr_payroll.ALW')
@@ -83,7 +90,7 @@ elif ytd_rule == 0.0:
'condition_select': 'none',
'amount_select': 'fix',
'amount_fix': 200.0,
'struct_id': us_structure.id,
'struct_id': self.structure.id,
})
test_recursion = self.env['hr.salary.rule'].create({
'name': 'Actual Test Behavior',
@@ -94,24 +101,25 @@ elif ytd_rule == 0.0:
'amount_python_compute': """
# this rule will always be the total of the ALW category and YTD ALW category
result = categories.ALW
# Note, this tests the hr.payslip.get_year() to return an integer rep of year
year = payslip.dict.get_year()
result += payslip.sum_category('ALW', str(year) + '-01-01', str(year+1) + '-01-01')
""",
'sequence': 101,
'struct_id': us_structure.id,
'struct_id': self.structure.id,
})
salary = 80000.0
employee = self._createEmployee()
contract = self._createContract(employee, wage=salary, schedule_pay='bi-weekly')
payslip = self._createPayslip(employee, '2021-01-01', '2021-01-14')
payslip = self._createPayslip(employee, '2020-01-01', '2020-01-14')
payslip.compute_sheet()
cats = self._getCategories(payslip)
rules = self._getRules(payslip)
self.assertEqual(rules['RECURSION_TEST'], 200.0)
process_payslip(payslip)
payslip = self._createPayslip(employee, '2021-01-15', '2021-01-27')
payslip = self._createPayslip(employee, '2020-01-15', '2020-01-27')
payslip.compute_sheet()
cats = self._getCategories(payslip)
rules = self._getRules(payslip)

View File

@@ -0,0 +1,93 @@
import datetime
from odoo import fields
from odoo.exceptions import ValidationError
from odoo.tests import common
class TestUpdate(common.TransactionCase):
def setUp(self):
super().setUp()
# setup the database to run in general
today = datetime.date.today()
tomorrow = today + datetime.timedelta(days=1)
self.param_model = self.env['ir.config_parameter'].sudo()
self.param_model.set_param('database.hibou_professional_expiration_date', fields.Date.to_string(tomorrow))
self.param_model.set_param('database.hibou_professional_code', 'TESTCODE')
def test_01_database_state(self):
today = datetime.date.today()
tomorrow = today + datetime.timedelta(days=1)
yesterday = today - datetime.timedelta(days=1)
self.param_model.set_param('database.hibou_professional_expiration_date', fields.Date.to_string(yesterday))
update = self.env['hr.payroll.publisher.update']\
.with_context(test_payroll_update_result='{"payroll_parameter_values":[]}')\
.create({
'request_modules': 'test',
})
self.assertEqual(update.state, 'draft')
update.button_send()
self.assertEqual(update.state, 'error')
self.param_model.set_param('database.hibou_professional_expiration_date', fields.Date.to_string(tomorrow))
update.button_send()
self.assertEqual(update.state, 'done')
self.assertEqual(update.parameter_codes_retrieved, '')
# Reset to a degree.
update = update.with_context(test_payroll_update_result='{"payroll_parameter_values":[["missing_code", "2021-01-01", "5.0"]]}')
update.write({
'state': 'draft',
'result': '',
})
update.button_send()
self.assertEqual(update.state, 'done')
self.assertEqual(update.parameter_codes_retrieved, 'missing_code (MISSING)')
# Actually add to a rule.
test_parameter = self.env['hr.rule.parameter'].create({
'code': 'test_parameter_1',
'name': 'Test Parameter 1',
})
update = update.with_context(test_payroll_update_result='{"payroll_parameter_values":[["test_parameter_1", "2021-01-01", "5.0"]]}')
update.write({
'state': 'draft',
'result': '',
})
update.button_send()
self.assertEqual(update.state, 'done')
self.assertEqual(update.parameter_codes_retrieved, 'test_parameter_1')
self.assertTrue(test_parameter.parameter_version_ids)
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, '5.0')
self.assertEqual(str(test_parameter.parameter_version_ids.date_from), '2021-01-01')
test_parameter.parameter_version_ids.write({
'parameter_value': '',
})
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, '')
update.write({
'state': 'draft',
'result': '',
})
update.button_send()
# doesn't make a new one, updates existing...
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, '5.0')
# Test that we can lock the parameter
test_parameter.parameter_version_ids.write({
'parameter_value': 'locked',
})
test_parameter.write({
'update_locked': True,
})
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, 'locked')
update.write({
'state': 'draft',
'result': '',
})
update.button_send()
# doesn't make a new one, updates existing...
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, 'locked')
self.assertEqual(update.parameter_codes_retrieved, 'test_parameter_1 (LOCKED)')

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="hr_rule_parameter_view_form_inherit" model="ir.ui.view">
<field name="name">hr.rule.parameter.form.inherit</field>
<field name="model">hr.rule.parameter</field>
<field name="inherit_id" ref="hr_payroll.hr_rule_parameter_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='code']" position="after">
<field name="update_locked" />
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="res_config_settings_view_form_hibou" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.hr.payroll.hibou</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="50"/>
<field name="inherit_id" ref="hr_payroll.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[@data-key='hr_payroll']" position="inside">
<field name="module_l10n_us_hr_payroll" invisible="1"/>
<!-- TODO payment, attendance, timesheet, ovetrtime... -->
<h2>Hibou Payroll</h2>
<div class="row mt16 o_settings_container" id="hr_payroll_hibou">
<div class="col-lg-6 col-12 o_setting_box">
<div class="o_setting_left_pane"/>
<div class="o_setting_right_pane">
<label for="payslip_sum_type" string="Payslip Sum Behavior"/>
<div class="text-muted">
Customize the behavior of what payslips are eligible when summing over date ranges in rules.
Generally, "Date To" or "Accounting Date" would be preferred in the United States and anywhere
else where the ending date on the payslip is used to calculate wage bases.
</div>
<field name="payslip_sum_type"/>
</div>
</div>
<div class="col-lg-6 col-12 o_setting_box">
<div class="o_setting_left_pane">
<field name="module_l10n_us_hr_payroll_401k"/>
</div>
<div class="o_setting_right_pane">
<label for="module_l10n_us_hr_payroll_401k" string="USA Payroll 401k"/>
<div class="text-muted">
Provide retirement plans with optional company matching.
<strong>Hibou Professional</strong>
</div>
<div class="mt8" id="l10n_us_hr_payroll_401k_match">
<button name="%(hr_payroll.hr_rule_parameter_action)d" icon="fa-arrow-right" type="action"
string="Configure Matching &amp; Limits" class="btn-link"
context="{'search_default_us_payroll_401k': True}"
attrs="{'invisible': [('module_l10n_us_hr_payroll_401k', '=', False)]}"/>
</div>
</div>
</div>
<div class="col-lg-6 col-12 o_setting_box">
<div class="o_setting_left_pane">
<field name="module_hr_payroll_payment"/>
</div>
<div class="o_setting_right_pane">
<label for="module_hr_payroll_payment"/>
<div class="text-muted">
Register payments on payslips! Have control over journal entries created from
payroll to include partner details, set grouping options, and apply fiscal position
account mappings.
<strong>Hibou Professional</strong>
</div>
</div>
</div>
<div class="col-lg-6 col-12 o_setting_box">
<div class="o_setting_left_pane">
<field name="module_hr_payroll_attendance"/>
</div>
<div class="o_setting_right_pane">
<label for="module_hr_payroll_attendance"/>
<div class="text-muted">
Extend Attendance into Payroll with Work Types, Overtime!
<strong>Hibou Professional</strong>
</div>
</div>
</div>
<div class="col-lg-6 col-12 o_setting_box">
<div class="o_setting_left_pane">
<field name="module_hr_payroll_timesheet"/>
</div>
<div class="o_setting_right_pane">
<label for="module_hr_payroll_timesheet"/>
<div class="text-muted">
Extend Timesheets into Payroll with Work Types, Overtime!
<strong>Hibou Professional</strong>
</div>
</div>
</div>
<div class="col-lg-6 col-12 o_setting_box">
<div class="o_setting_left_pane">
<field name="module_hr_payroll_commission"/>
</div>
<div class="o_setting_right_pane">
<label for="module_hr_payroll_commission"/>
<div class="text-muted">
Pay Commissions in Payroll!
<strong>Hibou Professional</strong>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="hr_payroll_publisher_update_tree" model="ir.ui.view">
<field name="name">hr.payroll.publisher.update.tree</field>
<field name="model">hr.payroll.publisher.update</field>
<field name="arch" type="xml">
<tree string="Payroll Updates">
<field name="create_date"/>
<field name="write_date"/>
<field name="request_modules"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="hr_payroll_publisher_update_form" model="ir.ui.view">
<field name="name">hr.payroll.publisher.update.form</field>
<field name="model">hr.payroll.publisher.update</field>
<field name="arch" type="xml">
<form string="Payroll Udate">
<header>
<button name="button_send" type="object" string="Send" attrs="{'invisible': [('state', 'not in', ('draft', 'error'))]}" />
<button name="button_process_result" type="object" string="Process Results" attrs="{'invisible': [('state', 'not in', ('result', 'error'))]}" />
<field name="state" widget="statusbar" statusbar_visible="draft,result,done" />
</header>
<sheet>
<group>
<group name="general" string="General">
<field name="create_date" />
<field name="write_date" />
<field name="request_modules" widget="text" />
<field name="error" attrs="{'invisible': [('error', '=', False)]}" />
</group>
<group name="parameter_codes" string="Parameter Codes">
<field name="parameter_codes_retrieved" />
<p colspan="2">Note missing codes probably means code upgrades are required. Locked codes are only locked in this database.</p>
</group>
<group name="result" string="Result" groups="base.group_no_one" colspan="4">
<field name="result" nolabel="1" colspan="4" />
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_payroll_updates" model="ir.actions.act_window">
<field name="name">Payroll Updates</field>
<field name="res_model">hr.payroll.publisher.update</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p>
No Updates
</p>
</field>
</record>
<menuitem id="menu_hr_payroll_configuration_updates" name="Payroll Updates"
action="action_payroll_updates"
sequence="20" parent="hr_work_entry_contract_enterprise.menu_hr_payroll_configuration"/>
</odoo>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Cron jobs -->
<record model="ir.cron" id="payroll_publisher_update_cron">
<field name="name">Payroll Update: download latest parameter values/rates.</field>
<field name="model_id" ref="hr_payroll_hibou.model_hr_payroll_publisher_update"/>
<field name="state">code</field>
<field name="code">model.cron_payroll_update()</field>
<field name="interval_number">1</field>
<field name="interval_type">weeks</field>
<field name="numbercall">-1</field>
<field name="nextcall" eval="(datetime.now() + timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="doall" eval="False"/>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,161 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
import requests
import json
from odoo import api, fields, models, _
from odoo.exceptions import UserError
class HRPayrollPublisherUpdate(models.Model):
_name = 'hr.payroll.publisher.update'
_description = 'Payroll Update'
_order = 'id DESC'
def _default_request_modules(self):
request_modules = self.env.context.get('default_request_modules')
if not request_modules:
request_modules = '\n'.join(self.env['publisher_warranty.contract'].hibou_payroll_modules_to_update())
return request_modules
state = fields.Selection([
('draft', 'Draft'),
('result', 'Result'),
('done', 'Done'),
('error', 'Error'),
], default='draft')
request_modules = fields.Char(default=_default_request_modules,
states={'done': [('readonly', True)],
'error': [('readonly', True)]})
result = fields.Text(readonly=True)
parameter_codes_retrieved = fields.Text(readonly=True)
error = fields.Text(readonly=True)
@api.model
def cron_payroll_update(self):
update = self.create({})
if update.request_modules:
update.button_send()
else:
update.unlink()
def button_send(self):
self.ensure_one()
if not self.request_modules:
raise UserError('One or more modules needed.')
if self.result:
raise UserError('Already retrieved')
self._send()
if self.result and not self.state == 'error':
self._process_result()
def _send(self):
try:
self.env['publisher_warranty.contract'].hibou_payroll_update(self)
except UserError as e:
self.set_error_state(e.name)
def set_error_state(self, message=''):
self.write({
'state': 'error',
'error': message,
})
def set_result(self, result):
self.write({
'state': 'result',
'result': result,
'error': False,
})
def button_process_result(self):
self.ensure_one()
if not self.result:
raise UserError('No Result to process.')
self._process_result()
def _process_result(self):
try:
result_dict = json.loads(self.result)
parameter_values = result_dict.get('payroll_parameter_values')
if not parameter_values or not isinstance(parameter_values, list):
self.set_error_state('Result is missing expected parameter values.')
parameter_map = {}
parameter_model = self.env['hr.rule.parameter'].sudo()
for code, date_from, pv in parameter_values:
date_from = fields.Date.from_string(date_from)
if code not in parameter_map:
parameter_map[code] = parameter_model.search([('code', '=', code)], limit=1)
parameter = parameter_map[code]
if not parameter or parameter.update_locked:
continue
# watch out for versions of Odoo where this is not datetime.date
parameter_version = parameter.parameter_version_ids.filtered(lambda p: p.date_from == date_from)
if not parameter_version:
parameter.write({
'parameter_version_ids': [(0, 0, {
'date_from': date_from,
'parameter_value': pv,
})]
})
elif parameter_version.parameter_value != pv:
parameter_version.write({
'parameter_value': pv,
})
# We have applied all of the updates. Set statistics.
self.write({
'state': 'done',
'error': '',
'parameter_codes_retrieved': '\n'.join('%s%s' % (c, '' if p and not p.update_locked else ' (LOCKED)' if p.update_locked else ' (MISSING)') for c, p in parameter_map.items()),
})
except Exception as e:
self.set_error_state(str(e))
class PublisherWarrantyContract(models.AbstractModel):
_inherit = 'publisher_warranty.contract'
CONFIG_HIBOU_URL_PAYROLL = 'https://api.hibou.io/hibouapi/v1/professional/payroll'
@api.model
def hibou_payroll_modules_to_update(self):
# Filled downstream
return []
@api.model
def hibou_payroll_update(self, update_request):
# Check status locally
status = self.hibou_professional_status()
if status['expired']:
raise UserError('Hibou Professional Subscription Expired, you cannot retrieve updates.')
if status['expiration_reason'] == 'trial':
raise UserError('Hibou Professional Subscription Trial, not eligible for updates.')
if not status['professional_code']:
raise UserError('Hibou Professional Subscription Missing, please setup your subscription.')
if self.env.context.get('test_payroll_update_result'):
update_request.set_result(self.env.context.get('test_payroll_update_result'))
return
try:
res = self._hibou_payroll_update(update_request.request_modules)
if res.get('error'):
update_request.set_error_state(str(res.get('error')))
else:
update_request.set_result(json.dumps(res))
except Exception as e:
update_request.set_error_state(str(e))
def _hibou_payroll_update(self, payroll_modules):
data = self._get_hibou_message()
data['payroll_modules'] = payroll_modules
data = {
'jsonrpc': '2.0',
'method': 'call',
'params': data,
}
r = requests.post(self.CONFIG_HIBOU_URL_PAYROLL, json=data, timeout=30)
r.raise_for_status()
wrapper = r.json()
return wrapper.get('result', {})

View File

@@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
hr_payroll_hibou.access_hr_payroll_publisher_update,access_hr_payroll_publisher_update,hr_payroll_hibou.model_hr_payroll_publisher_update,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 hr_payroll_hibou.access_hr_payroll_publisher_update access_hr_payroll_publisher_update hr_payroll_hibou.model_hr_payroll_publisher_update base.group_user 1 1 1 1

View File

@@ -0,0 +1,93 @@
import datetime
from odoo import fields
from odoo.exceptions import ValidationError
from odoo.tests import common
class TestUpdate(common.TransactionCase):
def setUp(self):
super().setUp()
# setup the database to run in general
today = datetime.date.today()
tomorrow = today + datetime.timedelta(days=1)
self.param_model = self.env['ir.config_parameter'].sudo()
self.param_model.set_param('database.hibou_professional_expiration_date', fields.Date.to_string(tomorrow))
self.param_model.set_param('database.hibou_professional_code', 'TESTCODE')
def test_01_database_state(self):
today = datetime.date.today()
tomorrow = today + datetime.timedelta(days=1)
yesterday = today - datetime.timedelta(days=1)
self.param_model.set_param('database.hibou_professional_expiration_date', fields.Date.to_string(yesterday))
update = self.env['hr.payroll.publisher.update']\
.with_context(test_payroll_update_result='{"payroll_parameter_values":[]}')\
.create({
'request_modules': 'test',
})
self.assertEqual(update.state, 'draft')
update.button_send()
self.assertEqual(update.state, 'error')
self.param_model.set_param('database.hibou_professional_expiration_date', fields.Date.to_string(tomorrow))
update.button_send()
self.assertEqual(update.state, 'done')
self.assertEqual(update.parameter_codes_retrieved, '')
# Reset to a degree.
update = update.with_context(test_payroll_update_result='{"payroll_parameter_values":[["missing_code", "2021-01-01", "5.0"]]}')
update.write({
'state': 'draft',
'result': '',
})
update.button_send()
self.assertEqual(update.state, 'done')
self.assertEqual(update.parameter_codes_retrieved, 'missing_code (MISSING)')
# Actually add to a rule.
test_parameter = self.env['hr.rule.parameter'].create({
'code': 'test_parameter_1',
'name': 'Test Parameter 1',
})
update = update.with_context(test_payroll_update_result='{"payroll_parameter_values":[["test_parameter_1", "2021-01-01", "5.0"]]}')
update.write({
'state': 'draft',
'result': '',
})
update.button_send()
self.assertEqual(update.state, 'done')
self.assertEqual(update.parameter_codes_retrieved, 'test_parameter_1')
self.assertTrue(test_parameter.parameter_version_ids)
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, '5.0')
self.assertEqual(str(test_parameter.parameter_version_ids.date_from), '2021-01-01')
test_parameter.parameter_version_ids.write({
'parameter_value': '',
})
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, '')
update.write({
'state': 'draft',
'result': '',
})
update.button_send()
# doesn't make a new one, updates existing...
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, '5.0')
# Test that we can lock the parameter
test_parameter.parameter_version_ids.write({
'parameter_value': 'locked',
})
test_parameter.write({
'update_locked': True,
})
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, 'locked')
update.write({
'state': 'draft',
'result': '',
})
update.button_send()
# doesn't make a new one, updates existing...
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, 'locked')
self.assertEqual(update.parameter_codes_retrieved, 'test_parameter_1 (LOCKED)')

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="hr_rule_parameter_view_form_inherit" model="ir.ui.view">
<field name="name">hr.rule.parameter.form.inherit</field>
<field name="model">hr.rule.parameter</field>
<field name="inherit_id" ref="hr_payroll.hr_rule_parameter_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='code']" position="after">
<field name="update_locked" />
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="hr_payroll_publisher_update_tree" model="ir.ui.view">
<field name="name">hr.payroll.publisher.update.tree</field>
<field name="model">hr.payroll.publisher.update</field>
<field name="arch" type="xml">
<tree string="Payroll Updates">
<field name="create_date"/>
<field name="write_date"/>
<field name="request_modules"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="hr_payroll_publisher_update_form" model="ir.ui.view">
<field name="name">hr.payroll.publisher.update.form</field>
<field name="model">hr.payroll.publisher.update</field>
<field name="arch" type="xml">
<form string="Payroll Udate">
<header>
<button name="button_send" type="object" string="Send" attrs="{'invisible': [('state', 'not in', ('draft', 'error'))]}" />
<button name="button_process_result" type="object" string="Process Results" attrs="{'invisible': [('state', 'not in', ('result', 'error'))]}" />
<field name="state" widget="statusbar" statusbar_visible="draft,result,done" />
</header>
<sheet>
<group>
<group name="general" string="General">
<field name="create_date" />
<field name="write_date" />
<field name="request_modules" widget="text" />
<field name="error" attrs="{'invisible': [('error', '=', False)]}" />
</group>
<group name="parameter_codes" string="Parameter Codes">
<field name="parameter_codes_retrieved" />
<p colspan="2">Note missing codes probably means code upgrades are required. Locked codes are only locked in this database.</p>
</group>
<group name="result" string="Result" groups="base.group_no_one" colspan="4">
<field name="result" nolabel="1" colspan="4" />
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_payroll_updates" model="ir.actions.act_window">
<field name="name">Payroll Updates</field>
<field name="res_model">hr.payroll.publisher.update</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p>
No Updates
</p>
</field>
</record>
<menuitem id="menu_hr_payroll_configuration_updates" name="Payroll Updates"
action="action_payroll_updates"
sequence="20" parent="hr_work_entry_contract_enterprise.menu_hr_payroll_configuration"/>
</odoo>

View File

@@ -3,7 +3,7 @@
{
'name': 'United States of America - Payroll',
'author': 'Hibou Corp. <hello@hibou.io>',
'version': '13.0.2020.0.0',
'version': '13.0.2022.0.0',
'category': 'Payroll Localization',
'depends': [
'hr_payroll',

View File

@@ -6,7 +6,6 @@
<field name="code">fed_940_futa_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- Unchanged in 2021 https://www.irs.gov/taxtopics/tc759 -->
<record id="rule_parameter_940_futa_wage_base_2016" model="hr.rule.parameter.value">
<field name="parameter_value">7000.00</field>
<field name="rule_parameter_id" ref="rule_parameter_940_futa_wage_base"/>
@@ -19,7 +18,6 @@
<field name="code">fed_940_futa_rate_basic</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- Unchanged in 2021 https://www.irs.gov/taxtopics/tc759 -->
<record id="rule_parameter_940_futa_rate_basic_2016" model="hr.rule.parameter.value">
<field name="parameter_value">6.0</field>
<field name="rule_parameter_id" ref="rule_parameter_940_futa_rate_basic"/>
@@ -31,7 +29,6 @@
<field name="code">fed_940_futa_rate_normal</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- Unchanged in 2021 https://www.irs.gov/taxtopics/tc759 -->
<record id="rule_parameter_940_futa_rate_normal_2016" model="hr.rule.parameter.value">
<field name="parameter_value">0.6</field>
<field name="rule_parameter_id" ref="rule_parameter_940_futa_rate_normal"/>

View File

@@ -12,22 +12,7 @@
<field name="rule_parameter_id" ref="rule_parameter_941_fica_ss_wage_base"/>
<field name="date_from" eval="datetime(2016, 1, 1).date()"/>
</record>
<record id="rule_parameter_941_fica_ss_wage_base_2019" model="hr.rule.parameter.value">
<field name="parameter_value">132900.0</field>
<field name="rule_parameter_id" ref="rule_parameter_941_fica_ss_wage_base"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<record id="rule_parameter_941_fica_ss_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">137700.0</field>
<field name="rule_parameter_id" ref="rule_parameter_941_fica_ss_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www.ssa.gov/oact/cola/cbb.html -->
<record id="rule_parameter_941_fica_ss_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">142800.0</field>
<field name="rule_parameter_id" ref="rule_parameter_941_fica_ss_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
<!-- Rate -->
<record id="rule_parameter_941_fica_ss_rate" model="hr.rule.parameter">
@@ -35,7 +20,6 @@
<field name="code">fed_941_fica_ss_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- Unchanged in 2021 https://www.ssa.gov/oact/cola/cbb.html -->
<record id="rule_parameter_941_fica_ss_rate_2016" model="hr.rule.parameter.value">
<field name="parameter_value">6.2</field>
<field name="rule_parameter_id" ref="rule_parameter_941_fica_ss_rate"/>
@@ -49,7 +33,6 @@
<field name="code">fed_941_fica_m_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- Unchanged in 2021 https://www.irs.gov/taxtopics/tc751 -->
<record id="rule_parameter_941_fica_m_wage_base_2016" model="hr.rule.parameter.value">
<field name="parameter_value">"inf"</field>
<field name="rule_parameter_id" ref="rule_parameter_941_fica_m_wage_base"/>
@@ -62,7 +45,6 @@
<field name="code">fed_941_fica_m_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- Unchanged in 2021 https://www.irs.gov/taxtopics/tc751 -->
<record id="rule_parameter_941_fica_m_rate_2016" model="hr.rule.parameter.value">
<field name="parameter_value">1.45</field>
<field name="rule_parameter_id" ref="rule_parameter_941_fica_m_rate"/>
@@ -76,7 +58,6 @@
<field name="code">fed_941_fica_m_add_wage_start</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- Unchanged in 2021 https://www.irs.gov/taxtopics/tc751 -->
<record id="rule_parameter_941_fica_m_add_wage_start_2016" model="hr.rule.parameter.value">
<field name="parameter_value">200000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_941_fica_m_add_wage_start"/>
@@ -89,7 +70,6 @@
<field name="code">fed_941_fica_m_add_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- Unchanged in 2021 https://www.irs.gov/taxtopics/tc751 -->
<record id="rule_parameter_941_fica_m_add_rate_2016" model="hr.rule.parameter.value">
<field name="parameter_value">0.9</field>
<field name="rule_parameter_id" ref="rule_parameter_941_fica_m_add_rate"/>

View File

@@ -22,7 +22,6 @@
</record>
<record id="rule_parameter_941_fit_allowance_2020" model="hr.rule.parameter.value">
<!-- Warning, major change to allowance in 2020 -->
<!-- unchanged in 2021 https://www.irs.gov/pub/irs-pdf/p15t.pdf -->
<field name="parameter_value">4300.0</field>
<field name="rule_parameter_id" ref="rule_parameter_941_fit_allowance"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
@@ -46,19 +45,6 @@
<field name="rule_parameter_id" ref="rule_parameter_941_fit_nra_additional"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_941_fit_nra_additional_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': 241.30,
'bi-weekly': 482.70,
'semi-monthly': 522.90,
'monthly': 1045.80,
'quarterly': 3137.50,
'semi-annually': 6275.00,
'annually': 12550.00,
}</field>
<field name="rule_parameter_id" ref="rule_parameter_941_fit_nra_additional"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
<!-- Single and Married Single Rate -->
<record id="rule_parameter_941_fit_table_single" model="hr.rule.parameter">
@@ -66,7 +52,6 @@
<field name="code">fed_941_fit_table_single</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- page 6 of 15T Standard is left column and higher is right column-->
<record id="rule_parameter_941_fit_table_single_2020" model="hr.rule.parameter.value">
<!-- Major changes in 2020 -->
<!-- Wage Threshold, Base Withholding Amount, Marginal Rate Over Threshold -->
@@ -95,33 +80,6 @@
<field name="rule_parameter_id" ref="rule_parameter_941_fit_table_single"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_941_fit_table_single_2021" model="hr.rule.parameter.value">
<!-- Wage Threshold, Base Withholding Amount, Marginal Rate Over Threshold -->
<field name="parameter_value">{
'standard': [
( 0.00, 0.00, 0.00),
( 3950.00, 0.00, 0.10),
( 13900.00, 995.00, 0.12),
( 44475.00, 4664.00, 0.22),
( 90325.00, 14751.00, 0.24),
( 168875.00, 33603.00, 0.32),
( 213375.00, 47843.00, 0.35),
( 527550.00, 157804.25, 0.37),
],
'higher': [
( 0.00, 0.00, 0.00),
( 6275.00, 0.00, 0.10),
( 11250.00, 497.50, 0.12),
( 26538.00, 2332.00, 0.22),
( 49463.00, 7375.50, 0.24),
( 88738.00, 16801.50, 0.32),
( 110988.00, 23921.50, 0.35),
( 268075.00, 78902.13, 0.37),
],
}</field>
<field name="rule_parameter_id" ref="rule_parameter_941_fit_table_single"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
<!-- Married -->
<record id="rule_parameter_941_fit_table_married" model="hr.rule.parameter">
@@ -157,33 +115,6 @@
<field name="rule_parameter_id" ref="rule_parameter_941_fit_table_married"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_941_fit_table_married_2021" model="hr.rule.parameter.value">
<!-- Wage Threshold, Base Withholding Amount, Marginal Rate Over Threshold -->
<field name="parameter_value">{
'standard': [
( 0.00, 0.00, 0.00),
( 12200.00, 0.00, 0.10),
( 32100.00, 1990.00, 0.12),
( 93250.00, 9328.00, 0.22),
( 184950.00, 29502.00, 0.24),
( 342050.00, 67206.00, 0.32),
( 431050.00, 95686.00, 0.35),
( 640500.00, 168993.50, 0.37),
],
'higher': [
( 0.00, 0.00, 0.00),
( 12550.00, 0.00, 0.10),
( 22500.00, 995.00, 0.12),
( 53075.00, 4664.00, 0.22),
( 98925.00, 14751.00, 0.24),
( 177475.00, 33603.00, 0.32),
( 221975.00, 47843.00, 0.35),
( 326700.00, 84496.75, 0.37),
],
}</field>
<field name="rule_parameter_id" ref="rule_parameter_941_fit_table_married"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
<record id="rule_parameter_941_fit_table_hh" model="hr.rule.parameter">
<field name="name">Federal 941 FIT Table Head of Household</field>
@@ -218,33 +149,5 @@
<field name="rule_parameter_id" ref="rule_parameter_941_fit_table_hh"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_941_fit_table_hh_2021" model="hr.rule.parameter.value">
<!-- Major changes in 2020 -->
<!-- Wage Threshold, Base Withholding Amount, Marginal Rate Over Threshold -->
<field name="parameter_value">{
'standard': [
( 0.00, 0.00, 0.00),
( 10200.00, 0.00, 0.10),
( 24400.00, 1420.00, 0.12),
( 64400.00, 6220.00, 0.22),
( 96550.00, 13293.00, 0.24),
( 175100.00, 32145.00, 0.32),
( 219600.00, 46385.00, 0.35),
( 533800.00, 156355.50, 0.37),
],
'higher': [
( 0.00, 0.00, 0.00),
( 9400.00, 0.00, 0.10),
( 16500.00, 710.00, 0.12),
( 36500.00, 3110.00, 0.22),
( 52575.00, 6646.50, 0.24),
( 91950.00, 16072.50, 0.32),
( 114100.00, 23192.50, 0.35),
( 271200.00, 78177.50, 0.37),
],
}</field>
<field name="rule_parameter_id" ref="rule_parameter_941_fit_table_hh"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</odoo>

View File

@@ -1,24 +1,17 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Wage Base -->
<!-- https://labor.alaska.gov/estax/faq/w1.htm Rates are at same site-->
<record id="rule_parameter_us_ak_suta_wage_base" model="hr.rule.parameter">
<field name="name">US AK Alaska SUTA Wage Base</field>
<field name="code">us_ak_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ak_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">41500.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ak_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ak_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">43600.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ak_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ak_suta_rate" model="hr.rule.parameter">
@@ -32,11 +25,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ak_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ak_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">2.570</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ak_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ak_suta_ee_rate" model="hr.rule.parameter">
@@ -50,11 +38,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ak_suta_ee_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ak_suta_ee_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">0.500</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ak_suta_ee_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->

View File

@@ -6,15 +6,11 @@
<field name="code">us_al_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- unchanged from 2020-->
<!-- https://labor.alabama.gov/uc/employer.aspx#q17-->
<data noupdate="1">
<record id="rule_parameter_us_al_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">8000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_al_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_al_suta_rate" model="hr.rule.parameter">
@@ -23,8 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- new account rate uncahnged in 2021-->
<!-- https://labor.alabama.gov/uc/employer.aspx#q7-->
<record id="rule_parameter_us_al_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2.7</field>
<field name="rule_parameter_id" ref="rule_parameter_us_al_suta_rate"/>
@@ -37,9 +31,6 @@
<field name="code">us_al_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- tax rate unchanged for 2021-->
<!-- https://www.incometaxpro.net/tax-rates/alabama.htm-->
<record id="rule_parameter_us_al_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'0' : [
@@ -56,17 +47,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_al_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_al_sit_dependent_rate" model="hr.rule.parameter">
<field name="name">US AL Alabama Dependent Rate</field>
<field name="code">us_al_sit_dependent_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://revenue.alabama.gov/wp-content/uploads/2019/01/whbooklet_0119.pdf -->
<!-- Page 7. D-->
<!-- unchanged for 2021-->
<record id="rule_parameter_us_al_sit_dependent_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">[
( 1000, 20000),
@@ -76,17 +62,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_al_sit_dependent_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_al_sit_standard_deduction_rate" model="hr.rule.parameter">
<field name="name">US AL Alabama Standard Deduction Rate</field>
<field name="code">us_al_sit_standard_deduction_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://revenue.alabama.gov/wp-content/uploads/2019/01/whbooklet_0119.pdf -->
<!-- Page 7. A-->
<!-- unchanged for 2021-->
<record id="rule_parameter_us_al_sit_standard_deduction_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'0': ((23499.0, 2500.0), (33000.0, 2500.0, 25.0, 500.0), ('inf', 2000.0)),
@@ -98,17 +79,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_al_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_al_sit_personal_exemption_rate" model="hr.rule.parameter">
<field name="name">US AL Alabama Personal Exemption Rate</field>
<field name="code">us_al_sit_personal_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://revenue.alabama.gov/wp-content/uploads/2019/01/whbooklet_0119.pdf -->
<!-- Page 7. C-->
<!-- unchanged for 2021-->
<record id="rule_parameter_us_al_sit_personal_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'0' : 0,
@@ -120,7 +96,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_al_sit_personal_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_al_dor" model="res.partner">

View File

@@ -6,19 +6,11 @@
<field name="code">us_ar_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.dws.arkansas.gov/employers/employer-ui-contributions/ -->
<record id="rule_parameter_us_ar_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">8000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ar_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ar_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">10000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ar_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ar_suta_rate" model="hr.rule.parameter">
@@ -27,17 +19,11 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.dws.arkansas.gov/employers/employer-ui-contributions/ -->
<record id="rule_parameter_us_ar_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2.9</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ar_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ar_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">3.2</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ar_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ar_sit_tax_rate" model="hr.rule.parameter">
@@ -45,9 +31,6 @@
<field name="code">us_ar_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 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.rule.parameter.value">
<field name="parameter_value">[
( 4599, 0.0, 0.00),
@@ -66,42 +49,17 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ar_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</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_2021" model="hr.rule.parameter.value">
<field name="parameter_value">[
( 4699, 0.0, 0.00),
( 9199, 2.0, 93.98),
( 13899, 3.0, 185.97),
( 22899, 3.4, 241.57),
( 38499, 5.0, 427.71),
( 82000, 5.9, 774.20),
( 83000, 5.9, 681.70),
( 84000, 5.9, 581.70),
( 85300, 5.9, 481.70),
( 86400, 5.9, 381.70),
( 87500, 5.9, 281.70),
( 'inf', 5.9, 241.70),
]</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ar_sit_tax_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ar_sit_standard_deduction_rate" model="hr.rule.parameter">
<field name="name">US AR Arkansas Allowances Rate</field>
<field name="code">us_ar_sit_standard_deduction_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- #2 https://www.dfa.arkansas.gov/images/uploads/incomeTaxOffice/whformula.pdf -->
<!-- deduction unchanged in 2021 -->
<record id="rule_parameter_us_ar_sit_standard_deduction_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2200.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ar_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_ar_dor" model="res.partner">

View File

@@ -6,15 +6,12 @@
<field name="code">us_az_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- page 7 https://des.az.gov/sites/default/files/legacy/dl/UIB-1240A.pdf?time=1610036751652-->
<!-- no change in 2021-->
<record id="rule_parameter_us_az_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">7000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_az_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_az_suta_rate" model="hr.rule.parameter">
@@ -23,8 +20,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged for 2021-->
<!-- https://des.az.gov/services/employment/unemployment-employer/employment-taxes-calculating-unemployment-taxes-->
<record id="rule_parameter_us_az_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_az_suta_rate"/>
@@ -32,7 +27,6 @@
</record>
</data>
<!-- todo: income tax https://azdor.gov/forms/individual/form-140-x-y-tables-->
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_az_dor" model="res.partner">

View File

@@ -6,15 +6,11 @@
<field name="code">us_ca_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.edd.ca.gov/payroll_taxes/tax-rated-employers.htm -->
<!-- Base unchanged in 2021 -->
<record id="rule_parameter_us_ca_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">7000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ca_suta_rate" model="hr.rule.parameter">
@@ -23,8 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.edd.ca.gov/payroll_taxes/tax-rated-employers.htm -->
<!-- New employers Rate is unchanged in 2021 -->
<record id="rule_parameter_us_ca_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">3.4</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_rate"/>
@@ -39,8 +33,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.edd.ca.gov/payroll_taxes/tax-rated-employers.htm -->
<!-- ETT Rate is unchanged in 2021 -->
<record id="rule_parameter_us_ca_suta_ett_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.1</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_ett_rate"/>
@@ -55,17 +47,11 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.edd.ca.gov/payroll_taxes/tax-rated-employers.htm -->
<record id="rule_parameter_us_ca_suta_sdi_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_sdi_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ca_suta_sdi_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">1.2</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_suta_sdi_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ca_sit_tax_rate" model="hr.rule.parameter">
@@ -73,9 +59,6 @@
<field name="code">us_ca_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.edd.ca.gov/pdf_pub_ctr/20methb.pdf -->
<!-- Table 5. Tax rate table -->
<record id="rule_parameter_us_ca_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'head_household': {
@@ -340,282 +323,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://edd.ca.gov/pdf_pub_ctr/21methb.pdf -->
<!-- Table 5. Tax rate table -->
<record id="rule_parameter_us_ca_sit_tax_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'head_household': {
'weekly': (
( 344, 0.0110, 0.00),
( 814, 0.0220, 3.78),
( 1050, 0.0440, 14.12),
( 1299, 0.0660, 24.50),
( 1535, 0.0880, 40.93),
( 7833, 0.1023, 61.70),
( 9400, 0.1133, 705.99),
(15667, 0.1243, 883.53),
(19231, 0.1353, 1662.52),
('inf', 0.1463, 2144.73),
),
'bi-weekly': (
( 688, 0.0110, 0.00),
( 1628, 0.0220, 7.57),
( 2100, 0.0440, 28.25),
( 2598, 0.0660, 49.02),
( 3070, 0.0880, 81.89),
(15666, 0.1023, 123.43),
(18800, 0.1133, 1412.00),
(31334, 0.1243, 1767.08),
(38462, 0.1353, 3325.06),
('inf', 0.1463, 4289.48),
),
'semi-monthly': (
( 745, 0.0110, 0.00),
( 1765, 0.0220, 8.20),
( 2275, 0.0440, 30.64),
( 2815, 0.0660, 53.08),
( 3326, 0.0880, 88.72),
(16972, 0.1023, 133.69),
(20367, 0.1133, 1529.68),
(33944, 0.1243, 1914.33),
(41667, 0.1353, 3601.95),
('inf', 0.1463, 4646.87),
),
'monthly': (
( 1490, 0.0110, 0.00),
( 3530, 0.0220, 16.39),
( 4550, 0.0440, 61.27),
( 5630, 0.0660, 106.15),
( 6652, 0.0880, 177.43),
(33944, 0.1023, 267.37),
(40734, 0.1133, 3059.34),
(67888, 0.1243, 3828.65),
(83334, 0.1353, 7203.89),
('inf', 0.1463, 9293.73),
),
'quarterly': (
( 4469, 0.0110, 0.00),
( 10588, 0.0220, 49.13),
( 13649, 0.0440, 183.78),
( 16892, 0.0660, 318.46),
( 19953, 0.0880, 532.50),
(101832, 0.1023, 801.87),
(122199, 0.1133, 9178.09),
(203665, 0.1243, 11485.67),
(250000, 0.1353, 21611.89),
( 'inf', 0.1463, 27881.02),
),
'semi-annual': (
( 8938, 0.0110, 0.00),
( 21176, 0.0220, 98.32),
( 27298, 0.0440, 367.56),
( 33784, 0.0660, 636.93),
( 39906, 0.0880, 1065.01),
(203664, 0.1023, 1603.75),
(244398, 0.1133, 18356.19),
(407330, 0.1243, 22971.35),
(500000, 0.1353, 43223.80),
( 'inf', 0.1463, 55762.05),
),
'annually': (
( 17876, 0.0110, 0.00),
( 42353, 0.0220, 196.64),
( 54597, 0.0440, 735.13),
( 67569, 0.0660, 1273.87),
( 79812, 0.0880, 2130.02),
( 407329, 0.1023, 3207.40),
( 488796, 0.1133, 36712.39),
( 814658, 0.1243, 45942.60),
(1000000, 0.1353, 86447.25),
( 'inf', 0.1463, 111524.02),
),
},
'married': {
'weekly': (
( 344, 0.0110, 0.00),
( 814, 0.0220, 3.78),
( 1286, 0.0440, 14.12),
( 1784, 0.0660, 34.89),
( 2256, 0.0880, 67.76),
(11520, 0.1023, 109.30),
(13824, 0.1133, 1057.01),
(19231, 0.1243, 1318.05),
(23039, 0.1353, 1990.14),
('inf', 0.1463, 2505.36),
),
'bi-weekly': (
( 688, 0.0110, 0.00),
( 1628, 0.0220, 7.57),
( 2572, 0.0440, 28.25),
( 3568, 0.0660, 69.79),
( 4512, 0.0880, 135.53),
(23040, 0.1023, 218.60),
(27648, 0.1133, 2114.01),
(38462, 0.1243, 2636.10),
(46078, 0.1353, 2398.28),
('inf', 0.1463, 5010.72),
),
'semi-monthly': (
( 744, 0.0110, 0.00),
( 1764, 0.0220, 8.18),
( 2786, 0.0440, 30.62),
( 3866, 0.0660, 75.59),
( 4886, 0.0880, 146.87),
(24960, 0.1023, 236.63),
(29950, 0.1133, 2290.20),
(41667, 0.1243, 2855.57),
(49918, 0.1353, 4311.99),
('inf', 0.1463, 5428.35),
),
'monthly': (
( 1488, 0.0110, 0.00),
( 3528, 0.0220, 16.37),
( 5572, 0.0440, 61.25),
( 7732, 0.0660, 151.19),
( 9772, 0.0880, 293.75),
(49920, 0.1023, 473.27),
(59900, 0.1133, 4580.41),
(83334, 0.1243, 5711.14),
(99836, 0.1353, 8623.99),
('inf', 0.1463, 10856.71),
),
'quarterly': (
( 4466, 0.0110, 0.00),
( 10588, 0.0220, 49.13),
( 16710, 0.0440, 183.81),
( 23198, 0.0660, 453.18),
( 29318, 0.0880, 881.39),
(149754, 0.1023, 1419.95),
(179704, 0.1133, 13740.55),
(250000, 0.1243, 17133.89),
(299506, 0.1353, 25871.68),
( 'inf', 0.1463, 32569.84),
),
'semi-annual': (
( 8932, 0.0110, 0.00),
( 21176, 0.0220, 98.25),
( 33420, 0.0440, 367.62),
( 46396, 0.0660, 906.36),
( 58636, 0.0880, 1762.78),
(299508, 0.1023, 2839.90),
(359408, 0.1133, 27481.11),
(500000, 0.1243, 34267.78),
(599012, 0.1353, 51743.37),
( 'inf', 0.1463, 65139.69),
),
'annually': (
( 17864, 0.0110, 0.00),
( 42350, 0.0220, 196.50),
( 66842, 0.0440, 735.19),
( 92788, 0.0660, 1812.84),
( 117268, 0.0880, 3525.28),
( 599016, 0.1023, 5679.52),
( 718814, 0.1133, 54962.34),
(1000000, 0.1243, 68535.45),
(1198024, 0.1353, 103486.87),
( 'inf', 0.1463, 130279.52),
),
},
'single': {
'weekly': (
( 172, 0.0110, 0.00),
( 407, 0.0220, 1.89),
( 643, 0.0440, 7.06),
( 892, 0.0660, 17.44),
( 1128, 0.0880, 33.87),
( 5760, 0.1023, 54.64),
( 6912, 0.1133, 528.49),
(11519, 0.1243, 659.01),
(19231, 0.1353, 1231.66),
('inf', 0.1463, 2275.09),
),
'bi-weekly': (
( 344, 0.0110, 0.00),
( 814, 0.0220, 3.78),
( 1286, 0.0440, 14.12),
( 1784, 0.0660, 34.89),
( 2256, 0.0880, 67.76),
(11520, 0.1023, 109.30),
(13824, 0.1133, 1057.01),
(23038, 0.1243, 1318.05),
(38462, 0.1353, 2463.35),
('inf', 0.1463, 4550.22),
),
'semi-monthly': (
( 372, 0.0110, 0.00),
( 882, 0.0220, 4.09),
( 1393, 0.0440, 15.31),
( 1933, 0.0660, 37.79),
( 2443, 0.0880, 73.43),
(12480, 0.1023, 118.31),
(14975, 0.1133, 1145.10),
(24959, 0.1243, 1427.78),
(41667, 0.1353, 2668.79),
('inf', 0.1463, 4929.38),
),
'monthly': (
( 744, 0.0110, 0.00),
( 1764, 0.0220, 8.18),
( 2786, 0.0440, 30.62),
( 3866, 0.0660, 75.59),
( 4886, 0.0880, 146.87),
(24960, 0.1023, 236.63),
(29950, 0.1133, 2290.20),
(49918, 0.1243, 2855.57),
(83334, 0.1353, 5337.59),
('inf', 0.1463, 9858.77),
),
'quarterly': (
( 2233, 0.0110, 0.00),
( 5294, 0.0220, 24.56),
( 8355, 0.0440, 91.90),
( 11599, 0.0660, 226.58),
( 14659, 0.0880, 440.68),
( 74877, 0.1023, 709.96),
( 89852, 0.1133, 6870.26),
(149753, 0.1243, 8566.93),
(250000, 0.1353, 16012.62),
( 'inf', 0.1463, 29576.04),
),
'semi-annual': (
( 4466, 0.0110, 0.00),
( 10588, 0.0220, 49.13),
( 16710, 0.0440, 183.81),
( 23198, 0.0660, 453.18),
( 29318, 0.0880, 881.39),
(149754, 0.1023, 1419.95),
(179704, 0.1133, 13740.55),
(299506, 0.1243, 17133.89),
(500000, 0.1353, 32025.28),
( 'inf', 0.1463, 59152.12),
),
'annually': (
( 8932, 0.0110, 0.00),
( 21175, 0.0220, 98.25),
( 33421, 0.0440, 367.60),
( 46394, 0.0660, 906.42),
( 58634, 0.0880, 1762.64),
( 299508, 0.1023, 2839.76),
( 359407, 0.1133, 27481.17),
( 599012, 0.1243, 34267.73),
(1000000, 0.1353, 64050.63),
( 'inf', 0.1463, 118304.31),
),
},
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_tax_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ca_sit_income_exemption_rate" model="hr.rule.parameter">
<field name="name">US CA California Low Income Exemption Rate</field>
<field name="code">us_ca_sit_income_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.edd.ca.gov/pdf_pub_ctr/20methb.pdf -->
<!-- Table 1. Low income exemption table -->
<record id="rule_parameter_us_ca_sit_income_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 289, 289, 579, 579),
@@ -629,32 +342,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_income_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://edd.ca.gov/pdf_pub_ctr/21methb.pdf -->
<!-- Table 1. Low income exemption table -->
<record id="rule_parameter_us_ca_sit_income_exemption_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 294, 294, 587, 587),
'bi-weekly': ( 587, 587, 1174, 1174),
'semi-monthly': ( 636, 636, 1272, 1272),
'monthly': ( 1272, 1272, 2545, 2545),
'quarterly': ( 3817, 3817, 7634, 7634),
'semi-annual': ( 7634, 7634, 15267, 15267),
'annually': (15267, 15267, 30534, 30534),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_income_exemption_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ca_sit_estimated_deduction_rate" model="hr.rule.parameter">
<field name="name">US CA California Estimated Deduction Rate</field>
<field name="code">us_ca_sit_estimated_deduction_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.edd.ca.gov/pdf_pub_ctr/20methb.pdf -->
<!-- Table 2. Estimated Deduction table -->
<!-- No change in 2021 https://edd.ca.gov/pdf_pub_ctr/21methb.pdf -->
<record id="rule_parameter_us_ca_sit_estimated_deduction_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 19, 38, 58, 77, 96, 115, 135, 154, 173, 192),
@@ -668,16 +361,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_estimated_deduction_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ca_sit_standard_deduction_rate" model="hr.rule.parameter">
<field name="name">US CA California Standard Deduction Rate</field>
<field name="code">us_ca_sit_standard_deduction_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.edd.ca.gov/pdf_pub_ctr/20methb.pdf -->
<!-- Table 3. Standard Deduction table -->
<record id="rule_parameter_us_ca_sit_standard_deduction_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 87, 87, 175, 175),
@@ -691,31 +380,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://edd.ca.gov/pdf_pub_ctr/21methb.pdf -->
<!-- Table 3. Standard Deduction table -->
<record id="rule_parameter_us_ca_sit_standard_deduction_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 88, 88, 177, 177),
'bi-weekly': ( 177, 177, 354, 354),
'semi-monthly': ( 192, 192, 383, 383),
'monthly': ( 383, 383, 767, 767),
'quarterly': (1150, 1150, 2301, 2301),
'semi-annual': (2301, 2301, 4601, 4601),
'annually': (4601, 4601, 9202, 9202),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ca_sit_exemption_allowance_rate" model="hr.rule.parameter">
<field name="name">US CA California Exemption Allowance Rate</field>
<field name="code">us_ca_sit_exemption_allowance_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.edd.ca.gov/pdf_pub_ctr/20methb.pdf -->
<!-- Table 4. Exemption Allowance table -->
<record id="rule_parameter_us_ca_sit_exemption_allowance_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 2.58, 5.16, 7.74, 10.32, 12.90, 15.48, 18.07, 20.65, 23.23, 25.81),
@@ -729,22 +399,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_exemption_allowance_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://edd.ca.gov/pdf_pub_ctr/21methb.pdf -->
<!-- Table 4. Exemption Allowance table -->
<record id="rule_parameter_us_ca_sit_exemption_allowance_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 2.62, 5.25, 7.87, 10.49, 13.12, 15.74, 18.36, 20.98, 23.61, 26.23),
'bi-weekly': ( 5.25, 10.49, 15.74, 20.98, 26.23, 31.48, 36.72, 41.97, 47.22, 52.46),
'semi-monthly': ( 5.68, 11.37, 17.05, 22.73, 28.42, 34.10, 39.78, 45.47, 51.15, 56.83),
'monthly': ( 11.37, 22.73, 34.10, 45.47, 56.83, 68.20, 79.57, 90.93, 102.30, 113.67),
'quarterly': ( 34.10, 68.20, 102.30, 136.40, 170.50, 204.60, 238.70, 272.80, 306.90, 341.00),
'semi-annual': ( 68.20, 136.40, 204.60, 272.80, 341.00, 409.20, 477.40, 545.60, 613.80, 682.00),
'annually': (136.40, 272.80, 409.20, 545.60, 682.00, 818.40, 954.80, 1091.20, 1227.60, 1364.00),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ca_sit_exemption_allowance_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_ca_dor" model="res.partner">

View File

@@ -6,13 +6,11 @@
<field name="code">us_co_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_co_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">13600.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_co_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_co_suta_rate" model="hr.rule.parameter">
@@ -33,26 +31,22 @@
<field name="code">us_co_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_co_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">4.63</field>
<field name="rule_parameter_id" ref="rule_parameter_us_co_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_co_sit_exemption_rate" model="hr.rule.parameter">
<field name="name">US CO Colorado SIT Exemption Rate</field>
<field name="code">us_co_sit_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_co_sit_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">4000</field>
<field name="rule_parameter_id" ref="rule_parameter_us_co_sit_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_co_dor" model="res.partner">

View File

@@ -6,15 +6,11 @@
<field name="code">us_ct_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Been unchanged for 10 years -->
<!-- https://www.ctdol.state.ct.us/uitax/taxdiv.htm -->
<record id="rule_parameter_us_ct_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">15000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ct_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ct_suta_rate" model="hr.rule.parameter">
@@ -23,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- todo: as of 01/07/2021 not published for 2021 yet https://www.ctdol.state.ct.us/uitax/taxdiv.htm -->
<record id="rule_parameter_us_ct_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">3.2</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ct_suta_rate"/>
@@ -36,10 +31,6 @@
<field name="code">us_ct_sit_initial_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://portal.ct.gov/-/media/DRS/Forms/2020/WTH/TPG-211_0320.pdf -->
<!-- Table B Initial Tax Calculation -->
<!-- unchanged for 2021 https://portal.ct.gov/-/media/DRS/Forms/2021/WTH/TPG-211_1220.pdf -->
<record id="rule_parameter_us_ct_sit_initial_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'a': [
@@ -91,17 +82,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ct_sit_initial_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ct_sit_tax_rate" model="hr.rule.parameter">
<field name="name">US CT Connecticut Tax Rate</field>
<field name="code">us_ct_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://portal.ct.gov/-/media/DRS/Forms/2020/WTH/TPG-211_0320.pdf -->
<!-- Table C 3% -->
<!-- unchanged for 2021 https://portal.ct.gov/-/media/DRS/Forms/2021/WTH/TPG-211_1220.pdf -->
<record id="rule_parameter_us_ct_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'a': [
@@ -174,17 +160,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ct_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ct_sit_decimal_rate" model="hr.rule.parameter">
<field name="name">US CT Connecticut Decimal Rate</field>
<field name="code">us_ct_sit_decimal_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://portal.ct.gov/-/media/DRS/Forms/2020/WTH/TPG-211_0320.pdf -->
<!-- Table E Personal Tax Credits -->
<!-- unchanged for 2021 https://portal.ct.gov/-/media/DRS/Forms/2021/WTH/TPG-211_1220.pdf -->
<record id="rule_parameter_us_ct_sit_decimal_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'a': [
@@ -311,17 +292,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ct_sit_decimal_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ct_sit_recapture_rate" model="hr.rule.parameter">
<field name="name">US CT Connecticut Recapture Rate</field>
<field name="code">us_ct_sit_recapture_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://portal.ct.gov/-/media/DRS/Forms/2020/WTH/TPG-211_0320.pdf -->
<!-- Table D Tax recapture -->
<!-- unchanged for 2021 https://portal.ct.gov/-/media/DRS/Forms/2021/WTH/TPG-211_1220.pdf -->
<record id="rule_parameter_us_ct_sit_recapture_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'a': [
@@ -538,17 +514,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ct_sit_recapture_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ct_sit_personal_exemption_rate" model="hr.rule.parameter">
<field name="name">US CT Connecticut Personal Exemption Rate</field>
<field name="code">us_ct_sit_personal_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://portal.ct.gov/-/media/DRS/Forms/2020/WTH/TPG-211_0320.pdf -->
<!-- Table A Personal Exemptions -->
<!-- unchanged for 2021 https://portal.ct.gov/-/media/DRS/Forms/2021/WTH/TPG-211_1220.pdf -->
<record id="rule_parameter_us_ct_sit_personal_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'a' : [
@@ -637,7 +608,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ct_sit_personal_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_ct_dor" model="res.partner">

View File

@@ -6,14 +6,11 @@
<field name="code">us_de_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://laborfiles.delaware.gov/main/dui/handbook/UI%20Employer%20Handbook.pdf -->
<record id="rule_parameter_us_de_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">16500.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_de_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_de_suta_rate" model="hr.rule.parameter">
@@ -22,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://laborfiles.delaware.gov/main/dui/handbook/UI%20Employer%20Handbook.pdf -->
<record id="rule_parameter_us_de_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1.50</field>
<field name="rule_parameter_id" ref="rule_parameter_us_de_suta_rate"/>
@@ -35,8 +31,6 @@
<field name="code">us_de_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 - Section 17 - https://revenue.delaware.gov/employers-guide-withholding-regulations-employers-duties/ -->
<record id="rule_parameter_us_de_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">[
( 2000, 0.0, 0.00),
@@ -46,40 +40,32 @@
(25000, 741.0, 5.20),
(60000, 1001.0, 5.55),
('inf', 2943.0, 6.60),
]</field>
<field name="rule_parameter_id" ref="rule_parameter_us_de_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_de_sit_standard_deduction_rate" model="hr.rule.parameter">
<field name="name">US DE Delaware Standard Deduction Rate</field>
<field name="code">us_de_sit_standard_deduction_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 - Section 15 - https://revenue.delaware.gov/employers-guide-withholding-regulations-employers-duties/ -->
<record id="rule_parameter_us_de_sit_standard_deduction_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">3250</field>
<field name="rule_parameter_id" ref="rule_parameter_us_de_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_de_sit_personal_exemption_rate" model="hr.rule.parameter">
<field name="name">US DE Delaware Personal Exemption Rate</field>
<field name="code">us_de_sit_personal_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 - Section 15 - https://revenue.delaware.gov/employers-guide-withholding-regulations-employers-duties/ -->
<record id="rule_parameter_us_de_sit_personal_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">110</field>
<field name="rule_parameter_id" ref="rule_parameter_us_de_sit_personal_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_de_dor" model="res.partner">

View File

@@ -6,18 +6,11 @@
<field name="code">us_fl_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_fl_suta_wage_base_2019" model="hr.rule.parameter.value">
<field name="parameter_value">7000.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_fl_suta_wage_base"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_fl_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">7000.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_fl_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_fl_suta_rate" model="hr.rule.parameter">
@@ -31,11 +24,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_fl_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_fl_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">2.9</field>
<field name="rule_parameter_id" ref="rule_parameter_us_fl_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->

View File

@@ -6,14 +6,11 @@
<field name="code">us_ga_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Not changed in 2021 https://dol.georgia.gov/faqs-employers/employers-faqs-unemployment-insurance -->
<record id="rule_parameter_us_ga_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">9500.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ga_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ga_suta_rate" model="hr.rule.parameter">
@@ -22,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Not changed in 2021 https://dol.georgia.gov/faqs-employers/employers-faqs-unemployment-insurance -->
<record id="rule_parameter_us_ga_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2.7</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ga_suta_rate"/>
@@ -35,10 +31,6 @@
<field name="code">us_ga_sit_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://dor.georgia.gov/employers-tax-guide File 2020 -->
<!-- Table F, G ,H-->
<!-- Not changed in 2021 https://dor.georgia.gov/employers-tax-guide File 2021 -->
<record id="rule_parameter_us_ga_sit_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'married filing joint, both spouses working': {
@@ -335,17 +327,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ga_sit_personal_allowance" model="hr.rule.parameter">
<field name="name">US GA Georgia SIT Personal Allowance</field>
<field name="code">us_ga_sit_personal_allowance</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://dor.georgia.gov/employers-tax-guide File 2020 -->
<!-- Table E Column 4. 5. 6.-->
<!-- Not changed in 2021 https://dor.georgia.gov/employers-tax-guide File 2021 -->
<record id="rule_parameter_us_ga_sit_personal_allowance_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'married filing joint, both spouses working': {
@@ -397,17 +384,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_personal_allowance"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ga_sit_dependent_allowance_rate" model="hr.rule.parameter">
<field name="name">US GA Georgia SIT Dependent Allowance Rate</field>
<field name="code">us_ga_sit_dependent_allowance_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://dor.georgia.gov/employers-tax-guide File 2020 -->
<!-- Table E Column 7.-->
<!-- Not changed in 2021 https://dor.georgia.gov/employers-tax-guide File 2021 -->
<record id="rule_parameter_us_ga_sit_dependent_allowance_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': 57.50,
@@ -421,17 +403,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_dependent_allowance_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ga_sit_deduction" model="hr.rule.parameter">
<field name="name">US GA Georgia SIT Deduction</field>
<field name="code">us_ga_sit_deduction</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://dor.georgia.gov/employers-tax-guide File 2020 -->
<!-- Table E Column 1. 2. 3.-->
<!-- Not changed in 2021 https://dor.georgia.gov/employers-tax-guide File 2021 -->
<record id="rule_parameter_us_ga_sit_deduction_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'married filing joint, both spouses working': {
@@ -483,7 +460,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ga_sit_deduction"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_ga_dor" model="res.partner">

View File

@@ -6,19 +6,11 @@
<field name="code">us_hi_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_hi_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">48100.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_hi_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://labor.hawaii.gov/ui/tax-rate-schedule-and-weekly-benefit-amount/ -->
<record id="rule_parameter_us_hi_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">47400.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_hi_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_hi_suta_rate" model="hr.rule.parameter">
@@ -32,12 +24,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_hi_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://labor.hawaii.gov/ui/tax-rate-schedule-and-weekly-benefit-amount/ -->
<record id="rule_parameter_us_hi_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">5.2</field>
<field name="rule_parameter_id" ref="rule_parameter_us_hi_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_hi_sit_tax_rate" model="hr.rule.parameter">
@@ -45,10 +31,6 @@
<field name="code">us_hi_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://files.hawaii.gov/tax/forms/2018/18table-on.pdf -->
<!-- Table from Schedule I, II and III -->
<!-- unchanged in 2021 -->
<record id="rule_parameter_us_hi_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': (
@@ -85,21 +67,17 @@
<field name="rule_parameter_id" ref="rule_parameter_us_hi_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_hi_sit_personal_exemption_rate" model="hr.rule.parameter">
<field name="name">US HI Hawaii Personal Exemption Rate</field>
<field name="code">us_hi_sit_personal_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021 -->
<record id="rule_parameter_us_hi_sit_personal_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1144</field>
<field name="rule_parameter_id" ref="rule_parameter_us_hi_sit_personal_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_hi_dor" model="res.partner">

View File

@@ -6,18 +6,11 @@
<field name="code">us_ia_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ia_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">31600.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ia_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ia_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">32400.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ia_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ia_suta_rate" model="hr.rule.parameter">
@@ -38,9 +31,6 @@
<field name="code">us_ia_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 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.rule.parameter.value">
<field name="parameter_value">{
'daily': (
@@ -113,79 +103,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ia_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://tax.iowa.gov/sites/default/files/idr/documents/WH/IA%20Withholding%20Formula%20and%20Instructions%20TY2021.pdf -->
<!-- Table from page 2.-->
<record id="rule_parameter_us_ia_sit_tax_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': (
( 32.23, 0.0033, 0.00),
( 64.46, 0.0067, 0.11),
( 128.92, 0.0225, 0.33),
( 290.08, 0.0414, 1.78),
( 483.46, 0.0563, 8.45),
( 644.62, 0.0596, 19.34),
( 966.92, 0.0625, 28.95),
(1450.38, 0.0744, 49.09),
( 'inf', 0.0853, 85.06),
),
'bi-weekly': (
( 64.46, 0.0033, 0.00),
( 128.92, 0.0067, 0.21),
( 257.85, 0.0225, 0.64),
( 580.15, 0.0414, 3.54),
( 966.92, 0.0563, 16.88),
(1289.23, 0.0596, 38.66),
(1933.85, 0.0625, 57.87),
(2900.77, 0.0744, 98.16),
( 'inf', 0.0853, 170.10),
),
'semi-monthly': (
( 69.83, 0.0033, 0.00),
( 139.67, 0.0067, 0.23),
( 279.33, 0.0225, 0.70),
( 628.50, 0.0414, 3.84),
(1047.50, 0.0563, 18.30),
(1396.67, 0.0596, 41.89),
(2095.00, 0.0625, 62.70),
(3142.50, 0.0744, 106.35),
( 'inf', 0.0853, 184.28),
),
'monthly': (
( 139.67, 0.0033, 0.00),
( 279.33, 0.0067, 0.46),
( 558.67, 0.0225, 1.40),
(1257.00, 0.0414, 7.69),
(2095.00, 0.0563, 36.60),
(2793.33, 0.0596, 83.78),
(4190.00, 0.0625, 125.40),
(6285.00, 0.0744, 212.69),
( 'inf', 0.0853, 368.56),
),
'annual': (
( 1676.00, 0.0033, 0.00),
( 3352.00, 0.0067, 5.53),
( 6704.00, 0.0225, 16.76),
(15084.00, 0.0414, 92.18),
(25140.00, 0.0563, 439.11),
(33520.00, 0.0596, 1005.26),
(50280.00, 0.0625, 1504.71),
(75420.00, 0.0744, 2552.21),
( 'inf', 0.0853, 4422.63),
),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ia_sit_tax_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ia_sit_standard_deduction_rate" model="hr.rule.parameter">
<field name="name">US IA Iowa Standard Deduction Rate</field>
<field name="code">us_ia_sit_standard_deduction_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 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.rule.parameter.value">
<field name="parameter_value">{
'daily': ( 7.23, 17.81),
@@ -198,29 +121,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ia_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://tax.iowa.gov/sites/default/files/idr/documents/WH/IA%20Withholding%20Formula%20and%20Instructions%20TY2021.pdf -->
<!-- Step 2 -->
<record id="rule_parameter_us_ia_sit_standard_deduction_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': ( 40.96, 100.77),
'bi-weekly': ( 81.92, 201.54),
'semi-monthly': ( 88.75, 218.33),
'monthly': ( 177.50, 436.67),
'annually': (2130.00, 5240.00),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ia_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ia_sit_deduction_allowance_rate" model="hr.rule.parameter">
<field name="name">US IA Iowa Deduction Allowance Rate</field>
<field name="code">us_ia_sit_deduction_allowance_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 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.rule.parameter.value">
<field name="parameter_value">{
'daily': 0.15,
@@ -233,20 +139,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ia_sit_deduction_allowance_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://tax.iowa.gov/sites/default/files/idr/documents/WH/IA%20Withholding%20Formula%20and%20Instructions%20TY2021.pdf -->
<!-- Step 4 -->
<record id="rule_parameter_us_ia_sit_deduction_allowance_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': 0.77,
'bi-weekly': 1.54,
'semi-monthly': 1.67,
'monthly': 3.33,
'annually': 40.00,
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ia_sit_deduction_allowance_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_ia_dor" model="res.partner">

View File

@@ -6,18 +6,11 @@
<field name="code">us_id_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_id_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">41600.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_id_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_id_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">43000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_id_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_id_suta_rate" model="hr.rule.parameter">
@@ -26,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://www.labor.idaho.gov/dnn/Businesses/Unemployment-Tax-Rates-->
<record id="rule_parameter_us_id_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_id_suta_rate"/>
@@ -39,10 +31,6 @@
<field name="code">us_id_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://tax.idaho.gov/pubs/EPB00744_06-16-2020.pdf -->
<!-- Page 1 to 3 -->
<!-- Unchanged in 2021 -->
<record id="rule_parameter_us_id_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
@@ -205,17 +193,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_id_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_id_sit_ictcat_rate" model="hr.rule.parameter">
<field name="name">US ID Idaho Child Tax Credit Allowance Rate</field>
<field name="code">us_id_sit_ictcat_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://tax.idaho.gov/i-1026.cfm?seg=compute -->
<!-- Idaho Child Tax Credit Allowances Table -->
<!-- Unchanged in 2021 -->
<record id="rule_parameter_us_id_sit_ictcat_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': 56.92,
@@ -227,7 +210,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_id_sit_ictcat_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->

View File

@@ -6,19 +6,11 @@
<field name="code">us_il_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_il_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">12740.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_il_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www2.illinois.gov/ides/IDES%20Forms%20and%20Publications/UITaxRates.pdf -->
<record id="rule_parameter_us_il_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">12960.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_il_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_il_suta_rate" model="hr.rule.parameter">
@@ -32,12 +24,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_il_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www2.illinois.gov/ides/IDES%20Forms%20and%20Publications/UITaxRates.pdf -->
<record id="rule_parameter_us_il_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">3.175</field>
<field name="rule_parameter_id" ref="rule_parameter_us_il_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_il_sit_basic_allowances_rate" model="hr.rule.parameter">
@@ -45,33 +31,22 @@
<field name="code">us_il_sit_basic_allowances_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_il_sit_basic_allowances_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2325.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_il_sit_basic_allowances_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- page 4, step2, a: https://www2.illinois.gov/rev/forms/withholding/Documents/currentyear/il-700-t.pdf -->
<record id="rule_parameter_us_il_sit_basic_allowances_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">2375.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_il_sit_basic_allowances_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_il_sit_additional_allowances_rate" model="hr.rule.parameter">
<field name="name">US IL Illinois Additional Allowances Rate</field>
<field name="code">us_il_sit_additional_allowances_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- page 4, step2, b: https://www2.illinois.gov/rev/forms/withholding/Documents/currentyear/il-700-t.pdf -->
<record id="rule_parameter_us_il_sit_additional_allowances_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_il_sit_additional_allowances_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_il_dor" model="res.partner">

View File

@@ -6,14 +6,11 @@
<field name="code">us_in_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021 - page 64 - https://www.in.gov/dwd/files/Employer_Handbook.pdf -->
<record id="rule_parameter_us_in_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">9500.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_in_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- SUTA Rate -->
<record id="rule_parameter_us_in_suta_rate" model="hr.rule.parameter">
@@ -22,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021 - page 63 - https://www.in.gov/dwd/files/Employer_Handbook.pdf -->
<record id="rule_parameter_us_in_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2.5</field>
<field name="rule_parameter_id" ref="rule_parameter_us_in_suta_rate"/>
@@ -37,7 +33,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021 - page 2 - https://www.in.gov/dor/files/dn01.pdf -->
<record id="rule_parameter_us_in_suta_income_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">3.23</field>
<field name="rule_parameter_id" ref="rule_parameter_us_in_suta_income_rate"/>
@@ -50,8 +45,6 @@
<field name="code">us_in_sit_personal_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021 - page 2 Table A - https://www.in.gov/dor/files/dn01.pdf -->
<record id="rule_parameter_us_in_sit_personal_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'daily': ( 2.74, 5.48, 8.22, 10.96, 13.70, 16.44),
@@ -63,15 +56,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_in_sit_personal_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_in_sit_dependent_exemption_rate" model="hr.rule.parameter">
<field name="name">US IN Indiana SIT Dependent Exemption Rate</field>
<field name="code">us_in_sit_dependent_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021 - page 2 Table B - https://www.in.gov/dor/files/dn01.pdf -->
<record id="rule_parameter_us_in_sit_dependent_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'daily': ( 4.11, 8.22, 12.33, 16.44, 20.55),
@@ -83,7 +73,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_in_sit_dependent_exemption_rate"/>
<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">

View File

@@ -6,14 +6,11 @@
<field name="code">us_ks_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021 https://www.dol.ks.gov/employers/tax-rates/2021-tax-rates -->
<record id="rule_parameter_us_ks_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">14000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ks_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ks_suta_rate" model="hr.rule.parameter">
@@ -22,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021 https://www.dol.ks.gov/employers/tax-rates/2021-tax-rates -->
<record id="rule_parameter_us_ks_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2.7</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ks_suta_rate"/>
@@ -35,8 +31,6 @@
<field name="code">us_ks_sit_allowances_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged from 2020 - page 6 https://www.ksrevenue.org/pdf/kw100.pdf -->
<record id="rule_parameter_us_ks_sit_allowances_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly' : 43.27,
@@ -50,15 +44,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ks_sit_allowances_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Table from percentage table from https://www.ksrevenue.org/pdf/kw100.pdf -->
<record id="rule_parameter_us_ks_sit_tax_rate" model="hr.rule.parameter">
<field name="name">US KS Kansas SIT Tax Rate</field>
<field name="code">us_ks_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged from 2020 - page 18 https://www.ksrevenue.org/pdf/kw100.pdf -->
<record id="rule_parameter_us_ks_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
@@ -153,7 +144,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ks_sit_tax_rate"/>
<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">

View File

@@ -6,19 +6,11 @@
<field name="code">us_ky_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ky_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">10800.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ky_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://kewes.ky.gov/#:~:text=2021%20Taxable%20Wage%20Base%20Base,2021%20report%20during%20April%202021. -->
<record id="rule_parameter_us_ky_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">11100.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ky_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ky_suta_rate" model="hr.rule.parameter">
@@ -26,50 +18,33 @@
<field name="code">us_ky_suta_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- not changed in 2021 https://kewes.ky.gov/Documents/EMPLOYER_GUIDE.pdf -->
<record id="rule_parameter_us_ky_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2.7</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ky_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ky_sit_standard_deduction_rate" model="hr.rule.parameter">
<field name="name">US KY Kentucky Standard Deduction Rate</field>
<field name="code">us_ky_sit_standard_deduction_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<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.rule.parameter.value">
<field name="parameter_value">2650</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ky_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- page 8 https://revenue.ky.gov/Software-Developer/Software%20Development%20Documents/2021%20Withholding%20Tax%20Tables%20-%20Computer%20Formual%2042A003(T)(12-20)(10-15-20%20DRAFT).pdf -->
<record id="rule_parameter_us_ky_sit_standard_deduction_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2690</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ky_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ky_sit_tax_rate" model="hr.rule.parameter">
<field name="name">US KY Kentucky SIT Tax Rate</field>
<field name="code">us_ky_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- Data from https://revenue.ky.gov/Forms/42A003(T)%20(12-2019)%202020%20Tax%20Tables.pdf -->
<data noupdate="1">
<!-- unchanged in 2021 -->
<!-- page 8 https://revenue.ky.gov/Software-Developer/Software%20Development%20Documents/2021%20Withholding%20Tax%20Tables%20-%20Computer%20Formual%2042A003(T)(12-20)(10-15-20%20DRAFT).pdf -->
<record id="rule_parameter_us_ky_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">5.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ky_sit_tax_rate"/>
<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">

View File

@@ -6,14 +6,12 @@
<field name="code">us_la_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021 http://www.laworks.net/unemploymentinsurance/ui_lainsurancetaxrates.asp -->
<record id="rule_parameter_us_la_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">7700.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_la_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_la_suta_rate" model="hr.rule.parameter">
@@ -27,21 +25,13 @@
<field name="rule_parameter_id" ref="rule_parameter_us_la_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- new employer is set a beginning rate according to industry. This rate is a place holder -->
<!-- http://www.laworks.net/FAQs/FAQ_UI_EmployerTaxes.asp -->
<record id="rule_parameter_us_la_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">1.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_la_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- table data from http://www.revenue.louisiana.gov/taxforms/1306(7_09)W.pdf page 9. -->
<record id="rule_parameter_us_la_sit_tax_rate" model="hr.rule.parameter">
<field name="name">US LA Louisiana SIT Tax Rate</field>
<field name="code">us_la_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_la_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': (
@@ -58,52 +48,28 @@
<field name="rule_parameter_id" ref="rule_parameter_us_la_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://revenue.louisiana.gov/IndividualIncomeTax -->
<record id="rule_parameter_us_la_sit_tax_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': (
(12500.00, 2.00),
(50000.00, 4.00),
( 'inf', 6.00)
),
'married': (
( 25000.00, 2.00),
(100000.00, 4.00),
( 'inf', 6.00)
),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_la_sit_tax_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_la_sit_personal_exemption_rate" model="hr.rule.parameter">
<field name="name">US LA Louisiana Personal Exemption Rate</field>
<field name="code">us_la_sit_personal_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 http://revenue.louisiana.gov/taxforms/1306(1_12)TF.pdf -->
<record id="rule_parameter_us_la_sit_personal_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">4500</field>
<field name="rule_parameter_id" ref="rule_parameter_us_la_sit_personal_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_la_sit_dependent_rate" model="hr.rule.parameter">
<field name="name">US LA Louisiana Dependent Rate</field>
<field name="code">us_la_sit_dependent_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 http://revenue.louisiana.gov/taxforms/1306(1_12)TF.pdf -->
<record id="rule_parameter_us_la_sit_dependent_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_la_sit_dependent_rate"/>
<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">

View File

@@ -6,13 +6,12 @@
<field name="code">us_me_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_me_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">12000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_me_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_me_suta_rate" model="hr.rule.parameter">
@@ -26,20 +25,13 @@
<field name="rule_parameter_id" ref="rule_parameter_us_me_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www.maine.gov/unemployment/docs/2020/2021taxrate.pdf -->
<record id="rule_parameter_us_me_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">2.31</field>
<field name="rule_parameter_id" ref="rule_parameter_us_me_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- table based on https://www.maine.gov/revenue/forms/with/2020/20_WH_Tab&Instructions.pdf step 6.-->
<record id="rule_parameter_us_me_sit_tax_rate" model="hr.rule.parameter">
<field name="name">US ME Maine SIT Tax Rate</field>
<field name="code">us_me_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_me_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': (
@@ -56,75 +48,37 @@
<field name="rule_parameter_id" ref="rule_parameter_us_me_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_me_sit_tax_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': (
( 22450, 0, 5.80),
( 53150, 1302, 6.75),
( 'inf', 3374, 7.15),
),
'married': (
( 44950, 0, 5.80),
( 106350, 2607, 6.75),
( 'inf', 6752, 7.15),
),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_me_sit_tax_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_me_sit_standard_deduction_rate" model="hr.rule.parameter">
<field name="name">US ME Maine Standard Deduction Rate</field>
<field name="code">us_me_sit_standard_deduction_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_me_sit_standard_deduction_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
( 82900, 9550),
(157900, 75000),
},
'married': {
(165800, 21950),
(315800, 150000),
},
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_me_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www.maine.gov/revenue/sites/maine.gov.revenue/files/inline-files/21_wh_tab_instr_1.pdf -->
<!-- page 6 step 3 -->
<record id="rule_parameter_us_me_sit_standard_deduction_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
'single': [
( 83850, 9700),
(158850, 75000),
},
'married': {
],
'married': [
(167700, 22250),
(317700, 150000),
},
],
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_me_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_me_sit_personal_exemption_rate" model="hr.rule.parameter">
<field name="name">US ME Maine Personal Exemption Rate</field>
<field name="code">us_me_sit_personal_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_me_sit_personal_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">4300</field>
<field name="rule_parameter_id" ref="rule_parameter_us_me_sit_personal_exemption_rate"/>
<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">

View File

@@ -6,19 +6,11 @@
<field name="code">us_mi_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_mi_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">9000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mi_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://taxnews.ey.com/news/2020-2141-michigan-sui-taxable-wage-base-expected-to-increase-for-2021-due-to-covid-19s-depletion-of-ui-trust-fund#:~:text=Michigan%20employers%20should%20expect%20to,be%20used%20by%20delinquent%20employers. -->
<record id="rule_parameter_us_mi_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">9500.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mi_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_mi_suta_rate" model="hr.rule.parameter">
@@ -27,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- same for 2021 https://www.michigan.gov/leo/0,5863,7-336-94422_97241_89981_90255-502287- -,00.html -->
<record id="rule_parameter_us_mi_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2.7</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mi_suta_rate"/>
@@ -40,21 +31,11 @@
<field name="code">us_mi_sit_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_mi_sit_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">4750.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mi_sit_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www.michigan.gov/documents/taxes/446_711611_7.pdf -->
<record id="rule_parameter_us_mi_sit_exemption_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">4900.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mi_sit_exemption_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- todo: income tax rate https://www.michigan.gov/taxes/0,4676,7-238-43519_43531- - -,00.html -->
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_mi_dor" model="res.partner">

View File

@@ -6,14 +6,11 @@
<field name="code">us_mn_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_mn_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">35000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mn_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- todo: 2021 base when published -->
</data>
<!-- Rate -->
<record id="rule_parameter_us_mn_suta_rate" model="hr.rule.parameter">
@@ -27,7 +24,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_mn_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- todo: 2021 rates when published -->
</data>
<record id="rule_parameter_us_mn_sit_tax_rate" model="hr.rule.parameter">
@@ -35,9 +31,6 @@
<field name="code">us_mn_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 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.rule.parameter.value">
<field name="parameter_value">{
'single': (
@@ -56,47 +49,17 @@
<field name="rule_parameter_id" ref="rule_parameter_us_mn_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- page 34 https://www.revenue.state.mn.us/sites/default/files/2021-01/wh_inst_21.pdf -->
<record id="rule_parameter_us_mn_sit_tax_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': (
( 31055, 3825, 5.35, 0.00),
( 93265, 31055, 6.80, 1418.82),
(169865, 93265, 7.85, 5687.09),
( 'inf', 169865, 9.85, 11700.19),
),
'married': (
( 51810, 12000, 5.35, 0.00),
( 170140, 51810, 6.80, 2129.84),
( 288200, 170140, 7.85, 10176.28),
( 'inf', 288200, 9.85, 19443.99),
),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mn_sit_tax_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_mn_sit_allowances_rate" model="hr.rule.parameter">
<field name="name">US MN Minnesota Allowances Rate</field>
<field name="code">us_mn_sit_allowances_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 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.rule.parameter.value">
<field name="parameter_value">4300.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mn_sit_allowances_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- page 34 step 3 https://www.revenue.state.mn.us/sites/default/files/2021-01/wh_inst_21.pdf -->
<record id="rule_parameter_us_mn_sit_allowances_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">4350.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mn_sit_allowances_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_mn_dor" model="res.partner">

View File

@@ -6,19 +6,11 @@
<field name="code">us_mo_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_mo_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">11500.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mo_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://labor.mo.gov/news/press-releases/missouri-employers-receive-unemployment-tax-rate-reduction-2021#:~:text=Jefferson%20City%2C%20MO%20%E2%80%93%20Effective%20January,as%20of%20January%201%2C%202021. -->
<record id="rule_parameter_us_mo_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">11000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mo_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_mo_suta_rate" model="hr.rule.parameter">
@@ -32,13 +24,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_mo_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://labor.mo.gov/DES/Employers/tax_rates -->
<!-- In "Beginning Tax Rates" section, the last sentence says "or 2.7%, whichever is highest -->
<record id="rule_parameter_us_mo_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">2.7</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mo_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_mo_sit_rate" model="hr.rule.parameter">
@@ -46,9 +31,6 @@
<field name="code">us_mo_sit_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://dor.mo.gov/forms/4282_2020.pdf -->
<!-- Income Tax Withholding Percentage Table-->
<record id="rule_parameter_us_mo_sit_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">[
(1073.0, 1.5),
@@ -65,33 +47,11 @@
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- todo: This parameter is to the example not to the rates-->
<!-- page 13 https://dor.mo.gov/forms/4282_2021.pdf -->
<record id="rule_parameter_us_mo_sit_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">[
(1088.0, 1.5),
(1088.0, 2.0),
(1088.0, 2.5),
(1088.0, 3.0),
(1088.0, 3.5),
(1088.0, 4.0),
(1088.0, 4.5),
(1088.0, 5.0),
( 'inf', 5.4),
]</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mo_sit_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_mo_sit_deduction" model="hr.rule.parameter">
<field name="name">US MO Missouri SIT Deduction</field>
<field name="code">us_mo_sit_deduction</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 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.rule.parameter.value">
<field name="parameter_value">{
'single': 12400.0,
@@ -101,18 +61,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_mo_sit_deduction"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://dor.mo.gov/forms/4282_2021.pdf -->
<!-- 2020 Missouri Withholding Tax Formula Page.12 -->
<record id="rule_parameter_us_mo_sit_deduction_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': 12550.0,
'married': 25100.0,
'head_of_household': 18800.0,
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mo_sit_deduction"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_mo_dor" model="res.partner">

View File

@@ -6,14 +6,11 @@
<field name="code">us_ms_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- not changed for 2021 https://mdes.ms.gov/employer-faqs/ -->
<record id="rule_parameter_us_ms_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">14000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ms_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ms_suta_rate" model="hr.rule.parameter">
@@ -27,13 +24,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ms_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- 1% for first year of new employers -->
<!-- https://mdes.ms.gov/employers/unemployment-tax/reporting-and-filing/unemployment-tax-rates/ -->
<record id="rule_parameter_us_ms_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">1.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ms_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ms_sit_rate" model="hr.rule.parameter">
@@ -41,9 +31,6 @@
<field name="code">us_ms_sit_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.dor.ms.gov/Documents/Computer%20Payroll%20Flowchart.pdf -->
<!-- Table D. -->
<record id="rule_parameter_us_ms_sit_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">[
( 10000.00, 260.0, 0.05),
@@ -53,28 +40,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ms_sit_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www.dor.ms.gov/Documents/Computer%20Payroll%20Flowchart%209-9-20.pdf -->
<!-- Table D. -->
<record id="rule_parameter_us_ms_sit_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">[
( 10000.00, 230.0, 0.05),
( 5000.00, 30.0, 0.04),
( 3000.00, 0.0, 0.03),
]</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ms_sit_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ms_sit_deduction" model="hr.rule.parameter">
<field name="name">US MS Mississippi SIT Deduction</field>
<field name="code">us_ms_sit_deduction</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.dor.ms.gov/Documents/Computer%20Payroll%20Flowchart.pdf -->
<!-- Table C. -->
<!-- Unchanged in 2021 https://www.dor.ms.gov/Documents/Computer%20Payroll%20Flowchart%209-9-20.pdf -->
<record id="rule_parameter_us_ms_sit_deduction_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': 2300.0,
@@ -85,7 +56,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ms_sit_deduction"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_ms_dor" model="res.partner">

View File

@@ -1,24 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Wage Base -->
<!--2021 change: http://dli.mt.gov/news/225#:~:text=The%20Montana%20Department%20of%20Labor,MCA%2039%2D51%2D1108. -->
<record id="rule_parameter_us_mt_suta_wage_base" model="hr.rule.parameter">
<field name="name">US MT Montana SUTA Wage Base</field>
<field name="code">us_mt_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_mt_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">34100.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mt_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_mt_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">35300.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mt_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_mt_suta_rate" model="hr.rule.parameter">
@@ -39,25 +31,17 @@
<field name="code">us_mt_suta_aft_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_mt_suta_aft_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">0.13</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mt_suta_aft_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_mt_suta_aft_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.13</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mt_suta_aft_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_mt_sit_rate" model="hr.rule.parameter">
<field name="name">US MT Montana SIT Rate Table</field>
<field name="code">us_mt_sit_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_mt_sit_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': (
@@ -94,52 +78,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_mt_sit_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</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.rule.parameter.value">
<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="rule_parameter_id" ref="rule_parameter_us_mt_sit_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_mt_sit_exemption_rate" model="hr.rule.parameter">
<field name="name">US MT Montana SIT Exemption Rate Table</field>
<field name="code">us_mt_sit_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_mt_sit_exemption_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': 37.0,
@@ -151,20 +95,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_mt_sit_exemption_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</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.rule.parameter.value">
<field name="parameter_value">{
'weekly': 37.0,
'bi-weekly': 73.0,
'semi-monthly': 79.0,
'monthly': 158.0,
'annually': 1900.0,
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_mt_sit_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_mt_dor" model="res.partner">

View File

@@ -1,27 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Wage Base -->
<!-- https://des.nc.gov/employers/tax-rate-information-->
<record id="rule_parameter_us_nc_suta_wage_base" model="hr.rule.parameter">
<field name="name">US NC North Carolina SUTA Wage Base</field>
<field name="code">us_nc_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_nc_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">25200.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nc_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_nc_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">26000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nc_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<!-- https://des.nc.gov/employers/tax-rate-information-->
<record id="rule_parameter_us_nc_suta_rate" model="hr.rule.parameter">
<field name="name">US NC North Carolina SUTA Rate</field>
<field name="code">us_nc_suta_rate</field>
@@ -33,11 +24,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_nc_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_nc_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">1.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nc_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_nc_sit_allowance_rate" model="hr.rule.parameter">
@@ -45,9 +31,6 @@
<field name="code">us_nc_sit_allowance_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 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.rule.parameter.value">
<field name="parameter_value">{
'weekly': {'allowance': 48.08, 'standard_deduction': 206.73, 'standard_deduction_hh': 310.10},
@@ -58,21 +41,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_nc_sit_allowance_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://files.nc.gov/ncdor/documents/files/2021-NC-30-Final.pdf -->
<!-- 'allowance': Get from Withholding Allowance Chart Page 19. -->
<!-- 'standard_deduction': Get from 'Percentage Method - Formula Tables' line 2 SD For single or married (Page. 16-18)-->
<!-- 'standard_deduction_hh': Also get from 'Percentage Method - Formula Tables' line 2 (SD Page. 16-18)-->
<record id="rule_parameter_us_nc_sit_allowance_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': {'allowance': 48.08, 'standard_deduction': 206.73, 'standard_deduction_hh': 310.10},
'bi-weekly': {'allowance': 96.15, 'standard_deduction': 413.46, 'standard_deduction_hh': 620.19},
'semi-monthly': {'allowance': 104.17, 'standard_deduction': 447.92, 'standard_deduction_hh': 671.88},
'monthly': {'allowance': 208.33, 'standard_deduction': 895.83, 'standard_deduction_hh': 1343.75},
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nc_sit_allowance_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_nc_dor" model="res.partner">

View File

@@ -6,19 +6,11 @@
<field name="code">us_nd_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_nd_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">37900.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nd_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www.jobsnd.com/sites/www/files/documents/jsnd-documents/uitaxrateschedules2021.pdf -->
<record id="rule_parameter_us_nd_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">38500.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nd_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_nd_suta_rate" model="hr.rule.parameter">
@@ -27,8 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://www.jobsnd.com/sites/www/files/documents/jsnd-documents/uitaxrateschedules2021.pdf -->
<!-- Unchanged in 2021 -->
<record id="rule_parameter_us_nd_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1.02</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nd_suta_rate"/>
@@ -36,13 +26,11 @@
</record>
</data>
<!-- Table based on https://www.nd.gov/tax/data/upfiles/media/rates-and-instructions.pdf?20191208155535 -->
<record id="rule_parameter_us_nd_sit_tax_rate" model="hr.rule.parameter">
<field name="name">US ND North Dakota SIT Tax Rate</field>
<field name="code">us_nd_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_nd_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
@@ -223,198 +211,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_nd_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www.nd.gov/tax/user/businesses/formspublications/income-tax-withholding/guidelines-
-publications -->
<!-- https://www.nd.gov/tax/data/upfiles/media/income-tax-withholding-rates-and-instructions-booklet-2021.pdf -->
<record id="rule_parameter_us_nd_sit_tax_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
'weekly': (
( 121, 0.00, 0.00),
( 900, 0.00, 1.10),
( 2007, 8.57, 2.04),
( 4057, 31.15, 2.27),
( 8678, 77.69, 2.64),
('inf', 199.68, 2.90),
),
'bi-weekly': (
( 241, 0.00, 0.00),
( 1800, 0.00, 1.10),
( 4014, 17.15, 2.04),
( 8113, 62.31, 2.27),
( 17357, 155.36, 2.64),
( 'inf', 399.40, 2.90),
),
'semi-monthly': (
( 261, 0.00, 0.00),
( 1950, 0.00, 1.10),
( 4349, 18.58, 2.04),
( 8790, 67.52, 2.27),
( 18790, 168.33, 2.64),
( 'inf', 432.67, 2.90),
),
'monthly': (
( 523, 0.00, 0.00),
( 3900, 0.00, 1.10),
( 8698, 37.15, 2.04),
( 17579, 135.03, 2.27),
( 37606, 336.62, 2.64),
( 'inf', 865.34, 2.90),
),
'quarterly': (
( 1569, 0.00, 0.00),
( 11700, 0.00, 1.10),
( 26094, 111.44, 2.04),
( 52738, 405.08, 2.27),
( 112819, 1009.90, 2.64),
( 'inf', 2596.04, 2.90),
),
'semi-annual': (
( 3138, 0.00, 0.00),
( 23400, 0.00, 1.10),
( 52188, 222.88, 2.04),
( 105475, 810.16, 2.27),
( 225638, 2019.77, 2.64),
( 'inf', 5192.08, 2.90),
),
'annual': (
( 6275, 0.00, 0.00),
( 46800, 0.00, 1.10),
( 104375, 445.78, 2.04),
( 210950, 1620.31, 2.27),
( 451275, 4039.56, 2.64),
( 'inf', 10384.14, 2.90),
),
},
'married': {
'weekly': (
( 241, 0.00, 0.00),
( 892, 0.00, 1.10),
( 1814, 7.16, 2.04),
( 2637, 25.97, 2.27),
( 4520, 44.65, 2.64),
('inf', 94.36, 2.90),
),
'bi-weekly': (
( 483, 0.00, 0.00),
( 1785, 0.00, 1.10),
( 3628, 14.32, 2.04),
( 5274, 51.92, 2.27),
( 9040, 89.28, 2.64),
( 'inf', 188.71, 2.90),
),
'semi-monthly': (
( 523, 0.00, 0.00),
( 1933, 0.00, 1.10),
( 3930, 15.51, 2.04),
( 5714, 56.25, 2.27),
( 9794, 96.75, 2.64),
( 'inf', 204.46, 2.90),
),
'monthly': (
( 1046, 0.00, 0.00),
( 3867, 0.00, 1.10),
( 7860, 31.03, 2.04),
( 11427, 112.49, 2.27),
( 19588, 193.46, 2.64),
( 'inf', 408.91, 2.90),
),
'quarterly': (
( 3138, 0.00, 0.00),
( 11600, 0.00, 1.10),
( 23581, 93.08, 2.04),
( 34281, 337.49, 2.27),
( 58763, 580.38, 2.64),
( 'inf', 1226.71, 2.90),
),
'semi-annual': (
( 6275, 0.00, 0.00),
( 23200, 0.00, 1.10),
( 47163, 186.18, 2.04),
( 68563, 675.02, 2.27),
( 117525, 1160.80, 2.64),
( 'inf', 2453.40, 2.90),
),
'annual': (
( 12550, 0.00, 0.00),
( 46400, 0.00, 1.10),
( 94325, 372.35, 2.04),
( 137125, 1350.02, 2.27),
( 235050, 2321.58, 2.64),
( 'inf', 4906.80, 2.90),
),
},
'head_household':{
'weekly': (
( 121, 0.00, 0.00),
( 900, 0.00, 1.10),
( 2007, 8.57, 2.04),
( 4057, 31.15, 2.27),
( 8678, 77.69, 2.64),
('inf', 199.68, 2.90),
),
'bi-weekly': (
( 241, 0.00, 0.00),
( 1800, 0.00, 1.10),
( 4014, 17.15, 2.04),
( 8113, 62.31, 2.27),
( 17357, 155.36, 2.64),
( 'inf', 399.40, 2.90),
),
'semi-monthly': (
( 261, 0.00, 0.00),
( 1950, 0.00, 1.10),
( 4349, 18.58, 2.04),
( 8790, 67.52, 2.27),
( 18790, 168.33, 2.64),
( 'inf', 432.67, 2.90),
),
'monthly': (
( 523, 0.00, 0.00),
( 3900, 0.00, 1.10),
( 8698, 37.15, 2.04),
( 17579, 135.03, 2.27),
( 37606, 336.62, 2.64),
( 'inf', 865.34, 2.90),
),
'quarterly': (
( 1569, 0.00, 0.00),
( 11700, 0.00, 1.10),
( 26094, 111.44, 2.04),
( 52738, 405.08, 2.27),
( 112819, 1009.90, 2.64),
( 'inf', 2596.04, 2.90),
),
'semi-annual': (
( 3138, 0.00, 0.00),
( 23400, 0.00, 1.10),
( 52188, 222.88, 2.04),
( 105475, 810.16, 2.27),
( 225638, 2019.77, 2.64),
( 'inf', 5192.08, 2.90),
),
'annual': (
( 6275, 0.00, 0.00),
( 46800, 0.00, 1.10),
( 104375, 445.78, 2.04),
( 210950, 1620.31, 2.27),
( 451275, 4039.56, 2.64),
( 'inf', 10384.14, 2.90),
),
},
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nd_sit_tax_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_nd_sit_allowances_rate" model="hr.rule.parameter">
<field name="name">US ND North Dakota Allowances Rate</field>
<field name="code">us_nd_sit_allowances_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021 https://www.nd.gov/tax/data/upfiles/media/income-tax-withholding-rates-and-instructions-booklet-2021.pdf -->
<record id="rule_parameter_us_nd_sit_allowances_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly' : 83.00,
@@ -428,7 +230,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_nd_sit_allowances_rate"/>
<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">

View File

@@ -6,14 +6,11 @@
<field name="code">us_ne_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Same for 2021 https://dol.nebraska.gov/webdocs/Resources/Items/2021%20UI%20Tax%20Rate%20Guide.pdf -->
<record id="rule_parameter_us_ne_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">9000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ne_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ne_suta_rate" model="hr.rule.parameter">
@@ -27,24 +24,13 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ne_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://dol.nebraska.gov/webdocs/Resources/Items/2021%20UI%20Tax%20Rate%20Guide.pdf -->
<!-- Under "Employers Without an Experience Rating "the lesser of the category 12 rate or 2.5%" -->
<record id="rule_parameter_us_ne_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">2.5</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ne_suta_rate"/>
<field name="date_from" eval="datetime(2021, 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 -->
<record id="rule_parameter_us_ne_sit_tax_rate" model="hr.rule.parameter">
<field name="name">US NE Nebraska SIT Tax Rate</field>
<field name="code">us_ne_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021 https://revenue.nebraska.gov/businesses/nebraska-income-tax-withholding -->
<!-- see note "Continue using these tables for 2021 -->
<record id="rule_parameter_us_ne_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
@@ -181,14 +167,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ne_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ne_sit_allowances_rate" model="hr.rule.parameter">
<field name="name">US NE Nebraska Allowances Rate</field>
<field name="code">us_ne_sit_allowances_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ne_sit_allowances_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly' : 37.69,
@@ -202,8 +186,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ne_sit_allowances_rate"/>
<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">

View File

@@ -6,14 +6,11 @@
<field name="code">us_nh_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- same for 2021 https://www.nhes.nh.gov/services/employers/claimtax.htm#:~:text=The%20Taxable%20Wage%20Base%20remains%20at%20%2414%2C000.&text=The%20state%20and%20federal%20governments,determine%20eligibility%20for%20unemployment%20benefits. -->
<record id="rule_parameter_us_nh_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">14000.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nh_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_nh_suta_rate" model="hr.rule.parameter">
@@ -27,11 +24,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_nh_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_nh_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">2.7</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nh_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->

View File

@@ -6,29 +6,19 @@
<field name="code">us_nj_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_nj_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">35300.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nj_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www.nj.gov/labor/ea/employer-services/rate-info/ -->
<record id="rule_parameter_us_nj_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">36200.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nj_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<!-- SUTA -->
<record id="rule_parameter_us_nj_suta_rate" model="hr.rule.parameter">
<field name="name">US NJ New Jersey Employer Unemployment SUTA Rate</field>
<field name="code">us_nj_suta_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 2021 unchanged https://www.nj.gov/labor/ea/employer-services/rate-info/ -->
<record id="rule_parameter_us_nj_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2.6825</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nj_suta_rate"/>
@@ -42,7 +32,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 2021 unchanged https://www.nj.gov/labor/ea/employer-services/rate-info/ -->
<record id="rule_parameter_us_nj_suta_ee_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.3825</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nj_suta_ee_rate"/>
@@ -57,7 +46,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 2021 unchanged https://www.nj.gov/labor/ea/employer-services/rate-info/ -->
<record id="rule_parameter_us_nj_sdi_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.5</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nj_sdi_rate"/>
@@ -76,12 +64,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_nj_sdi_ee_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www.nj.gov/labor/ea/employer-services/rate-info/ -->
<record id="rule_parameter_us_nj_sdi_ee_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">0.47</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nj_sdi_ee_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- WF -->
@@ -91,7 +73,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 2021 unchanged https://www.nj.gov/labor/ea/employer-services/rate-info/ -->
<record id="rule_parameter_us_nj_wf_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.1175</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nj_wf_rate"/>
@@ -105,7 +86,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 2021 unchanged https://www.nj.gov/labor/ea/employer-services/rate-info/ -->
<record id="rule_parameter_us_nj_wf_ee_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.0425</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nj_wf_ee_rate"/>
@@ -120,7 +100,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 2021 unchanged https://www.nj.gov/labor/ea/employer-services/rate-info/ -->
<record id="rule_parameter_us_nj_fli_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nj_fli_rate"/>
@@ -139,12 +118,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_nj_fli_ee_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www.nj.gov/labor/ea/employer-services/rate-info/ -->
<record id="rule_parameter_us_nj_fli_ee_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">0.28</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nj_fli_ee_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- SIT -->
@@ -153,8 +126,6 @@
<field name="code">us_nj_sit_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 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.rule.parameter.value">
<field name="parameter_value">{
'A': {
@@ -500,362 +471,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_nj_sit_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- Table from Percentage Method Calculations https://www.nj.gov/treasury/taxation/pdf/withholdingtables.pdf -->
<record id="rule_parameter_us_nj_sit_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'A': {
'weekly': (
( 385, 0.00, 1.50),
( 673, 5.77, 2.00),
( 769, 11.54, 3.90),
( 1442, 15.29, 6.10),
( 9615, 56.34, 7.00),
(19231, 628.46, 9.90),
('inf', 1580.38, 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),
( 38462, 1257.00, 9.90),
( 'inf', 3161.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),
( 41667, 1362.00, 9.90),
( 'inf', 3424.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),
( 83333, 2723.00, 9.90),
( 'inf', 6848.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),
( 250000, 8170.00, 9.90),
( 'inf', 20545.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),
( 500000, 16340.00, 9.90),
( 'inf', 41060.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),
(1000000, 32680.00, 9.90),
( 'inf', 82180.00, 11.80),
),
},
'B': {
'weekly': (
( 385, 0.00, 1.50),
( 962, 5.77, 2.00),
( 1346, 17.31, 2.70),
( 1538, 27.69, 3.90),
( 2885, 35.19, 6.10),
( 9615, 117.31, 7.00),
(19231, 588.46, 9.90),
('inf', 1540.38, 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),
( 38462, 1177.00, 9.90),
( 'inf', 3081.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),
( 41667, 1275.00, 9.90),
( 'inf', 3338.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),
( 83333, 2550.00, 9.90),
( 'inf', 6675.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),
( 250000, 7650.00, 9.90),
( 'inf', 20025.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),
( 500000, 15300.00, 9.90),
( 'inf', 40050.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),
(1000000, 30600.00, 9.90),
( 'inf', 80100.00, 11.80),
),
},
'C': {
'weekly': (
( 385, 0.00, 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),
(19231, 567.88, 9.90),
('inf', 1519.81, 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),
( 38462, 1135.77, 9.90),
( 'inf', 3039.62, 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),
( 41667, 1230.42, 9.90),
( 'inf', 3292.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),
( 83333, 2460.83, 9.90),
( 'inf', 6585.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),
( 250000, 7382.50, 9.90),
( 'inf', 19757.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),
( 500000, 14765.00, 9.90),
( 'inf', 39515.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),
(1000000, 29530.00, 9.90),
( 'inf', 79030.00, 11.80),
),
},
'D': {
'weekly': (
( 385, 0.00, 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),
( 19231, 565.38, 9.90),
( 'inf', 1517.31, 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),
( 38462, 1130.77, 9.90),
( 'inf', 3034.62, 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),
( 41667, 1225.00, 9.90),
( 'inf', 3287.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),
( 83333, 2450.00, 9.90),
( 'inf', 6575.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),
( 250000, 7350.00, 9.90),
( 'inf', 19725.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),
( 500000, 14700.00, 9.90),
( 'inf', 39450.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),
(1000000, 29400.00, 9.90),
( 'inf', 78900.00, 11.80),
),
},
'E': {
'weekly': (
( 385, 0.00, 1.50),
( 673, 5.77, 2.00),
( 1923, 11.54, 5.80),
( 9615, 84.04, 6.50),
( 19231, 584.04, 9.90),
( 'inf', 1535.96, 11.80),
),
'bi-weekly': (
( 769, 0.00, 1.50),
( 1346, 12.00, 2.00),
( 3846, 23.00, 5.80),
( 19231, 168.00, 6.50),
( 38462, 1168.00, 9.90),
( 'inf', 3072.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),
( 41667, 1265.00, 9.90),
( 'inf', 3328.00, 11.80),
),
'monthly': (
( 1667, 0.00, 1.50),
( 2916, 25.00, 2.00),
( 8333, 50.00, 5.80),
( 41667, 364.00, 6.50),
( 83333, 2531.00, 9.90),
( 'inf', 6656.00, 11.80),
),
'quarterly': (
( 5000, 0.00, 1.50),
( 8750, 75.00, 2.00),
( 25000, 150.00, 5.80),
( 125000, 1092.50, 6.50),
( 250000, 7592.50, 9.90),
( 'inf', 19967.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),
( 500000, 15185.00, 9.90),
( 'inf', 39935.00, 11.80),
),
'annual': (
( 20000, 0.00, 1.50),
( 35000, 300.00, 2.00),
( 100000, 600.00, 5.80),
( 500000, 4370.00, 6.50),
(1000000, 30370.00, 9.90),
( 'inf', 79870.00, 11.80),
),
},
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nj_sit_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_nj_sit_allowance_rate" model="hr.rule.parameter">
<field name="name">US NJ NewJersey SIT Allowance Rate</field>
<field name="code">us_nj_sit_allowance_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Allownce Value table https://www.state.nj.us/treasury/taxation/pdf/current/njwt.pdf -->
<!-- Unchanged in 2021 https://www.nj.gov/treasury/taxation/pdf/withholdingtables.pdf -->
<record id="rule_parameter_us_nj_sit_allowance_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': 19.20,
@@ -870,7 +491,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_nj_sit_allowance_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_nj_dor" model="res.partner">

View File

@@ -6,19 +6,11 @@
<field name="code">us_nm_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_nm_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">25800.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nm_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www.dws.state.nm.us/en-us/Unemployment/UI-Tax-Claims-Info -->
<record id="rule_parameter_us_nm_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">27000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nm_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_nm_suta_rate" model="hr.rule.parameter">
@@ -27,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged for 2021 https://www.dws.state.nm.us/Unemployment/Unemployment-for-a-Business/Unemployment-Insurance-Tax-Information/How-UI-Tax-Rates-Are-Calculated -->
<record id="rule_parameter_us_nm_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nm_suta_rate"/>
@@ -40,8 +31,6 @@
<field name="code">us_nm_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- http://www.tax.newmexico.gov/witholding-tax-historic-rates.aspx -->
<record id="rule_parameter_us_nm_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
@@ -264,274 +253,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_nm_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- http://www.tax.newmexico.gov/witholding-tax-historic-rates.aspx -->
<!-- Table based on Percentage method from https://s3.amazonaws.com/realFile34821a95-73ca-43e7-b06d-fad20f5183fd/a86e6237-70f0-429c-b704-1b727b8169c0?response-content-disposition=filename%3D%22FYI-104.pdf%22&response-content-type=application%2Fpdf&AWSAccessKeyId=AKIAJBI25DHBYGD7I7TA&Signature=gMNJXjqoC6tOyw9EHaH00PCYShM%3D&Expires=1610553619 -->
<record id="rule_parameter_us_nm_sit_tax_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
'weekly': (
( 121, 0.00, 0.0),
( 226, 0.00, 1.7),
( 332, 1.80, 3.2),
( 428, 5.18, 4.7),
( 621, 9.70, 4.9),
( 928, 19.13, 4.9),
( 1371, 34.20, 4.9),
( 2525, 55.88, 4.9),
( 4159, 112.41, 4.9),
('inf', 192.51, 5.9),
),
'bi-weekly': (
( 241, 0.00, 0.0),
( 453, 0.00, 1.7),
( 664, 3.60, 3.2),
( 857, 10.37, 4.7),
( 1241, 19.40, 4.9),
( 1857, 38.25, 4.9),
( 2741, 68.40, 4.9),
( 5049, 111.75, 4.9),
( 8318, 224.83, 4.9),
('inf', 385.02, 5.9),
),
'semi-monthly': (
( 261, 0.00, 0.0),
( 491, 0.00, 1.7),
( 720, 3.90, 3.2),
( 928, 11.23, 4.7),
( 1345, 21.02, 4.9),
( 2011, 41.44, 4.9),
( 2970, 74.10, 4.9),
( 2470, 121.06, 4.9),
( 9011, 243.56, 4.9),
('inf', 417.10, 5.9),
),
'monthly': (
( 523, 0.00, 0.0),
( 981, 0.00, 1.7),
( 1440, 7.79, 3.2),
( 1856, 22.46, 4.7),
( 2690, 42.04, 4.9),
( 4023, 82.88, 4.9),
( 5940, 148.21, 4.9),
(10940, 242.13, 4.9),
(18023, 487.13, 4.9),
('inf', 834.21, 5.9),
),
'quarterly': (
( 1569, 0.00, 0.0),
( 2944, 0.00, 1.7),
( 4319, 23.38, 3.2),
( 5569, 67.38, 4.7),
( 8069, 126.13, 4.9),
( 12069, 248.63, 4.9),
( 17819, 444.63, 4.9),
( 32819, 726.38, 4.9),
( 54069, 1461.38, 4.9),
( 'inf', 2502.63, 5.9),
),
'semi-annual': (
( 3138, 0.00, 0.0),
( 5888, 0.00, 1.7),
( 8638, 46.75, 3.2),
( 11138, 134.75, 4.7),
( 16138, 252.25, 4.9),
( 24138, 497.25, 4.9),
( 35638, 889.25, 4.9),
( 65638, 1452.75, 4.9),
(108138, 2922.75, 4.9),
('inf' , 5005.25, 5.9),
),
'annually': (
( 6275, 0.00, 0.0),
( 11775, 0.00, 1.7),
( 17275, 93.50, 3.2),
( 22275, 269.50, 4.7),
( 32275, 504.50, 4.9),
( 48275, 994.50, 4.9),
( 71275, 1778.50, 4.9),
(131275, 2905.50, 4.9),
(216275, 5845.50, 4.9),
( 'inf', 10010.50, 5.9),
),
},
'married': {
'weekly': (
( 241, 0.00, 0.0),
( 395, 0.00, 1.7),
( 549, 2.62, 3.2),
( 703, 7.54, 4.7),
( 1011, 14.77, 4.9),
( 1472, 29.85, 4.9),
( 2164, 52.46, 4.9),
( 4088, 86.38, 4.9),
( 6299, 180.62, 4.9),
('inf', 288.98, 5.9),
),
'bi-weekly': (
( 483, 0.00, 0.0),
( 790, 0.00, 1.7),
( 1089, 5.23, 3.2),
( 1406, 15.08, 4.7),
( 2021, 29.54, 4.9),
( 2944, 59.69, 4.9),
( 4329, 104.92, 4.9),
( 8175, 172.77, 4.9),
(12598, 361.23, 4.9),
('inf', 577.96, 5.9),
),
'semi-monthly': (
( 523, 0.00, 0.0),
( 856, 0.00, 1.7),
( 1190, 5.67, 3.2),
( 1523, 16.33, 4.7),
( 2190, 32.00, 4.9),
( 3190, 64.67, 4.9),
( 4690, 113.67, 4.9),
( 8856, 187.17, 4.9),
(13648, 391.33, 4.9),
('inf', 626.13, 5.9),
),
'monthly': (
( 1046, 0.00, 0.0),
( 1713, 0.00, 1.7),
( 2379, 11.33, 3.2),
( 3046, 32.67, 4.7),
( 4379, 64.00, 4.9),
( 6379, 129.33, 4.9),
( 9379, 227.33, 4.9),
(17713, 374.33, 4.9),
(27296, 782.67, 4.9),
('inf', 1252.25, 5.9),
),
'quarterly': (
( 3138, 0.00, 0.0),
( 5138, 0.00, 1.7),
( 7138, 34.00, 3.2),
( 9138, 98.00, 4.7),
(13138, 192.00, 4.9),
(19138, 388.00, 4.9),
(28138, 682.00, 4.9),
(53138, 1123.00, 4.9),
(81888, 2348.00, 4.9),
('inf', 3756.75, 5.9),
),
'semi-annual': (
( 6275, 0.00, 0.0),
( 10275, 0.00, 1.7),
( 14275, 68.00, 3.2),
( 18275, 196.00, 4.7),
( 26275, 384.00, 4.9),
( 38275, 776.00, 4.9),
( 56275, 1364.00, 4.9),
(106275, 2246.00, 4.9),
(163775, 4696.00, 4.9),
( 'inf', 7513.50, 5.9),
),
'annually': (
( 12450, 0.00, 0.0),
( 20450, 0.00, 1.7),
( 28450, 136.00, 3.2),
( 36450, 392.00, 4.7),
( 52450, 768.00, 4.9),
( 76450, 1552.00, 4.9),
(112450, 2728.00, 4.9),
(212550, 4492.00, 4.9),
(327550, 9392.00, 4.9),
( 'inf', 15027.00, 5.9),
),
},
'married_as_single': {
'weekly': (
( 181, 0.00, 0.0),
( 335, 0.00, 1.7),
( 488, 2.62, 3.2),
( 642, 7.54, 4.7),
( 950, 14.77, 4.9),
( 1412, 29.85, 4.9),
( 2104, 52.46, 4.9),
( 2027, 86.38, 4.9),
( 6238, 180.62, 4.9),
('inf', 288.98, 5.9),
),
'bi-weekly': (
( 362, 0.00, 0.0),
( 669, 0.00, 1.7),
( 977, 5.23, 3.2),
( 1285, 15.08, 4.7),
( 1900, 29.54, 4.9),
( 2823, 59.69, 4.9),
( 4208, 104.92, 4.9),
( 8054, 172.77, 4.9),
(12477, 361.23, 4.9),
('inf', 577.96, 5.9),
),
'semi-monthly': (
( 392, 0.00, 0.0),
( 725, 0.00, 1.7),
( 1058, 5.67, 3.2),
( 1392, 16.33, 4.7),
( 2058, 32.00, 4.9),
( 3058, 64.67, 4.9),
( 4558, 113.67, 4.9),
( 8725, 187.17, 4.9),
(13517, 391.33, 4.9),
('inf', 626.13, 5.9),
),
'monthly': (
( 783, 0.00, 0.0),
( 1450, 0.00, 1.7),
( 2117, 11.33, 3.2),
( 2783, 32.67, 4.7),
( 4117, 64.00, 4.9),
( 6117, 129.33, 4.9),
( 9117, 227.33, 4.9),
(17450, 374.33, 4.9),
(27033, 782.67, 4.9),
('inf', 1252.25, 5.9),
),
'quarterly': (
( 2350, 0.00, 0.0),
( 4350, 0.00, 1.7),
( 6350, 34.00, 3.2),
( 8350, 98.00, 4.7),
( 12350, 192.00, 4.9),
( 18350, 388.00, 4.9),
( 27350, 682.00, 4.9),
( 52350, 1123.00, 4.9),
( 81100, 2348.00, 4.9),
( 'inf', 3756.75, 5.9),
),
'semi-annual': (
( 4700, 0.00, 0.0),
( 8700, 0.00, 1.7),
( 12700, 68.00, 3.2),
( 16700, 196.00, 4.7),
( 24700, 384.00, 4.9),
( 36700, 776.00, 4.9),
( 54700, 1364.00, 4.9),
(104700, 2246.00, 4.9),
(162200, 4696.00, 4.9),
( 'inf', 7513.50, 5.9),
),
'annually': (
( 9400, 0.00, 0.0),
( 17400, 0.00, 1.7),
( 25400, 136.00, 3.2),
( 33400, 392.00, 4.7),
( 49400, 768.00, 4.9),
( 73400, 1552.00, 4.9),
(109400, 2728.00, 4.9),
(209400, 4492.00, 4.9),
(324400, 9392.00, 4.9),
( 'inf', 15027.00, 5.9),
),
}
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nm_sit_tax_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_nm_dor" model="res.partner">

View File

@@ -6,18 +6,11 @@
<field name="code">us_nv_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_nv_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">32500.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nv_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_nv_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">33400.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nv_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_nv_suta_rate" model="hr.rule.parameter">
@@ -26,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- same for 2021 https://ui.nv.gov/ESSHTML/ui_information.htm -->
<record id="rule_parameter_us_nv_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2.95</field>
<field name="rule_parameter_id" ref="rule_parameter_us_nv_suta_rate"/>

View File

@@ -1,24 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Wage Base -->
<!-- https://www.tax.ny.gov/pdf/current_forms/wt/nys45i.pdf -->
<record id="rule_parameter_us_ny_suta_wage_base" model="hr.rule.parameter">
<field name="name">US NY New York SUTA Wage Base</field>
<field name="code">us_ny_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ny_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">11600.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ny_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ny_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">11800.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ny_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ny_suta_rate" model="hr.rule.parameter">
@@ -26,19 +18,12 @@
<field name="code">us_ny_suta_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- todo: New york unemployment Rates are published in February and due quarterly-->
<!-- https://dol.ny.gov/unemployment-insurance-rate-information-->
<data noupdate="1">
<record id="rule_parameter_us_ny_suta_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">2.5</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ny_suta_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ny_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2.5</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ny_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ny_suta_rsf_rate" model="hr.rule.parameter">
@@ -52,11 +37,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ny_suta_rsf_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ny_suta_rsf_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.075</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ny_suta_rsf_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ny_suta_mctmt_rate" model="hr.rule.parameter">
@@ -70,11 +50,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ny_suta_mctmt_rate"/>
<field name="date_from" eval="datetime(2019, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ny_suta_mctmt_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ny_suta_mctmt_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ny_sit_tax_rate" model="hr.rule.parameter">
@@ -82,7 +57,6 @@
<field name="code">us_ny_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ny_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
@@ -253,185 +227,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ny_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www.tax.ny.gov/pdf/publications/withholding/nys50_t_nys_121.pdf-->
<record id="rule_parameter_us_ny_sit_tax_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
'weekly': (
( 163, 0.0400, 0.00),
( 225, 0.0450, 6.54),
( 267, 0.0525, 9.31),
( 412, 0.0590, 11.54),
( 1551, 0.0597, 20.04),
( 1862, 0.0633, 88.06),
( 2070, 0.0738, 107.73),
( 3032, 0.0788, 123.12),
( 4142, 0.0683, 198.88),
( 5104, 0.0959, 274.75),
(20722, 0.0735, 366.96),
(21684, 0.5208, 1514.90),
('inf', 0.0962, 2015.67),
),
'bi-weekly': (
( 327, 0.0400, 0.00),
( 450, 0.0450, 13.08),
( 535, 0.0525, 18.62),
( 823, 0.0590, 23.08),
( 3102, 0.0597, 40.08),
( 3723, 0.0633, 176.12),
( 4140, 0.0738, 215.46),
( 6063, 0.0788, 246.23),
( 8285, 0.0683, 397.77),
(10208, 0.0959, 549.50),
(41444, 0.0735, 733.92),
(43367, 0.5208, 3029.81),
('inf', 0.0962, 4031.45),
),
'semi-monthly': (
( 354, 0.0400, 0.00),
( 488, 0.0450, 14.17),
( 579, 0.0525, 20.17),
( 892, 0.0590, 25.00),
( 3360, 0.0597, 43.42),
( 4033, 0.0633, 190.79),
( 4485, 0.0738, 233.42),
( 6569, 0.0788, 266.75),
( 8975, 0.0683, 430.92),
(11058, 0.0959, 595.29),
(44898, 0.0735, 795.08),
(46981, 0.5208, 3282.29),
('inf', 0.0962, 4367.29),
),
'monthly': (
( 708, 0.0400, 0.00),
( 975, 0.0450, 28.33),
( 1158, 0.0525, 40.33),
( 1783, 0.0590, 50.00),
( 6721, 0.0597, 86.83),
( 8067, 0.0633, 381.58),
( 8971, 0.0738, 466.83),
(13138, 0.0788, 533.50),
(17950, 0.0683, 861.83),
(22117, 0.0959, 1190.58),
(89796, 0.0735, 1590.17),
(93963, 0.5208, 6564.58),
('inf', 0.0962, 8734.58),
),
'annually': (
( 8500, 0.0400, 0.00),
( 11700, 0.0450, 340.00),
( 13900, 0.0525, 484.00),
( 21400, 0.0590, 600.00),
( 80650, 0.0597, 1042.00),
( 96800, 0.0633, 4579.00),
( 107650, 0.0738, 5602.00),
( 157650, 0.0788, 6402.00),
( 215400, 0.0683, 10342.00),
( 265400, 0.0959, 14287.00),
(1077550, 0.0735, 19082.00),
(1127550, 0.5208, 78775.00),
( 'inf', 0.0962, 104815.00),
),
},
'married': {
'weekly': (
( 163, 0.0400, 0.00),
( 225, 0.0450, 6.54),
( 267, 0.0525, 9.31),
( 412, 0.0590, 11.54),
( 1551, 0.0597, 20.04),
( 1862, 0.0633, 88.06),
( 2070, 0.0728, 107.73),
( 3032, 0.0778, 122.90),
( 4068, 0.0799, 197.71),
( 6215, 0.0683, 280.54),
( 7177, 0.1071, 427.19),
(20722, 0.0735, 530.17),
(41449, 0.0765, 1525.73),
(42411, 0.9454, 3111.35),
('inf', 0.0962, 4020.38),
),
'bi-weekly': (
( 327, 0.0400, 0.00),
( 450, 0.0450, 13.08),
( 535, 0.0525, 18.62),
( 823, 0.0590, 23.08),
( 3102, 0.0597, 40.08),
( 3723, 0.0633, 176.12),
( 4140, 0.0728, 215.46),
( 6063, 0.0778, 245.81),
( 8137, 0.0799, 395.42),
(12431, 0.0683, 561.08),
(14354, 0.1071, 854.38),
(41444, 0.0735, 1060.35),
(82898, 0.0765, 3051.46),
(84821, 0.9454, 6222.69),
('inf', 0.0962, 8040.77),
),
'semi-monthly': (
( 354, 0.0400, 0.00),
( 488, 0.0450, 14.17),
( 579, 0.0525, 20.17),
( 892, 0.0590, 25.00),
( 3360, 0.0597, 43.42),
( 4033, 0.0633, 190.79),
( 4485, 0.0728, 233.42),
( 6569, 0.0778, 266.29),
( 8815, 0.0799, 428.38),
(13467, 0.0683, 607.83),
(15550, 0.1071, 925.58),
(44898, 0.0735, 1148.71),
(89806, 0.0765, 3305.75),
(91890, 0.9454, 6741.25),
('inf', 0.0962, 8710.83),
),
'monthly': (
( 708, 0.0400, 0.00),
( 975, 0.0450, 28.33),
( 1158, 0.0525, 40.33),
( 1783, 0.0590, 50.00),
( 6721, 0.0597, 86.83),
( 8067, 0.0633, 381.58),
( 8971, 0.0728, 466.83),
( 13138, 0.0778, 532.58),
( 17629, 0.0799, 856.75),
( 26933, 0.0683, 1215.67),
( 31100, 0.1071, 1851.17),
( 89796, 0.0735, 2297.42),
(179613, 0.0765, 6611.50),
(183779, 0.9454, 13482.50),
( 'inf', 0.0962, 17421.67),
),
'annually': (
( 8500, 0.0400, 0.00),
( 11700, 0.0450, 340.00),
( 13900, 0.0525, 484.00),
( 21400, 0.0590, 600.00),
( 80650, 0.0597, 1042.00),
( 96800, 0.0633, 4579.00),
( 107650, 0.0728, 5602.00),
( 157650, 0.0778, 6391.00),
( 211550, 0.0799, 10281.00),
( 323200, 0.0683, 14588.00),
( 373200, 0.1071, 22214.00),
(1077550, 0.0735, 27569.00),
(2155350, 0.0765, 79338.00),
(2205350, 0.9454, 161790.00),
( 'inf', 0.0962, 209060.00),
),
}
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ny_sit_tax_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ny_sit_over_10_exemption_rate" model="hr.rule.parameter">
<field name="name">US NY New York Over 10 Exemption Rate</field>
<field name="code">us_ny_sit_over_10_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ny_sit_over_10_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': (142.30, 152.90, 19.25),
@@ -443,25 +244,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ny_sit_over_10_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ny_sit_over_10_exemption_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': (142.30, 152.90, 19.25),
'bi-weekly': (284.60, 305.80, 38.50),
'semi-monthly': (308.35, 331.25, 41.65),
'monthly': (616.70, 662.50, 83.30),
'annual': (7400, 7950, 1000),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ny_sit_over_10_exemption_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Table A - Combined deduction and exemption allowance (Step 1) -->
<record id="rule_parameter_us_ny_sit_deduction_exemption_rate" model="hr.rule.parameter">
<field name="name">US NY New York Deduction Exemption Rate</field>
<field name="code">us_ny_sit_deduction_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ny_sit_deduction_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
@@ -482,27 +270,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ny_sit_deduction_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_ny_sit_deduction_exemption_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
'weekly': (142.30, 161.55, 180.80, 200.05, 219.30, 238.55, 257.80, 277.05, 296.30, 315.55, 334.80),
'bi-weekly': (284.60, 323.10, 361.60, 400.10, 438.60, 477.10, 515.60, 544.10, 592.60, 631.10, 669.60),
'semi-monthly': (308.35, 350.0, 391.65, 433.30, 474.95, 516.60, 558.25, 599.90, 641.55, 683.20, 724.85),
'monthly': (616.70, 700, 783.30, 866.60, 949.90, 1033.20, 1116.50, 1199.80, 1283.10, 1366.40, 1449.70),
'annually': (7400, 8400, 9400, 10400, 11400, 12400, 13400, 14400, 15400, 16400, 17400),
},
'married': {
'weekly': (152.90, 172.15, 191.40, 210.65, 229.90, 249.15, 268.40, 287.65, 306.90, 326.15, 345.40),
'bi-weekly': (305.80, 344.30, 382.80, 421.30, 459.80, 498.30, 536.80, 575.30, 613.80, 652.30, 690.80),
'semi-monthly': (331.25, 372.90, 414.55, 456.20, 497.85, 539.50, 581.15, 622.80, 664.45, 706.10, 747.75),
'monthly': (662.50, 745.80, 829.10, 912.40, 995.70, 1079.00, 1162.30, 1245.60, 1328.90, 1412.20, 1495.50),
'annually': (7950, 8950, 9950, 10950, 11950, 12950, 13950, 14950, 15950, 16950, 17950),
},
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ny_sit_deduction_exemption_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_ny_dor" model="res.partner">

View File

@@ -6,16 +6,13 @@
<field name="code">us_oh_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_oh_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">9000.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_oh_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<!-- https://jfs.ohio.gov/ouio/uctax/rates.stm#:~:text=If%20an%20employer's%20account%20is,and%20the%202021%20rate%20is-->
<record id="rule_parameter_us_oh_suta_rate" model="hr.rule.parameter">
<field name="name">US OH Ohio SUTA Rate</field>
<field name="code">us_oh_suta_rate</field>
@@ -29,17 +26,12 @@
</record>
</data>
<!-- rates effective From Jan 1, 2020 until december 31, 2021-->
<!-- https://tax.ohio.gov/wps/portal/gov/tax/business/ohio-business-taxes/employer-withholding/employer-withholding-tables-010120-->
<record id="rule_parameter_us_oh_sit_rate" model="hr.rule.parameter">
<field name="name">US OH Ohio SIT Rate Table</field>
<field name="code">us_oh_sit_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_oh_sit_rate_2020" model="hr.rule.parameter.value">
<!-- https://www.tax.ohio.gov/Portals/0/employer_withholding/2020%20tables/WTH_OptionalComputerFormula_2020.pdf -->
<!-- wage_less_than, base_amount, rate_over -->
<field name="parameter_value">[
( 5000.00, 0.0, 0.005),
( 10000.00, 25.0, 0.010),
@@ -53,38 +45,28 @@
<field name="rule_parameter_id" ref="rule_parameter_us_oh_sit_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_oh_sit_exemption_rate" model="hr.rule.parameter">
<field name="name">US OH Ohio SIT Exemption Rate</field>
<field name="code">us_oh_sit_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_oh_sit_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">650.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_oh_sit_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_oh_sit_multiplier" model="hr.rule.parameter">
<field name="name">US OH Ohio SIT Multiplier Value</field>
<field name="code">us_oh_sit_multiplier</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_oh_sit_multiplier_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1.032</field>
<field name="rule_parameter_id" ref="rule_parameter_us_oh_sit_multiplier"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_oh_sit_multiplier_2021" model="hr.rule.parameter.value">
<field name="parameter_value">1.001</field>
<field name="rule_parameter_id" ref="rule_parameter_us_oh_sit_multiplier"/>
<field name="date_from" eval="datetime(2029, 9, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_oh_dor" model="res.partner">

View File

@@ -6,19 +6,11 @@
<field name="code">us_ok_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ok_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">18700.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ok_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://oklahoma.gov/content/dam/ok/en/omes/documents/car/newsletter/2021RatesAndMaximums.pdf -->
<record id="rule_parameter_us_ok_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">24000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ok_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ok_suta_rate" model="hr.rule.parameter">
@@ -32,22 +24,13 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ok_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://oklahoma.gov/content/dam/ok/en/omes/documents/car/newsletter/2021RatesAndMaximums.pdf -->
<record id="rule_parameter_us_ok_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">1.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ok_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- table from https://www.ok.gov/tax/documents/2020WHTables.pdf -->
<record id="rule_parameter_us_ok_sit_allowances_rate" model="hr.rule.parameter">
<field name="name">US OK Oklahoma Allowances Rate</field>
<field name="code">us_ok_sit_allowances_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://www.ok.gov/tax/documents/2021WHTables.pdf -->
<record id="rule_parameter_us_ok_sit_allowances_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly' : 19.23,
@@ -61,16 +44,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ok_sit_allowances_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ok_sit_tax_rate" model="hr.rule.parameter">
<field name="name">US OK Oklahoma SIT Tax Rate</field>
<field name="code">us_ok_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- table from https://www.ok.gov/tax/documents/2020WHTables.pdf -->
<!-- Unchanged in 2021 https://www.ok.gov/tax/documents/2021WHTables.pdf -->
<record id="rule_parameter_us_ok_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
@@ -272,7 +251,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ok_sit_tax_rate"/>
<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">

View File

@@ -6,14 +6,11 @@
<field name="code">us_pa_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged for 2021 https://www.uc.pa.gov/employers-uc-services-uc-tax/uc-tax-rates/Pages/Yearly-Tax-Highlights.aspx -->
<record id="rule_parameter_us_pa_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">10000.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_pa_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_pa_suta_rate" model="hr.rule.parameter">
@@ -22,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged for 2021 https://www.uc.pa.gov/employers-uc-services-uc-tax/uc-tax-rates/Pages/Yearly-Tax-Highlights.aspx -->
<record id="rule_parameter_us_pa_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">3.6890</field>
<field name="rule_parameter_id" ref="rule_parameter_us_pa_suta_rate"/>
@@ -36,7 +32,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021 https://www.uc.pa.gov/employers-uc-services-uc-tax/uc-tax-rates/Pages/Yearly-Tax-Highlights.aspx -->
<record id="rule_parameter_us_pa_suta_ee_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.06</field>
<field name="rule_parameter_id" ref="rule_parameter_us_pa_suta_ee_rate"/>
@@ -49,14 +44,11 @@
<field name="code">us_pa_sit_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021 https://www.revenue.pa.gov/GeneralTaxInformation/Tax%20Types%20and%20Information/EmployerWithholding/Pages/default.aspx -->
<record id="rule_parameter_us_pa_sit_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">3.07</field>
<field name="rule_parameter_id" ref="rule_parameter_us_pa_sit_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_pa_dor" model="res.partner">

View File

@@ -6,14 +6,11 @@
<field name="code">us_ri_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 http://www.uitax.ri.gov/ -->
<record id="rule_parameter_us_ri_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">24000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ri_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ri_suta_rate" model="hr.rule.parameter">
@@ -22,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 http://www.uitax.ri.gov/ -->
<record id="rule_parameter_us_ri_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1.06</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ri_suta_rate"/>
@@ -30,13 +26,11 @@
</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 -->
<record id="rule_parameter_us_ri_sit_exemption_rate" model="hr.rule.parameter">
<field name="name">US RI Rhode Island Exemption Rate</field>
<field name="code">us_ri_sit_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ri_sit_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly' : (( 0.00, 19.23), ( 4451.92, 0.00)),
@@ -50,28 +44,13 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ri_sit_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- Page 7 http://www.tax.ri.gov/forms/2021/Withholding/2021%20Withholding%20Tax%20Booklet.pdf -->
<record id="rule_parameter_us_ri_sit_exemption_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly' : (( 0.00, 19.23), ( 4514.42, 0.00)),
'bi-weekly' : (( 0.00, 38.46), ( 9028.85, 0.00)),
'semi-monthly': (( 0.00, 41.67), ( 9781.25, 0.00)),
'monthly' : (( 0.00, 83.33), ( 19562.50, 0.00)),
'quarterly' : (( 0.00, 250.00), ( 58687.50, 0.00)),
'semi-annually': (( 0.00, 500.00), ( 117375.00, 0.00)),
'annually': (( 0.00, 1000.0), ( 234750.00, 0.00)),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ri_sit_exemption_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ri_sit_tax_rate" model="hr.rule.parameter">
<field name="name">US RI Rhode Island SIT Tax Rate</field>
<field name="code">us_ri_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ri_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': (
@@ -113,49 +92,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ri_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- Page 8 http://www.tax.ri.gov/forms/2021/Withholding/2021%20Withholding%20Tax%20Booklet.pdf -->
<record id="rule_parameter_us_ri_sit_tax_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly': (
( 1273, 0.00, 3.75),
( 2895, 47.74, 4.75),
('inf', 124.79, 5.99),
),
'bi-weekly': (
( 2546, 0.00, 3.75),
( 5790, 95.48, 4.75),
('inf', 249.57, 5.99),
),
'semi-monthly': (
( 2758, 0.00, 3.75),
( 6273, 103.43, 4.75),
('inf', 270.39, 5.99),
),
'monthly': (
( 5517, 0.00, 3.75),
(12546, 206.89, 4.75),
('inf', 540.77, 5.99),
),
'quarterly': (
(16550, 0.00, 3.75),
(37638, 620.63, 4.75),
('inf', 1622.31, 5.99),
),
'semi-annually': (
(33100, 0.00, 3.75),
(75275, 1241.25, 4.75),
('inf', 3244.56, 5.99),
),
'annually': (
( 66200, 0.00, 3.75),
(150550, 2482.50, 4.75),
( 'inf', 6489.13, 5.99),
),
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ri_sit_tax_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_ri_dor" model="res.partner">

View File

@@ -6,14 +6,11 @@
<field name="code">us_sc_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://dew.sc.gov/employers/unemployment-insurance-tax-programs/tax-rate -->
<record id="rule_parameter_us_sc_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">14000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_sc_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_sc_suta_rate" model="hr.rule.parameter">
@@ -22,8 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- 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 -->
<!-- Unchanged in 2021 https://dew.sc.gov/employers/unemployment-insurance-tax-programs/tax-rate -->
<record id="rule_parameter_us_sc_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.55</field>
<field name="rule_parameter_id" ref="rule_parameter_us_sc_suta_rate"/>
@@ -36,7 +31,6 @@
<field name="code">us_sc_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_sc_sit_tax_rate_2019" model="hr.rule.parameter.value">
<field name="parameter_value">[
( 2450, 1.1, 0.0),
@@ -49,70 +43,28 @@
<field name="rule_parameter_id" ref="rule_parameter_us_sc_sit_tax_rate"/>
<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.rule.parameter.value">
<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="rule_parameter_id" ref="rule_parameter_us_sc_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- Substraction Method table from https://dor.sc.gov/forms-site/Forms/WH1603F_2021.pdf -->
<record id="rule_parameter_us_sc_sit_tax_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">[
( 2800, 0.5, 0.0),
( 5610, 3.0, 70.00),
( 8410, 4.0, 126.10),
(11220, 5.0, 210.20),
(14030, 6.0, 322.40),
('inf', 7.0, 462.70),
]</field>
<field name="rule_parameter_id" ref="rule_parameter_us_sc_sit_tax_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_sc_sit_personal_exemption_rate" model="hr.rule.parameter">
<field name="name">US SC South Carolina Personal Exemption Rate</field>
<field name="code">us_sc_sit_personal_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_sc_sit_personal_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2590</field>
<field name="rule_parameter_id" ref="rule_parameter_us_sc_sit_personal_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://dor.sc.gov/forms-site/Forms/WH1603F_2021.pdf -->
<record id="rule_parameter_us_sc_sit_personal_exemption_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">2670</field>
<field name="rule_parameter_id" ref="rule_parameter_us_sc_sit_personal_exemption_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_sc_sit_standard_deduction_rate" model="hr.rule.parameter">
<field name="name">US SC South Carolina Standard Deduction Rate</field>
<field name="code">us_sc_sit_standard_deduction_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_sc_sit_standard_deduction_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">3820.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_sc_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_sc_sit_standard_deduction_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">4200</field>
<field name="rule_parameter_id" ref="rule_parameter_us_sc_sit_standard_deduction_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_sc_dor" model="res.partner">

View File

@@ -6,14 +6,11 @@
<field name="code">us_sd_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged for 20201 https://dlr.sd.gov/ra/businesses/default.aspx#:~:text=The%20wage%20base%20for%20calendar,30%2C%202019. -->
<record id="rule_parameter_us_sd_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">15000.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_sd_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_sd_suta_rate" model="hr.rule.parameter">
@@ -22,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged for 20201 https://dlr.sd.gov/ra/businesses/default.aspx#:~:text=The%20wage%20base%20for%20calendar,30%2C%202019. -->
<record id="rule_parameter_us_sd_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1.75</field>
<field name="rule_parameter_id" ref="rule_parameter_us_sd_suta_rate"/>

View File

@@ -6,13 +6,11 @@
<field name="code">us_tn_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_tn_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">7000.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_tn_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_tn_suta_rate" model="hr.rule.parameter">

View File

@@ -6,14 +6,11 @@
<field name="code">us_tx_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://www.twc.texas.gov/businesses/your-tax-rates -->
<record id="rule_parameter_us_tx_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">9000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_tx_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_tx_suta_rate" model="hr.rule.parameter">
@@ -22,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged for 2021 https://www.twc.texas.gov/businesses/new-texas-employer-information#newEmployerTaxRateInformation -->
<record id="rule_parameter_us_tx_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2.7</field>
<field name="rule_parameter_id" ref="rule_parameter_us_tx_suta_rate"/>
@@ -35,28 +31,22 @@
<field name="code">us_tx_suta_oa_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://www.twc.texas.gov/businesses/your-tax-rates#:~:text=The%202020%20Obligation%20Assessment%20Ratio%20(%20OA%20Ratio)%20is%200.00%20percent. -->
<record id="rule_parameter_us_tx_suta_oa_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_tx_suta_oa_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_tx_suta_etia_rate" model="hr.rule.parameter">
<field name="name">US TX Texas Employment &amp; Training Investment Assessment Rate</field>
<field name="code">us_tx_suta_etia_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://www.twc.texas.gov/businesses/your-tax-rates#:~:text=The%20fifth%20component%20of%20your,wages%20paid%20by%20an%20employer. -->
<record id="rule_parameter_us_tx_suta_etia_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.1</field>
<field name="rule_parameter_id" ref="rule_parameter_us_tx_suta_etia_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_tx_dor" model="res.partner">

View File

@@ -6,19 +6,11 @@
<field name="code">us_ut_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_ut_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">36600.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ut_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://jobs.utah.gov/UI/Employer/Public/Questions/TaxRates.aspx#:~:text=For%202021%2C%20the%20minimum%20overall,to%20the%20overall%20tax%20rate.-->
<record id="rule_parameter_us_ut_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">38900.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ut_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_ut_suta_rate" model="hr.rule.parameter">
@@ -32,13 +24,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ut_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://jobs.utah.gov/UI/Employer/Public/Questions/TaxRates.aspx#:~:text=For%202021%2C%20the%20minimum%20overall,to%20the%20overall%20tax%20rate.-->
<!-- Benefit Ratio(unique to client) X Reserve Factor(1.05% for 2021) + Social Cost(.002)-->
<record id="rule_parameter_us_ut_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">0.1052</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ut_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_ut_tax_rate" model="hr.rule.parameter">
@@ -46,24 +31,17 @@
<field name="code">us_ut_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- rates unchanged in 2021-->
<record id="rule_parameter_us_ut_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.0495</field>
<field name="rule_parameter_id" ref="rule_parameter_us_ut_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Table based on https://tax.utah.gov/forms/pubs/pub-14.pdf -->
<record id="rule_parameter_us_ut_sit_allowances_rate" model="hr.rule.parameter">
<field name="name">US UT Utah Allowances Rate</field>
<field name="code">us_ut_sit_allowances_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Table based on https://tax.utah.gov/forms/pubs/pub-14.pdf -->
<!-- Note at top of page 12:-->
<!-- "Note: Use the Single column for taxpayers who file as head-of-household on their federal return." -->
<record id="rule_parameter_us_ut_sit_allowances_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
@@ -97,16 +75,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ut_sit_allowances_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Table based on https://tax.utah.gov/forms/pubs/pub-14.pdf -->
<record id="rule_parameter_us_ut_sit_tax_rate" model="hr.rule.parameter">
<field name="name">US UT Utah SIT Tax Rate</field>
<field name="code">us_ut_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- unchanged in 2021-->
<!-- see page 9 line 4 and line 5 in schedules https://tax.utah.gov/forms/pubs/pub-14.pdf-->
<record id="rule_parameter_us_ut_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
@@ -140,7 +114,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_ut_sit_tax_rate"/>
<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">

View File

@@ -6,14 +6,11 @@
<field name="code">us_va_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://www.vec.virginia.gov/employers/faqs/Employer-UI-Tax-Questions -->
<record id="rule_parameter_us_va_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">8000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_va_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_va_suta_rate" model="hr.rule.parameter">
@@ -27,23 +24,13 @@
<field name="rule_parameter_id" ref="rule_parameter_us_va_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://www.vec.virginia.gov/employers/faqs/Employer-UI-Tax-Questions -->
<record id="rule_parameter_us_va_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">2.5</field>
<field name="rule_parameter_id" ref="rule_parameter_us_va_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Table page no 10 based https://www.tax.virginia.gov/sites/default/files/inline-files/Employer%20Withholding%20Instructions.pdf -->
<record id="rule_parameter_us_va_sit_rate" model="hr.rule.parameter">
<field name="name">US VA Virginia SIT Rate Table</field>
<field name="code">us_va_sit_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://www.business.tax.virginia.gov/calculators/withholding-calculator.cfm -->
<record id="rule_parameter_us_va_sit_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">[
( 0.00, 0.0, 2.00),
@@ -54,49 +41,39 @@
<field name="rule_parameter_id" ref="rule_parameter_us_va_sit_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_va_sit_exemption_rate" model="hr.rule.parameter">
<field name="name">US VA Virginia SIT Exemption Rate Table</field>
<field name="code">us_va_sit_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://www.business.tax.virginia.gov/calculators/withholding-calculator.cfm -->
<record id="rule_parameter_us_va_sit_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">930.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_va_sit_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_va_sit_other_exemption_rate" model="hr.rule.parameter">
<field name="name">US VA Virginia SIT Other Exemption Rate Table</field>
<field name="code">us_va_sit_other_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://www.business.tax.virginia.gov/calculators/withholding-calculator.cfm -->
<record id="rule_parameter_us_va_sit_other_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">800.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_va_sit_other_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_va_sit_deduction" model="hr.rule.parameter">
<field name="name">US VA Virginia SIT Deduction</field>
<field name="code">us_va_sit_deduction</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://www.business.tax.virginia.gov/calculators/withholding-calculator.cfm -->
<record id="rule_parameter_us_va_sit_deduction_2020" model="hr.rule.parameter.value">
<field name="parameter_value">4500.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_va_sit_deduction"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_va_dor" model="res.partner">

View File

@@ -1,23 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Wage Base from https://labor.vermont.gov/unemployment-insurance/ui-employers/quarterly-reporting-taxable-wage-information -->
<!-- Wage Base -->
<record id="rule_parameter_us_vt_suta_wage_base" model="hr.rule.parameter">
<field name="name">US VT Vermont SUTA Wage Base</field>
<field name="code">us_vt_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_vt_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">16100.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_vt_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_vt_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">14100.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_vt_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_vt_suta_rate" model="hr.rule.parameter">
@@ -26,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://labor.vermont.gov/unemployment-insurance/ui-employers/unemployment-tax-rates -->
<record id="rule_parameter_us_vt_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_vt_suta_rate"/>
@@ -39,7 +31,6 @@
<field name="code">us_vt_sit_allowances_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_vt_sit_allowances_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly' : 83.65,
@@ -52,27 +43,12 @@
<field name="rule_parameter_id" ref="rule_parameter_us_vt_sit_allowances_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://tax.vermont.gov/sites/tax/files/documents/GB-1210-2021.pdf -->
<record id="rule_parameter_us_vt_sit_allowances_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly' : 84.62,
'bi-weekly' : 169.23,
'semi-monthly': 183.33,
'monthly' : 366.67,
'quarterly' : 1100.00,
'annually': 4400.00,
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_vt_sit_allowances_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Table based on https://tax.vermont.gov/sites/tax/files/documents/WithholdingInstructions.pdf-->
<record id="rule_parameter_us_vt_sit_tax_rate" model="hr.rule.parameter">
<field name="name">US VT Vermont SIT Tax Rate</field>
<field name="code">us_vt_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_vt_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
@@ -167,102 +143,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_vt_sit_tax_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://tax.vermont.gov/sites/tax/files/documents/GB-1210-2021.pdf -->
<record id="rule_parameter_us_vt_sit_tax_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
'weekly': (
( 61, 0.00, 0.00),
( 849, 0.00, 3.35),
( 1969, 26.40, 6.60),
( 4041, 100.32, 7.60),
('inf', 257.79, 8.75),
),
'bi-weekly': (
( 122, 0.00, 0.00),
( 1697, 0.00, 3.35),
( 3938, 52.76, 6.60),
( 8082, 200.67, 7.60),
('inf', 515.61, 8.75),
),
'semi-monthly': (
( 132, 0.00, 0.00),
( 1839, 0.00, 3.35),
( 4266, 57.18, 6.60),
( 8755, 217.37, 7.60),
('inf', 558.53, 8.75),
),
'monthly': (
( 265, 0.00, 0.00),
( 3677, 0.00, 3.35),
( 8531, 114.30, 6.60),
(17510, 434.67, 7.60),
('inf', 1117.07, 8.75),
),
'quarterly': (
( 794, 0.00, 0.00),
(11031, 0.00, 3.35),
(25594, 342.94, 6.60),
(52531, 1304.10, 7.60),
('inf', 3351.31, 8.75),
),
'annually': (
( 3175, 0.00, 0.00),
( 44125, 0.00, 3.35),
(102375, 1371.83, 6.60),
(210125, 5216.33, 7.60),
( 'inf', 13405.33, 8.75),
),
},
'married': {
'weekly': (
( 183, 0.00, 0.00),
( 1499, 0.00, 3.35),
( 3363, 44.09, 6.60),
( 5028, 167.11, 7.60),
('inf', 293.65, 8.75),
),
'bi-weekly': (
( 366, 0.00, 0.00),
( 2997, 0.00, 3.35),
( 6726, 88.14, 6.60),
(10057, 334.25, 7.60),
('inf', 587.41, 8.75),
),
'semi-monthly': (
( 397, 0.00, 0.00),
( 3247, 0.00, 3.35),
( 7286, 95.48, 6.60),
(10895, 362.05, 7.60),
('inf', 636.33, 8.75),
),
'monthly': (
( 794, 0.00, 0.00),
( 6494, 0.00, 3.35),
(14573, 190.95, 6.60),
(21790, 724.16, 7.60),
('inf', 1272.66, 8.75),
),
'quarterly': (
( 2381, 0.00, 0.00),
(19481, 0.00, 3.35),
(43719, 572.85, 6.60),
(65719, 2172.56, 7.60),
('inf', 3817.96, 8.75),
),
'annually': (
( 9525, 0.00, 0.00),
( 77925, 0.00, 3.35),
(174875, 2291.40, 6.60),
(261475, 8690.10, 7.60),
( 'inf', 15271.70, 8.75),
),
},
}</field>
<field name="rule_parameter_id" ref="rule_parameter_us_vt_sit_tax_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_vt_dor" model="res.partner">

View File

@@ -1,44 +1,27 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- No Income Tax in Washington https://dor.wa.gov/taxes-rates/income-tax-->
<!-- Wage Base -->
<!-- https://esd.wa.gov/employer-taxes/rates#:~:text=State%20Unemployment%20Taxes%20(SUTA),increasing%20from%20%2452%2C700%20in%202020.-->
<record id="rule_parameter_us_wa_suta_wage_base" model="hr.rule.parameter">
<field name="name">US WA Washington SUTA Wage Base</field>
<field name="code">us_wa_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_wa_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">52700.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wa_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_wa_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">56500.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wa_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_wa_fml_wage_base" model="hr.rule.parameter">
<field name="name">US WA Washington FML Wage Base</field>
<field name="code">us_wa_fml_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://paidleave.wa.gov/estimate-your-paid-leave-payments/-->
<record id="rule_parameter_us_wa_fml_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">137700.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wa_fml_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_wa_fml_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">142800.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wa_fml_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_wa_suta_rate" model="hr.rule.parameter">
@@ -46,23 +29,12 @@
<field name="code">us_wa_suta_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- todo: need to figure out how this was/is calculated-->
<data noupdate="1">
<record id="rule_parameter_us_wa_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">1.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wa_suta_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- https://esd.wa.gov/employer-taxes/determining-rates-->
<!-- At the above link and under the "New Employers" Header:-->
<!-- "For 2021, new employers will pay 115 percent of the average rate for all businesses in their respective industries."-->
<!-- Under "Average tax rates: "The 2021 average tax rate is 1.88%"-->
<!-- (1.88 * 1.15) = 2.16-->
<record id="rule_parameter_us_wa_suta_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">2.16</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wa_suta_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_wa_fml_rate" model="hr.rule.parameter">
@@ -70,59 +42,45 @@
<field name="code">us_wa_fml_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- https://resources.paidleave.wa.gov/premium-calculator-->
<record id="rule_parameter_us_wa_fml_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.4</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wa_fml_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_wa_fml_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">0.4</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wa_fml_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_wa_fml_rate_ee" model="hr.rule.parameter">
<field name="name">US WA Washington FML Rate (Employee)</field>
<field name="code">us_wa_fml_rate_ee</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_wa_fml_rate_ee_2020" model="hr.rule.parameter.value">
<field name="parameter_value">66.33</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wa_fml_rate_ee"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- Bullet 4 in: https://resources.paidleave.wa.gov/premium-calculator-->
<!-- "Employers may withhold up to 63.33% of the total premium from an employee."-->
<record id="rule_parameter_us_wa_fml_rate_ee_2021" model="hr.rule.parameter.value">
<field name="parameter_value">63.33</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wa_fml_rate_ee"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_wa_fml_rate_er" model="hr.rule.parameter">
<field name="name">US WA Washington FML Rate (Employer)</field>
<field name="code">us_wa_fml_rate_er</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_wa_fml_rate_er_2020" model="hr.rule.parameter.value">
<field name="parameter_value">33.67</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wa_fml_rate_er"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- Bullet 4 also says in: https://resources.paidleave.wa.gov/premium-calculator-->
<!-- "The employer is responsible for paying the other 36.67%"-->
<record id="rule_parameter_us_wa_fml_rate_er_2021" model="hr.rule.parameter.value">
<field name="parameter_value">36.67</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wa_fml_rate_er"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
<record id="rule_parameter_us_wa_cares_rate_ee" model="hr.rule.parameter">
<field name="name">US WA Washington Cares (Employee)</field>
<field name="code">us_wa_cares_rate_ee</field>
<field name="country_id" ref="base.us"/>
</record>
<!-- didn't exist but helpful to back date for tests -->
<record id="rule_parameter_us_wa_cares_rate_ee_2020" model="hr.rule.parameter.value">
<field name="parameter_value">0.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wa_cares_rate_ee"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Partners and Contribution Registers -->
<record id="res_partner_us_wa_dor" model="res.partner">
@@ -191,6 +149,21 @@
<field name="partner_id" ref="res_partner_us_wa_dor_fml"/>
<field name="appears_on_payslip" eval="True"/>
</record>
<record id="hr_payroll_rule_ee_us_wa_cares" model="hr.salary.rule">
<field name="sequence" eval="197"/>
<field name="struct_id" ref="hr_payroll_structure"/>
<field name="category_id" ref="hr_payroll.DED"/>
<field name="name">EE: US WA Washington State Cares</field>
<field name="code">EE_US_WA_CARES</field>
<field name="condition_select">python</field>
<field name="condition_python">result, _ = wa_washington_cares_ee(payslip, categories, worked_days, inputs)
</field>
<field name="amount_select">code</field>
<field name="amount_python_compute">result, result_rate = wa_washington_cares_ee(payslip, categories, worked_days, inputs)
</field>
<field name="partner_id" ref="res_partner_us_wa_dor_fml"/>
<field name="appears_on_payslip" eval="True"/>
</record>
<!-- LNI May need to be updated depending on hours worked (or drywall laid) -->
<record id="hr_payroll_rule_er_us_wa_lni" model="hr.salary.rule">

View File

@@ -6,14 +6,11 @@
<field name="code">us_wi_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://dwd.wisconsin.gov/ui/employers/taxrates.htm -->
<record id="rule_parameter_us_wi_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">14000.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wi_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_wi_suta_rate" model="hr.rule.parameter">
@@ -22,8 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Rate based on this file https://dwd.wisconsin.gov/ui/employers/taxrates.htm -->
<!-- Unchanged in 2021 -->
<record id="rule_parameter_us_wi_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">3.05</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wi_suta_rate"/>
@@ -36,22 +31,28 @@
<field name="code">us_wi_sit_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_wi_sit_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">22</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wi_sit_exemption_rate"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<record id="rule_parameter_us_wi_sit_deduction_rate" model="hr.rule.parameter">
<field name="name">US WI Wisconsin SIT Deduction Rate</field>
<field name="code">us_wi_sit_deduction_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<record id="rule_parameter_us_wi_sit_deduction_rate_2021" model="hr.rule.parameter.value">
<field name="parameter_value">False</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wi_sit_deduction_rate"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
<record id="rule_parameter_us_wi_sit_tax_rate" model="hr.rule.parameter">
<field name="name">US WI Wisconsin SIT Tax Rate</field>
<field name="code">us_wi_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Table based on https://www.revenue.wi.gov/DOR%20Publications/pb166.pdf page 25. -->
<!-- Unchanged in 2021 -->
<record id="rule_parameter_us_wi_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': (
@@ -76,7 +77,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_wi_sit_tax_rate"/>
<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">

View File

@@ -6,14 +6,11 @@
<field name="code">us_wv_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged for 2021 https://workforcewv.org/images/files/employers/Employer_Handbook.pdf -->
<record id="rule_parameter_us_wv_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">12000.0</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wv_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_wv_suta_rate" model="hr.rule.parameter">
@@ -22,7 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged for 2021 https://workforcewv.org/images/files/employers/Employer_Handbook.pdf -->
<record id="rule_parameter_us_wv_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">2.7</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wv_suta_rate"/>
@@ -30,14 +26,11 @@
</record>
</data>
<!-- Table base on this https://tax.wv.gov/Documents/TaxForms/it100.1a.pdf page 16-->
<record id="rule_parameter_us_wv_sit_exemption_rate" model="hr.rule.parameter">
<field name="name">US WV West Virginia Exemption Rate</field>
<field name="code">us_wv_sit_exemption_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged for 2021 https://tax.wv.gov/Documents/TaxForms/it100.1a.pdf -->
<record id="rule_parameter_us_wv_sit_exemption_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'weekly' : 38.46,
@@ -49,15 +42,13 @@
<field name="rule_parameter_id" ref="rule_parameter_us_wv_sit_exemption_rate"/>
<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-->
<record id="rule_parameter_us_wv_sit_tax_rate" model="hr.rule.parameter">
<field name="name">US WV West Virginia SIT Tax Rate</field>
<field name="code">us_wv_sit_tax_rate</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Unchanged in 2021 https://tax.wv.gov/Documents/TaxForms/it100.1a.pdf -->
<record id="rule_parameter_us_wv_sit_tax_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">{
'single': {
@@ -175,7 +166,6 @@
<field name="rule_parameter_id" ref="rule_parameter_us_wv_sit_tax_rate"/>
<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">

View File

@@ -6,19 +6,11 @@
<field name="code">us_wy_suta_wage_base</field>
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<record id="rule_parameter_us_wy_suta_wage_base_2020" model="hr.rule.parameter.value">
<field name="parameter_value">26400.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wy_suta_wage_base"/>
<field name="date_from" eval="datetime(2020, 1, 1).date()"/>
</record>
<!-- http://wyomingworkforce.org/businesses/ui/utwb/ -->
<record id="rule_parameter_us_wy_suta_wage_base_2021" model="hr.rule.parameter.value">
<field name="parameter_value">27300.00</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wy_suta_wage_base"/>
<field name="date_from" eval="datetime(2021, 1, 1).date()"/>
</record>
</data>
<!-- Rate -->
<record id="rule_parameter_us_wy_suta_rate" model="hr.rule.parameter">
@@ -27,9 +19,6 @@
<field name="country_id" ref="base.us"/>
</record>
<data noupdate="1">
<!-- Except as otherwise provided by law, the base rate of contributions assigned to any employer is eight and one-half percent (8.5%) -->
<!-- 27-3-503 (b) https://law.justia.com/codes/wyoming/2010/Title27/chapter3.html -->
<!-- 2020 Statuses > 20Titles > Title 27 > Chapter 3 > Article 5 > 27-3-503 > (b) -->
<record id="rule_parameter_us_wy_suta_rate_2020" model="hr.rule.parameter.value">
<field name="parameter_value">8.5</field>
<field name="rule_parameter_id" ref="rule_parameter_us_wy_suta_rate"/>

View File

@@ -48,7 +48,8 @@ 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.wa_washington import wa_washington_fml_er, \
wa_washington_fml_ee
wa_washington_fml_ee, \
wa_washington_cares_ee
from .state.wi_wisconsin import wi_wisconsin_state_income_withholding
from .state.wv_west_virginia import wv_west_virginia_state_income_withholding
@@ -119,6 +120,7 @@ class HRPayslip(models.Model):
'va_virginia_state_income_withholding': va_virginia_state_income_withholding,
'wa_washington_fml_er': wa_washington_fml_er,
'wa_washington_fml_ee': wa_washington_fml_ee,
'wa_washington_cares_ee': wa_washington_cares_ee,
'wi_wisconsin_state_income_withholding': wi_wisconsin_state_income_withholding,
'wv_west_virginia_state_income_withholding': wv_west_virginia_state_income_withholding,
})

View File

@@ -94,5 +94,7 @@ def ca_california_state_income_withholding(payslip, categories, worked_days, inp
deduction = exemption_allowances[allowance_index]
withholding -= deduction
if withholding < 0.0:
withholding = 0.0
withholding += additional
return wage, -((withholding / wage) * 100.0)

View File

@@ -32,14 +32,7 @@ def la_louisiana_state_income_withholding(payslip, categories, worked_days, inpu
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
effect_cap, multiplier = tax_table[0]
after_credits_under = (2.100 / 100) * (((personal_exemptions * exemption_rate) +
(dependent_exemptions * dependent_rate)) / pay_periods)

View File

@@ -25,3 +25,11 @@ def wa_washington_fml_er(payslip, categories, worked_days, inputs):
def wa_washington_fml_ee(payslip, categories, worked_days, inputs):
return _wa_washington_fml(payslip, categories, worked_days, inputs, inner_rate='us_wa_fml_rate_ee')
def wa_washington_cares_ee(payslip, categories, worked_days, inputs):
if not _state_applies(payslip, 'WA'):
return 0.0, 0.0
wage = categories.GROSS
rate = payslip.rule_parameter('us_wa_cares_rate_ee')
# Rate assumed positive percentage!
return wage, -rate

View File

@@ -29,15 +29,41 @@ def wi_wisconsin_state_income_withholding(payslip, categories, worked_days, inpu
additional = payslip.contract_id.us_payroll_config_value('state_income_tax_additional_withholding')
exemptions = payslip.contract_id.us_payroll_config_value('wi_wt4_sit_exemptions')
exemption_amt = payslip.rule_parameter('us_wi_sit_exemption_rate')
tax_table = payslip.rule_parameter('us_wi_sit_tax_rate')[filing_status]
# deduction_table introduced in 2022
deduction_table = payslip.rule_parameter('us_wi_sit_deduction_rate')
if deduction_table:
deduction_table = deduction_table[filing_status]
# tax_table simplified in 2022
tax_table = payslip.rule_parameter('us_wi_sit_tax_rate')
if isinstance(tax_table, dict):
tax_table = tax_table[filing_status]
taxable_income = wage * pay_periods # (a)
if deduction_table:
deduction = 0.0
last_wage_cap = 0.0
last_deduction = 0.0
last_rate = 0.0
for row in deduction_table:
wage_cap, deduction, rate = row
if taxable_income <= wage_cap:
if last_rate:
deduction = last_deduction - ((taxable_income - last_wage_cap) * last_rate / 100.0)
break
last_wage_cap, last_deduction, last_rate = row
taxable_income -= deduction # (b)
taxable_income -= exemption_amt * exemptions # (c)
if taxable_income <= 0.0:
return 0.0, 0.0
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)
withholding = (((taxable_income - last) * (rate / 100)) + flat_fee)
break
last = amt

View File

@@ -1,7 +1,7 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
import datetime
from odoo import fields, models
from odoo import api, fields, models
class PublisherWarrantyContract(models.AbstractModel):
@@ -24,3 +24,9 @@ class PublisherWarrantyContract(models.AbstractModel):
except:
pass
return modules
@api.model
def hibou_payroll_modules_to_update(self):
res = super().hibou_payroll_modules_to_update()
res.append('l10n_us_hr_payroll')
return res

149
l10n_us_hr_payroll/tests/__init__.py Executable file → Normal file
View File

@@ -1,149 +1,6 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
# Tests moved to `l10n_us_hr_payroll_params`
# common remains for site specific tests
from . import common
from . import test_special
from . import test_us_payslip_2020
from . import test_us_payslip_2021
from . import test_us_ak_alaska_payslip_2020
from . import test_us_ak_alaska_payslip_2021
from . import test_us_al_alabama_payslip_2020
from . import test_us_al_alabama_payslip_2021
from . import test_us_ar_arkansas_payslip_2020
from . import test_us_ar_arkansas_payslip_2021
from . import test_us_az_arizona_payslip_2020
from . import test_us_az_arizona_payslip_2021
from . import test_us_ca_california_payslip_2020
from . import test_us_ca_california_payslip_2021
from . import test_us_co_colorado_payslip_2020
from . import test_us_co_colorado_payslip_2021
from . import test_us_ct_connecticut_payslip_2020
from . import test_us_ct_connecticut_payslip_2021
from . import test_us_de_delaware_payslip_2020
from . import test_us_de_delaware_payslip_2021
from . import test_us_fl_florida_payslip_2020
from . import test_us_fl_florida_payslip_2021
from . import test_us_ga_georgia_payslip_2020
from . import test_us_ga_georgia_payslip_2021
from . import test_us_hi_hawaii_payslip_2020
from . import test_us_hi_hawaii_payslip_2021
from . import test_us_ia_iowa_payslip_2020
from . import test_us_ia_iowa_payslip_2021
from . import test_us_id_idaho_payslip_2020
from . import test_us_id_idaho_payslip_2021
from . import test_us_il_illinois_payslip_2020
from . import test_us_il_illinois_payslip_2021
from . import test_us_in_indiana_payslip_2020
from . import test_us_in_indiana_payslip_2021
from . import test_us_ky_kentucky_payslip_2020
from . import test_us_ky_kentucky_payslip_2021
from . import test_us_ks_kansas_payslip_2020
from . import test_us_ks_kansas_payslip_2021
from . import test_us_la_louisiana_payslip_2020
from . import test_us_la_louisiana_payslip_2021
from . import test_us_me_maine_payslip_2020
from . import test_us_me_maine_payslip_2021
from . import test_us_mi_michigan_payslip_2020
from . import test_us_mi_michigan_payslip_2021
from . import test_us_mn_minnesota_payslip_2020
from . import test_us_mn_minnesota_payslip_2021
from . import test_us_mo_missouri_payslip_2020
from . import test_us_mo_missouri_payslip_2021
from . import test_us_ms_mississippi_payslip_2020
from . import test_us_ms_mississippi_payslip_2021
from . import test_us_mt_montana_payslip_2020
from . import test_us_mt_montana_payslip_2021
from . import test_us_nc_northcarolina_payslip_2020
from . import test_us_nc_northcarolina_payslip_2021
from . import test_us_nd_north_dakota_payslip_2020
from . import test_us_nd_north_dakota_payslip_2021
from . import test_us_ne_nebraska_payslip_2020
from . import test_us_ne_nebraska_payslip_2021
from . import test_us_nh_new_hampshire_payslip_2020
from . import test_us_nh_new_hampshire_payslip_2021
from . import test_us_nj_newjersey_payslip_2020
from . import test_us_nj_newjersey_payslip_2021
from . import test_us_nm_new_mexico_payslip_2020
from . import test_us_nm_new_mexico_payslip_2021
from . import test_us_nv_nevada_payslip_2020
from . import test_us_nv_nevada_payslip_2021
from . import test_us_ny_new_york_payslip_2020
from . import test_us_ny_new_york_payslip_2021
from . import test_us_oh_ohio_payslip_2020
from . import test_us_oh_ohio_payslip_2021
from . import test_us_ok_oklahoma_payslip_2020
from . import test_us_ok_oklahoma_payslip_2021
from . import test_us_pa_pennsylvania_payslip_2020
from . import test_us_pa_pennsylvania_payslip_2021
from . import test_us_ri_rhode_island_payslip_2020
from . import test_us_ri_rhode_island_payslip_2021
from . import test_us_sc_south_carolina_payslip_2020
from . import test_us_sc_south_carolina_payslip_2021
from . import test_us_sd_south_dakota_payslip_2020
from . import test_us_sd_south_dakota_payslip_2021
from . import test_us_tn_tennessee_payslip_2020
from . import test_us_tn_tennessee_payslip_2021
from . import test_us_tx_texas_payslip_2020
from . import test_us_tx_texas_payslip_2021
from . import test_us_us_utah_payslip_2020
from . import test_us_us_utah_payslip_2021
from . import test_us_vt_vermont_payslip_2020
from . import test_us_vt_vermont_payslip_2021
from . import test_us_va_virginia_payslip_2020
from . import test_us_va_virginia_payslip_2021
from . import test_us_wa_washington_payslip_2020
from . import test_us_wa_washington_payslip_2021
from . import test_us_wv_west_virginia_payslip_2020
from . import test_us_wv_west_virginia_payslip_2021
from . import test_us_wi_wisconsin_payslip_2020
from . import test_us_wi_wisconsin_payslip_2021
from . import test_us_wy_wyoming_payslip_2020
from . import test_us_wy_wyoming_payslip_2021

View File

@@ -1,15 +0,0 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
from datetime import date
from .common import TestUsPayslip
class TestUsAKPayslip(TestUsPayslip):
# TAXES AND RATES
AK_UNEMP_MAX_WAGE = 41500.00
AK_UNEMP = 1.590
AK_UNEMP_EE = 0.5
def test_2020_taxes(self):
self._test_er_suta('AK', self.AK_UNEMP, date(2020, 1, 1), wage_base=self.AK_UNEMP_MAX_WAGE)
self._test_ee_suta('AK', self.AK_UNEMP_EE, date(2020, 1, 1), wage_base=self.AK_UNEMP_MAX_WAGE)

View File

@@ -1,15 +0,0 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
from datetime import date
from .common import TestUsPayslip
class TestUsAKPayslip(TestUsPayslip):
# TAXES AND RATES
AK_UNEMP_MAX_WAGE = 43600.00
AK_UNEMP = 2.57
AK_UNEMP_EE = 0.5
def test_2021_taxes(self):
self._test_er_suta('AK', self.AK_UNEMP, date(2021, 1, 1), wage_base=self.AK_UNEMP_MAX_WAGE)
self._test_ee_suta('AK', self.AK_UNEMP_EE, date(2021, 1, 1), wage_base=self.AK_UNEMP_MAX_WAGE)

View File

@@ -1,36 +0,0 @@
# 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 TestUsALPayslip(TestUsPayslip):
# Taxes and Rates
AL_UNEMP_MAX_WAGE = 8000.00
AL_UNEMP = 2.70
def _test_sit(self, wage, exempt, exemptions, additional_withholding, dependent, schedule_pay, date_start, expected_withholding):
employee = self._createEmployee()
contract = self._createContract(employee,
wage=wage,
state_id=self.get_us_state('AL'),
al_a4_sit_exemptions=exempt,
state_income_tax_exempt=exemptions,
state_income_tax_additional_withholding=additional_withholding,
al_a4_sit_dependents=dependent,
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('AL', self.AL_UNEMP, date(2020, 1, 1), wage_base=self.AL_UNEMP_MAX_WAGE)
self._test_sit(10000.0, 'S', False, 0.0, 1.0, 'weekly', date(2020, 1, 1), 349.08)
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(20000.0, 'MS', False, 2.0, 0, 'monthly', date(2020, 1, 1), 757.6)
self._test_sit(5500.0, '', True, 2.0, 150, 'weekly', date(2020, 1, 1), 0.00)

View File

@@ -1,36 +0,0 @@
# 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 TestUsALPayslip(TestUsPayslip):
# Taxes and Rates
AL_UNEMP_MAX_WAGE = 8000.00
AL_UNEMP = 2.70
def _test_sit(self, wage, exempt, exemptions, additional_withholding, dependent, schedule_pay, date_start, expected_withholding):
employee = self._createEmployee()
contract = self._createContract(employee,
wage=wage,
state_id=self.get_us_state('AL'),
al_a4_sit_exemptions=exempt,
state_income_tax_exempt=exemptions,
state_income_tax_additional_withholding=additional_withholding,
al_a4_sit_dependents=dependent,
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_2021_taxes_example(self):
self._test_er_suta('AL', self.AL_UNEMP, date(2021, 1, 1), wage_base=self.AL_UNEMP_MAX_WAGE)
self._test_sit(10000.0, 'S', False, 0.0, 1.0, 'weekly', date(2021, 1, 1), 349.37)
self._test_sit(850.0, 'M', False, 0.0, 2.0, 'weekly', date(2021, 1, 1), 30.00)
self._test_sit(5000.0, 'H', False, 0.0, 2.0, 'bi-weekly', date(2021, 1, 1), 191.33)
self._test_sit(20000.0, 'MS', False, 2.0, 0, 'monthly', date(2021, 1, 1), 758.86)
self._test_sit(5500.0, '', True, 2.0, 150, 'weekly', date(2021, 1, 1), 0.00)

View File

@@ -1,35 +0,0 @@
# 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 TestUsARPayslip(TestUsPayslip):
# Taxes and Rates
AR_UNEMP_MAX_WAGE = 8000.0
AR_UNEMP = 2.9
def _test_sit(self, wage, exemptions, allowances, additional_withholding, schedule_pay, date_start, expected_withholding):
employee = self._createEmployee()
contract = self._createContract(employee,
wage=wage,
state_id=self.get_us_state('AR'),
state_income_tax_exempt=exemptions,
state_income_tax_additional_withholding=additional_withholding,
ar_ar4ec_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.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding)
def test_2020_taxes_example(self):
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, False, 0.0, 0, 'monthly', date(2020, 1, 1), 221.0)
self._test_sit(700.0, False, 0.0, 150, 'weekly', date(2020, 1, 1), 175.0)
self._test_sit(7000.0, False, 2.0, 0, 'semi-monthly', date(2020, 1, 1), 420.0)
self._test_sit(3000.0, False, 1.0, 0, 'bi-weekly', date(2020, 1, 1), 142.0)

View File

@@ -1,35 +0,0 @@
# 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 TestUsARPayslip(TestUsPayslip):
# Taxes and Rates
AR_UNEMP_MAX_WAGE = 10000.0
AR_UNEMP = 3.2
def _test_sit(self, wage, exemptions, allowances, additional_withholding, schedule_pay, date_start, expected_withholding):
employee = self._createEmployee()
contract = self._createContract(employee,
wage=wage,
state_id=self.get_us_state('AR'),
state_income_tax_exempt=exemptions,
state_income_tax_additional_withholding=additional_withholding,
ar_ar4ec_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.assertPayrollEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding)
def test_2021_taxes_example(self):
self._test_er_suta('AR', self.AR_UNEMP, date(2021, 1, 1), wage_base=self.AR_UNEMP_MAX_WAGE)
self._test_sit(5000.0, True, 0.0, 0, 'monthly', date(2021, 1, 1), 0.0)
self._test_sit(5000.0, False, 0.0, 0, 'monthly', date(2021, 1, 1), 220.0)
self._test_sit(700.0, False, 0.0, 150, 'weekly', date(2021, 1, 1), 175.0)
self._test_sit(7000.0, False, 2.0, 0, 'semi-monthly', date(2021, 1, 1), 395.0)
self._test_sit(3000.0, False, 1.0, 0, 'bi-weekly', date(2021, 1, 1), 141.0)

View File

@@ -1,34 +0,0 @@
# 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 TestUsAZPayslip(TestUsPayslip):
# Taxes and Rates
AZ_UNEMP_MAX_WAGE = 7000.0
AZ_UNEMP = 2.0
def _test_sit(self, wage, additional_withholding, withholding_percent, schedule_pay, date_start, expected_withholding):
employee = self._createEmployee()
contract = self._createContract(employee,
wage=wage,
state_id=self.get_us_state('AZ'),
state_income_tax_additional_withholding=additional_withholding,
az_a4_sit_withholding_percentage=withholding_percent,
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('AZ', self.AZ_UNEMP, date(2020, 1, 1), wage_base=self.AZ_UNEMP_MAX_WAGE)
self._test_sit(1000.0, 0.0, 2.70, 'monthly', date(2020, 1, 1), 27.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(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)

View File

@@ -1,34 +0,0 @@
# 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 TestUsAZPayslip(TestUsPayslip):
# Taxes and Rates
AZ_UNEMP_MAX_WAGE = 7000.0
AZ_UNEMP = 2.0
def _test_sit(self, wage, additional_withholding, withholding_percent, schedule_pay, date_start, expected_withholding):
employee = self._createEmployee()
contract = self._createContract(employee,
wage=wage,
state_id=self.get_us_state('AZ'),
state_income_tax_additional_withholding=additional_withholding,
az_a4_sit_withholding_percentage=withholding_percent,
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_2021_taxes_example(self):
self._test_er_suta('AZ', self.AZ_UNEMP, date(2021, 1, 1), wage_base=self.AZ_UNEMP_MAX_WAGE)
self._test_sit(1000.0, 0.0, 2.70, 'monthly', date(2021, 1, 1), 27.0)
self._test_sit(1000.0, 10.0, 2.70, 'monthly', date(2021, 1, 1), 37.0)
self._test_sit(15000.0, 0.0, 3.60, 'weekly', date(2021, 1, 1), 540.0)
self._test_sit(8000.0, 0.0, 4.20, 'semi-monthly', date(2021, 1, 1), 336.0)
self._test_sit(8000.0, 0.0, 0.00, 'semi-monthly', date(2021, 1, 1), 0.0)

View File

@@ -1,43 +0,0 @@
# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details.
from datetime import date, timedelta
from .common import TestUsPayslip
class TestUsCAPayslip(TestUsPayslip):
###
# 2020 Taxes and Rates
###
CA_UNEMP_MAX_WAGE = 7000.0 # Note that this is used for SDI and FLI as well
CA_UIT = 3.4
CA_ETT = 0.1
CA_SDI = 1.0
def _test_sit(self, wage, filing_status, allowances, additional_allowances, additional_withholding, schedule_pay, date_start, expected_withholding):
employee = self._createEmployee()
contract = self._createContract(employee,
wage=wage,
state_id=self.get_us_state('CA'),
ca_de4_sit_filing_status=filing_status,
ca_de4_sit_allowances=allowances,
ca_de4_sit_additional_allowances=additional_allowances,
state_income_tax_additional_withholding=additional_withholding,
schedule_pay=schedule_pay)
payslip = self._createPayslip(employee, date_start, date_start + timedelta(days=7))
payslip.compute_sheet()
cats = self._getCategories(payslip)
self.assertPayrollAlmostEqual(cats.get('EE_US_SIT', 0.0), -expected_withholding if filing_status else 0.0)
def test_2020_taxes_example1(self):
combined_er_rate = self.CA_UIT + self.CA_ETT
self._test_er_suta('CA', combined_er_rate, date(2020, 1, 1), wage_base=self.CA_UNEMP_MAX_WAGE)
self._test_ee_suta('CA', self.CA_SDI, date(2020, 1, 1), wage_base=self.CA_UNEMP_MAX_WAGE, relaxed=True)
# these expected values come from https://www.edd.ca.gov/pdf_pub_ctr/20methb.pdf
self._test_sit(210.0, 'single', 1, 0, 0, 'weekly', date(2020, 1, 1), 0.00)
self._test_sit(1250.0, 'married', 2, 1, 0, 'bi-weekly', date(2020, 1, 1), 1.23)
self._test_sit(4100.0, 'married', 5, 0, 0, 'monthly', date(2020, 1, 1), 1.5)
self._test_sit(800.0, 'head_household', 3, 0, 0, 'weekly', date(2020, 1, 1), 2.28)
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, 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)

View File

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

View File

@@ -1,37 +0,0 @@
# 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 TestUsCOPayslip(TestUsPayslip):
###
# 2020 Taxes and Rates
###
CO_UNEMP_MAX_WAGE = 13600.0
CO_UNEMP = 1.7
def _test_sit(self, wage, filing_status, additional_withholding, schedule_pay, date_start, expected_withholding, state_income_tax_exempt=False):
employee = self._createEmployee()
contract = self._createContract(employee,
wage=wage,
state_id=self.get_us_state('CO'),
fed_941_fit_w4_filing_status=filing_status,
state_income_tax_additional_withholding=additional_withholding,
state_income_tax_exempt=state_income_tax_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('CO', self.CO_UNEMP, date(2020, 1, 1), wage_base=self.CO_UNEMP_MAX_WAGE)
self._test_sit(5000.0, 'married', 0.0, 'semi-monthly', date(2020, 1, 1), 216.07)
self._test_sit(800.0, 'single', 0.0, 'weekly', date(2020, 1, 1), 33.48)
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', 0.0, 'quarterly', date(2020, 1, 1), 0.0, True)
self._test_sit(800.0, '', 0.0, 'weekly', date(2020, 1, 1), 0.00)

View File

@@ -1,37 +0,0 @@
# 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 TestUsCOPayslip(TestUsPayslip):
###
# 2021 Taxes and Rates
###
CO_UNEMP_MAX_WAGE = 13600.0
CO_UNEMP = 1.7
def _test_sit(self, wage, filing_status, additional_withholding, schedule_pay, date_start, expected_withholding, state_income_tax_exempt=False):
employee = self._createEmployee()
contract = self._createContract(employee,
wage=wage,
state_id=self.get_us_state('CO'),
fed_941_fit_w4_filing_status=filing_status,
state_income_tax_additional_withholding=additional_withholding,
state_income_tax_exempt=state_income_tax_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_2021_taxes_example(self):
self._test_er_suta('CO', self.CO_UNEMP, date(2021, 1, 1), wage_base=self.CO_UNEMP_MAX_WAGE)
self._test_sit(5000.0, 'married', 0.0, 'semi-monthly', date(2021, 1, 1), 216.07)
self._test_sit(800.0, 'single', 0.0, 'weekly', date(2021, 1, 1), 33.48)
self._test_sit(20000.0, 'married', 0.0, 'quarterly', date(2021, 1, 1), 833.4)
self._test_sit(20000.0, 'married', 10.0, 'quarterly', date(2021, 1, 1), 843.4)
self._test_sit(20000.0, 'married', 0.0, 'quarterly', date(2021, 1, 1), 0.0, True)
self._test_sit(800.0, '', 0.0, 'weekly', date(2021, 1, 1), 0.00)

View File

@@ -1,35 +0,0 @@
# 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 TestUsCTPayslip(TestUsPayslip):
# Taxes and Rates
CT_UNEMP_MAX_WAGE = 15000.0
CT_UNEMP = 3.2
def _test_sit(self, wage, withholding_code, additional_withholding, schedule_pay, date_start, expected_withholding):
employee = self._createEmployee()
contract = self._createContract(employee,
wage=wage,
state_id=self.get_us_state('CT'),
ct_w4na_sit_code=withholding_code,
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('CT', self.CT_UNEMP, date(2020, 1, 1), wage_base=self.CT_UNEMP_MAX_WAGE)
self._test_sit(10000.0, 'a', 0.0, 'weekly', date(2020, 1, 1), 693.23)
self._test_sit(12000.0, 'b', 15.0, 'bi-weekly', date(2020, 1, 1), 688.85)
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(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)

View File

@@ -1,35 +0,0 @@
# 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 TestUsCTPayslip(TestUsPayslip):
# Taxes and Rates
CT_UNEMP_MAX_WAGE = 15000.0
CT_UNEMP = 3.2
def _test_sit(self, wage, withholding_code, additional_withholding, schedule_pay, date_start, expected_withholding):
employee = self._createEmployee()
contract = self._createContract(employee,
wage=wage,
state_id=self.get_us_state('CT'),
ct_w4na_sit_code=withholding_code,
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_2021_taxes_example(self):
self._test_er_suta('CT', self.CT_UNEMP, date(2021, 1, 1), wage_base=self.CT_UNEMP_MAX_WAGE)
self._test_sit(10000.0, 'a', 0.0, 'weekly', date(2021, 1, 1), 693.23)
self._test_sit(12000.0, 'b', 15.0, 'bi-weekly', date(2021, 1, 1), 688.85)
self._test_sit(5000.0, 'f', 15.0, 'monthly', date(2021, 1, 1), 230.25)
self._test_sit(15000.0, 'c', 0.0, 'monthly', date(2021, 1, 1), 783.33)
self._test_sit(18000.0, 'b', 0.0, 'weekly', date(2021, 1, 1), 1254.35)
self._test_sit(500.0, 'd', 0.0, 'weekly', date(2021, 1, 1), 21.15)

Some files were not shown because too many files have changed in this diff Show More