Daily updates from Odoo
Monday, August 18, 2025
22 changes
Enhancements to existing features
Belgian payroll now excludes PFI contracts when calculating an employee's seniority for departure notice periods. This helps ensure notice periods for leaving employees follow Belgian rules more accurately and avoids overstating seniority from ineligible contract types.
Original PR description
When you generate the notice period for leaving employees, you must compute their seniority. In Belgium, PFI contracts should not be taken into account. This commit filters the contracts to ignore PFI ones. task-4788455
This update adjusts several Point of Sale compliance features for Belgian, Swedish, and EU scale certification requirements. It improves configuration, session handling, and self-ordering behavior so businesses can better meet local fiscal and device compliance obligations.
Marketing automation mailing tests were updated to match the new default sender behavior. Emails from mass mailings now use the mailing’s responsible person as the author by default, helping campaigns reflect the correct ownership.
Original PR description
Emails from mass mailings are now sent with the responsible user of that mailing as the author by default, or the current user This change specifies that the responsible of the mailing is also the creator of the campaign so the tests that relied on that assumption remain valid. Task-2199202
Businesses can now choose specific product categories where the Contact Us button appears for zero-priced rental or subscription items. If no categories are selected, the behavior remains unchanged and applies to all products, giving teams more control without disrupting existing setup.
Original PR description
- Added an option to choose specific product categories where the Contact Us button should appear for zero-priced items. - If no categories are selected, the rule still applies to all products (same as before). - Makes it easier to apply the rule only to certain collections only. See also: - Community PR: https://github.com/odoo/odoo/pull/215526 - Upgrade PR:https://github.com/odoo/upgrade/pull/7928 Affected_Version:Master Task_ID:4819657
Creating a payroll run is now quicker because users choose only the start date with a simple date picker. The end date is still filled automatically and remains editable when adjustments are needed.
Original PR description
To ensure a smoother UX, the `daterange` widget has been replaced, as `date_end` is already calculated based on the selected `date_start`. Previous behavior: When creating a pay run and selecting `date_start`, a date range popup was displayed. This required two clicks, even though `date_end` was already auto-filled. New behavior: A simple date picker is used for `date_start`. The `date_end` remains editable so it can still be updated manually if needed. Task: 5005903 Forward-Port-Of: odoo/enterprise#92028
Payroll now only offers pay schedules that are supported by each country’s localization, reducing the risk of incorrect payslip calculations. When monthly payroll is the only valid option, the schedule selection is hidden to simplify employee and contract setup.
Original PR description
In most locas, we only have correct computations for monthly payslip so we should restrict the choice depending on the loca. Also if there is only one choice, monthly, we should not display the selection field at all. Task: 4890507
Kiosk configuration now shows only settings that are relevant to kiosk mode. This reduces confusion for users setting up kiosks and makes the configuration process quicker and clearer.
Original PR description
Before this commit: =================== - Configuring a kiosk showed many settings that were not applicable to kiosk mode, creating unnecessary complexity. After this commit: ================== - We have removed all the irrelevant settings from the kiosk configuration Task: 4830228 Related Community PR: https://github.com/odoo/odoo/pull/212665
Adds automated checks for the IoT printing service to make sure test prints use the expected connection method and receive responses in the right format. This helps reduce regressions and improves confidence that IoT printer actions continue working reliably.
Original PR description
This commit brings unit tests for the iot http service, and small fixes to it. It also brings a tour to ensure using 'Test' print on the iot device record uses websocket (after failing using webrtc and longpolling), and receives a response in the right format when calling the callback controller (that the iot box calls to send a websocket message).
Document search filters now separate files into clearer categories such as PDF/documents, images/videos, URLs, and spreadsheets. This makes it easier for users to find the right content quickly, including linked shortcuts to those document types.
Original PR description
Add more granularity to the documents filter. - PDF/Documents: All binary documents (+ shortcuts) which are not image/video, spreadsheet or shortcut of those. - Image/Video: All image/video documents (+ shortcuts). - URL: All documents of type 'url' (+ shortcuts). - Spreadsheet: All spreadsheet documents (+ shortcuts). Task-4897125
Payroll accounting now supports assigning analytic distributions on employee versions and salary rules. This helps businesses allocate payroll costs more accurately across departments, projects, or cost centers without extra manual accounting work.
Original PR description
task-4775857
Belgian payroll can now include an employee's seniority from before hiring when calculating notice periods. This helps produce more accurate departure notice results when the company chooses to count prior seniority.
Original PR description
In this PR, we added seniority at hiring to the notice period computation. When the option of including the Seniority at Hiring is set, we consider the first_contract in the notice period calculation as `notice.first_contract - seniority at hiring (in years)`. Related task: 4936801.
The Helpdesk tracking component has been renamed to better show that it also enables communication-thread behavior. This is a low-impact internal clarification that helps future maintenance and supports upcoming resource aging features without changing day-to-day user workflows.
Original PR description
Due to changes in the mail.tracking.duration.mixin class, namely to enable it to support rotting resources, it now inherits from mail.thread. To clarify at a glance that the mixin makes the inheriting model into a thread, it is renamed to mail.thread.tracking.duration.mixin. task-4684660
Payroll users can now see employer cost directly on payslips and pay runs. This makes it easier to understand the full payroll expense without manually adding contributing salary rules.
Original PR description
Before: - The salary rule field was labeled "View on Employer Cost Dashboard" - Payslip list view did not include employer cost. - Pay run (batch) had no summary of total employer cost for all its payslips. After: - Renamed salary rule field to "Contributes to Employer Cost" for better clarity. - Added a computed "Employer Cost" field on the payslip, summing all rules marked as contributing. - Displayed "Employer Cost" by default in the payslip list view. - Added a new field on the Pay Run (batch) to show the total Employer Cost, computed as the sum of all employer costs from associated payslips. Task-4793801
Payroll screens now use the clearer label “Pay Schedule” instead of “Schedule Pay” for employee and contract template information. This improves consistency and makes the field easier for users to understand without changing payroll behavior.
Original PR description
Field label changes is employee and contract template view, from Schedule Pay to Pay Schedule Task ID: 5005026
The Point of Sale customer list now opens much faster when many customers are loaded and the cart has many items. This reduces delays for cashiers during checkout and improves the in-store sales experience.
Original PR description
Before this commit, opening the customer list in PoS could be slow when many customers were loaded (common in active PoS environments) and the current order had numerous orderlines. This performance hit was due to repeated recalculations of `get_total_with_tax`. This commit resolves the issue by storing the `get_total_with_tax` value of the current order when the customer list is opened. This value remains constant while the customer list is active, eliminating unnecessary recalculations. Performance Impact: With 500 customers loaded and 20 orderlines in the cart, opening the customer list improved from 5 seconds to 200 ms. opw-4921262 Forward-Port-Of: odoo/enterprise#92354 Forward-Port-Of: odoo/enterprise#89526
Spreadsheet users get a smoother experience when editing global filters, as panels now replace each other correctly and restore previous views when cancelled or removed. The update also protects performance by blocking very large static pivot insertions and adds chart zooming for easier analysis.
This update improves how Knowledge article data is loaded when no specific fields are requested. It helps ensure commonly needed information is available more consistently, supporting smoother performance and fewer missing-data edge cases.
Original PR description
Companion of https://github.com/odoo/odoo/pull/223199
The Approvals app now presents request cards in a clearer, easier-to-scan Kanban layout. Status labels display the right text and colors, users can group requests by status, and approver avatars are visible in category lists for quicker recognition.
Original PR description
In this PR, Before: - The Approvals Kanban board was difficult to read at a glance. - Status labels (like “Pending” or “Approved”) sometimes displayed incorrect colors or text. - Users couldn’t group approvals by status in the search view. - The list view for approval categories didn’t show user avatars. After: - Redesigned the Kanban cards to be cleaner and more readable. - Status labels now show the correct name and color consistently. - Added support to group approvals by status in the search view. - User avatars are now visible in the list view of approval categories Task-4677549
Weekly date filters now use a clearer shared starting point for the week. This keeps planning, attendance, and timesheet forecast reports aligned when users view information by week.
Original PR description
This PR changes the week-based domains to use the new 'week_start' keyword.
Users can now create a blank dashboard without leaving the spreadsheet selector. This removes extra steps when adding list, pivot, or graph views and makes the dashboard creation flow faster, especially when no dashboard exists yet.
Original PR description
**Description of the issue/feature this PR addresses:** - Enable users to create a new blank dashboard directly from the spreadsheet selector dialog instead of being limited to inserting into existing dashboards. **Current behavior before PR:** * Users could only insert list/pivot/graph views into existing dashboards. * Creating a new dashboard on the fly via the selector was not possible. * If no dashboards existed, users had to leave the selector, create one manually, and reopen the selector to proceed. **Desired behavior after PR is merged:** * The selector now offers a **“Blank dashboard”** entry in the Dashboard notebook. * Selecting this entry opens a minimal creation form (Name, Section, Access Groups) in a dialog. * Once saved, a new dashboard is created and immediately opened in edit mode as the insertion target. Task: [4948417](https://www.odoo.com/odoo/project/2328/tasks/4948417)
The Planning app now shows clearer helper text in the roles configuration menu and uses the standard default icon instead of a screenshot. This makes the setup experience cleaner and easier for users to understand.
Original PR description
- update the helper text in roles configuration - replace the screenshot with the default icon --- task-4951378
Project document tags now appear using the same colors defined for those tags. This makes tags easier to recognize at a glance and keeps the project document view visually consistent with tag settings.
Original PR description
Set the document tag color in the project to the same color as the tag color --- task-4951362