Daily updates from Odoo
Monday, November 17, 2025
14 changes · master
Enhancements to existing features
Users now see a clear banner when a spreadsheet is in the trash, and they can restore it directly from the spreadsheet view. Trashed spreadsheets are protected from edits, helping prevent accidental work on files that were meant to be removed.
Original PR description
Current behavior before PR: - When a spreadsheet was moved to trash, it remained editable. - No banner or notification indicated that the file was in trash. - Users could not restore a trashed spreadsheet directly from the view. Desired behavior after PR is merged: - Rename `isReadonly` variable to `hasWriteAccess` for clarity - Trashed spreadsheets become read-only. - A banner is displayed indicating the file is in trash, with a button to take it out of trash. - Updates are not real-time for other active users, but editing a trashed file raises a UserError. Task: [5030282](https://www.odoo.com/odoo/2328/tasks/5030282)
Field service users can now open an itinerary or call a customer directly from Gantt and calendar schedule popovers. This reduces extra clicks and helps teams coordinate visits faster without opening each task form.
Original PR description
_ *: industry_fsm, voip, gantt In this commit, we have made the process smoother for FSM users. Now, they can directly open the map or make a call from the Gantt popover, so there is no need to open the form view. task-3617833
Field service task chatter now shows how far timer start and stop times are from the planned task dates. This makes it easier for users and managers to quickly see whether work time was tracked in line with the schedule.
Original PR description
Added the time difference between start and stop times in the FSM task chatter.this helps users easily identify whether the timer was used according to the planned dates. Example: - Timer started at: 01/23/2025 15:11:29 AM (hh:mm before/after the start date) - Timer stopped at: 01/23/2025 15:11:43 AM (hh:mm before/after the end date) task-4510245
When users enable Do Not Disturb, incoming calls no longer make the softphone pop up, reducing interruptions during focused work. The calling status text was also clarified so users can better understand when a call is still being placed.
Original PR description
Before this commit, enabling `Do Not Disturb` mode only muted incoming rings, but the softphone still popped up on incoming calls, which could be distracting. Now, when `Do Not Disturb` is active, the softphone is not displayed at all. task-5262271 Forward-Port-Of: odoo/enterprise#99409
Knowledge article links now open a preview popover instead of immediately navigating away, helping users confirm the target content before opening it. The update also improves article link previews by showing the correct title, supporting summaries and cover previews where available, and preventing crashes in link handling.
Original PR description
This PR addresses the following: - Updated command link appearance to use btn-secondary styling. - Fixed /link to correctly display titles in previews and prevent crashes. - Ensured clicking on article links triggers a proper link preview popover. Task-4624296
UAE payroll now applies the latest GPSSA and ADPF pension contribution rules for national employees. Contributions are calculated using the employee enrolment date, company sector, salary thresholds, and the company’s emirate, improving compliance and payroll accuracy.
Original PR description
Purpose: - Update UAE social insurance calculation for nationals to comply with the latest GPSSA and ADPF rules, ensuring correct contribution rates based on employee enrolment date, sector type, gross salary thresholds, and emirate of the company. Changes: - Updated "Social Insurance Company Contribution" and "Social Insurance Employee Contribution" salary rules logic. - Changed emirate determination to use the company address instead of the employee's personal address. GPSSA (All Emirates except Abu Dhabi): - If Pension Enrolment Date is before 31 Oct 2023 → Employee: 5%, Company: 15% (non-private) / 12.5% (private). - If on or after 31 Oct 2023 → Employee: 11%, Company: 15% (non-private) / 12.5% (private, gross < 20k). ADPF (Abu Dhabi): - If Pension Enrollment Date is before 1 Dec 2023 → Employee: 5%, Company: 15%. - If on or after 1 Dec 2023 → Employee: 11%, Company: 15%. Task-4991327
The Twitter/X user search in Odoo Social now uses a search-focused endpoint instead of only checking for an exact username match. This makes it easier for users to find and select the correct Twitter/X account when setting up or managing social accounts.
Original PR description
This commit changes the endpoint used in the twtitter_get_user_by_username method to allow the user to properly search for a user on Twitter/X. The old endpoint didn't allow a proper search as it only returned a singular element. This means that we didn't do a proper search per se but only checked if the username provided existed. By now using `/2/users/search`, the user can properly search for a specific user on Twitter/X. task-5170291
Payroll officers can now see and manage employee contract offers directly from the employee form. This removes the need to grant recruitment permissions just so payroll teams can handle offer-related work.
Original PR description
Previously, the "Offers" smart button on the employee form was only available to recruitment users. This limited visibility for payroll officers who also need access to contract offers. This commit: - Changes the button visibility to `hr_payroll.group_hr_payroll_user` in `hr_employee_views.xml`. - Adds missing access rights in `ir.model.access.csv` for `hr.group_hr_user` (inherited by payroll users). - Updates the module manifest to include the new security CSV. The goal is to ensure payroll users can access and manage offers directly without requiring recruitment rights. task-5085078
The payroll dashboard warning now checks for duplicate payslips across all relevant payslips, not just those in the latest batch. This helps payroll teams spot potential duplicate payments more reliably before processing payroll.
Original PR description
- update the warning to include all the payslip not only the ones on the last batch Task: 5186729
Companies can now choose whether employee payslips are emailed when they are validated, when they are paid, or not sent automatically. This helps payroll teams align payslip delivery with local practices and company policies.
Original PR description
Currently, employees receive the payslips through email right when the payslip is validated (When the journal entry is created), but in some countries, that should not be the case, as they expect receiving the payslip after it is actually paid. This commit allows the company to decide when payslips are sent, either on validation or on payment or never. Task-ID: 5168943
The Payroll work entry type screens have been reorganized to make setup easier to understand, with clearer sections, labels, tooltips, placeholders, and useful list filters. The change also removes redundant internal fields and updates related payroll, attendance, planning, holidays, and localization logic so the new category-based setup stays consistent.
Original PR description
The Work Entry Type form view needed to be refactored. The form view is now split into new groups (computation, display, exports code, benegit eligibility and description). Tooltips and placeholders…
The Work Entry Type form view needed to be refactored. The form view is now split into new groups (computation, display, exports code, benegit eligibility and description). Tooltips and placeholders have been added to avoid further confusion of the fields, and some naming repetition has been removed (e.g.: "Partena Code" under the "Exports Code" group). Some hidden columns and some filters have been added to the list view. Here is a visualization of all the visual changes that needed to be done: https://app.excalidraw.com/l/65VNwvy7c4X/4LJSOZo8W3D `_is_unforeseen` (and anything related to it) has been deleted, since it was not used anywhere. After the UI cleanup, some views became unused. I had to remove them in migrations. `is_leave` (and its mirrror, `is_work`) are redundant, especially now that we want to use a selection field instead. So I had to remove them both and replace every single one of their occurences in the code by a new selection field named `category`. A migration making sure `category` reflects the old `is_leave` needed to be put in place. Due to having to do some back and forth in how to handle `is_work`, I found some issues (unused file, bad `querySelector`, etc.) with the `boolean_radio` widget. Fixes of this widget are thus included in this PR. task-5162567
Indonesian payroll benefit inputs are now handled through salary rules, aligning them with the newer flexible benefits system. This makes payroll configuration more consistent and keeps related payroll inputs together for easier administration.
Original PR description
purpose: adapting the new system of flexible benefits coming from salary rules for id localization - removed the records in `hr.payslip.input.type` and converted them into corresponding salary rules - changed the tests in `test_salary_rule` to use salary rules instead of other inputs task-id: 5122371
This update refreshes the UAE payroll setup with clearer company demo data, adjusted payroll structures and salary rules, and an Emirati working schedule aligned with the local timezone. It also improves how work addresses are determined so payroll settings better follow the logged-in company.
Original PR description
The cleanup includes: -Changing the company name to "My Emirati company". -Adjustments in payroll structures and salary rules. -New working schedule for Emirati company has been created to follow the Emirati timezone. -Improvements in the payroll module description. -Editing the logic behind the work address calculation to follow the logged-in company.
The Belgian payroll 273S report is easier to use with clearer year display, faster line creation, and improved generate buttons. These changes reduce confusion and streamline report preparation for payroll users, while ensuring records are linked to the correct company.
Original PR description
- Corrected display of Year field (removed thousand separators formatting) - New button now adds a new line directly - Extended binary_field widget to a custom widget for generate buttons - Added company id field - task-5167073