Daily updates from Odoo
Tuesday, December 16, 2025
23 changes · master
New functionality added to Odoo
This update enhances the Odoo Enterprise platform by adding type definitions for the SIP.js library. These definitions improve code reliability and maintainability, ensuring better integration and development of VoIP functionality within Odoo. This change primarily supports internal development and improves the overall quality of the Odoo Enterprise codebase.
Original PR description
odoo/odoo#240058
Enhancements to existing features
This update prevents unnecessary data loading in the Point of Sale calendar view, specifically addressing potential performance issues and data security concerns. By simplifying the display and removing unused components, we've optimized the user experience and reduced the risk of accessing sensitive partner information. This change focuses on improving the PoS functionality.
Original PR description
Purpose ======= Prevent using the attendee popover in the calendar view popover in point of sale. Specification ============= The attendee popover is not necessary/relevant in point of sale where discuss is not available and access to further partner personnal information could be a problem. Changing the field to use the web "many2many_tags_avatar" widget. Also preventing the assets from loading the "Many2ManyAttendee" and the "Many2ManyAttendeeExpandable" components as they're inheriting from a mail field component which can't easily be loaded in PoS as it's using discuss and ImStatus features. Task-5153118
This update simplifies a key query used in the sale commission reporting process. By adding an alias to a temporary table (CTE), the underlying code is now easier to modify and maintain. This improves the efficiency and flexibility of generating accurate sales commission reports.
Original PR description
Add an alias to the CTE used for sale order log selection. This is done to simplify modifications to the query. Forward-Port-Of: odoo/enterprise#102145
This update adjusts how the system sends email notifications using the Odoo mail template API. The API now returns a recordset of emails sent, rather than just an ID. This change ensures the system continues to function correctly with the latest Odoo updates and maintains reliable email delivery.
Original PR description
Purpose ======= Now, the `send_mail` method of `mail.template` returns a recordset, and not just an id, adapt the code to that change. Task-3084943
This update enhances the formatting of tax reports for the Dominican Republic (l10n_co_dian) by standardizing float number formats. This ensures accurate and consistent reporting, aligning with local tax regulations and improving the reliability of financial data. The change was driven by a previous related enhancement.
Original PR description
Forward-Port-Of: odoo/enterprise#102085 Forward-Port-Of: odoo/enterprise#101288
This update simplifies the demo setup process for the HR Expense Stripe module by skipping the Stripe KYC settings and pre-filling information. This reduces the time needed to configure the demo, making it more efficient for presentations and testing. Note that a refresh is still required after setup to fully verify the account.
Original PR description
When clicking on Connect, we are now skipping Stripe KYC Settings and prefilling every informations to make the demonstrations quicker to set up. It's still required to wait a bit before refreshing to have the account as verified in the Odoo settings page. task-5246475
This update simplifies the campaign kanban view by hiding irrelevant metrics (those with zero values) and renaming the 'Send/Add' label to 'New'. This improves the user experience and makes it easier to focus on key campaign data.
Original PR description
Hide zero-value metrics in the kanban view of the campaign. Rename the confusing 'Send/Add' label to 'New'. Task-5182993
This update streamlines the bank reconciliation process by ensuring the chatter used within the bank reconciliation widget now pulls information from the statement line instead of the general move. This reduces unnecessary noise and improves the clarity of reconciliation reports, making the process more efficient for users.
Original PR description
Before this commit, the chatter of bank reconciliation widget was using the move's chatter and not the statement line one. This commit changes that to have less noise when we do the reconciliation. task-5385187
Resolved issues and error corrections
This update resolves an issue where duplicating a bill within the ESG app would inadvertently create additional assignment rules. The fix ensures that only the original rule is created, maintaining data integrity and preventing unnecessary rule proliferation. This improves the stability and usability of the ESG carbon emissions tracking feature.
Original PR description
[FIX] esg: prevent rule creation on copy Steps: 1. Go to the ESG app and create a new Emissions Factor (or duplicate one for sake of ease) 2. Open the Assignation tab and create a rule for Any Account - Any Partner - Mileage 3. Create a Bill and add the Mileage product If you check here, no other assignation rule is created 4. Duplicate the bill 5. Navigate back to the Emissions Factor on the ESG app. A new assignation rule has appeared. Notice that the steps use a product Mileage as example, you can use another one You can also test the steps with different rule configuration, you only need at least one "Any" opw-5350250 https://github.com/odoo/enterprise/commit/bab99c460a93cb4eef959d8dcd2f12e4ebaa07af Forward-Port-Of: odoo/enterprise#101789
This update resolves a bug where locking a Point of Sale (PoS) with employee login and a blackbox would sometimes cause an error when trying to select an employee. The fix ensures the system checks if an employee is actually set before attempting to update the clock in date, improving PoS stability.
Original PR description
When a PoS was configured with "login with employees" and a blackbox, locking the pos then trying to select an employee raised a traceback. The PoS was trying to update the clock in date, but the employee was undefined. This is now fixed checking whether if the employee is set. Forward-Port-Of: odoo/enterprise#102137
This update fixes an issue where users without access to a document's folder were incorrectly shown as 'Restricted Folder' in the Documents Kanban view. The fix ensures the LLM receives the correct parent folder name, even when access is denied, improving the user experience and data accuracy.
Original PR description
Bug === In documents, when we don't have access on the folder of a document, we show "Restricted Folder" in the kanban view. For AI, because we don't want to add "Restricted Folder" in the prompt when the user has no access on the folder, we skip that in the compute of the display_name when we are in sudo. But display_name are always computer in sudo, so we never show "Restricted Folder". Forward-Port-Of: odoo/enterprise#100850
This update addresses an issue where certain buttons ('Reset Password' and 'Remote Debug') were not functioning correctly on Windows IoT. To ensure compatibility, these buttons have been hidden from the user interface, preventing potential errors and improving the user experience on this platform.
Original PR description
"Reset Password" and "Remote Debug" buttons are not compatible with Windows IoT, we then hide them on the corresponding records. Forward-Port-Of: odoo/enterprise#102154
This update resolves an issue where users with access to multiple companies but only one employee were unable to schedule themselves for planning slots in those companies. The fix restores the previous behavior, ensuring all users with company access can participate in planning slots, preventing disruptions to internal scheduling processes. This ensures consistent access for all users.
Original PR description
Since #91616, if a user has access to multiple companies but only has an employee in one, they are unable to assign themselves to a planning slot from a company other than that of their employee. This was not the case in previous versions and is causing issues in our internal db. To restore the previous behavior, any user with access to a company but only 1 employee will be able to assign themselves to slots of said company. opw-5163200 Forward-Port-Of: odoo/enterprise#101883 Forward-Port-Of: odoo/enterprise#101659
This update fixes an issue where newly created employees were incorrectly marked as unavailable in the Planning Gantt view. The fix addresses a problem with how the system identified employee contracts and calculated working periods, ensuring accurate scheduling for all employees.
Original PR description
Steps to reproduce: - 1. Install Planning module. 2. Create a new employee without setting a contract start date. 3. Go to the Planning Gantt view by resource. Issue: - The Planning Gantt view…
Steps to reproduce:
-
1. Install Planning module.
2. Create a new employee without setting a contract start date.
3. Go to the Planning Gantt view by resource.
Issue:
-
The Planning Gantt view incorrectly grays out the entire schedule for newly created employees. It can also incorrectly gray out the initial days of a contract.
Cause:
-
1) With the introduction of `hr.version`, a version is now created for every employee by default. The logic to identify employees with a contract history was using a domain `[("employee_id", "in", ...)]`, which selects all employees, even those with no contract. This incorrectly flagged new employees as having a contract history, causing them to be marked as unavailable.
2) The view was using the computed `version.date_start` field. The computed `date_start` is calculated as the maximum of the version's creation date and the contract's start date. (e.g., contract starts Sep 1st, version created Sep 5th), the computed start date becomes Sep 5th, incorrectly graying out the period from Sep 1st to Sep 4th.
Fix:
-
1) The query that checks for an employee's contract history is now filtered by `('contract_date_start', '!=', False)`.
2) The Gantt view's working period calculation now uses the stored, `contract_date_start` and `contract_date_end` fields.
task-5058866
Forward-Port-Of: odoo/enterprise#101956
Forward-Port-Of: odoo/enterprise#94007This update ensures that shift schedules now accurately reflect a resource's working days, preventing the creation of shifts on weekends and holidays. Previously, the system incorrectly generated shifts for all days of the week, leading to inefficient scheduling. This change improves the accuracy and usability of shift planning.
Original PR description
Steps to reproduce: - Go to Planning. - Create a multi-shift for a resource for the entire week. - Shifts are created for all days, including weekends and non-working days. Issue: Shifts were created for the entire week, ignoring the resource working schedule, so weekends and non-working days were also included. Cause: Shifts were created without considering the resource’s working schedule, which led to inclusion of weekends and non-working days. Fix: Updated shift creation to align with the resource’s schedule, skipping weekends and non-working days. task-5051694 Forward-Port-Of: odoo/enterprise#95093
This update refactors the HTML sanitization process within the MRP Workorder module, utilizing the 'bleach' library for enhanced security. The associated unit tests have been updated to align with these changes, ensuring consistent and reliable HTML handling.
Original PR description
Purpose ======= The HTML sanitizer has been refactored to use bleach, adapt the unit tests to those changes. Task-2812488 See odoo/odoo/pull/90965
This update resolves a technical error that occurred when users switched between scanner modes. The change was necessary due to a recent update to how the system communicates with devices, and the original error handling wasn't properly adjusted. This ensures the scanner functionality is now reliable.
Original PR description
When toggling the "is scanner" toggle, we were getting a traceback. This comes from the switch from longpolling to `iot_http`, but the error handling wasn't adapted. opw-5408986 Forward-Port-Of: odoo/enterprise#102059
This update resolves an issue where incorrect date formats were appearing in reports related to bills to receive. The fix ensures dates are consistently formatted, regardless of user locale settings, improving the accuracy and reliability of financial reporting. This prevents errors and ensures data integrity.
Original PR description
Steps to reproduce: - Complete a purchase - Go to Accounting > Review > Bills to receive - Select the PO and click on `Create Accrual Entries` Issue: A traceback appears, showing an invalid date format. To keep date formats working properly with the server independantly from the locale, we must use `serializeDate` to avoid symbols that wouldn't be understood by the server. Forward-Port-Of: odoo/enterprise#102030
This update refreshes the user interface for the signer experience within the Enterprise module. The changes modernize the toolbar and background, creating a more consistent and professional look and feel. This improves the overall user experience for signing documents.
Original PR description
Before this PR, the toolbar was looking a bit old and the viewer background was to dark in LM. Now it is more harmonized. | Before | After | |--------|--------| | <img width="1596" height="831" alt="Screenshot 2025-11-13 at 17 40 51" src="https://github.com/user-attachments/assets/30eae7ae-f8bb-4fe2-87f7-9151974d5d86" /> | <img width="1596" height="831" alt="Screenshot 2025-11-13 at 17 40 37" src="https://github.com/user-attachments/assets/673ba382-0bf1-4385-b669-a81438123aac" /> | task-5060120
This update fixes an issue where assignee rows weren't displayed in the Gantt view when users had no tasks assigned. Now, all users are consistently visible, and searching by assignee filters correctly, showing only unassigned tasks within a specific project.
Original PR description
**Before this commit:** When searching for an assignee in the gantt view, the corresponding row was not displayed if the user had no tasks assigned. Similarly, when applying a custom filter on the assignee also not working properly. **After this commit:** When searching or filtering by an assignee, the corresponding user row is now always visible in the gantt view, even if the user has no assigned tasks. Custom filters on assignee also work properly. task-5076701 Forward-Port-Of: odoo/enterprise#102072 Forward-Port-Of: odoo/enterprise#96531
This update fixes a minor error in the demo data for the Belgian HR payroll module, ensuring the correct number of paid time off days are displayed. The maximum allowed time off has also been updated to comply with Belgian law (24 days for 6-day workweeks).
Original PR description
In the demo data, the number of paid time off was displayed as 21, when it should be 20. The issue was tracked to the statement used for assigning the working schedule to each employee. Also the maximum time off possible is now 24 days as stated by the law (for people working 6 days a week). task-5172492 Forward-Port-Of: odoo/enterprise#98228
Features or functions removed from Odoo
This update removes outdated and unused code within the WhatsApp module, streamlining the system. Specifically, a feature that allowed users to leave channels and a testing element for pinning channels have been removed. This improves efficiency and reduces potential complexity.
Original PR description
See individual commits.
Code cleanup and technical improvements
This update enhances how HR data is accessed within Odoo Enterprise. The changes streamline internal processes and improve the efficiency of managing employee information. This update focuses on internal improvements to the HR modules.
Original PR description
https://github.com/odoo/odoo/pull/238850