Back to Blog

October 31, 2026

Odoo 20 Rebuilds the Time Off Request Form With Duration Badges and a Gantt Quick-Create That Saves Four Clicks

Odoo 20 completely redesigns the time-off request experience with a streamlined single-column form, badge-based duration selectors for Full Day, Morning, Afternoon, and specific hours, a sidebar that shows real-time leave balances per type, allocation warnings, a Calendar smart button, and a Gantt view quick-create popup that lets managers approve requests without ever opening the full form.

The time off request form in Odoo has always been functional, but “functional” is a generous way of saying it made you think about fields that should have been invisible. Picking a day period meant choosing from a dropdown that existed separately from the date fields. Requesting a half-day meant mentally mapping “Morning” to one dropdown value while checking that the hours made sense in another. Odoo 20 tears the whole thing down and rebuilds it around the way people actually think about taking time off — starting with duration, not database fields.

Odoo 20 time off request form showing single-column layout with duration badges for Full Day, Morning, Afternoon, and Specific hours alongside a sidebar displaying leave balances

Duration Badges Replace the Dropdown Guessing Game

The most visible change is a row of badge selectors that replace the old Day Period and Hours fields entirely. When you open a new time off request, you now see four tappable badges: Full Day, Morning, Afternoon, and Specific. For standard leave types, the first three are self-explanatory — click one and the dates adjust accordingly. The fourth, Specific, appears only for hour-based leave types and opens a start/end date-time picker with an editable hours total. It’s the kind of interaction that feels obvious in hindsight but required rethinking how the form stores and displays duration data.

Single-day requests now show a single date field instead of two identical dates. That sounds trivial, but it removes an entire class of user error where someone would accidentally set different start and end dates for what they intended as a one-day absence. The form adapts its layout based on what you’re actually requesting rather than showing every possible field and hoping you ignore the irrelevant ones.

A Sidebar That Answers the Question Before You Ask It

The right side of the request form now carries a persistent summary panel showing your leave balance for the current year. For each time off type — paid leave, sick days, compensatory time — you see three numbers: days used, days allocated, and days remaining. This is the information that every employee checks before submitting a request, and until now it lived on an entirely different screen.

Below the balance summary sits an overlaps detection box. If your requested dates collide with a colleague’s approved time off, the panel flags it immediately with a “View Overlaps” link that opens the relevant records. For managers who need to keep minimum staffing levels, this eliminates the back-and-forth that used to happen after a request was already submitted. And if a request would exceed the remaining allocation, a red warning banner appears directly on the form — not as a validation error after you click Save, but as a real-time signal while you’re still editing.

The Gantt View Becomes a Request Interface

The bigger shift might be what happened to the Gantt chart. Selecting a range of cells in the Time Off → Overview Gantt view now opens a streamlined quick-create popup instead of a full form. The popup shows the Time Off Type selector, the same duration badges from the main form (or an hours “per day” field for multi-day selections), and a Description field. The popup title displays the employee name and duration at a glance, like “Sarah Chen — 3 days.”

This turns the Gantt chart from a read-only planning tool into an active request interface. A manager scanning the team’s schedule can create or approve time off without navigating away from the visual timeline. It saves roughly four clicks and two page loads per request, which adds up fast during peak vacation planning seasons when HR teams process dozens of requests daily.

Leaner Lists, Smarter Navigation

The cleanup extends beyond the form itself. The Department side panel that used to appear on the time off list view is gone, along with the Department column from the list. These were holdovers from an era when time off was managed centrally by HR rather than by direct managers. Removing them declutters the interface for the people who actually use it most frequently — employees checking their own requests and team leads reviewing their direct reports.

A new Calendar smart button on the request form opens the employee’s personal time off calendar in one click, providing a visual sanity check for whether the requested dates actually make sense in context. It’s a small addition, but it connects two views that previously required navigating through separate menu paths.

Why Form Design Is a Feature

These aren’t cosmetic tweaks. The old time off form forced users to translate their intent (“I need Thursday afternoon off”) into a sequence of field selections that didn’t map to that thought process. The new form starts from the duration and works backward to the data. That inversion matters because time off requests are one of the highest-frequency interactions in any HR system — every employee uses them, most of them several times a year, and friction in the process generates support tickets that land on HR’s desk.

Odoo 20’s redesign treats the request form as a product surface rather than a data entry screen. The sidebar balance, the allocation warnings, the overlap detection, the Gantt quick-create — each one eliminates a round trip that used to require opening a different view or asking a colleague. For a feature that sounds as mundane as “requesting time off,” the cumulative effect is anything but.

Ready to experience Odoo AI?

Join hundreds of teams using DearERP to customize Odoo in minutes, not weeks. Plans start at $29/month.