Tuesday, October 28, 2025
16 changes · saas-18.4
Enhancements to existing features
This update simplifies how accounting tax data is grouped behind the scenes. It reduces manual handling in the tax calculation flow, helping make the system easier to maintain with no expected day-to-day workflow impact for users.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232290 Forward-Port-Of: odoo/odoo#231947
Demo data for WhatsApp accounts has been added back. This helps teams test, demonstrate, and explore WhatsApp-related features more easily without setting up sample accounts manually.
Original PR description
Purpose of this commit, Adding back the demo data for whatsapp accounts. revert: https://github.com/odoo/enterprise/pull/97138 task-5172791
Resolved issues and error corrections
This update removes duplicate validation rules for mail link previews that could interfere with database restores between PostgreSQL versions. It helps prevent restore issues for future databases while keeping the existing mail behavior unchanged.
Original PR description
Same as #229274 these constraints are redundant with `required=True` and cause issues when restoring a dump from pg17 to pg18. And much like #229274 this only fixes databases going forward, on existing databases the constraints have to be dropped on the source. Forward-Port-Of: odoo/odoo#233186
Code cleanup and technical improvements
This update simplifies automated test files by removing unnecessary wrapper labels that repeated the file name or could be misleading. It does not change product behavior, but it makes the test suite easier for developers to read and maintain.
Original PR description
This commit removes test files using a single 'describe' call to wrap its tests, with a name being either redundant with the test file itself or is too misleading.
Regular expression used to find isolated suites:
```js
/^\s*import.*(?:\n(?!describe\()(?!test\().*)+\ndescribe\("[\w\s.]+",.*(?:\n(?!describe\().*)+\n\}\);\n(?!\n)/
```
Tip for reviewers: tick **"Hide whitespace"** when reviewing diff
<img width="237" height="205" alt="image" src="https://github.com/user-attachments/assets/373f7cc6-5e0e-4599-968a-39aad8fac2f0" />
Enterprise: https://github.com/odoo/enterprise/pull/98046
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#233207
Forward-Port-Of: odoo/odoo#233006Documentation and clarification updates
The corporate contributor agreement record for ForgeFlow was updated. This keeps Odoo's legal contribution documentation current and helps ensure contributions are properly covered.
Original PR description
PR: https://github.com/odoo/enterprise/pull/97338 Forward-Port-Of: odoo/odoo#232545 Forward-Port-Of: odoo/odoo#231883
This update prevents an accounting process from failing when it encounters an empty value where a number is expected. It improves reliability by avoiding an unnecessary error for users working with accounting entries.
Original PR description
Description of the issue/feature this PR addresses: ValueError: invalid literal for int() with base 10: '' Current behavior before PR: ValueError: invalid literal for int() with base 10: '' Desired behavior after PR is merged: not giving valueerror --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232965
Draft sales orders now keep product lines editable when users return to an order. This prevents clicks on a product line from unexpectedly opening the product record, making it easier to change products or add descriptions.
Original PR description
Versions -------- - saas-18.3+ Steps ----- 1. Create a sales order; 2. add a product that doesn't have an extra description; 3. save & exit view; 4. go back to view; 5. add a description or change the product on the line. Issue ----- Clicking on the product field opens the product record instead of edit mode. Cause ----- It opens the product record because the `canOpen` property is set to `true`. As this is the default value, and isn't getting changed anywhere, the line will always open the product record outside of edit mode. Solution -------- Instead of using OR, check `props.canOpen` AND additional checks. opw-5172115 Forward-Port-Of: odoo/odoo#232861
Quality checks could fail in setups where manufacturing quality is installed without work orders. This change avoids checking a work-order-specific field unless the related module is available, preventing errors when creating or validating quality points.
Original PR description
**Issue:** The attribute operation_id for quality.point is defined in the mrp_workorder module. However, quality_mrp module does not list mrp_workorder in its dependencies. As a result in a system where quality_mrp is installed but mrp_workorder is not, the following error is raised when evaluating the constrain for quality points mesured on Operations. `"'quality.point' object has no attribute 'operation_id'"` **Proposed solution:** Override the constraint in quality_mrp_workorder to include conditions related to operation_id, ensuring that it is only evaluated when the field is available. Forward-Port-Of: odoo/enterprise#97801 Forward-Port-Of: odoo/enterprise#97338
This update fixes an intermittent automated test failure in the barcode module by ensuring the screen has finished updating before checks run. It improves confidence in release validation without changing any customer-facing barcode behavior.
Original PR description
This commit fixes a test that sometimes failed, because we didn't wait for an animationFrame after the macro was complete. As a consequence, there was no guarantee that the form view had been updated before the check. runbot error~226829 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#233153
This update adds a safeguard to ensure changes to a company's phone number do not unintentionally alter employee information. It helps keep employee contact details stable and prevents confusion when company-level contact data is updated.
Original PR description
Added a test to complement the fix made in this PR: https://github.com/odoo/odoo/pull/229010 opw-5072108
This update ensures the website preview and builder-related files are included in automated quality checks. It helps reduce future issues in the website editing experience by catching code problems earlier before release.
Original PR description
[FIX] web: correctly lint website_preview The goal of this commit is to correct the `_eslintignore` file in order for the linting to correctly lint the `website_preview` files. task-5110180 --------------------------------------------------------------------------------------------------------------------------------------------------------- [LINT] html_builder, website: lint builder related files The goal of this commit is to lint the builder related js files. task-5110180
Fixes an issue where certain website editor placeholders could remain visible after content changes were undone. This keeps the page editing experience accurate and prevents confusing stale elements from staying on screen.
Original PR description
invalid Before this commit, the `selectorHas` and `selectorNotHas` conditions of interactions were ignored when calling `stopInteractions` on a sub-element of the interaction target. For example, in…
invalid
Before this commit, the `selectorHas` and `selectorNotHas` conditions of interactions were ignored when calling `stopInteractions` on a sub-element of the interaction target.
For example, in edit mode, adding or removing a node could invalidate `selectorHas`/`selectorNotHas`, but the interaction would not be stopped as expected.
With this commit, when calling `shouldStop` on an interaction, we now check that `selectorHas` and `selectorNotHas` are still valid. If they are not, `shouldStop` returns true so the interaction is properly stopped.
How to reproduce:
- Edit a website page
- Add an Image Gallery snippet
- Remove all images → The `ImageGalleryEdit` interaction activates to display a placeholder allowing the user to add an image
- Perform an undo
Before this commit:
The `ImageGalleryEdit` placeholder remained visible.
After this commit:
The `ImageGalleryEdit` placeholder correctly disappears.
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-prThis change fixes unreliable automated checks in appointment CRM and helpdesk areas when pages reload or redirect. It helps keep validation runs stable, reducing false failures during releases without changing customer-facing behavior.
Original PR description
\* = helpdesk, website_helpdesk ### Issue: - `appointment_crm_forced_staff_user_tour` fails on steps triggering page unload without `expectUnloadPage: true`. - In `helpdesk_search_ticket_on_portal_tour`, a specific step is failing for `helpdesk` but works when `website_helpdesk` is installed, as the step does not trigger the `beforeunload` event in that case. ### Fix: - Added `expectUnloadPage: true` to steps that trigger a page unload. - Introduced `HelpdeskSearchTicketSteps` class with `_searchTickets` so that the step can be overridden in `website_helpdesk`, removing the `expectUnloadPage` property when installed, since no `beforeunload` event is triggered in that case. runbot-[232987](https://runbot.odoo.com/odoo/runbot.build.error/232987)
This update documents an old, unused speaker biography section in the event website builder so its presence is understood and does not cause confusion during maintenance. There is no expected change for users or websites, as the section was already inactive and had no related styling or behavior.
Original PR description
Problem introduced at [1] (see [2]). In stable, this comments the code to explain the dead code presence. In master, that snippet will be removed, as nobody seemed to have missed him for 4+ major versions and its structure is not perfect (overflow hidden...). Thankfully it should not come with any compatibility issue as it was not associated with any JS/CSS). Maybe a new equivalent will be introduced in master later on. [1]: https://github.com/odoo/odoo/commit/b5c87d86cad1aa2b44f805da0b2d6635aeb85b96 [2]: https://github.com/odoo/odoo/pull/68644#discussion_r903721785 task-4084801 Forward-Port-Of: odoo/odoo#233203
The Field Service map task list now shows appointment times as a single readable value instead of splitting them across lines. This makes task schedules easier to scan for field service users without changing the underlying workflow.
Original PR description
### Steps to Reproduce 1. Open Field Service app 2. Navigate to My Tasks -> Map 3. Observe task pins in the left sidebar list 4. Notice time displays like "10:00" break across multiple lines ### Issue The formatted time display in FSM task map pin list items wraps to multiple lines. ### Current Behaviour Time displays like "10:00" break into separate lines. ### Expected Behaviour Time should display on a single line as one readable unit ### Fix Add text-nowrap class to the time display span in FsmTaskMapRenderer template. This prevents line breaks while preserving the existing layout structure. Task - 5079360 Forward-Port-Of: odoo/enterprise#94778
This change simplifies automated test files by removing unnecessary grouping labels that duplicated file names or could be misleading. It does not change product behavior, but it makes tests easier for developers to review and maintain.
Original PR description
This commit removes test files using a single 'describe' call to wrap its tests, with a name being either redundant with the test file itself or is too misleading.
Regular expression used to find isolated suites:
```js
/^\s*import.*(?:\n(?!describe\()(?!test\().*)+\ndescribe\("[\w\s.]+",.*(?:\n(?!describe\().*)+\n\}\);\n(?!\n)/
```
Tip for reviewers: tick **"Hide whitespace"** when reviewing diff
<img width="237" height="205" alt="image" src="https://github.com/user-attachments/assets/373f7cc6-5e0e-4599-968a-39aad8fac2f0" />
Community: https://github.com/odoo/odoo/pull/233006
Forward-Port-Of: odoo/enterprise#98171
Forward-Port-Of: odoo/enterprise#98046