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 17.0
  4. Sales Conditions FAQ

Attendance Roster

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 17.0 Third Party 44
Download for v 17.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
Rostering for Odoo 17 Community attendance

Attendance Roster

Template-driven shift planning that generates real shifts, drives roster overtime, and sharpens late detection, no Enterprise license.

Free · LGPL-3Odoo 17 CommunityLGPL-3v1.0.0
Weekly shift templates
Daily generation cron
Configurable horizon
Open shifts and claim
Shift swaps with approval

Why this module

Attendance Roster

Plan

Templates become real shifts

Build a shift template once with a row per active weekday (start, end, break). Set it as an employee's default and the daily cron materialises concrete shifts up to your horizon, default 28 days ahead. Re-running never duplicates: generation is idempotent on employee and start time.

Measure

Rosters that actually drive hours

Generated shifts are not decoration. Each attendance resolves to its covering rostered shift, so hours beyond the rostered window count as daily overtime and ordinary hours over the weekly or fortnightly cap land as period overtime on the later shift. Late detection also tightens to the planned shift start plus grace.

Operate

Open shifts, claims, and swaps

Leave a shift unassigned and it is flagged as open for staff to claim, with guards against double-booking. Swap requests move a shift to a colleague on manager approval, and the approval blocks when the target already has a shift at that moment so you never hit a raw database error.

Day in the life

From weekly pattern to a checked roster

A planner builds a Mon to Fri 9 to 5 template, assigns it as the default for the floor team, and the overnight cron fills four weeks of shifts for every employee who has a default template, in their company timezone. One shift is left open for cover; a casual claims it the next morning. Someone requests a swap and the manager approves it, with the system refusing if the colleague is already rostered then. As the week's attendances land, hours past each rostered window and over the 38 hour weekly cap surface as roster overtime, and a late arrival is judged against the planned shift start plus grace rather than a blanket company time.

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.

Idempotent generation

Re-running the cron, or running it for an overlapping horizon, never creates a second shift for the same employee and start. A database UNIQUE(employee_id, date_start) plus a pre-create existence check guarantee it.

Cron isolation

Generation is batch-capped at 2000 shifts per run and reports progress through the scheduler's commit-progress hook when invoked as a cron, so a large roster does not run away in a single transaction.

Timezone correctness

Shift start and end are computed in the company partner's timezone then stored in UTC, and an end hour of 24:00 rolls correctly into the next calendar day. An unknown timezone falls back to UTC rather than failing.

Double-booking guards

Claiming an open shift is blocked if the shift is already assigned, the user has no linked employee, or the user already has a shift starting at that moment. Swap approval applies the same clash check on the target employee.

Self-swap guard

A swap request cannot target the employee already assigned to the shift; the constraint rejects it before it reaches approval.

Late detection without double-flagging

The late pass owns the whole comparison when this module is installed instead of delegating to the base pass, so an employee early for their shift but late against the company default is not wrongly flagged, and already-tagged attendances are skipped on re-run.

Overtime redistribution

Adding or editing an attendance recomputes the other shifts in the same week or fortnight, so when a later shift tips the period over the cap the overtime lands on the later shift, not an earlier one.

Multi-company scoping

Global record rules scope shift templates and scheduled shifts to the user's allowed companies, and generation runs company by company using each company's own horizon and timezone.

Template validation

A template must carry at least one day line, enforced both by a constraint and on create where the constraint would not fire, and each line must have an end hour strictly after its start hour within 0 to 24.

What is inside

Built to do the job, end to end.

  • Models. eh.hr.shift.template and its day-pattern lines, eh.hr.roster.shift (the scheduled shift, with open-shift, status, and company computes), and eh.hr.roster.swap. Inherits extend hr.employee, hr.attendance, res.company, and res.config.settings.
  • Generation engine. A code-based daily ir.cron runs as the root user and calls the generator, which walks each company's active employees with a default template, builds shifts across the horizon per the template's weekday lines, and creates only the missing ones.
  • Overtime engine. Stored computes on hr.attendance resolve the covering rostered shift, subtract the break for net rostered minutes, take daily overtime beyond it, and add the share of ordinary hours over the weekly or fortnightly cap, anchored on Monday with a deterministic fortnight.
  • Late detection override. An inherit of eh.hr.attendance.exception replaces the late-check pass so the cutoff follows the planned shift start plus company grace when a shift exists, and the company default time plus grace otherwise.
  • Security and views. Four access tiers (user, manager, admin, auditor) over templates, shifts, and swaps, two global per-company record rules, a Roster menu, and calendar plus list plus form views for shifts with tree and form for swaps.
  • Tests. Six test modules cover shift generation and idempotency, template validation, open-shift claiming, swaps, roster-driven daily and weekly overtime, and shift-aware late detection.

Honest about the edges

What this does not do, so nothing surprises you.

  • Depends on eh_hr_attendance_base and eh_hr_attendance_reports plus core hr_attendance; it extends that suite rather than standing alone.
  • Generation works from a single default shift template per employee. There is no multi-template rotation, no per-day exception calendar, and no public holiday awareness.
  • There is no skills, role, or coverage-requirement matching and no auto-fill of open shifts; open shifts are claimed manually.
  • The swap workflow is a single manager-approval step on a plain state field, with no multi-level escalation ladder and no employee-to-employee consent step.
  • Roster overtime is a planning and reporting figure on attendance records; it does not post to payroll, and weekly or fortnightly caps are a flat hours number, not award-rule interpretation.
  • Late detection is the only attendance exception this module reshapes; early-leave, absence, and missing-checkout logic stay in the reports module.
Search

odoo 17 roster, odoo attendance roster, shift planning odoo community, hr_attendance roster module, weekly shift template odoo, shift generation cron, open shift claim odoo, shift swap approval, roster overtime odoo, weekly fortnightly overtime cap, shift aware late detection, community edition planning, work schedule odoo 17, planned versus actual attendance, multi company roster

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 17 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