OdooWiki OCA HUB
Human Resources/Shifts License: AGPL-3

Shifts to employees with variable work schedules.

auto_awesome What this module does

AI-generated from the code · Odoo 18.0

Lets HR plan weekly employee shifts: create a planning for a week, assign shift templates to employees, and see each day's shift, with automatic detection of leaves and holidays.

This module adds a weekly shift planning tool on top of Employees. Users create a planning for a given year and week, then generate one shift record per employee who has the new "Shift planning" option ticked on their employee form.

  • A planning has a status (New, Assignment, Planned) and buttons to generate shifts, regenerate them, or copy the planning to a new week through a wizard.
  • Each employee's weekly shift gets a shift template (name, start and end time, timezone, colour, and the weekdays it covers). Changing the template rebuilds the daily lines, except days already marked as leave or holiday.
  • Each daily line shows the date, start and end time, duration in hours and days, and a status: Assigned, On leave, Unassigned or Holiday. The status is recalculated automatically when leaves are created or deleted, and assigning a template to a day where the employee is on leave is blocked with an error.
  • Plannings can be viewed as a form, a list, a calendar and a kanban board with day buttons; there are counters for shifts and for unresolved issues, and a "reviewed" tick to hide issues that have been checked.
  • The company settings let you set the default working week (start and end day).
  • Shift times also feed the resource calendar, so an employee's working intervals follow their planned shifts, and an employee currently in a shift is considered working.

Menus appear under Shifts: Planning, My shifts and Shifts (templates). A Shift Manager group and multi-company rules control access.

Depends on

hrbase_sparse_field

Required by other modules

Menus it adds

ShiftsPlanningMy shiftsShifts
Models and fields (9)
  • res.company · extends an existing modelshift_end_day, shift_start_day
  • hr.employee.base · extends an existing modelshift_planning, current_shift_id
  • hr.shift.planning · new modelyear, state, end_date, days_data, shift_ids, company_id, start_date, week_number, shifts_count, issued_shift_ids, issued_shifts_count
  • hr.shift.template · new modeltz (Timezone), name, color, active, end_time, company_id, start_time, day_of_week_end, day_of_week_start
  • res.config.settings · extends an existing modelshift_end_day, shift_start_day
  • shift.planning.wizard · new modelyear, week_number, generation_type, from_planning_id, copy_shift_details
  • hr.shift.planning.line · new modelcolor, state, end_hour (End hour), end_time, reviewed, shift_id, company_id, day_number (Day), start_date (Date), start_hour (Start hour), start_time, employee_id, planning_id, resource_id, template_id, duration_days (Duration (Days)), duration_hours (Duration (Hours))
  • hr.shift.planning.shift · new modelcolor, state, line_ids, reviewed, image_128, company_id, lines_data, employee_id, planning_id, template_id
  • resource.calendar.leaves · extends an existing model

Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 4 confirmed, 5 with no information of 9 versions.

Sources · Odoo 17.0

Confirmed on 2026-11-03 in branch 17.0 of OCA/shift-planning.

terminal Installation and usage

OCA documentation · Odoo 18.0

In order to configure and create shift plannings you'll need to be in the __Shift Manager__ security group.

Creating shifts

Go to Shifts > Shifts and create a new one. Define a name, a color (it will be used in the shifts assignment cards), a start and end time, a time zone and week days span.

Create as many as you need to.

Setting employees with variable shifts.

Go to Employees > Employees and in the tab Work information go to the Schedule section. There you can set the __Shift planning__ checkbox if this employee should have a shift generated automatically in the weekly plannings.

Setting the default work week

Go to Settings > Employees and in the Work organization section you can define the default working week for your company. By default it goes from Monday to Friday.

After configuring the application we can start making plannings. To create a new one:

  • Go to Shifts > Plannings and click on Create.
  • Set the year and week number for the planning and click Save.
  • Now click on Generate to pre-create the shifts assignments for your employees.

In a multi-company environment, a planning can be restricted to one company: only its employees are planned and only its users see it. The same goes for the shifts: a shift of a company can't be assigned to the employees of another one. Leave the company empty to share them with every company.

You can start assigning shifts click on the Shifts smart button where you'll go to a kanban view with a card per employee that you can drag into the corresponding shift. Once you do it, you'll the color of the week days in the card changes to the color of the shift assigned.

Now if you want to assign a different shift for a specific day of that week to that employee, you can do so clicking on __Shift details__. In the detailed kanban view drag the days to their corresponding shifts.

Going back to the general assignment screen you'll see the difference in the days list colors for the employee's card. Every day is clickable and it will pop up the shift details for that specific day.

Detecting employees issues

An employee could be on leave for one or serveral days of a planning week. In that case when an assignment is made for that employee the overlapping days will be flagged as unavailable and no shift will be assigned.

We can detect those issues from the general plannings view in Shift > Plannings.

To set the issue as reviewed we can click on the checkbox of the employee's assignment card. It won't be counted on the issues summary when is checked.

Generate planning from another one

We can generate plannings from other planning so we can copy the shifts assigments. To do so you can either click on __Generate planning__ from the general plannings view in Shifts > Plannings or click on __Copy to new planning__ from the origin planning form.

In both cases a wizard will open where you can choose to which week will the new planning correspond to and from which planning we'll be copying the assignations.

Regenerate shifts.

We can reset the assignments from the planning form clicking on Regenerate shifts.

My shifts

All the internal users can view their assigned shifts going to Shifts > My shifts.

No verified information in OCA: Installation.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.