EH HR Reward
Rewards and recognition, on the record.
Why this module
EH HR Reward
Nominate, approve, grant
Every reward runs the same data-driven state machine: draft to nominated to approved to granted, with a reject path. The engine refuses any transition from a final state and refuses a transition the current user is not entitled to fire, so the path cannot be short-circuited.
Tamper-evident audit
Reward type, amount, points, employee and reason changes are written to an append-only, hash-chained log. Each row links to the one before it by sha256, and a verify pass walks the chain to prove nothing was edited after the fact.
Officer and manager split
Nominating and granting sit with HR officers; approving and rejecting sit with HR managers. The two roles are enforced per transition by group, so one person cannot push a reward end to end alone.
Day in the life
From nomination to a tallied point
An HR officer opens a reward for an employee, sets the type to recognition with 50 points and a reason, and nominates it. The reward moves to nominated and the officer cannot push it further. An HR manager reviews and approves it, or rejects it back to a closed rejected state. Once approved, the officer grants it: the grant date is stamped automatically and the 50 points are added to that employee's running total and reward count, visible as a simple recognition leaderboard. Every one of those steps, and any later edit to the amount or reason, lands in the hash-chained audit log with the actor and a before and after snapshot.
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.
Once a reward is granted or rejected the workflow engine treats that state as terminal and raises rather than firing any further transition, even one a misconfigured definition might declare from it.
A transition is refused unless the user belongs to one of the groups allowed for it, so an officer cannot self-approve a nomination and a manager cannot grant outside the officer step. Admin is the only bypass.
Audit-log appends take a transaction-scoped Postgres advisory lock so two concurrent grants cannot fork the hash chain; the lock releases automatically on commit or rollback.
The employee point total and count are computed only from rewards in the granted state, so a nominated or rejected reward never inflates the leaderboard, and the total recomputes if a reward's state or points change.
Company is required and defaults to the active company; a write that moves a reward into a company the user is not a member of is rejected, and any audited cross-company override is itself logged.
Each reward gets a sequence-generated reference (RWD/year/number) on create, with a safe fallback if the sequence is unavailable, and the reference is copy-protected so duplicates do not collide.
What is inside
Built to do the job, end to end.
- Model it adds. One model, eh.hr.reward, carrying employee, reward type (bonus, recognition, gift, promotion), amount, recognition points, reason, nominated-by, grant date and an automatic reference. It also extends hr.employee with a reward list, a granted-point total and a granted-reward count.
- Workflow and data. A reward workflow definition with draft, nominated, approved, granted and rejected states and their group-gated transitions, plus the reward number sequence. The workflow is data, configurable without code, and the module ships no workflow logic of its own.
- Security and audit. Access rules for HR admin, manager, officer and self-service employee roles, with the model wired to the platform audited mixin and strict company-aware mixin so every change is logged and company-scoped.
- Tested behaviour. An automated test suite covers default reference and state, the default reward type, the full nominate to grant path, the reject path, grant-date stamping, point tallying on grant, and point accumulation across multiple rewards.
Honest about the edges
What this does not do, so nothing surprises you.
- This is a recognition and reward register, not a budgeting or compensation-planning tool; the amount field is informational and is not posted to payroll or accounting.
- Reward transitions are gated by HR role groups, not by a multi-step approval chain, so there is no escalation ladder or delegate routing inside this module.
- Recognition points feed a simple per-employee total and count on the employee record; there is no points catalogue, redemption, or budget cap.
- The four reward types (bonus, recognition, gift, promotion) are a fixed selection in this version and are not user-configurable from settings.
- It depends on the EH HR Platform core, compatibility and workflow engine modules and the standard hr module, and is not a standalone add-on.
odoo 16 employee rewards, employee recognition odoo, staff reward management, odoo hr reward module, recognition points leaderboard, employee bonus tracking, reward approval workflow, odoo community hr, audited hr records, multi company hr odoo, self hosted hr platform, employee recognition program
Need this fitted to the way you work?
ERP Heritage delivers end to end Odoo work: Odoo Implementation, Customization and Development, Integration, Migration, Consultation, Support and Training. We help teams put this module into production, shape it to their process, and keep it running.
We work with businesses across Australia (Melbourne, Sydney, Brisbane, Perth, Adelaide, Canberra) and the Middle East (Dubai, Abu Dhabi, Riyadh, Jeddah, Doha, Kuwait City, Muscat). Start a conversation at erpheritage.com.au or email info@erpheritage.com.au.
Languages
Available in 19 languages
The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.
Modules teams pair with this one.
Premium ERP Heritage modules that extend the same stack, each built to the same engineering bar.
The New Zealand country pack for the ERP Heritage Employment Hero integration
A reusable two way synchronisation engine that keeps Odoo in step with the people and payroll platform, idempoten...
The Australia country pack for the ERP Heritage Employment Hero integration
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 1372 |
| Technical Name |
eh_hr_reward |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
Please log in to comment on this module