Tuesday, March 24, 2026
12 changes · saas-18.4
Enhancements to existing features
Odoo now saves Chrome browser debug logs during automated tests, making failures easier to understand and reducing misleading noise from unrelated browser messages. This helps teams diagnose test issues faster, especially intermittent crashes or timeouts, without affecting normal end-user behavior.
Original PR description
Followup and partial revert of #232612: turns out chrome's stderr is worthless at best and confusing at worst (because it logs a bunch of dbus errors which don't actually matter), however chrome…
Followup and partial revert of #232612: turns out chrome's stderr is worthless at best and confusing at worst (because it logs a bunch of dbus errors which don't actually matter), however chrome turns out to have pretty extensive debug logging facilities which are somewhat valuable: https://www.chromium.org/for-testers/enable-logging/
For instance if the oomkiller decides to nuke a chrome tab (example selected for no reason whatsoever), the debug log will have an entry along the lines of
[...:WARNING::chrome/browser/ui/sad_tab.cc:256] Tab Killed: http://127.0.0.1:8069/
which is a much more helpful hint than just being told a test timed out (to say nothing of being told that chrome was not able to do dbus stuff when we never asked for that).
Because it can be useful for all sort of debugging, this log is saved not just when chrome fails to start, but also when a Chrome completes, successfully or unsucessfully (in the latter case it's logged as RUNBOT to be available from the runbot UI).
The chrome logging facilities are controlled by a new envvar `ODOO_BROWSER_LOG_VERBOSITY`, it can be set to `-1` to disable logging, or a strictly positive integer for ever increasing amounts of logging. At `1` chrome will log every network request it attempts which can be useful for debugging some races but is already extremely noisy.
Forward-Port-Of: odoo/odoo#255393
Forward-Port-Of: odoo/odoo#255054Resolved issues and error corrections
The Export XML option is no longer shown when selected vendor bills cannot be exported correctly. This avoids confusing downloads where customer and supplier details could appear reversed, while still allowing reuse of imported XML where supported.
Original PR description
Problem --------- Currently, in the bills list view, when you select bills > Print > Export XML; not-imported bills gets their customer and supplier party inverted. This is because the XML export of those trigger the XML computation which is not designed for bills but only for invoices or self-bills. For imported bills (coming from Peppols for example), we re-use the imported XML. Since XML export of created bills is not supported anymore. The button leaves customers confused as to why their partner are inverted in the XML. Solution --------- Don't show the "Export XML" if one or more move are selected for the import and don't compute the XML for bills that are not self-bills. no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#255289
Tasks created from website contact forms no longer show removed or empty form fields as placeholder values such as “False.” This keeps task descriptions cleaner and avoids confusing staff with irrelevant missing contact details.
Original PR description
# How to reproduce - Add a contact form to your website - Make it so the contact form creates a task on submit - Remove some field from the contact form, but no the email (ex: Phone) - Fill in the contact form; the email must be from one of the existing partners - Submit the form and go look at the task in the project application # The problem The fields removed from the form are still present in the task's description (ex: partner_phone: False) # Why This commit (https://github.com/odoo/odoo/commit/7d0660e034f3be1b92869c266dc2cfb0bc6b6941) changed the way the partner's data was added to the description. When adding that data, it does not check if it exists before hand and instead adds a default value if not found. opw-5920816 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#252848
This fix ensures live chat availability checks use fresh operator status information after time-off records change. It prevents tests from relying on outdated cached data, helping keep presence and availability behavior reliable.
Original PR description
After sending a presence notification, `_send_status_updated_notification` leaves `im_status` cached on the user/guest record. If a related model that affects `im_status` (such as `hr.leave`) is modified afterwards in the same transaction, the ORM has no declared dependency on it and will not invalidate the cache. Subsequent reads then return the stale value. breaking PR: https://github.com/odoo/odoo/pull/249314 runbot-242076 Forward-Port-Of: odoo/odoo#255361
This fixes an issue where clicking directly on text inside the cookie consent bar could record the wrong choice because the click was detected on an inner element. The consent buttons now consistently recognize whether visitors accepted all cookies or only essential cookies, improving website compliance behavior and user experience.
Original PR description
Description of the issue/feature this PR addresses: Nested tags/containers inside the cookie bar buttons/links cause mis-referenced IDs. This resulted in empty strings to be passed instead of 'cookies-consent-all' or 'cookies-consent-essential' Current behavior before PR: The original line does not consistently pick up the parent element's ID on the 'I Agree' button. When you click directl;y on the text, it reads the inner <font> tag (which has no ID). Clicking on the surrounding area does return 'cookies-consent-all' Desired behavior after PR is merged: By changing it to the line --> const isFullConsent = ev.currentTarget.id === 'cookies-consent-all'; --> you ensure the ID is always taken from the element the listener in bound to. opw-5051677 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves internal test checks for Google Calendar synchronization and email notifications. It reduces false failures by verifying emails and missing-recipient notifications more accurately, helping maintain system reliability without changing user-facing behavior.
Original PR description
No need to always check the timeout email_to always contains formatted emails. task-5152917 Forward-Port-Of: odoo/odoo#254702 Forward-Port-Of: odoo/odoo#230766
This update prevents the entire report export cron job from stopping if an error occurs during a single report generation. Previously, a single failure would halt the entire process. Now, the cron will continue to attempt to export other reports, improving reliability and ensuring timely report delivery.
Original PR description
If an error is raised during the export of reports cron execution, the whole cron stops due to the fact that the error is never catched This commit will ensure that even if there is an error with one of the report export, the cron won't top and will try to send to other documents task-5469038 Forward-Port-Of: odoo/enterprise#111602 Forward-Port-Of: odoo/enterprise#105191
This update fixes an issue where currency rates for Bulgaria were incorrectly calculated after the country switched to the Euro. The system was using reversed rates from the XML data, leading to inaccurate unit conversions. This change ensures correct currency calculations for Bulgarian transactions.
Original PR description
Issue: after Bulgaria switched to EUR, currency rate fetching from BNB was incorrectly set to still use reversed currency rates from the fetched XML, resulting in unit-to-EUR and EUR-to-unit rates being flipped in the database. Solution: adjusting the parser to get rate from 'RATE' rather than 'REVERSERATE', as the XML provides both. task-6050519 Forward-Port-Of: odoo/enterprise#111275
This update resolves an issue where users were directed to the wrong document form view when configuring Peppol document synchronization settings. The change adds a dedicated Kanban view within the settings, ensuring users can easily manage their Peppol documents. This improves the user experience and streamlines the document synchronization process.
Original PR description
Before this commit: clicking through on the setting of configuring the folder to sync peppol documents would lead to the document form view instead of the kanban view. Task-6040802 Forward-Port-Of: odoo/enterprise#111712 Forward-Port-Of: odoo/enterprise#111341
This update fixes a misunderstanding regarding the W4 form filing date in the US payroll system. The change clarifies that the field represents the date the W4 is submitted to the employer, not the date it's initially completed by the employee. This ensures accurate payroll processing and compliance.
Original PR description
This field is about when the W4 is filed with the employer, not when it's filled in. opw-5096780 Forward-Port-Of: odoo/enterprise#111213
This update corrects a small, non-critical message displayed within the documents generated for employee payroll. The fix ensures consistent and accurate reporting for HR and payroll processes. This change does not impact functionality or user experience.
Original PR description
Task#5980045 Forward-Port-Of: odoo/enterprise#109063
This update resolves an issue where users could inadvertently create 'Requested Documents' instead of folders when syncing Peppol documents through the accounting settings. To avoid a confusing folder location in My Drive, the ability to create or edit documents within the settings has been disabled, ensuring the correct document type is created.
Original PR description
Before this commit a user could create or edit a folder in the accounting settings to sync peppol documents to. The issue was that this created a 'Requested Document' instead of a folder. This commit removes the possibility to create or edit documents through the settings. An alternative would have been to add the contex to create a Folder instead of a Requested Document, however another problem then arises: the folder is created in My Drive, which does not make any functional sense. Therefore we are disabling creation and edit. This is the same logic applied in 8ada2a4f. Task-6063736 Forward-Port-Of: odoo/enterprise#111761