Daily updates from Odoo
Monday, July 27, 2026
13 changes
1 change
Enhancements to existing features
This PR alters the preview record selector pager present in the mass_mailing mobile preview view to allow users to manually select a recipient, instead of rotating through the available recipients. This PR also introduces an alternate-color version of the HTML editor phone_svg image, to be used in the dark theme preview. -- This PR introduces a series of small fixes to the mailing form view, UX and associated views: - When clicking its Discard button, the fullscreen mailing edit
Original PR description
This PR alters the preview record selector pager present in the mass_mailing mobile preview view to allow users to manually select a recipient, instead of rotating through the available recipients.…
This PR alters the preview record selector pager present in the mass_mailing mobile preview view to allow users to manually select a recipient, instead of rotating through the available recipients. This PR also introduces an alternate-color version of the HTML editor phone_svg image, to be used in the dark theme preview. -- This PR introduces a series of small fixes to the mailing form view, UX and associated views: - When clicking its Discard button, the fullscreen mailing editor only discards changes made to the mailing - In the Mailing preview dialog, the "fake" header no longer displays a grab cursor (as it cannot be grabbed) - When sending a test, a toaster is no longer displayed, as information pertaining to its success or failure is already logged in the chatter - The Dynamic list recipient count is no longer displayed for sent mailings, as it may have become outdated since it was sent. This commit also removes the outdated demo in mass_mailing_sale. It was no longer compatible with the editor, and its previous purpose in demonstrating link tracking is now handled by other demo mailings. task-6321624
1 change
Enhancements to existing features
We update the IoT Box version, so that it follow the new saas version (19.4).
Original PR description
We update the IoT Box version, so that it follow the new saas version (19.4).
1 change
Enhancements to existing features
We update the IoT Box version, so that it follow the new saas version (19.4). backport of: odoo/odoo#278588 (as images are still built in 19.1)
Original PR description
We update the IoT Box version, so that it follow the new saas version (19.4). backport of: odoo/odoo#278588 (as images are still built in 19.1)
1 change
Enhancements to existing features
With this update: - For UBL imports, bank details are also used to help identify the partner by matching the bank account number. The retrieval logic has also been improved: 1. If VAT exists in the XML: - If a partner found with no VAT then enrich that partner by filing VAT from xml - If a partner found with a different VAT than the one in the XML, then a new partner will be created Task [link](https://www.odoo.com/odoo/project.task/5485563) task-5485563
Original PR description
With this update: - For UBL imports, bank details are also used to help identify the partner by matching the bank account number. The retrieval logic has also been improved: 1. If VAT exists in the XML: - If a partner found with no VAT then enrich that partner by filing VAT from xml - If a partner found with a different VAT than the one in the XML, then a new partner will be created Task [link](https://www.odoo.com/odoo/project.task/5485563) task-5485563
2 changes
Enhancements to existing features
When employees or administrators try to create an expense card before Stripe is connected, they are now directed to the settings page to complete the connection. This makes the next step clearer and reduces confusion during card setup.
Original PR description
When a user tries to create a card but the configuration is not connected, redirect the user towards the settings to do the connection. task-6272805
Belgian payroll individual account reports now include ecovouchers paid to employees, covering both monthly and termination-related entries. This helps payroll users maintain more complete and accurate employee reporting.
Original PR description
In order to maintain proper reporting for payroll app users, individual accounts report must include ecovouchers paid to the employees therefore eco-voucher entries (terminating and monthly) were added to the report. Task: 6370378
4 changes
Enhancements to existing features
When reconciling a bank statement with a different partner than the one currently linked to the statement line, users now receive a notification. This helps accountants decide whether to move the bank account association to the reconciled partner, reducing accidental partner-account mismatches.
Original PR description
Add a new notification in the bank reco widget when a user do a reconciliation with a partner different from the one on the st_line. The idea is to let the user chose if he wants to move the bank account from the st_line partner to the move he tries to reconcile. task-6303397
Bank statement reconciliation now runs much faster for companies with large accounting histories, reducing the risk of scheduled processing delays or timeouts. This helps multi-company accounting teams keep reconciliation automation reliable without changing their workflow.
Original PR description
The standard cron process reconciles batches of 100 bank statement lines at a time. In multi-company environments with large historical datasets, this query frequently timed out, exceeding the…
The standard cron process reconciles batches of 100 bank statement lines at a time. In multi-company environments with large historical datasets, this query frequently timed out, exceeding the 15-minute execution limit. Even when throttled to a batch size of 10 records, the query required approximately 18.8 seconds to execute. The performance degradation was driven by the following factors: 1. Suboptimal Lateral Filtering: The statement line batch array filter was placed inside the `LATERAL` block's `WHERE` clause. This prevented the query planner from optimizing the drive path effectively across iterations. 2. Inefficient Join Sequence and Filtering: The original join order scanned `account_move_line` before resolving the company hierarchy constraint. As a result, millions of rows across all companies were retrieved from the index, forcing repeated primary key lookups on `res_company` before ultimately discarding over 99.9% of the records via the late `parent_path` hierarchy filter. This commit addresses these issues by: 1. Moving the `st_line.id` filtering constraint out of the lateral subquery and into the outer main query block to guide the execution path properly. 2. Reordering the inner `LATERAL` subquery to resolve the company hierarchy (`res_company`) prior to joining `account_move_line`. This constraints the scan boundaries early in the pipeline. Performance Benchmarks (10 record batch): - Before Execution Time: ~18,818 ms - Before Shared Hit Blocks: 8,535,272 - After Execution Time: ~130 ms - After Shared Hit Blocks: 67,204 ms Before Plan: https://explain.dalibo.com/plan/h4739gh3519eaa43 After Plan: https://explain.dalibo.com/plan/5ebc5g8deff272gc
Payroll tax calculations for Pakistan have been updated to reflect the 2026 tax brackets. The previous extra tax surcharge mechanism has been removed, helping payroll results align with the latest tax rules.
Original PR description
[IMP] l10n_pk_hr_payroll: update 2026 tax brackets . tax brackets are updated . extra tax surcharge mechanism is deleted task-6401729
Users who try to create an expense card before Stripe is connected are now directed to the settings page to complete the connection. This makes setup clearer and helps users resolve the issue without needing technical support.
Original PR description
When a user tries to create a card but the configuration is not connected, redirect the user towards the settings to do the connection. task-6272805
2 changes
Enhancements to existing features
Current behavior before PR: Threads couldn't be recognized by reading messages in the chat but only in the channel list. Desired behavior after PR is merged: As in 19.0, when a thread (sub-channel) has been created from a message in a channel, the originating message displays a preview card below it showing the thread name, last message preview, author prefix, and timestamp. This backports that feature to 18.0 by: - Adding an 'after-reactions' extension slot to the mail.Message template
Original PR description
Current behavior before PR: Threads couldn't be recognized by reading messages in the chat but only in the channel list. Desired behavior after PR is merged: As in 19.0, when a thread (sub-channel) has been created from a message in a channel, the originating message displays a preview card below it showing the thread name, last message preview, author prefix, and timestamp. This backports that feature to 18.0 by: - Adding an 'after-reactions' extension slot to the mail.Message template - Adding a new SubChannelPreview component that renders the thread preview card (sub_channel_preview.js/xml/scss) - Patching the Message component to render SubChannelPreview after reactions when message.linkedSubChannel exists and is not the current thread (message_patch.js/xml/scss) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This PR replaces the "ting" notification sound with a more pleasant and common notification sound. If Odoo's Discuss is used as a main communication method within an organization, the notification sound is important. It should be a pleasant sound so that users don't receive it as unpleasant and may disable it eventually. At the same time the sound should be clear and not too low so that it doesn't get overlooked easily. The "ting" sound can received as too rough. In future Odoo versions "t
Original PR description
This PR replaces the "ting" notification sound with a more pleasant and common notification sound. If Odoo's Discuss is used as a main communication method within an organization, the notification sound is important. It should be a pleasant sound so that users don't receive it as unpleasant and may disable it eventually. At the same time the sound should be clear and not too low so that it doesn't get overlooked easily. The "ting" sound can received as too rough. In future Odoo versions "ting" has been replaced by "dm_02" in #186944 which is not clear enough and could be overlooked. The sound introduced by this PR aligns more with other messenger and chat systems and has a pleasant, short and clear sound. Alternatively to replacing the sound file we could add it as a new sound file and use it as the default for Discuss. Let me know if you prefer that. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
1 change
Enhancements to existing features
Password managers and browsers rely on the standardized `/.well-known/change-password` URL to automatically locate a site's password change form, instead of relying on unreliable heuristics to detect it inside the page. Without this endpoint, users depending on password manager integrations (Chrome, Safari, 1Password, Bitwarden, etc) have no reliable way to be redirected to the actual reset form, resulting in a degraded UX and inconsistent behavior across browsers. This implements the Chan
Original PR description
Password managers and browsers rely on the standardized `/.well-known/change-password` URL to automatically locate a site's password change form, instead of relying on unreliable heuristics to detect it inside the page. Without this endpoint, users depending on password manager integrations (Chrome, Safari, 1Password, Bitwarden, etc) have no reliable way to be redirected to the actual reset form, resulting in a degraded UX and inconsistent behavior across browsers. This implements the Change Password URL specification by exposing a public route that redirects to `/web/reset_password`. Reference: https://wicg.github.io/change-password-url/ --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr