Tuesday, June 9, 2026
19 changes · saas-19.3
Resolved issues and error corrections
This update fixes a reporting issue by now logging a specific message when a new partner is created through Google or Microsoft Calendar synchronization. Previously, all new partners received a generic message. This change provides clearer tracking of partners originating from calendar integrations, aiding in troubleshooting and reporting.
Original PR description
Before we were logging the new created partners default message. Now we log custom message indicating that this partner was created from Calendar sync. task-6177363 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#264392
This update fixes a technical glitch that caused unexpected pop-ups and errors when using preset orders with time management in the restaurant POS. The issue stemmed from how the system handled merging orders, leading to outdated processes. This change ensures a smoother and more reliable experience when selecting and using preset orders.
Original PR description
pos*: point_of_sale, pos_restaurant Steps to reproduce: - Configure a preset identified by name and managed by time. - Open the restaurant POS. - Create a direct order and set a tab for it. - Return to the floor screen and create another direct order. - Select the configured preset and choose the previously created order from the order name popup. Issue: - The time slot selection popup appears unexpectedly. - Selecting a time slot triggers a traceback. Cause: - When selecting an existing order, the current order is merged into the selected order. - However, the time slot selection flow remains active for the merged order, which has already been deleted. Fix: - Exit the preset selection flow when the order is merged and deleted. Task-6032880 Forward-Port-Of: odoo/odoo#268709 Forward-Port-Of: odoo/odoo#253586
This update fixes an issue where sale order prices weren't accurately displayed in invoicing. The system was previously using product prices instead of the specific price set on the sale order line. This change ensures that users always see the correct price from the sale order, improving invoicing accuracy and reporting.
Original PR description
Steps to reproduce: - - Create a Sale Order with two sale order lines for the same product. - Set different prices on each SOL (e.g. 20 and 40). - Open the related project and go to the Invoicing tab. - Search for the Sale Order Lines. Issue: - Displayed price uses the product price instead of the SOL price. Cause: - The display name formatting used `product_id.lst_price`. Solution: - Use `price_unit` from the sale order line to show the correct price. task-5966799 Forward-Port-Of: odoo/odoo#250554
This update corrects a bug in the HR module's version calculation logic. Specifically, it fixed an error that could incorrectly identify overlapping contract periods, leading to inaccurate reporting. This ensures more reliable tracking of employee contracts and related data.
Original PR description
Forward-Port-Of: odoo/odoo#268807
This update prevents managers from overriding the assigned card for expense approvals. Previously, setting a manager on a card expense would be cleared upon approval, causing confusion and potential errors. Now, card expenses are read-only for managers, streamlining the expense approval process.
Original PR description
**Issue** If a manager was manually set on a card expense after it was created, it would be cleared when the expense was approved. **Change** Make the field readonly for card expenses, the idea is that the manager shouldn't need to approve card expenses since they are able to control them via the card itself. opw-6045587 Forward-Port-Of: odoo/enterprise#112593
This update fixes a persistent memory leak within the Odoo test suite. The issue stemmed from an unintended reference to internal Odoo environment variables, causing tests to consume excessive memory. The solution ensures proper cleanup of these references after each test run, improving test stability and performance.
Original PR description
Since [1], there was a memory leak in the test suite due to the path of `rpc._rpc`. This override was leaking the env and all services in every module sets created by hoot. In stable, we simply hook on the `after` callback to cleanup the patch, thus removing the reference to the env and services. In master, with owl3, the strategy will be to put the patch in a Plugin, which has a cleanup function that is executed automatically when the App is destroyed, i.e. after each test. [1] odoo/odoo#248852 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#268883
This update resolves a technical error that prevented users from successfully attaching PDF documents to invoices. The issue stemmed from a difference in how the system handles binary data versus base64-encoded data, specifically related to the Nilvera client's response. This change ensures invoices with PDFs can now be properly processed.
Original PR description
This commit resolves an error encountered when running on Python 3.14, which enforces stricter base64 validation. When adding a PDF to the invoice, the PDF is fetched using the Nilvera client. This client performs an HTTP request and returns a raw binary response, not a base64 representation. However, the Attachment interface handles raw binary data via the 'raw' field, whereas the 'datas' field strictly expects base64-encoded values. runbot-938173 Forward-Port-Of: odoo/odoo#268765 Forward-Port-Of: odoo/odoo#266718
This update optimizes Odoo's styling process, specifically reducing the time it takes to recalculate styles in large tables like the Accounting Balances Sheets. By removing unnecessary selectors, the system now responds faster to window resizing, scrolling, and table sorting, leading to a smoother user experience.
Original PR description
Adapt selector to remove the :has value since it not needed to have the effect applied. This reduces work during the "Recalculate Style" phase (for example when hovering rows in large tables such as the Accounting > Balances Sheets). It lowers recalculation time during window resizes, heavy scrolling, and table sorting by preventing broad selector matches and limiting style checks to elements with the specific class. This commit is a follow up of https://github.com/odoo-dev/enterprise/commit/8aa63b3c726d825e68430bb0a64a54c1b58d6af7 Note: We also fixes the scss button variable not correctly overided Forward-Port-Of: odoo/enterprise#119521
This update changes how Odoo handles probe failures for serial devices like scales. Instead of generating error logs, a warning is now logged with detailed information. This prevents unnecessary alerts and improves the system's stability by reducing noise in the monitoring system.
Original PR description
Instead of logging an exception or an error on probe failure for serial devices, we now log a warning with stack info. This avoids spamming sentry with error logs that only are probe attempts. e.g. if the device plugged is a scale, we will probe for belgian + swedish blackbox first, causing two errors three times (as we retry 3x). see odoo/enterprise#119683 Forward-Port-Of: odoo/odoo#268796
This update adjusts the checksum associated with the scale certification process. Following a recent optimization of the scale driver to reduce error handling, this change ensures continued accurate certification verification. It's a routine maintenance update to maintain the integrity of our certification process.
Original PR description
As we updated the scale driver to reduce the amount of exception caught, we need to update the certification checksum. see odoo/odoo#268796 Forward-Port-Of: odoo/enterprise#119683
This update resolves a problem in the account module's testing process. Previously, leftover financial transactions interfered with test results, leading to inaccurate data. The fix ensures a clean test environment by canceling payments before removing transactions, preventing errors and improving test reliability.
Original PR description
The KPI provider test setup could leave some account moves behind when running with all modules and demo data installed. These leftover moves were then detected by subsequent test steps, causing incorrect numbers and test failures. This commit ensures the targeted moves are removed to provide an empty test environment. Payments need to be canceled first; otherwise unlinking the moves raises a ValidationError. [runbot-939456](https://runbot.odoo.com/odoo/error/939456) Forward-Port-Of: odoo/odoo#268151
This update fixes a conflict in the Contracts module's menu ordering. Previously, other modules could disrupt the intended layout of the 'Configuration' menu. By adjusting the menu item's sequence, this change ensures the Contracts menu remains in its correct position, maintaining a consistent and predictable user experience.
Original PR description
## Description of the issue/feature this PR addresses The “Configuration” menu item defined by the *Contracts* module uses a very low sequence value, causing menu ordering conflicts when other…
## Description of the issue/feature this PR addresses The “Configuration” menu item defined by the *Contracts* module uses a very low sequence value, causing menu ordering conflicts when other modules (e.g. [OCA](https://github.com/OCA/partner-contact/pull/2202/files)) add menu items in the same section. This affects not only external modules but also internal ones that add menu items under *Contacts*. ## Current behavior before PR When other modules add new menu items to *Contacts*, the *Configuration* menu moves out of its intended last position, breaking Odoo’s default menu hierarchy. <img width="467" height="148" alt="Behavior before PR:" src="https://github.com/user-attachments/assets/4cb6e3bb-00c0-4636-87de-c51b572dc42c" /> ## Desired behavior after PR is merged The sequence of the *Configuration* menu item is adjusted so that it always remains last, aligning with Odoo’s default menu hierarchy and avoiding friction between modules. <img width="467" height="148" alt="Behavior after PR is merged" src="https://github.com/user-attachments/assets/314c2556-5f2b-403d-af8d-ab550bff41a9" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234909
This update resolves an issue where sponsor logos weren't loading correctly on exhibitor detail pages. The fix ensures the system uses the appropriate logo size (image_128) instead of a non-existent one, preventing placeholder images from appearing. This improves the visual presentation of our event exhibitor listings.
Original PR description
The sponsor logo was failing to load on the exhibitor detail page because the generic image widget was auto-generating a srcset with image_1920, a size that does not exist on event.sponsor (max: image_512). The browser would pick image_1920 from the srcset and receive a placeholder instead of the actual logo. Fixed by adding 'preview_image': 'image_128' to the t-options of the sponsor image widget, capping the srcset to existing image variants. there's another issue with the same fix: odoo/odoo@6bd2de2 related to: odoo/odoo@36e680f opw-6218587 Forward-Port-Of: odoo/odoo#264617
This update fixes a test that failed due to an assumption about the UoM feature being always enabled. The test now uses a reliable XMLID to identify items, ensuring stability across different Odoo builds (including single-app installations). This improves the reliability of our testing process.
Original PR description
Description of the issue this commit addresses: The test assumes uomDisplayName is always present and looks up Pack of 6 by name. In single_app builds, the UoM feature can be disabled, so the key is absent and a KeyError is raised. The name-based UoM search is also fragile. --- Desired behavior after this commit is merged: This commit stabilizes the test by using the Pack of 6 XMLID and by asserting uomDisplayName only when the UoM feature is enabled, while still verifying the quantity conversion logic for mixed UoMs. --- runbot-[939601](https://runbot.odoo.com/odoo/error/939601) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A technical issue preventing users from submitting WhatsApp demo documents was resolved. The update added a necessary function to handle file size information during uploads, ensuring compatibility with the WhatsApp feature and other social media modules. This prevents errors and improves the reliability of the template submission process.
Original PR description
### Steps to reproduce: - Create a new WhatsApp account in Odoo - Select a pre-generated draft WhatsApp template (one that has a multimedia file) - Change the WhatsApp account of the template to the…
### Steps to reproduce: - Create a new WhatsApp account in Odoo - Select a pre-generated draft WhatsApp template (one that has a multimedia file) - Change the WhatsApp account of the template to the new account - Click on "Submit for Approval" to upload a demo document > TypeError: object of type 'LocalBinaryFile' has no len() ### Cause of Issue: When uploading attachments via the requests library, `len()` is called on the file object to determine the Content-Length header and to handle chunked transfer encoding. The `LocalBinaryFile` class was missing a that method. ### Fix: Added a `__len__()` method to the `LocalBinaryFile` class that returns `self.size`, which retrieves the file size from the `os.stat()` information already obtained during initialization. This allows the file size to be determined without loading the entire file into memory, maintaining the lazy-loading semantics of the class. ### Note: This bug also affects all social media modules which rely on uploading attachments with the requests library. opw-6272493
This update fixes an issue where the field service report was displaying incorrect information. The report now automatically uses the Planning Shift name and start date, ensuring accurate reporting. This change aligns with recent updates to the Odoo Enterprise system.
Original PR description
…port title - Removed the 't-if' condition containing 'doc.name', as 'doc.name' now refers to the Planning Shift name following the changes introduced in v19.2. - The report now displays 'start_datetime', which is automatically populated when a Planning Shift is created. - As a result, the 't-if' condition is no longer necessary. - This change aligns with the new behavior introduced in v19.2 and effectively replaces the Task name that was previously displayed before the report was migrated from 'project.task' to 'planning.slot'. Task-ID: 6284967 Forward-Port-Of: odoo/enterprise#119712
This update corrects a technical error that prevented email notifications from being sent correctly when scheduling tasks in planning slots. The previous code used an incorrect action name, which has now been corrected to align with standard Odoo practices. This ensures that email alerts function as expected.
Original PR description
the used action name for the Send Email action was false its supposed to be action_send and not action_send_email task: 6244506 Forward-Port-Of: odoo/enterprise#118334
This update corrects a display issue related to Sunday formatting in the th_TH locale, which was impacted by a recent Chrome browser update (version 148). The change ensures consistent and accurate date and time formatting for Thai users, improving the user experience.
Original PR description
Chrome 148 changed the display format for Sundays in the th_TH locale. This commit modifies the test to expect either the full or abbreviated day name, depending on what the browser Intl API actually returns. Forward-Port-Of: odoo/enterprise#119708
This update resolves a problem where users accessing archived documents through certain methods (like widgets or direct URLs) would incorrectly display a 'not found' message. This fix ensures that archived documents are correctly opened, improving the user experience and preventing frustration. This was a follow-up to previous related tasks.
Original PR description
When a user tries to access an archived document via * a many2one widget * `/odoo/documents.document/<id>` * a discuss notification they end up in "All" with a toast specifying that the document was not found. Follow-up of Task-6068437 (follow up of Task-5386466). Task-6214488 Forward-Port-Of: odoo/enterprise#119565 Forward-Port-Of: odoo/enterprise#117229