Friday, October 24, 2025
18 changes · saas-18.4
Enhancements to existing features
All Finnish tax report lines now have assigned codes. This helps tax report exports consistently match each line to the correct export template field, reducing the risk of missing or mismatched data.
Original PR description
The aim of this commit is adding code for all the tax report lines. Before, some lines didn't have any code set on it, now all these lines have a code. The change is motivated by the tax report export where we use the code as key in the dict given to the export template. task-5135868 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232636 Forward-Port-Of: odoo/odoo#229876
Amazon stock synchronization logs now include the related account ID. This gives support teams better context when investigating customer issues and makes troubleshooting faster.
Original PR description
Based on feedback from the support team, additional information has been added to the stock sync logging messages. This enhancement includes the account ID for better traceability and to help the team understand customer issues more effectively. Forward-Port-Of: odoo/enterprise#97940
Resolved issues and error corrections
Spreadsheet documents now show their proper thumbnail in the Documents kanban view instead of appearing as a text preview. This makes it easier for users to recognize and open the right spreadsheet at a glance.
Original PR description
## Description Spreadsheets (stored as `application/json`) were matched by the textual preview, so the kanban card showed a text iframe instead of the sheet thumbnail. Now the spreadsheet preview is prioritized so the correct thumbnail displays. Task: [4963284](https://www.odoo.com/odoo/project/2328/tasks/4963284)
Documentation and clarification updates
This update records Harold Campo's Contributor License Agreement signature in Odoo's documentation. It is a legal administrative change that helps confirm contribution rights and does not affect product functionality or users.
Original PR description
Add CLA for Harold Campo Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: 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#232604
Spanish point-of-sale receipts now correctly display the company’s state name instead of empty brackets. This prevents confusing or incomplete receipt details for Spanish businesses using simplified invoices.
Original PR description
**Steps to reproduce:** - Set a spanish company, set the state - Set the "Simplified Invoice" journal in the settings - Go to PoS and make a purchase - On the receipt, empty brackets are shown where the state should be **Why the fix:** Before this commit, we checked that the company had a state set, and if it had, we displayed *state_id[1]* between brackets. Even if the state_id existed, this is not the correct structure for the state_id, so *state_id[1]* did not exist, and we displayed only the brackets. We now display the correct state name, still between brackets. opw-5098212 Forward-Port-Of: odoo/odoo#232689 Forward-Port-Of: odoo/odoo#230141
The Field Service “To Schedule” view now only shows open tasks that still need scheduling or assignment. This prevents completed or cancelled work from appearing in planning lists, helping teams focus on actionable tasks.
Original PR description
**steps to reproduce:** Go to field service Go to all tasks > to schedule **issue:** The To Schedule filter was also displaying tasks in cancelled or done state, whereas it should only show open tasks that need to be scheduled or assigned. **cause:** The filter domain did not exclude cancelled/done state, causing closed tasks to appear in the filtered view. **fix:** Updated the filter domain to exclude cancelled/done state, to ensure only open tasks are shown under the To Schedule filter. task-5138590 Forward-Port-Of: odoo/enterprise#96600
This fixes an editor issue where typing next to a link inside formatted text could lose the surrounding formatting. Users creating links in rich text content will now get more consistent visual results, reducing accidental formatting errors.
Original PR description
Problem: If we add a link on a slice of formatted text we end up being able to type unformatted content at the link edges. Cause: After https://github.com/odoo/odoo/commit/3bcbd6f34facb9c88290dbd6496cc5103665a0a2 the `span` can be split and `feff`s are placed around the link, precisely between the link and the `span`. This allows writing unformatted content at the caret when placed between them. Solution: Ensure that the link is created inside the `span`. Also prevent the formatting applied by `.btn` when the link is inside a `span`. Steps to reproduce: 1. Add "abc". 2. Format all the text: set font size 48 (or whatever). 3. Select "b". 4. Create a link on "b" only. 5. Put caret before "a". 6. Press Arrow left. 7. Type any character. → The character is not formatted as the link content. task-5092298 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231675 Forward-Port-Of: odoo/odoo#228353
Fixed a visual issue where global filter suggestion buttons could appear partially styled for dark mode. This keeps the spreadsheet interface consistent and easier to use, even though dark mode is not currently supported there.
Original PR description
When using the global filter suggestions feature in dark mode, the buttons are halfway in dark mode. We don't support the dark mode in spreadsheet ATM. Task: [5089382](https://www.odoo.com/web#id=5089382&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form)
The web test runner now handles cases where someone starts a manual test before all required assets have finished loading. This prevents an early click on Run from causing a crash, improving reliability for teams using Odoo's test tools.
Original PR description
Before this commit, in manual mode, "Run" could be clicked before the assets finished loading (and so, before the test runner was properly "ready"). This caused a crash because it tried to resolve a promise that did not exist yet. Steps to reproduce: - Go to test URL (manual) - Click "Run" as soon as the button is visible (probably via a script to make sure the click is fast enough) This commit fixes that by adding failsafes around that promise, effecitvely allowing to click "Run" early on. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232789
The VoIP call transfer screen now opens with an empty search field instead of keeping the previous contact search. This avoids confusion for users transferring calls and helps them quickly find the correct recipient.
Original PR description
**Purpose:** Previously, when a contact was searched and made a call. During a call, clicking "Transfer" showed the old search term. **Specification:** Now, the search box is explicitly emptied when transferring the call by resetting this.softphone.addressBook.searchInputValue. **Task-** 5087938 Forward-Port-Of: odoo/enterprise#95102
This update improves Odoo's internal Hoot testing tools and related unit tests so errors are easier to diagnose and failed tests are tracked more reliably. These changes are limited to the test ecosystem, reducing risk for day-to-day business features while improving quality assurance for future releases.
Original PR description
## Pull Request HOOT 38 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232536 Forward-Port-Of: odoo/odoo#231263
This update adjusts Odoo’s automated tests to match changes in the Hoot testing framework’s request handling. It helps keep test results reliable while limiting changes to the test suite, reducing risk for business functionality.
Original PR description
## Pull Request HOOT 38 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Community: https://github.com/odoo/odoo/pull/232536 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#97851
Online table bookings now correctly copy the customer's phone number from their contact record into the appointment. This helps staff see the right contact details for reservations without changing how customer records are linked.
Original PR description
Task: [#5005216](https://www.odoo.com/odoo/project/1737/tasks/5005216) --- The phone number field was not being populated correctly when booking a table from the website. It is now properly filled using the phone number of the `res.partner` associated with the appointment. The field remains unlinked to the partner, as it is just a copy. Forward-Port-Of: odoo/enterprise#92836
Point of Sale receipts now use the same numbering format whether the sale is made online or while disconnected. This avoids confusing extra wording on offline orders and makes backend order records easier to compare and audit.
Original PR description
**Steps to reproduce:** - Go to PoS, make an order and pay for it - Before clicking next order close your connection with the server - Make a purchase like this - Go back online and check the orders…
**Steps to reproduce:** - Go to PoS, make an order and pay for it - Before clicking next order close your connection with the server - Make a purchase like this - Go back online and check the orders in the backend The order made online only has the receipt number, but the order made offline has *Order* in front of it. **Why the fix:** The receipt number on a PoS order should be consistand and should not be changed depending on if the purchase was made online or offline. With this commit, every order will have only it's receipt number without the *Order* in front of it even if it was made offline. It is still possible to see if an order was made online or offline with the **F** variable, which is the first number of the last part of the receipt number. If it is 1, the order was made offline, if it is 0, it was made online. The *refPrefix* parameter from the *getNextOrderRefsLocal* function is not used anymore, so it has been replaced by an empty string in the function call in stable and could be deleted when in master. opw-4965095 Forward-Port-Of: odoo/odoo#232745 Forward-Port-Of: odoo/odoo#224416
A website blog test was updated so it no longer depends on the English name of a month. This prevents false test failures when the website is used in other languages, improving confidence in multilingual blog behavior.
Original PR description
Before this commit the blog_tags_with_date tour tried to select the October option by label. In other locales the month label differs and the tour could not find it, so the tour aborted at that step. Steps to reproduce: - Change the website language to one where October has another name. - Run the blog_tags_with_date preview tour. The tour now selects the first month option by index, independent of labels. runbot-233321 Forward-Port-Of: odoo/odoo#232961 Forward-Port-Of: odoo/odoo#232610
This fixes an invoice preview issue that could occur when a website page also included embedded content such as a map. Users can now open invoice previews reliably without encountering an error caused by selecting the wrong embedded frame.
Original PR description
Support the possibility of multiple iframes being present on the invoice preview page. Steps to reproduce ----- 1. Add a map block to the nav bar of the website. 2. Go to accounting and find an invoice. 3. Click preview and receive a traceback. Cause ----- The use of querySelector works if there is only one iframe element, but map blocks are also iframe elements so adding one with the website editor can cause the wrong iframe to be selected with querySelector. Solution ----- The iframe element that needs to be selected already has an id, so updating querySelector to getElementById resolves the issue. opw-ticket 5170640 Forward-Port-Of: odoo/odoo#232754
This fixes how Odoo's web test mock server handles custom responses, so responses prepared by tests are returned exactly as intended. It helps make automated tests more accurate and reduces the chance of misleading test behavior during development.
Original PR description
Before this commit, when an 'onRpc' handler would return a 'Response' object, it would still be wrapped in a JSON-RPC payload (under the 'result' key) if the "content-type" header specified that it was a JSON-RPC. However, if a 'Response' object is returned by the handler, it usually means that the response should be that object as-is, as it was created with the desired final parameters. This commit ensures that 'Response' values are returned as they are, instead of being wrapped in a JSON-RPC payload object. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232731 Forward-Port-Of: odoo/odoo#232614
This update adjusts an internal website module test so it no longer depends on optional demo data being present. It helps keep automated validation stable across different testing environments without changing customer-facing behavior.
Original PR description
runbot-162894 Forward-Port-Of: odoo/odoo#232920 Forward-Port-Of: odoo/odoo#213962