1 (206) 800-7778 hello@hibou.io

State of Odoo Payroll 2019

Improvements and Migrations

Jared Kipe

In late 2018, we made some improvements to US Payroll in general with a new module named Payroll Rates hr_payroll_rate that gets rid of the per-company fields for things like state unemployment insurance rates.  We used this while migrating to 2019 rates and rules, and you can even watch via our YouTube channel as we live-streamed the work. We also standardized a naming convention for Rules that should improve readability and make reporting easier.

Rates are intended to be related pieces of information that you can find the 'current' one by code alone.  Which rate is returned depends on the validity dates, as well as which company payroll is being run as.  (Yes, multi-company payroll, more on that to follow...)  Rates may have additional information that may be useful to rule authors like limits per payslip or on the wage that is used to calculate the payslip line.


We believe that this migration will greatly speed up migrations for years to come by de-coupling user-supplied rates and limits from the rules themselves.  In cases where the limits come from a State's Department of Revenue, it means collecting them into a single place that is outside the rules that depend on them.

Here is an example use case from the Ohio Unemployment.

rate = payslip.dict.get_rate('US_OH_UNEMP')
result_rate = -rate.rate
result = categories.WAGE_US_OH_UNEMP

# result_rate of 0 implies 100% due to bug
if result_rate == 0.0:
    result = 0.0

Odoo 12

I am pleased to announce the successful migration of the core of US Payroll in Odoo, as well as all states that are currently migrated to the new Payroll Rates methods. Here is a GitLab issue with more details and ongoing work.

This was extremely straightforward as the only changes needed were related to the 12.0 Date/Datetime field differences.

We will continue to migrate the non-priority states to Payroll Rates and 12 as time allows.