Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Attendances
  3. Attendance Roster v 19.0
  4. Sales Conditions FAQ

Attendance Roster

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 19.0 Third Party 44
Download for v 19.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 16.0 17.0 18.0 19.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Attendances (hr_attendance)
• Discuss (mail)
• Employees (hr)
Community Apps Dependencies Show
• Attendance Reports
• Attendance Suite Base
• EH HR Compatibility
Lines of code 2642
Technical Name eh_hr_attendance_roster
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
ERP Heritage · HR Platform
Odoo 19 Community - Human Resources / Attendances

Attendance Roster

Template-driven shift rostering that generates per-employee schedules, then drives planned-versus-actual lateness and overtime from the real shift window.

Free · LGPL-3Free · LGPL-3Odoo 19 · Communityv1.0.0
Weekly shift templates
Idempotent generation
Open-shift claim
Manager-approved swaps
Late detection by shift

Why this module

Attendance Roster

01 / GENERATION

Templates become real shifts

A weekly day-of-week pattern (start, end, break) on each employee's default template materialises into concrete dated shifts up to a configurable horizon, default 28 days. The daily cron is timezone-aware per company and idempotent on employee plus start, so a re-run never duplicates a row.

02 / IT FEEDS BACK

The roster actually drives the numbers

Generated shifts are not inert. The planned window resets the lateness cutoff to the shift start plus grace, and attendance overtime is measured against the rostered hours: minutes beyond the window are daily overtime, ordinary hours over the weekly or fortnightly cap are period overtime.

03 / OWNERSHIP

Yours to keep

LGPL-3 source on disk. No activation key, no phone-home, no recurring licence. A Community Edition team gets a complete roster plus attendance plus exception loop without an Enterprise planning subscription. Read it, extend it, fork it if you need to.

Day in the life

A roster coordinator plans next month and lets the cron do the rest.

Each barista is given a default shift template: Monday to Friday, 9 to 5, thirty-minute break, anchored by day of week. Overnight the generation cron reads every active employee's template and materialises concrete dated shifts up to the 28-day horizon, in each company's own timezone, skipping anything already on the calendar so a second run adds nothing. One Saturday slot has no owner, so it is left open. A staff member opens it and claims it; the system blocks the claim only if they already have a shift starting at that exact moment. When someone needs Friday off, they raise a swap to a colleague; a manager approves it, and the shift is reassigned, unless the colleague already has a clashing start. The next morning, when people check in, the late-detection pass measures each arrival against that person's planned shift start plus the company grace, not a blanket office time, so a rostered late-shift worker is not wrongly flagged. Hours worked beyond the rostered window land as overtime automatically.

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.

GENERATION · IDEMPOTENT

Shift generation is idempotent on (employee, start). A database UNIQUE constraint plus a pre-create existence check means re-running the daily cron, or running it twice in a day, never creates a duplicate shift for the same employee and moment.

OVERTIME · NO DOUBLE COUNT

When the optional AU award module is installed and actually applies to the employee, the roster still links the covering shift but reports zero overtime, deferring entirely to the award so the same attendance is never counted twice. An employee with no award still gets roster-driven overtime, so nothing is lost.

OVERTIME · PERIOD REDISTRIBUTION

Weekly or fortnightly overtime lands on the shift that actually tips the employee over the ordinary cap. Adding or editing a later attendance recomputes the period siblings, so the excess moves to the correct day instead of being frozen on whichever row was saved first.

SWAP · CLASH GUARDED

Approving a shift swap reassigns the shift only if the target has no shift starting at the same moment. The clash is caught with a clear message before the roster's UNIQUE(employee, start) would otherwise raise a cryptic database error, and a swap to the same employee is rejected outright.

LATE · OWNS THE PASS

When the roster is installed, its late-detection override owns the whole pass rather than delegating to the base report, so a worker who arrives early for their rostered late shift is not double-flagged against the company-wide default check-in time.

