| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Attendances (hr_attendance) • Discuss (mail) • Time Off (hr_holidays) • Calendar (calendar) |
| Community Apps Dependencies | Show |
| Lines of code | 7352 |
| Technical Name |
eh_hr_dashboard |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
| Versions | 16.0 17.0 18.0 19.0 |
EH HR Dashboard
One server-aggregated HR command center for Odoo 16 Community, built on the EH HR Platform.
Why this module
EH HR Dashboard
Every KPI in a single RPC
The eleven tiles do not fire eleven searchCount round-trips. One get_dashboard_data call aggregates today's attendance with a grouped read and counts the rest server-side, so the board loads in one trip instead of flooding the network.
Counts under your own rules
Aggregation uses search_count, not sudo, so every figure respects the calling user's record rules and multi-company scope. A tile whose optional model is not installed returns a dash, never an error, and stays out of the way.
Click a tile, land in the list
Every populated tile drills straight into the matching, pre-filtered list view with the same domain it counted. The dashboard is a starting point for the day's work, not a dead-end wall of numbers.
Day in the life
Open the board, work the day
An HR officer opens the Dashboard menu under the HR Platform. The Today group shows present, on leave, absent, and anomaly counts for the date. The Pending your action group lists leave, overtime, loans, and approval requests waiting on a decision. Workforce shows headcount, new hires this month, and approved leaves for the month. They click Absent, land in the pre-filtered attendance list, and start chasing exceptions. Refresh re-pulls when they want fresh numbers.
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.
_safe_count looks the model up with env.get and returns None when it is not installed or not readable, so the overtime, loans, or approval tiles show a dash rather than crashing the whole dashboard.
Today's attendance breakdown uses one grouped read, then falls back to a per-status search_count if read_group's signature or availability differs, reading status_count or __count defensively.
All counts run as the calling user through search_count, so figures honour record rules and multi-company access rather than leaking totals the user is not allowed to see.
A tile with a null or undefined value is not marked clickable and openKpi returns early, so a missing-module dash never opens an empty or broken list view.
If the aggregation call throws, the client catches it, sets values to an empty object, and clears the loading state, so the board renders dashes instead of a stuck spinner.
What is inside
Built to do the job, end to end.
- Server-side aggregation model. An AbstractModel, eh.hr.dashboard, exposes get_dashboard_data, returning the eleven KPI keys the OWL board expects in one call. It owns no stored data and writes nothing.
- OWL client action and menu. A registered client action, eh_hr_dashboard.main, renders the HrDashboard component. A Dashboard menu sits under the HR Platform root, gated to the HR officer group.
- Three KPI groups, eleven tiles. Today covers present, on leave, absent, and anomalies. Pending your action covers leave, overtime, loans, and approval requests. Workforce covers headcount, new hires this month, and approved leaves this month.
- Shared component kit. Tiles are built from HrCard and HrStat imported from eh_hr_core, so the dashboard inherits the platform's look, loading state, and tone styling rather than reinventing them.
- Tested data contract. Post-install tests assert the client action and menu exist, and that get_dashboard_data returns exactly the expected key set with int-or-None values and a real, non-negative headcount.
Honest about the edges
What this does not do, so nothing surprises you.
- This is a read-only overview. It owns no business models, writes nothing, and runs no scheduled jobs.
- Counts refresh on load and on the Refresh button. There is no automatic polling or real-time push.
- The overtime, loans, and approval-request tiles depend on optional modules. Where those are not installed, the tiles show a dash.
- It composes the EH HR Platform and requires eh_hr_core, eh_hr_attendance_pro, eh_hr_leave_pro, and hr; it is not a standalone analytics product.
- The screen is a fixed set of eleven KPIs. Tiles and groupings are not configurable from the user interface.
Odoo 16 HR dashboard, Odoo 16 Community HR, employee headcount KPI, HR attendance overview, leave approval worklist, OWL client action dashboard, server-side aggregation Odoo, HR analytics Odoo 16, ERP Heritage HR Platform, HR command center
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.
Please log in to comment on this module