Daily updates from Odoo
Wednesday, April 22, 2026
10 changes · master
Enhancements to existing features
The timesheet kanban views have been redesigned to show more useful information at a glance, with the personal timesheet view now feeling more like a calendar. This should make it easier for users and managers to review time entries, billable work, and overall timesheet status without opening individual records.
Original PR description
Redesign the timesheet kanban views to display more relevant information and make the *My Timesheet* view feel more calendar‑like. ## Additional - To ensure `is_billable` behaves correctly with the kanban progress bar, a non-stored `is_billable_select` field was added to `analytic.account.line`. This field can be queried through its `sql_search` method, allowing efficient access without introducing redundant stored fields in the database. Using a selection field is required for proper progress bar functionality. task-[5180328](https://www.odoo.com/odoo/project/4105/tasks/5180328) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users now see a warning as soon as they assign someone and choose planned dates that overlap with that person's existing tasks. This helps teams spot conflicts earlier and adjust schedules before saving, reducing planning mistakes.
Original PR description
When a user plans a task, they are not aware if the assigned user already has other tasks at the same time. Currently, the overlapping warning is only triggered when the task is saved. This commit ensures that the warning appears as soon as the user selects the assigned user and planned dates, allowing the user to reschedule the task before saving. task-4300405
Helpdesk teams can now see the coupon email and its attachment directly in the related ticket chatter. This makes it easier to track what was sent to customers and keeps the ticket history complete for follow-up and audits.
Original PR description
Log the coupon email and the attachment in the helpdesk chatter --- Task-5075162
Belgian payroll now applies caps to Premium Pay calculations, helping ensure employee payslips follow the required limits. This reduces payroll errors and improves compliance for companies using Belgian payroll rules.
Original PR description
add premium pay caps Task: 6119891
The French reporting export screen now allows longer text lines to wrap instead of being cut off. This makes export information easier to read and reduces confusion for users reviewing async export details.
Original PR description
Improves the UI by allowing the text lines to wrap and fully be visible. No task ID
The accounting reports setup screen no longer shows an informational warning about reports using custom handlers. This reduces clutter for users who customize reports and removes a message that is no longer considered useful.
Original PR description
Before this commit: - We had one info banner with the message indicating that the report is using a custom handler, so a change in the parameters used for computation could lead to errors. After this commit: - Now, we are removing this info banner from the report form view, because there is no need for this banner anymore, as if the user wants to customize the reports, they'll do it anyway. Task-6037421
This update changes how VoIP-related records are stored internally to better handle frequent creation and deletion of calls, messages, and related items. Users should not see workflow changes, but the app may feel smoother and more responsive during busy usage.
Original PR description
`Store.MyModel.records` is an object whose key is record local id and value is the record. While format of object is nice, this object has its shape changing quite often as this is based on creation and deletion of records. Objects in javascript are expected to have their shape changed rarely, which is not the case of `records`. In theory, creation of JS models can lead to noticeable stuttering from major and minor GC. This commit changes the shape of `records` to become a Map instead, which doesn't have these problems. As this becomes a Map, and quite some business code was using `Object.values()` around records, this commit also add a new feature on Model object: `.all()`, which returns list of all records of the given model: ```js // previously Object.values(store.MyModel.records); // now store.MyModel.all(); ``` Task-5437248
The Documents app now keeps page navigation visible in Kanban and List views, even when the details panel is open. This makes it easier for users to move through document pages without changing panel visibility, and the details panel now updates to show the current folder when pages are opened or changed.
Original PR description
Before this commit, the pager would only be displayed if the right panel is invisible. This commit allows to be always displayed in `Kanban` and `List` views regardless of the state of the right panel. task-6070904
The Belgian payroll module now includes the 2026 salary scale values for Joint Committee 302, covering both regular and flexi jobs. This helps ensure payroll calculations stay aligned with the latest sector requirements and that related checks continue to validate the updated amounts.
Original PR description
. Add JC302 salary scale 2026 effective values for normal & flexi jobs . Update the corresponding tests task-6127071
The settings text for the Invoicing Switch Threshold now explains that all entries created by Invoicing before the threshold date are ignored, not just invoices. This helps users better understand what data is excluded and reduces confusion during accounting setup.
Original PR description
The previous "Invoicing Switch Threshold" explanation was misleading as it said only invoices prior to the threshold date is not taken into account. The explanation is updated to state that all entries created by Invoicing before the threshold date will be ignored. task-5940144 Forward-Port-Of: odoo/enterprise#113635