MULTI-COMPANY · TZ AWARE

Generation, late detection and overtime windows are all computed in each company's own partner timezone, and global record rules scope shift templates and shifts to company_ids, so a multi-company database keeps rosters cleanly separated.

GENERATION · BATCH BOUNDED

Each cron run is bounded by a batch limit so a large horizon or a big headcount cannot generate an unbounded number of rows in a single pass, and overnight midnight-spanning shifts (end hour of 24) roll the end into the next day correctly.

What is inside

Built to do the job, end to end.

  • Shift templates with weekly patterns. Each template carries a line per active day of week with a start hour, end hour and break minutes. At least one day line is enforced, on the constraint and again on create so an empty template cannot slip through. Templates are tracked on the chatter and scoped per company.
  • Per-employee default template and daily generation. Set a default shift template on an employee and the daily cron materialises their concrete dated shifts up to the company horizon (default 28 days), in the company timezone, idempotently. Generation skips inactive employees and inactive templates.
  • Scheduled shifts with calendar, list and status. A weekly calendar coloured by employee, plus a list and form with status badges for planned, completed, missed and cancelled. Filters for planned, today, next seven days and open shifts, grouped by employee, status or day.
  • Open shifts and self-service claim. A shift with no employee is flagged open and can be claimed by the current user's linked employee from the form. The claim is blocked if the shift is already taken, the user has no employee record, or they already have a shift starting at the same moment.
  • Manager-approved shift swaps. An employee asks to hand a scheduled shift to a colleague with a reason. Request, approve and reject move the state; approve is gated to the manager group and reassigns the shift, with a guard against a same-employee target and against a clashing start on the receiving side.
  • Roster-driven lateness and overtime. When a planned shift exists, the late cutoff becomes the shift start plus company grace instead of the blanket office time. Attendance overtime is measured against the rostered net window for the day, plus the share of ordinary hours over the weekly or fortnightly ordinary cap (default 38 or 76 hours).

Honest about the edges

What this does not do, so nothing surprises you.

  • Rostering is template and cron driven. There is no drag-and-drop visual roster builder; planning is by setting templates and editing the generated calendar, list and form shifts.
  • Generation works from each employee's single default shift template. There is no demand forecasting, coverage or skills optimisation, or rotating multi-week pattern engine.
  • Shift swaps use a single manager-approval step, not a multi-tier escalation ladder. The approve action is gated to the manager group and guarded against same-employee and clashing-start swaps.
  • Roster-driven overtime defers to the AU award only when that separate award module is installed and applies to the employee; on its own the roster computes daily and weekly or fortnightly overtime from the company caps.
  • This module extends the ERP Heritage attendance base and reports modules and Odoo hr_attendance; it is not a standalone payroll engine and does not post pay runs.
Search

Odoo 19 Community roster, shift planning Odoo Community, weekly shift template, scheduled shift generation cron, open shift claim, shift swap approval, hr_attendance roster, rostered overtime weekly fortnightly, late check-in detection by shift, planned versus actual attendance, work schedule Odoo, Community Edition planning alternative, multi-company roster, employee default shift template, attendance exception lateness

Work with ERP Heritage

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.

Build and tailor
Odoo Implementation, Customization and Development, scoped to your workflow.
Connect and move
Odoo Integration and Migration across systems and Odoo versions.
Run and support
Odoo Support and Training so your team stays productive after go live.
Plan and advise
Odoo Consultation and ERP Consulting, from discovery to roadmap.

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.

ArabicChinese (Simplified)Chinese (Traditional)DutchFrenchGermanHindiIndonesianItalianJapaneseKoreanPolishPortuguese (Brazil)RussianSpanishSwedishThaiTurkishVietnamese
ERP Heritage

Production-grade Odoo HR, built to an engineering bar and documented honestly. Support: info@erpheritage.com.au
Developed by Odoo Customisation Services • LinkedIn

v1.0.0 · LGPL-3 · Odoo 19 Community

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with