| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 4112 |
| Technical Name |
eh_hero_country_uk |
| License | OPL-1 |
| Website | https://www.erpheritage.com.au/ |
| Versions | 16.0 17.0 18.0 19.0 |
Employment Hero UK Country Pack
Adds the UK statutory employee fields and registers the United Kingdom profile so the Employment Hero connector syncs local payroll data into Odoo HR.
Store price is USD 175 all-in: installing this also pulls the 4 paid ERP Heritage modules it depends on.
Why this module
Employment Hero UK Country Pack
The UK identifiers payroll needs
Adds National Insurance number, HMRC PAYE tax code and student loan plan to hr.employee, grouped on the employee form under HR Settings. NI number and tax code are restricted to HR users.
Mapped, not just added
Each UK field ships with a mapping line that points the connector at the source path in the Employment Hero payload, so values flow into Odoo through the same idempotent engine as the rest of the suite.
Adjust paths without code
The UK source paths are data rows set with noupdate, so you can change them from the user interface to fit your exact payload shape. skip_if_empty keeps a record valid when a value is absent.
Day in the life
From Employment Hero record to a compliant UK employee file
A new starter is added in Employment Hero with their National Insurance number, PAYE tax code and student loan plan. The connector pulls the employee, resolves it through the external id cross reference, and writes the three UK fields into the Odoo employee record alongside name and department. Run the job again and nothing duplicates: an unchanged payload is a no-op. When a tax code changes upstream and a webhook fires, the targeted detail fetch updates just that one employee, and the delivery is verified, deduplicated against replays and processed in order for that employee. HR users see the NI number and tax code; other users do not.
Edge cases
The cases most modules quietly ignore.
In the shipped code today, each one a place where a cheaper module silently does the wrong thing.
A redelivered webhook carrying the same external event id is recognised and answered 200 as a duplicate, so the same change is never applied twice.
A failed queue job is retried with exponential backoff up to its limit, then parked in a dead letter state for manual inspection rather than lost.
Each employee is processed inside its own savepoint, so one bad record is logged as an error line and the run continues and ends partial instead of aborting the whole pull.
Every employee is keyed by external id through the cross reference, with a unique constraint per connection, so re-running a job never creates a second copy.
A webhook update with no usable source timestamp, or one older than the stored record, is skipped, so a late delivery cannot overwrite newer data.
skip_if_empty on the UK mapping lines means an absent National Insurance number, tax code or loan plan leaves the field untouched instead of clearing it.
Cross references and queue jobs carry the company of their connection, so two companies syncing the same Employment Hero ids stay scoped and do not cross bind.
The HR platform bearer token is refreshed lazily by the connection, so a long-running sync does not fail on an expired token.
What is inside
Built to do the job, end to end.
- Three UK employee fields. eh_ni_number and eh_paye_tax_code on hr.employee are restricted to the HR user group; eh_student_loan_plan records Plan 1, Plan 2, Plan 4 or Postgraduate. All three render in an Employment Hero (United Kingdom) group on the employee form.
- UK country profile. Registers one eh.country.profile record for the United Kingdom (code UK) with the shared country base, the anchor a deployment uses to see which localisations are active and to target country specific mapping variants.
- Mapping lines as data. Three eh.mapping.line records extend the base employee mapping with the UK source paths, set with noupdate so your edits survive upgrades. Source paths default to a sensible payload shape and are meant to be tuned to yours.
- Runs on the verified engine. No transport code of its own. It depends on the connector, sync engine and HR modules that provide idempotent upsert, delta cursors, conflict policies, the in-database retry queue and HMAC webhook handling.
- Tested on real Odoo. Ships an automated test suite asserting the UK profile is registered against the correct country and the National Insurance field is present on hr.employee.
Honest about the edges
What this does not do, so nothing surprises you.
- This pack adds fields, a country profile and mapping rows only. The actual transport, sync, queue and webhook behaviour lives in the connector, sync engine, HR and queue modules it depends on, which must be installed.
- It does not validate the format of the National Insurance number, PAYE tax code or student loan plan. They are stored as plain text exactly as received.
- The UK source paths shipped here are defaults you are expected to tune to your Employment Hero payload from the user interface. They are not guaranteed to match every account without adjustment.
- It does not compute UK payroll, PAYE, National Insurance contributions or student loan deductions. It records the identifiers and codes, not the calculation.
- There is no Real Time Information or HMRC filing in this module. It maps employee data, it does not submit to HMRC.
- Two way sync, conflict policy and push of these fields back to Employment Hero depend on how you configure the underlying sync job; the pack ships the fields and pull mapping.
Employment Hero UK Odoo, UK National Insurance number Odoo, HMRC PAYE tax code Odoo, student loan plan Odoo HR, Employment Hero connector United Kingdom, Odoo 18 UK HR localisation, hr.employee UK fields, Employment Hero employee sync, idempotent HR sync Odoo, UK payroll integration Odoo Community
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module