Wednesday, October 8, 2025
13 changes · 18.0
Enhancements to existing features
When users click “View More Themes” during website setup, the page now shows a fullscreen loading screen until the additional themes are ready. This prevents users from accidentally selecting an existing theme while the theme list is still updating, making setup clearer and safer.
Original PR description
Steps to reproduce: 1. Create a new website and proceed to the theme configuration step. 2. Click on View More Themes. -> You’ll notice a loading effect on the button, but the existing themes remain selectable. Before this commit: Users could still select existing themes while additional themes were being loaded. After this commit: A fullscreen loader is displayed while loading more themes via the View More Themes button, preventing any unintended interactions. task-4661292 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
Resolved issues and error corrections
New User Invite emails now generate website and email links correctly. This prevents recipients from receiving malformed links, making account setup smoother and reducing support friction.
Original PR description
Website and email links were malformed on the New User Invite email template. Later versions also have this issue on the other templates will change those in forward ports. Renderer was treating the string formatting as a string itself when using the double curly braces on variables. Removed the curly braces so the variable was properly evaluated and inserted into the string. opw-4977756 Forward-Port-Of: odoo/odoo#221487
Miscellaneous changes
This pull request updates the project's contribution documentation. It helps contributors follow the expected process more clearly, with no direct effect on Odoo features or customer workflows.
Original PR description
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
The Maltese accounting setup now applies the right tax mappings for EU and non-EU fiscal positions. This helps companies avoid mixing sales and purchase taxes when processing cross-border transactions.
Original PR description
### Steps to reproduce: - Install "l10n_mt" and switch to a Maltese company - Check the fiscal position "EU Partner", it maps Sales taxes to Purchase ones - "Partner outside the EU" maps Purchase taxes to Sales ones ### Solution: Fix the CSV. We map the taxes respecting Sales/Purchase and with the same percentage. opw-5065298 Forward-Port-Of: odoo/odoo#227423
Archived customer taxes are now hidden when products are grouped by customer tax in the product list. This keeps reporting and product navigation cleaner by showing only active taxes while preserving the no-tax grouping.
Original PR description
**Issue** When a sales tax is archived, it still shows up as a group when using "Group By → Customer Taxes" in the product list view. **Steps to Reproduce** 1. Create a new sales tax. 2. Add the new…
**Issue** When a sales tax is archived, it still shows up as a group when using "Group By → Customer Taxes" in the product list view. **Steps to Reproduce** 1. Create a new sales tax. 2. Add the new tax onto a product. 3. Archive the sales tax. 4. Go to the product list view and group by Customer Taxes. 5. The archived tax is still displayed as a grouping. Video for reference: https://drive.google.com/file/d/1C-OA42UdjP19mPmvyjFnK7JY-kjCr9JL/view **Root Cause** Grouping on many2many fields (`taxes_id`) relies on raw SQL queries that fetch all related values, without considering the `active` flag of `account.tax`. As a result, archived taxes linked to products continue to appear as distinct groups. **Fix** Override `_read_group` to filter out inactive taxes from the group-by results, while keeping the "No Tax" bucket intact. This ensures that only active taxes are available for grouping Opw-4926227 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a failing automated test related to sales quotation templates in spreadsheets. It ensures the test user has the right sales template access, helping keep quality checks reliable without changing business workflows.
Original PR description
This particular test case was failing for multiple instances, whenever user do not have `sale_management.group_sale_order_template` group. This fix ensure user has proper group, so the needed field exists in view
traceback
```
test_sale_order_template_change_after_open
so.sale_order_template_id = quotation_templates[1]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/odoo/odoo/tests/form.py", line 352, in __setattr__
self[field_name] = value
~~~~^^^^^^^^^^^^
File "/data/build/odoo/odoo/tests/form.py", line 357, in __setitem__
assert field_info is not None, f"{field_name!r} was not found in the view"
^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 'sale_order_template_id' was not found in the view
```
runbot error:232942A regression test was added to ensure employees with fully flexible schedules can have overlapping sick leave and public holidays without causing work entry generation errors. This helps protect payroll and attendance processing from a previously reported edge case.
Original PR description
**Purpose:** Add regression test to verify that overlapping leave scenarios (sick leave + public holiday) do not cause singleton errors for fully flexible employees using attendance-based work entries. **Test Coverage:** - Fully flexible employee with no calendar assignment - Attendance-based work entry source configuration - Overlapping sick leave and public holiday scenario - Work entry generation and validation without singleton errors Related : [PR](https://github.com/odoo/odoo/pull/223448) opw-4979974
Videos added inside certain website layout blocks now expand to the full available width. This prevents embedded videos from appearing unexpectedly small in Masonry and similar page sections, making edited website pages look as intended.
Original PR description
To reproduce: ============= 1- In Website edit mode, drop the "Masonry" snippet. 2- Add a video in one of the text blocks. -> It will appear smaller than expected, with no way to make it larger Why: ==== The child iframe already had width: 100%, but it can only stretch to 100% of its parent container. If the parent container (.media_iframe_video) doesn't have an explicit width, it defaults to its minimum content size. This issue happens specifically in blocks where the columns are display: flex. As a result, the iframe ends up being too narrow despite having width: 100%. Solution: ========= By adding width: 100% to the container itself, it now fills the grid cell, and the iframe inside fills the container. opw-5104640
This fixes an issue in the Turkish Nilvera integration where server error details could fail to display correctly because the response was read incorrectly. Businesses using this localization should get more reliable error messages when Nilvera returns a server-side problem.
Original PR description
The http response object doesn't have a `code` attribute, this commit fixes this typo which has already been fixed in 19.0 as a part of #222869 task-5050516 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228088
The Barcode app now shows post-validation helper messages as readable text instead of exposing raw HTML. This improves clarity for inventory users validating filtered transfers and avoids a confusing interface issue.
Original PR description
Issue: ------ When validating a transfer after filtering by scanning a product, the empty help message was shown as raw HTML instead of parsed text. Steps to reproduce: ------------------- 1. Install Barcode. 2. In Inventory, create a receipt with product Pedal Bin. 3. Click Mark as Todo. 4. Open Barcode → Operations → Receipts. 5. Scan the barcode of Pedal Bin. 6. Open the receipt and validate. The helper text is displayed in raw format. Cause: ------ The server returned the help text as a plain HTML string. Since JSON serialization strips Python markup objects, the client received raw HTML, which was not parsed and therefore rendered as-is. Fix: ---- The web client now wraps the help text with `markup()` before display, ensuring the message is parsed and shown in a readable format. opw-5090075
This fixes an issue where changing the style of text inside certain formatted elements could create invalid page structure. Users editing website or document content should now get cleaner, more predictable formatting when applying paragraph styles.
Original PR description
Before this commit we would insert a block inside of a phrasing content if it's displayed as a block and we change its font style. For example, if we tried to modify text inside of a `<small>` that has `display: block` style, it would insert a new block inside of it. Steps to see the issue: - Have an open editor with `<small>Text</small>` content, that has `display: block` style - Select "Text" and change the font style to paragraph => It will be `<small><p>Text</p></small>` which is not valid HTML, and it will be parsed by a browser as `<small></small><p>Text</p>`, which is not the expected behavior. task-5123274
Reports now properly show one-to-many field values, matching the behavior already available for similar linked record fields. This fixes missing or incorrect report content for businesses that rely on these fields in printed or exported documents.
Original PR description
For now, `One2Many` fields are not displayed correctly in reports. This is because for other types of fields (`ManyToMany`, `ManyToOne`, etc.), there are Converter classes (`ManyToManyConverter`) `ir.qweb.field.many2many` that implement `value_to_html`. However, for `OneToMany` fields, no implementation is present. This commit adds a `OneToManyConverter`, which is essentially the same as the `ManyToMany `one. opw-5098466 Forward-Port-Of: odoo/odoo#229289
A typo was corrected in the Attendance department grouping option. This helps users group attendance records by department reliably when reviewing employee attendance data.
Original PR description
- Fixed typo in groupby for 'department' task-id - 5109185 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr