Thursday, October 23, 2025
24 changes · 19.0
Resolved issues and error corrections
This fixes a small issue where certain website shop snippet settings could cause an error on demo snippet pages. The change helps keep the website editor and storefront pages stable when optional layout information is missing.
Original PR description
Cause: SIZE_CONFIG[nodeData.size] can be undefined in some snippet configurations, causing a TypeError when accessing .span. Steps to reproduce: 1) Install website_sale with demo data, 2) Visit page url `/website/demo/snippets` and check the browser console for the error. Solution: Use optional chaining (SIZE_CONFIG[nodeData.size]?.span) to safely access the property and prevent the frontend crash. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The accounting settings now correctly show the OSS option for companies in Switzerland and the UK, not only EU countries. This helps affected businesses access the tax configuration they need without manual workarounds.
Original PR description
This PR https://github.com/odoo/odoo/pull/189315 changed the countries for which the OSS setting was visible. It has been limited to EU countries, however both UK and Switzerland need it as well. see discussion in task 4782337 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes the default document type suggested for Argentine foreign vendor bills so they consistently use the expected abroad invoice/receipt type. It also aligns foreign supplier behavior on customer invoices with the selected journal, reducing manual corrections and invoicing errors.
Original PR description
Description of the issue/feature this PR addresses: In this [commit](https://github.com/odoo/odoo/commit/5c07f9c0c1065d88022dc6d1299fec1d42dfc0af) we split 'Proveedor del Exterior' from 'Cliente del…
Description of the issue/feature this PR addresses: In this [commit](https://github.com/odoo/odoo/commit/5c07f9c0c1065d88022dc6d1299fec1d42dfc0af) we split 'Proveedor del Exterior' from 'Cliente del Exterior' which are both AFIP responsabilities for foreing supplier and customer respectively. In this [commit](https://github.com/odoo/odoo/commit/7e45c6ec768950b6296d991a8375577aed45c4dd), we added the possibility to create 'B' invoices for foreign partners. With this PR we are fixing the logic to suggest the correct document type for foreign vendor bills so it has a similar behavior as for customers. Current behavior before PR: In customer invoices the document type suggested by default depends on the journal: --> Expo journal will suggest 'Expo invoices' for Foreign Customers but 'B Invoices' for Foreign Suppliers --> Local electronic journal will suggest 'B Invoices' for Foreign Customers as well as for Foreign Suppliers In vendor bills the document type suggested by default will be 'INVOICES AND RECEIPTS FROM ABROAD' for Foreign Customers and 'B Invoices' for Foreign Suppliers Desired behavior after PR is merged: In customer invoices the document type suggested by default depends on the journal: --> Expo journal will suggest 'Expo invoices' for both Foreign Customers and Suppliers --> Local electronic journal will suggest 'B Invoices' for Foreign Customers as well as for Foreign Suppliers In vendor bills the document type suggested by default will be always 'INVOICES AND RECEIPTS FROM ABROAD' as expected. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228635
The timesheet grid now keeps text from spilling into timer button areas when users view timesheets by month, enlarge text, and scroll horizontally. This improves readability and prevents confusing visual overlap in total and footer rows.
Original PR description
Steps to reproduce: - Open timesheets and change to Month scale. - Increase text size a little bit. - Scroll to the right side Issue: - You can see runover text being visible in timer button cell of Total row and Footer row. Reason: - It is due to z-index problem as z-index-* is deprecated from https://github.com/odoo/odoo/pull/165568 (from saas-17.4+). Fix: - Replace it with Bootstrap z-index class notated as z-*(-1 to 3) task-4949182 Forward-Port-Of: odoo/enterprise#96371
Fixes a website editor problem where changing or selecting shaped images could trigger an error, especially for content created before the editor migration. Existing shaped images remain usable after the move from the old editor path to the new HTML builder path.
Original PR description
Steps to reproduce: =================== 1. Drop a snippet having an image with a shape (e.g. "Intro Pill", "Images Mosaic", ...). 2. Try to change the image shape. → Traceback occurs. This issue also happens when clicking on images with shapes that were added in previous versions. Cause: ====== Before the refactoring, shape URLs started with `web_editor`, but now `html_builder` is expected. This mismatch causes the shape to be considered invalid when parsed, leading to a traceback. The issue was introduced by this PR: https://github.com/odoo/odoo/pull/222471 Solution: ========= Ensure backward compatibility by allowing shapes using the old `web_editor` path to remain functional after the migration to `html_builder`. Forward-Port-Of: odoo/odoo#230803
Invoice terms and conditions now refresh in the selected customer language when that language is changed during invoice creation. This prevents customers from receiving invoices with terms shown in the wrong language.
Original PR description
Issue: When changing the customer’s language during invoice creation, the terms & services were not retranslated, unlike when creating a new partner in a different language. Repro Steps: 1. Create an invoice with terms link or plain enabled. 2. Change the partner's language from the invoice creation view. 3. Terms is not translated. Cause: The translation compute was only triggered on partner change, not language change. Fix: Added dependency for partner_id.lang to the narration compute to ensure it updates when the language changes. opw-5031933 Forward-Port-Of: odoo/odoo#230800
This fix keeps report page numbers on a single line when using the folder layout with the Montserrat font. It improves the visual consistency and readability of printed or exported documents without changing report content.
Original PR description
The folder layout is using the same footer than the `external_layout_standard` but when using Montserrat, the page number wraps in 2 lines on the folder layout. It's missing a `text-nowrap` class. task-4942402 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#228391
Long mailing list names now remain inside their intended field instead of overlapping nearby information. This keeps the Marketing mailing list view readable and easier to use when list names are lengthy.
Original PR description
Issue: When you create a long name for your maling list, the name overflows over the other fields in the view. Repro: Go to marketing -> mailing lists -> create a fairly long name -> notice name overflows in the view. Cause: Small bootstrap issue, name field not limited to it's container. Fix: Added a simple w-100 to limit the field to 100% of it's container. opw-5153270 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232312
This fix ensures the spreadsheet filter tooltip is fully visible when dark mode is active. It prevents a confusing visual issue, even though the spreadsheet app itself does not yet fully support dark mode.
Original PR description
The fitler tooltip was displayed halfay in dark mode, while the rest of spreadsheet does not support dark mode yet. Task: [5162869](https://www.odoo.com/web#id=5162869&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form)
This update fixes an internal purchase app test that was failing in single-app builds because it referenced an unavailable field. It helps keep automated quality checks reliable without changing day-to-day user behavior.
Original PR description
This issue comes from [218483](https://github.com/odoo/odoo/pull/218483) The field `is_storable` is invalid in single app build and breaks the `TestPurchase` class. Runbot - [230096](https://runbot.odoo.com/odoo/runbot.build.error/230096)
The event registration page now supports translation for the date selection labels used when events have time slots. This helps visitors using other languages see a consistent localized registration experience.
Original PR description
Scenario: - adds slots to an event - register to that event with another language Result: "Selected Date" or "Select a Date" is not translated or translatable. Fix: wrap those JS strings with _t function. opw-5167911 Forward-Port-Of: odoo/odoo#231729
This change moves the rule that hides the tip product field from the general restaurant point-of-sale module to the Belgian blackbox point-of-sale module. It keeps the behavior limited to the market-specific compliance feature where it belongs, reducing the chance of unintended effects for other restaurant POS users.
Original PR description
- Move logic to hide `tip_product` field from `pos_restaurant` to `pos_blackbox_be` module. task-id: 5011427 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Last Appraisal button is available again for employees after it was unintentionally removed. This helps managers and HR users quickly access an employee's most recent appraisal from the employee record.
Original PR description
The action on res.users to see the last appraisal has been removed by this PR https://github.com/odoo/enterprise/pull/88518. This commit reintroduces the action in hr.employee.public. task-5166704
This fixes the planning dialog opened from a sales order so users can see and set allocated hours when creating a shift. It prevents missing scheduling information for sales-related planning services, making shift planning from sales orders work as expected.
Original PR description
Steps to reproduce: - Create a Sales order with planning services. - Click on To Plan stat button. - Click on empty cell Issue: - Plan dialog is opened but has missing allocated_hours field. Reason: - In this commit https://github.com/odoo/enterprise/commit/d21bd4b694ec63ba83bea077714a8fe928d6e014 allocated hours was merged with start_datetime using a widget and thus removed from view. - But in planning list view we hide start_datetime when we schedule shifts from sales order. Fix: - Add back allocated_hours conditionally to be visible when we schedule shifts as in other cases start_datetime is present. task-5117776 Forward-Port-Of: odoo/enterprise#96391
This update fixes the layout of the ePos test widget and Epson printer IP field in Point of Sale settings. The fields are now better aligned and spaced, making the configuration screen clearer and easier to use.
Original PR description
- Adjust the display of the ePos test widget and Epson printer IP field in the Point of Sale configuration and settings views for better alignment and spacing. | View | Before | After | | :--- | :----: | ---: | | pos_config_view.xml | <img width="406" height="151" alt="image" src="https://github.com/user-attachments/assets/e2b6f619-62e7-44d8-928b-53ce5401d9a7" /> | <img width="403" height="184" alt="image" src="https://github.com/user-attachments/assets/96a0137d-cc56-4b2e-a322-811e5ad4b130" /> | | res_config_settings_views | <img width="535" height="249" alt="image" src="https://github.com/user-attachments/assets/679a1fce-45f3-4378-96bb-077d8cdef2e1" /> | <img width="535" height="218" alt="image" src="https://github.com/user-attachments/assets/efd62f18-a3fc-45f2-9ca2-4132a6b1a1df" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Helpdesk SLA reporting view now lets users add the SLA status grouping back after removing it. This avoids needing to reload the report and makes analysis smoother for support teams.
Original PR description
Currently, when the user opens the sla reporting view, if he removes the default grouping of sla_status, he has no way to get it back unless he reloads the view completly. This commit fixes this issue by adding the sla_status field to the group_by options. task-5076401 Forward-Port-Of: odoo/enterprise#95261
Fixed an Accounting issue where grouping customer invoices by sent status showed every invoice in both Sent and Not Sent groups. Users can now rely on this grouping to review invoice communication status accurately.
Original PR description
### Issue: The groups "Sent" and "Not Sent" display all the invoices. ### Steps to reproduce: - Go in Accounting > Customer > Invoices - Create a custom GroupBy with "Sent" - Unfold the groups: all invoices appear in each group ### Cause: `web_read_group` returns the groups with their length and the domain corresponding. When unfolding `web_search_read` uses the given domain to get the records to display. Here the issue comes from the domain returned, it contains `['move_sent_values', '=', 'sent']`, but `move_sent_values` is a computed field that doesn't have a `_search` method so the domain doesn't filter on this field. ### Solution: Add the method `_search_move_sent_values` to search on `is_move_sent`. opw-5164650 Forward-Port-Of: odoo/odoo#232400
This fixes a display issue where checkbox borders in the website link editing popover blended into the background when dark mode was enabled. Users editing links can now clearly see and use the advanced options checkbox, improving usability for dark mode users.
Original PR description
In dark mode the checkbox in the link popover wasn't visible due to the same popover background and checkbox border colors. Steps to see the issue: - Set dark mode as the preferred theme - Open Website and start editing - Click on any link - Click on the "Edit Link" pen icon - Click on the "Advanced Mode" gear icon => The checkbox borders aren't visible task-5155669
Full-day leave requests using time off types measured in hours now display correctly as full days instead of being shown as half days. This prevents confusion for employees and managers reviewing time off calendars.
Original PR description
Steps to reproduce: - Go to Time Off - Create a time off type that can be taken in hours - Take a full day of leave using this type of time off - The time off will be displayed as half a day, even though it is a full day Reason: The check to display the time off as half a day did not check that the time off starts in the afternoon, which caused the issue. How it was fixed: The condition now checks if the time off starts in the afternoon so that the display is correct. Task ID: 5072255
The table selection popup in POS self-ordering now lists tables consistently by floor and table number. This makes it easier for customers or staff to find the correct table and reduces confusion during ordering.
Original PR description
Task [#4991803](https://www.odoo.com/odoo/my-tasks/4991803) Runbot: https://runbot.odoo.com/runbot/bundle/18-0-incremental-order-table-pop-pos-self-order-ltra-391429 --- When selecting a table in the POS self-order, we sort the tables by `floor_id` and then by `table_number` in ascending order. This ensures a consistent and user-friendly experience when choosing a table. Forward-Port-Of: odoo/odoo#222811 Forward-Port-Of: odoo/odoo#222421
Fixes an issue where changing the speed of animated background shapes in the website editor had no effect. Users can now adjust shape animation speed as expected when designing pages, improving editing reliability.
Original PR description
Steps to reproduce: - Drop a snippet - Add a background shape (e.g. Rainy 05) - Use the slider to change the speed - Nothing happens This commit is adapting `CSS_ANIMATION_RULE_REGEX` as it was too restrictive, the space after the colon is now optional. task-5170549 Forward-Port-Of: odoo/odoo#231747
A flaky automated test around browser tab notifications in the Discuss app was fixed. This improves reliability of Odoo's test suite and helps avoid false build failures without changing end-user behavior.
Original PR description
Before this commit, the following test could fail non- determinstically: ``` [HOOT] Test "@mail/discuss_app/discuss/out-of-focus notif takes new inbox messages into account" failed: 3. [toBe]…
Before this commit, the following test could fail non- determinstically: ``` [HOOT] Test "@mail/discuss_app/discuss/out-of-focus notif takes new inbox messages into account" failed: 3. [toBe] expected values to be strictly equal > Expected: "(1) Inbox" > Received: "(1) Odoo" ``` This happens because the test is opening discuss and simulating posting of message from an external user, in order to assert the tab shows "(1) Inbox", where (1) is the number of unread messages and "Inbox" comes from the active thread of discuss app. The test can have "Odoo" because this is the default tab title and posting of message happened so fast that discuss app client action did not have time to notify of inbox being the active conversation, even when awaiting the showing of counter on discuss sidebar. - The notifying of active conversation name in discuss app is a side-effect of rendering of discuss app. - The showing of badge next in discuss sidebar item and the (1) both come from "mail.message/inbox" bus notification. When `mail.message/inbox` is faster than side-effect rendering, then we get this "(1) Odoo" instead of "(1) Inbox". It happens a very short time, as it eventually turns into "(1) Inbox", but the test just awaits badge rendering and then assert synchronously the value in tab title. This commit fixes the issue by awaiting asynchronously the expected document.title in HOOT test. Note that document.title is not in DOM because HOOT has the document.title mocked, so we patch it to have awaiting of step. Fixes runbot-error-233459
This update prevents an error message from appearing when users open a spreadsheet dashboard dropdown in the search bar. It restores missing functionality in the Community edition so spreadsheet dashboards work more reliably.
Original PR description
…in community edition Description of the issue/feature this PR addresses: To move the missing code from enterprise edition Current behavior before PR: Open a spreadsheet dashboard dropdown in search bar in 19.0 community edition, the traceback message box appeared: AttributeError: The method 'ir.model.has_searchable_parent_relation' does not exist Desired behavior after PR is merged: No traceback --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents errors when printing PDF documents through IoT in manufacturing work orders. It ensures the document list is handled correctly, so users can print quality-related documents without encountering a traceback.
Original PR description
Due to `active_ids` being provided with a `list[list]` instead of just `list`, pdf document rendering was returning a traceback. This commit fixes the issue by flattening the list passed to the context of the client action. (e.g. `res_ids` was provided `[[21, 22], [21, 22]] instead of [21, 22, 21, 22]`). opw-5190570