Monday, November 24, 2025
10 changes · saas-18.2
Enhancements to existing features
The Peppol registration wizard now shows its warning banner only after an endpoint has been entered, reducing unnecessary alerts for users. Placeholder text was also removed to make the form clearer and less distracting during setup.
Original PR description
In the Peppol Registration Wizard: - Warning banner should only show up when endpoint as been filled - Remove placeholder - ~Remove the "in" migration~ Ref PR for master: odoo/odoo#234088 Task [link](https://www.odoo.com/odoo/project/967/tasks/5170831?debug=assets) task-5170831 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234087
Resolved issues and error corrections
The web test runner now handles empty test runs more gracefully by logging the situation instead of stopping with an error. It also provides clearer end-of-run reporting for headless test runs, helping teams monitor automated checks more reliably.
Original PR description
[FIX] web: Hoot - remove error if no tests This commit replaces the error thrown if there is no test found by a log. --- [IMP] web: Hoot - log root suites at end of run This commit makes the unit test runner log all root suites results after each test run, only in headless mode. Forward-Port-Of: odoo/odoo#236647
This update fixes the layout of toggle lists placed inside website editor banners so their content aligns correctly. It also improves right-to-left behavior for toggle blocks, ensuring placeholders and newly created toggle items follow the selected text direction.
Original PR description
**Steps to reproduce:** - Create a banner. - Create a toggle list inside the banner. - Notice that the content inside the toggle list is not properly aligned. **Description of the issue:** - This happens because a margin-bottom is applied to all last `o-paragraph` elements inside the `o_editor_banner class`. Since the toggle list also contains `o-paragraph` elements that are the last child within it, the margin-bottom style is incorrectly applied to those as well. **Solution:** - Apply the margin-bottom only to the last direct child of `.o_editor_banner_content`. task-5213985
This fixes an accounting report issue where enabling a filter on a combined report did not also enable it on the report's sections. Business users will now see the expected filter options consistently when working with composite accounting reports.
Original PR description
When using a composite report whose sections aren't used independently, enabling that filter on the composite report needs to enable it on their sections as well, else it won't show in the UI. This is the standard behavior for all report filters. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#236893
Portal users will no longer see an Unfollow option while creating a new shared project task that has not been saved yet. This avoids an error and keeps the shared project experience smooth for collaborators.
Original PR description
Currently, an error occurs when a portal user opens a shared project and clicks the `Unfollow` button in the chatter of a `new(unsaved)` task. **Steps to produce:** - Install the `project` module. -…
Currently, an error occurs when a portal user opens a shared project and clicks the `Unfollow` button in the chatter of a `new(unsaved)` task. **Steps to produce:** - Install the `project` module. - Open the project app and create a new project with at least one task. - From the project’s `dropdown menu(⋮)`, select `Share Project`. - Add a `collaborator: Joel Willis`, with `Edit access mode`, copy the `public link`, and click `Share Project`. - Open the shared link in an incognito window and sign in as a `portal user`. - Open the project folder > open any task > click `New` > click `Unfollow` button. **Error**: `ValueError: Expected singleton: project.task()` **Root cause:** The Unfollow button at [1], is displayed even when the task record is not yet saved (`props.threadId` is `undefined`). At [2], the method is called on an empty recordset, causing an `error`. **Fix:** This commit prevents the error by ensuring the `Unfollow` button is hidden when the record is `unsaved`. [1]: https://github.com/odoo/odoo/blob/be138ef2ff1b3a83f77fe300f789d754ed3383fd/addons/project/static/src/project_sharing/chatter/portal_chatter_patch.xml#L7-L14 [2]: https://github.com/odoo/odoo/blob/be138ef2ff1b3a83f77fe300f789d754ed3383fd/addons/project/models/project_task.py#L2022 No task ID
Timesheet entries connected to invoices that were later reversed are now editable as expected. This removes an unnecessary blockage for teams correcting or updating recorded service hours after an invoice reversal.
Original PR description
**Issue:** Timesheet entries linked to reversed invoices are uneditable. **Steps to reproduce:** - Create a service product invoiced by timesheets, and create a project & task. - In Sales, create a new quotation with the product. - Confirm the quotation, click on the task, and create a timesheet entry. - Create an invoice from the quotation. - Confirm the invoice, add a credit note, and reverse the invoice. - Go to the reversed invoice and access the timesheet through recorded hours. the timesheet entry is uneditable, even though the invoice is reversed. opw-4633121 Forward-Port-Of: odoo/odoo#234108 Forward-Port-Of: odoo/odoo#201921
This fix ensures that when a filter is enabled on a composite cash basis report, it is also applied to its sections. As a result, the filter now shows up properly in the user interface and behaves consistently across related report parts.
Original PR description
When using a composite report whose sections aren't used independently, enabling that filter on the composite report needs to enable it on their sections as well, else it won't show in the UI. This is the standard behavior for all report filters. Forward-Port-Of: odoo/enterprise#100148
This fix ensures that when a filter is enabled on a composite report, the same filter is also enabled on its underlying sections. As a result, the filter will appear correctly in the interface and behave consistently across report views.
Original PR description
When using a composite report whose sections aren't used independently, enabling that filter on the composite report needs to enable it on their sections as well, else it won't show in the UI. This is the standard behavior for all report filters. Forward-Port-Of: odoo/enterprise#100135
This update corrects how a Finnish report name is marked for translation so it appears properly in Finnish. It helps ensure users see the report title in the right language instead of an incorrect or untranslated version.
Original PR description
In this commit [[1]], we wrongly set the name for the translation in Finnish. Indeed, we should add @fi at the end to make sure it's translated properly. This commit adds the `@fi` when necessary. no task id [1]: https://github.com/odoo/enterprise/commit/4ae3c4d2bdb0ef05ffb53930b31f2bf15fd422ee
This update resolves an issue where the invoice report incorrectly displayed currency symbols and incorrect total amounts when a company's tax settings were 'tax included'. The fix ensures accurate reporting of price-included totals, improving invoice clarity and compliance.
Original PR description
When the company is "tax included" for all taxes, after signing to eTims, the invoice report: - shows the currency symbol twice for "Taxable Amount". - The xpath for 'td_subtotal' is also doubled for no reason. - The "Total" columns is always price excluded instead of being price included. task_id: 5252530