Skip to content

Time Off & Attendance

1. Purpose

These modules record when staff are absent and when they are present. Time Off handles leave requests, entitlements and approvals. Attendance records check-in and check-out. Timesheets record how working time was spent.

They matter to payroll: unpaid leave and attendance data can feed salary computation, and they are the evidence behind any deduction.

2. Features

  • Leave types with configurable entitlement, and whether they are paid
  • Leave allocations per employee, per type, per period
  • Leave requests with manager approval, and a company-wide leave calendar
  • Public holidays, excluded from leave counts
  • Check-in and check-out, from the browser or a kiosk
  • Attendance records with worked-hours computation
  • Timesheets against projects and tasks
  • Timesheet-attendance reconciliation (hr_timesheet_attendance)
  • Reporting on absence, attendance and time spent

3. Where to find it

  • Menu: Time Off; Attendances; Timesheets
  • Technical names: hr_holidays, hr_attendance, hr_timesheet, hr_timesheet_attendance
  • Tier: Odoo core (Community Edition)
  • Available in: Odoo 17 and 18 in our stack

4. Modules used

Module Tier Why it is needed
hr_holidays Odoo core Leave types, allocations, requests, approvals
hr_attendance Odoo core Check-in / check-out and worked hours
hr_timesheet Odoo core Time recorded against projects and tasks
hr_timesheet_attendance Odoo core Compares timesheets against attendance
hr_payroll_community Third-party (Cybrosys) Consumes leave in payslip computation
hrms_dashboard Third-party (Cybrosys) Aggregates leave, attendance and timesheet data
hr_leave_request_aliasing Third-party (Cybrosys) Leave requests submitted by email

5. Configuration

  1. Prerequisite — employees must exist with working schedules set. Leave and attendance are both computed against the schedule.
  2. Create leave types — Time Off → Configuration → Time Off Types. Set whether each is paid, whether it requires allocation, and who approves.
  3. Allocate entitlements per employee per leave type, for the period.
  4. Enter public holidays — Configuration → Public Holidays. Without them, holidays consume employees' leave balances.
  5. Set the approval route — manager, HR officer, or both.
  6. Enable attendance mode — browser or kiosk, and whether a PIN or barcode is required.
  7. Enable timesheets and set the projects and tasks time can be booked against.

Configuration traps

  • Missing public holidays silently consume leave balances. Load them each year.
  • A leave type set as unpaid only affects payroll if the salary structure has a rule that reads it. Marking it unpaid alone changes nothing on the payslip.
  • Working schedules drive everything. Part-time staff on a full-time schedule produce wrong leave and attendance figures.
  • Attendance and timesheets are separate records and will disagree unless hr_timesheet_attendance is used to reconcile them.

6. How it's used

  1. Employee — Time Off → New request, selecting type and dates.
  2. Manager — approves or refuses. Approved leave appears on the team calendar.
  3. Employee — checks in and out through the browser or kiosk each day.
  4. Employee — books time to projects on their timesheet.
  5. HR Officer — reviews absence and attendance before payroll is run.
  6. HR Officer — confirms that unpaid leave has been captured before payslips are generated.

Screenshots needed

Save to docs/assets/time-off-attendance/: leave request form · leave type configuration · team leave calendar · attendance list · timesheet grid.

7. Access rights

Group Can do
Time Off / User Request their own leave
Time Off / Officer Approve leave for their team, manage allocations
Time Off / Administrator Configure leave types, public holidays, all allocations
Attendances / User Check in and out
Attendances / Administrator Edit attendance records and configure the mode

8. Version differences (16 / 17 / 18)

  • Not part of our Odoo 16 line.
  • attrs and states removed from views.
  • Pulled in by hr_payroll_community, hrms_dashboard and ohrms_core.
  • <tree> elements superseded by <list>.
  • Same dependency set as 17 through the OpenHRMS stack.

9. Known limitations

  • No shift planning or rostering. Odoo Planning is Enterprise.
  • No geolocated or biometric attendance in Community; kiosk with PIN or barcode is the ceiling.
  • No overtime calculation rules — overtime must be handled through payroll salary rules.
  • Leave accrual is basic — complex accrual policies need customisation.
  • Attendance does not enforce anything. It records; it does not prevent work outside schedule or flag lateness automatically.

Needs verification on the Thalia live instance

  • Which leave types exist, and which are paid or unpaid
  • Whether public holidays are loaded for the current year
  • Whether attendance is actually used, and in which mode
  • Whether timesheets are used, and against what projects
  • Whether unpaid leave feeds the payslip, and through which salary rule
  • Whether hr_leave_request_aliasing email submission is configured