Daily updates from Odoo
Tuesday, June 23, 2026
22 changes · master
New functionality added to Odoo
This change adds a standard file to the Odoo repository that helps with version control and blame tracking. It mirrors the configuration used in the main Odoo repository, improving consistency and streamlining the development process. This is an internal update with no direct impact on users.
Original PR description
Currently an empty placeholder, but mirrors odoo/odoo
Enhancements to existing features
This update enhances the management of timesheet rules by introducing an archiving feature. Instead of deleting inactive rules, they can now be archived, maintaining a historical record and simplifying the timesheet configuration. This improves organization and reduces the need for frequent deletions.
Original PR description
This PR adds the "active" field to the "aw.rule" model, which allows to archive rules instead of having to delete them. no-task
This update adds JavaScript tests to ensure the Gantt chart's side panel functions correctly, specifically when sample mode is active and when scheduling tasks. These tests verify that the side panel is hidden as expected and that the correct information is transmitted to the server.
Original PR description
In this PR, we add some tests related to changes made in this PR: https://github.com/odoo/enterprise/pull/112009 about the side panel in gantt. We test that the side panel is hidden once sample mode is enabled, and that the context of the (un)schedule action is correctly passed to the server. task-5956860
This update ensures the Enterprise version of Odoo's account reporting system is compatible with the latest OWL 3 standard. This is a crucial improvement for data accuracy and future-proofing our accounting capabilities within the Enterprise module.
Original PR description
Enterprise counter-part. https://github.com/odoo/odoo/pull/269817
Resolved issues and error corrections
A bug preventing users from adding cover images to Knowledge articles has been resolved. The issue stemmed from a missing callback function during the upload process, causing the upload to fail. This update ensures cover images can now be successfully added, improving the article creation workflow.
Original PR description
Steps to reproduce: 1. Install Knowledge. 2. Create an article. 3. Open the more actions menu. 4. Click "Add Cover". 5. Upload a cover image. Issue: - The upload crashes with the following traceback:…
Steps to reproduce: 1. Install Knowledge. 2. Create an article. 3. Open the more actions menu. 4. Click "Add Cover". 5. Upload a cover image. Issue: - The upload crashes with the following traceback: `Uncaught Promise > this.props.setAbortUploadsCallback is not a function` Cause: - `KnowledgeCoverSelector` extends the html_editor `ImageSelector`, whose upload flow registers an abort callback through setAbortUploadsCallback. The generic MediaDialog provides this callback, but KnowledgeCoverDialog renders KnowledgeCoverSelector directly and did not pass it. As a result, the inherited upload flow called a missing prop. Solution: - Pass setAbortUploadsCallback from KnowledgeCoverDialog to KnowledgeCoverSelector and abort pending uploads when the cover dialog is discarded. Alternative approach: - Make ImageSelector tolerate callers that do not provide setAbortUploadsCallback by calling it with optional chaining. opw-6176716 Forward-Port-Of: odoo/enterprise#121162 Forward-Port-Of: odoo/enterprise#116906
This update resolves an issue where changing multiple project names didn't update the associated folder names. The fix ensures that when users edit project names, the linked folder names are automatically updated, streamlining project management. This prevents inconsistencies and ensures data accuracy.
Original PR description
Currently, an error will occur when user multi edits name of projects. Steps to replicate: - Install `documents_project` and open any project's settings using kebab menu (3 dots). - Click new > name…
Currently, an error will occur when user multi edits name of projects. Steps to replicate: - Install `documents_project` and open any project's settings using kebab menu (3 dots). - Click new > name `Test` > open settings page and unselect `Documents` > Save. - Click new > name `Test1` > Save. - From the list view select `Test` and `Test1` and edit their name. Error: ``` ValueError: Expected singleton: project.project(9, 10) ``` Cause: - During `multi-edit`, self contains multiple project records. - When only one of the selected projects has a documents folder (i.e. `use_documents` enabled), `self.documents_folder_id` contains that single folder, making `len(self.documents_folder_id.project_ids) == 1` to be True [1]. - The condition then proceeds to access `self.name` on the `multi-recordset`, raising singleton. Solution: - Avoided accessing `self.name` on a `multi-recordset` during multi-edit. - Filtered projects individually and updated the document folders using the name in vals. [1]: https://github.com/odoo/enterprise/blob/3c2985ca6011700c271ed14e40e08c89be822753/documents_project/models/project_project.py#L101 sentry-7452096418 Forward-Port-Of: odoo/enterprise#120654 Forward-Port-Of: odoo/enterprise#119060
This update resolves a warning in the Odoo payroll system that was causing incorrect results or access errors. The fix corrected a misconfiguration that was incorrectly targeting employee data instead of the version model. This ensures accurate payroll calculations and reliable system performance.
Original PR description
The warning `hr_payroll_warning_wrong_work_code` was targetting the version model but was returning employee records which led to the wonrg result or access errors
This update cleans up the appearance of payslips by removing unnecessary trailing zeros from the line rate displayed in the salary section. This improves the clarity and professionalism of payroll reports for employees and managers. It's a small but important visual enhancement.
Original PR description
Problem: A lot of trailing zeros were displayed on the rate of each payslip line, in the salary tab of the payslip form. Solution: We simply hid trailing zeros. Task-6310227
This update resolves a bug where tests were failing due to outdated configurations after removing a field. The tests have been updated to correctly utilize the new 'is_live' field, ensuring accurate functionality for rental stock processes. This ensures the system continues to operate reliably.
Original PR description
Some tests were not adapted after removing state field, this caused the failed tests, the tests are now adatped to set up the is_live field instead. Community: https://github.com/odoo/odoo/pull/271052
This update fixes a technical issue in the Belgian payroll localization (l10n_be_hr_payroll) where a field was incorrectly configured to accept monetary values instead of the intended quantity. This change ensures accurate calculation of 'Forced # Months' compensation rules, aligning with Belgian accounting standards.
Original PR description
In Belgium localization salary rule "Forced # Months", the input unit type was monetary when it supposed to be quantity. This commit changes the input type to the correct one (quantity) Task: 6241599
This update fixes a potential issue where changes to the Point of Sale system could disrupt the display of receipt quantities. By using a more flexible method to locate the relevant data, the update ensures the receipt information remains accurate and consistent, regardless of future Point of Sale updates. This enhances the reliability of the receipt generation process.
Original PR description
In this commit - -------------- Use a more generic xpath on the receipt quantity span instead of matching the full class attribute, so the template inheritance does not break when point_of_sale updates the text size class.
This update resolves an issue where the 281.XX report generation failed due to missing employee first and last names. The fix adds a check to ensure these fields are populated, preventing errors and ensuring accurate report creation. This improves the reliability of payroll reporting.
Original PR description
Steps to reproduce: 1. Create a Belgian company with a full address, phone and VAT 2. Create an employee of this company with a full private address, valid NISS (or "/"), and give him a contract. 3. Make sure the employee doesn't have a first name or a last name set. 4. Create some payslips for the employee (one is enough). 5. Go to Reporting > 281.XX Sheets and try creating a new report for the corresponding year. Problem: When pressing "Compute", you will see a traceback indicating us that an error occured because of the first name not being set. Fix: Adding a check to make sure that the first and last name are set, and raising an error if it is not the case. Task-6318024
This update resolves a crash that occurred when users viewed real Instagram videos within Odoo. The fix now displays the video link instead of attempting to show the video as an image, preventing the previewer from failing. This ensures a smoother user experience when viewing Instagram content.
Original PR description
Purpose ======= When we have a real on Instagram, we try to show the video as an image. When clicking on the broken image, the previewer crash. To fix that issue, we know show the link of the video in the message. Task-5491124 Forward-Port-Of: odoo/enterprise#121176 Forward-Port-Of: odoo/enterprise#113487
This update resolves an issue where opening attendance records from the Gantt view was failing. The fix removes a redundant process that caused a system deadlock, ensuring that attendance records can now be opened as expected. This improves the usability of the attendance tracking feature.
Original PR description
Steps To Reproduce: Try to open any existing attendance record from gantt view. It doesn't open the Dialog. Issue: onPillClicked wraps `openDialog` in mutex.exec(), but openDialog() already calls mutex.exec() internally, causing a deadlock — the inner exec waits for the outer to finish, while the outer awaits the inner. Fix: Remove redundant mutex.exec() wrapper in onPillClicked. task-6317228
This update addresses a technical change within the ChatGPT plugin for Odoo Enterprise. The plugin's formatting functionality has been updated to align with a recent API change, ensuring continued compatibility and proper operation. This ensures the plugin continues to function correctly.
Original PR description
The format plugin's shared removeFormats was renamed to removeSelectionFormats. task-6216233 community: https://github.com/odoo/odoo/pull/266372
This update fixes an issue where the 'Consolidation' filter wasn't visible on multi-company General Ledger reports. The change ensures the filter appears by defaulting to the report's grouping settings, improving reporting accuracy and providing a more complete view of financial data.
Original PR description
The Consolidation filter doesn't appear on the General Ledger, even in multi-company. Since `user_groupby` can also be defined on the `account.report`, this commit adapts the logic for `show_consolidation`, to fallback to the report's groupby. no-task Forward-Port-Of: odoo/enterprise#120533
This update corrects inconsistencies between Odoo module manifests and actual file usage. The changes ensure that all dynamically loaded files are properly listed, and outdated files have been removed, resolving warnings flagged by the Odoo linter. This improves the stability and maintainability of the core Odoo Enterprise modules.
Original PR description
Since that they are already loaded from python scripts
This update corrects a technical issue preventing the 'Invoicing & Banks' user group from accessing the necessary data within the account reports module. The missing access control record was corrected, ensuring proper functionality for this user group. This resolves a potential restriction on reporting capabilities.
Original PR description
The `ir.model.access` giving read access to model `account.return` for group "Invoicing & Banks" hasn't been migrated properly.
This update fixes an issue where custom fields linked to employee or applicant records weren't automatically updating after a signature was completed. The fix ensures that these fields are correctly synchronized, allowing for accurate record-keeping. This improves the reliability of the signature process.
Original PR description
Version - saas-19.3 Steps to Reproduce: 1. Create a custom Sign field (e.g. "Passport No") with "Update Field" enabled, linked to Employee (For Applicant, same any custom field). 2. Employee flow:…
Version - saas-19.3 Steps to Reproduce: 1. Create a custom Sign field (e.g. "Passport No") with "Update Field" enabled, linked to Employee (For Applicant, same any custom field). 2. Employee flow: Employee app -> open an employee -> gear icon -> Signature Request -> send. Applicant flow: Recruitment app -> Applicants list view -> select an applicant -> Actions -> Signature Request -> send. 3. Complete the signature. 4. Check the linked record's "Passport No" field -> field is not updated. Issue: The field linked to the employee/applicant record is not updated after signing. Cause: Both the `hr.contract.sign.document.wizard` and `hr.recruitment.sign.document.wizard` create the `sign.request` in `validate_signature()` without setting `reference_doc`. `_get_auto_field_target_record()` relies on `reference_doc` to resolve the record to sync auto fields against. With `reference_doc` empty, it returns `None`, so `sign.request._sync_auto_field_value()` skips the item before it ever reaches the write step. Solution: Set `reference_doc` to the corresponding `hr.employee`/`hr.applicant` record when building the `sign.request` values in `validate_signature()`, so auto fields linked to those models can resolve their target record and sync back normally after signing. taskid-6308532 Forward-Port-Of: odoo/enterprise#121152
Features or functions removed from Odoo
This change removes a flag used to track production environments within the VoIP system. Previously, call records were always created, regardless of whether the system was initialized with demo data. This update ensures that call records are only created when demo data is present, streamlining the system and improving efficiency.
Original PR description
`is_production` is not very useful in a production database. Remove it. When a database is initiated without demo data, we don't create voip.call record for any call made in demo mode. When a database is initiated with demo data, no change, we still create voip.call record in all cases. Task-[6304061](https://www.odoo.com/odoo/5778/tasks/6304061)
Code cleanup and technical improvements
This update adjusts the way attachments are displayed within the accounting module. It adapts to a recent change in how attachment views are defined, ensuring consistent and accurate presentation of attached documents. This improves the user experience for managing financial records.
Original PR description
task-6263903
This update replaces an outdated JavaScript class (`Deferred`) with a modern equivalent (`Promise.withResolvers()`) across the Odoo codebase. This change improves code efficiency and aligns with current JavaScript standards, ensuring the system remains up-to-date and performs optimally.
Original PR description
…lvers()` The custom `Deferred` class is now obsolete. This commit replaces all instances and calls of `Deferred` across the codebase with the native, modern JavaScript equivalent: `Promise.withResolvers()`. task-5258181