Monday, June 29, 2026
14 changes · saas-19.3
Enhancements to existing features
The check status button is now disabled when the user does not have permission to edit it. This avoids access errors and makes the behavior clearer when working across companies in a tax unit.
Original PR description
Before this commit: Only main company of tax unit have write access on check, so when main company is not selected and user tries to change status of check, access error is thrown. After this commit: Disable check status button if user don't have write access on check. task-5951364 Forward-Port-Of: odoo/odoo#271447
The option to send a PDP response is no longer shown as a prominent button on the invoice or bill screen. It has been moved into the settings/menu area, since cancelling and reposting the document achieves the same result and keeps the interface cleaner.
Original PR description
No real need to show a big button for sending a response in PDP as cancelling and posting an invoice/bill would do the same, so we move it to the cog wheel menu task-6274220 Forward-Port-Of: odoo/odoo#268846
Resolved issues and error corrections
The website editor sidebar was adjusted so it keeps its intended width even when the browser is zoomed in. This prevents the preview from switching to mobile mode when users click Edit at 150% zoom, improving the editing experience.
Original PR description
Steps to reproduce: - Open a website page on Chrome/Firefox. - Set the browser zoom to 150%. - Click Edit. => The website preview switches to mobile view. Before this commit, [1] changed the sidebar to `content-box`, so the `border-start` class added one pixel to `$o-we-sidebar-width`. The sidebar then reached 289px instead of 288px, which made the preview fall below the desktop breakpoint at 150% zoom. After this commit, the sidebar width subtracts the Bootstrap border width so its total width stays at 288px and edit mode keeps the desktop view. [1]: https://github.com/odoo/odoo/commit/181b870c3c6cf28c3eac59a16c36b94ae11ae927 task-6251151 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#272074
Documentation and clarification updates
This change adds a signed Individual Contributor License Agreement for David Sonnet. It is an administrative/legal update that confirms the contribution can be accepted into the project.
Original PR description
Signing the Odoo Individual Contributor License Agreement v1.0. Adds `doc/cla/individual/dsonnet.md`. --- I confirm I have read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#270526
This change prevents a warning from being logged on every document upload when automatic OCR is not enabled. It reduces noisy logs and makes it easier for teams to spot messages that actually need attention.
Original PR description
The warning "Automatic OCR does not apply to this document" was logged for every upload when automatic OCR isn't enabled, it isn't very useful. opw-[6232122](https://www.odoo.com/odoo/unassigned-tasks/6232122) Forward-Port-Of: odoo/enterprise#120741
The website editor now hides the editing toolbar when a content block is removed, even if text was previously selected. This fixes a confusing issue where the toolbar could remain visible after deleting a snippet, improving the editing experience for users.
Original PR description
Commit 8df8b4f41809de75f9ca220d47274cc3166f1cd5 moved the check for selection inside `[data-prevent-closing-overlay]` to the `closeToolbar` plugin. But when this function is called from `selection_leave_handlers` it should not do that check, as it was done for the focus or click. This commit skips the check based on the selection when `closeToolbar` is called by `selection_leave_handlers`. Steps to reproduce: - Open website builder - Drop "Text Image" snippet - Select some text in the snippet - Click on the trash icon in the sidebar to remove the snippet - Bug: the toolbar is still shown task-6308364 Forward-Port-Of: odoo/odoo#270516
Reports will no longer show ledgers that do not contain any journals for the active companies. This reduces confusion by removing entries that are not meaningful for the current business context.
Original PR description
When a ledger does not include any journal of the active companies, do not display it because it does not make sence for these companies. task-6280033 Forward-Port-Of: odoo/enterprise#119546
This update fixes an issue in the website builder where elements with a custom inline shadow could be shown with the wrong shadow state. It also ensures that removing a custom shadow clears any standard shadow styling too, keeping the visual result consistent.
Original PR description
Before this PR, , since [1], elements with an inline `box-shadow` and no custom shadow class were not detected as custom shadows by the builder option. This could make existing snippets show the wrong shadow state. After this PR, elements with an inline `box-shadow` are treated as custom shadows by the builder option, and cleaning the custom shadow also removes Bootstrap shadow classes. [1]: https://github.com/odoo/odoo/commit/55890082db7879bef3a976c84ab336bdacf76818 task-6251151 Forward-Port-Of: odoo/odoo#267175
This update makes automated checks for chat window titles more precise and less likely to fail at random. It improves the reliability of tests, helping keep messaging features stable in development and on runbot.
Original PR description
The hoot `:text('X')` pseudo-class matches an element only when its whole inline text equals "X". `.o-mail-ChatWindow:text('slytherins')` therefore matched the chat window only during the brief frame where it showed nothing but its title, before the thread body (start message, composer) was rendered. Catching that frame is a race, so the assertion times out intermittently on runbot.
Assert against the title element itself: add a dedicated `o-mail-ChatWindow-name` class on it and match it with `.o-mail-ChatWindow-name:text('X')`. This is exact and no longer depends on the rest of the window being empty.
https://runbot.odoo.com/odoo/error/939914
Forward-Port-Of: odoo/odoo#272454
Forward-Port-Of: odoo/odoo#272380This update extends the test mock used by Clickall so it also covers the newer Odoo Fin favorite institutions endpoint. It keeps automated accounting dashboard tests fully isolated from the live production service, reducing the risk of unintended external requests during testing.
Original PR description
This commit follows up on [1] by extending the Odoo Fin request mock to cover the new version 2 (v2) favorite institutions endpoint. Previously, a mock was introduced to prevent the Clickall tool from making real external HTTP requests to `production.odoofin.com` when displaying the accounting dashboard. This update ensures that the newly introduced v2 URL is also safely intercepted, keeping the automated tests fully isolated from production servers. runbot-234936 [1] : https://github.com/odoo/odoo/commit/c6451015f1b01c3e1defe4a576989fd4bfdf2cdb Forward-Port-Of: odoo/odoo#272339
This change prevents an automated test from failing when the ISO 20022 payment module is not installed. It makes the test suite more reliable across different setups without affecting normal business operations.
Original PR description
The test_batch_payment_deletion test is currently failing when `account_iso20022` is not installed because the sepa_ct payment method doesn't exists. Add a skipTest in case the module is not installed. runbot-940257
This update fixes an issue where the text cursor could jump to the edge of a template block when deleting text inside an email editor. It makes editing template content feel more natural and prevents unexpected cursor movement while working on messages.
Original PR description
## Problem:
`<t>` elements are classified as self-closing, even if they aren't used that way in a mail template. If you press backspace in the editor on some plain text that happens to be inside a `<t></t>` block, the editor would prevent the cursor from being placed back inside the block after merging because of `normalizeSelfClosingElement`. The result is the cursor being left on the outside edge of the block.
## Solution:
We will remove "T" from the list of self-closing tags.
## Steps to replicate (runbot v18):
1. Open an email template (Purchase: Purchase Order)
2. Place your cursor in some text inside a t-if element ('The receipt is expected for...'). Press backspace. Your cursor will snap to the end of the t-if block.
opw-6124284
Forward-Port-Of: odoo/odoo#272285
Forward-Port-Of: odoo/odoo#266816The POS restaurant interface will now only show the Split button when bill splitting is actually enabled in the settings. This avoids confusing staff with an option that should not be available and keeps the checkout screen consistent with the configured behavior.
Original PR description
The Split button in the POS control panel was rendered whenever the restaurant module was active, without checking the `iface_splitbill` config flag. opw-6248177 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267359 Forward-Port-Of: odoo/odoo#266654
When a fixed price is set by a pricelist, the extra price badge for product variants will now be hidden in both Sales and Website. This prevents customers and sales users from seeing a price adjustment that does not actually affect the final price.
Original PR description
Issue: --- If pricelist.compute_price is fixed, extra price of variant is not taken into calculation, but it's shown in extra price badge. Steps to reproduce: --- 1- Create a product template with two variants. 2- Apply extra price for each attribute values. 3- Apply a pricing with a fixed price for the product on a pricelist. 4- Create a SO and apply the pricelist. Add the product to SOL. 5- Open product configurator on SOL. - As you see, the extra price is shown but it's not effective. 6- Open the product in website with the pricelist. - Here also the extra price is shown but it's not effective. Cause: --- This is caused because there is no mechanism to hide extra price having pricelist.compute_price == fixed. Fix: --- We need to fix the issue both in sale and website_sale separately by having a flag to ensure extra price badge is hidden if compute_price is fixed. opw-6276208 Forward-Port-Of: odoo/odoo#271572 Forward-Port-Of: odoo/odoo#270140