Tuesday, November 18, 2025
21 changes · 19.0
Enhancements to existing features
The test cases for Philippine tax report generation were updated to match the latest description changes. This helps keep the reporting feature reliable and ensures future updates do not break expected report outputs.
Original PR description
Related PR: https://github.com/odoo/odoo/pull/235448 TaskID-5248240
This update improves the internal documentation of the website and HTML builder plugin system, including shared methods and reusable resources. It helps developers work faster and with fewer integration mistakes by making available features easier to discover in code editors.
Original PR description
Backport of https://github.com/odoo/odoo/pull/234203
Resolved issues and error corrections
This update prevents an error when customers switch between product variants on subscription products in the shop. If no pricing is available, the system now sends an empty list instead of a missing value, avoiding a traceback and keeping the product page working smoothly.
Original PR description
Step to reproduce: - install website_sale_subscription - create a product, add few variants and tick 'Subscriptions' option. - open that product from /shop - toggle between variants Cause: - In case the pricing is not present, 'False' is passed(not an iterable) - `_onChangeCombinationSubscription` expects a iterable, causing traceback Fix: - we pass empty list instead of False opw-5241612 Forward-Port-Of: odoo/enterprise#99160
Miscellaneous changes
We don't have any supported languages in Odoo for Sri Lanka, except the default English. Therefore, we are removing the .pot file and Weblate entry. Introduced by [this commit](https://github.com/odoo/odoo/commit/6a48404f4f254bf70881d6c4cc20bc4d1e2d7ae8)
Original PR description
We don't have any supported languages in Odoo for Sri Lanka, except the default English. Therefore, we are removing the .pot file and Weblate entry. Introduced by [this commit](https://github.com/odoo/odoo/commit/6a48404f4f254bf70881d6c4cc20bc4d1e2d7ae8)
This change makes the mobile message reaction test more stable by waiting for the full conversation to finish loading before checking reactions. It also corrects how reaction updates are stored so user reactions are handled consistently instead of being misread as replacements.
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/235852 Test was recently unskipped for test coverage of the fix, but there were non-deterministic failures of this test on runbot: ``` Failed to find 1…
Follow-up of https://github.com/odoo/odoo/pull/235852
Test was recently unskipped for test coverage of the fix, but there were non-deterministic failures of this test on runbot:
```
Failed to find 1 of ".o-mail-MessageReaction:contains('😀')" (Timeout of 3 seconds). Found 0 instead.
```
This happens because conversation has a single message, and the last message is fetched twice: once at init_messaging of the pinned conversation, and another one when loading the message list. The test was awaiting presence of message before adding reactions, but while adding a reaction it's possible to have 2nd fetch of message overwriting the message reactions from a prior `ADD`, leading to failed assertion below that there's no message reactions.
This commit fixes the issue by awaiting the whole message list render thanks to awaiting the 2 messages on UI and not just the 1st one.
Also the to_store format of message reaction was poorly formatted, which lead to "ADD" command being treated as a "REPLACE" instead. This commit also fixes this issue, as the client-side code of message reaction is designed to receive "ADD" commands.This update makes the field selector in spreadsheet pivot side panels respect debug mode. As a result, users can search and see technical field names when working in debug mode, which helps with configuration and troubleshooting.
Original PR description
Steps to reproduce: - Activate debug mode - Insert a pivot in a spreadsheet - In the side panel, click on "Add column" => the component is not in debug mode, so the technical name cannot be searched and is not displayed Task: 5264589
This fix ensures transparent PNG images in the Website image gallery display with a white thumbnail background instead of a black square. It improves the visual appearance of galleries and keeps page editing results consistent and polished.
Original PR description
Steps to reproduce: - Go to Website and click Edit. - Drag and drop an "Image Gallery" snippet onto the page. - Enable the "Squared Miniatures" option. - Add a PNG image with a transparent background to the gallery. Before this commit, thumbnails had a black square background. After this commit, thumbnails have a white background. task-5189020
This update fixes a misleading error shown in Point of Sale when communication with the Blackbox times out. Users will now see a more accurate message, which reduces confusion and helps support teams diagnose the real issue faster.
Original PR description
Before this commit, in the case when there is a timeout communicating with the Blackbox in the POS, an incorrect error message was shown stating that "The IoT Box is connected but the Fiscal Data Module isn't". This message should only be shown when we receive a reply from the IoT box, but it tells us it cannot find the Blackbox. <img width="695" height="240" alt="image" src="https://github.com/user-attachments/assets/ec011f4a-42dd-4ffd-8741-350032897471" /> Forward-Port-Of: odoo/enterprise#99652
This change makes the manufacturing training/test flow more reliable by removing a step that could cause the screen to refresh at the wrong time. It also ensures the intended product appears first, preventing intermittent failures during the add-component process.
Original PR description
The search in the "Add Component" dialog caused a re-render race, making the tour ``test_add_component_from_shop_foor_in_multi_step_manufacturing`` fail intermittently. This fix removes the search steps and marks the “Courage” product as favorite so it appears first in the catalog. runbot-227694 Forward-Port-Of: odoo/enterprise#92403
This change prevents the VOIP system from trying to reconnect when a user leaves the page normally. It avoids a conflict between two registration actions, which could otherwise trigger errors during page unload.
Original PR description
On page unload, two conflicting things happen: - A REGISTER request with expires=0 is sent to invalidate the registration - The WebSocket disconnects, triggering the reconnection mechanism that attempts to reissue a registration These two concurrent and conflicting REGISTER requests result in the following error: > RequestPendingError: REGISTER request already in progress, waiting for final response This commit prevents the reconnection mechanism from occurring in the event of a "natural" disconnection, such as one triggered by a page unload. This way, the two conflicting REGISTER requests aren't sent on page unload. [Task-5261940](https://www.odoo.com/odoo/project/5778/tasks/5261940) Forward-Port-Of: odoo/enterprise#99560 Forward-Port-Of: odoo/enterprise#99376
Draft payslips could raise an error when their period date was cleared. This fix lets users remove the date safely and includes an automated test to prevent the issue from coming back.
Original PR description
When removing the date in a draft payslip an exception was raised. This was fixed and a test was added to check the flow. Related to odoo/odoo#231247 task-5159666 Forward-Port-Of: odoo/enterprise#97013
The invoice form now avoids showing an empty section that could shift labels and fields out of alignment. This keeps the layout consistent for users in the affected accounting setup, especially when currency options are not available.
Original PR description
### Issue: In a certain case, the div `journal_div` has nothing inside and is displayed. This causes the form view to be offsetted. ### Steps to reproduce: - Install "l10n_ar" and switch to an…
### Issue:
In a certain case, the div `journal_div` has nothing inside and is displayed. This causes the form view to be offsetted.
### Steps to reproduce:
- Install "l10n_ar" and switch to an Argentinian company
- The user must not have the group `base.group_multi_currency`
- Settings > Currencies and deactivate the USD
- Make sure you only have one Sales journal
- Create an invoice
- The field 'Result' is offsetted
### Cause:
The div `journal_div` is constructed like this:
```xml
<div name="journal_div" class="d-flex">
<field name="journal_id"
invisible="not show_journal"/>
<div name="currency_div"
groups="base.group_multi_currency">
...
</div>
</div>
```
In the case `show_journal = False` and the user doesn't have the group `base.group_multi_currency`, then `journal_div` is empty, but it's still displayed.
It will take the place of a label, this means that the next field label will be in the "input" column and its input in the "label" column.
### Solution:
We need to not display the `div` when `show_journal = False` AND the user doesn't have the group `base.group_multi_currency`. This is not possible.
A possible fix would be to add a non-stored computed field just like `show_journal` to show or not the div.
This commit chose to fix this with CSS: do not display `journal_div` if it's empty. This is also more secure in the case where a customization added things in the div.
Before this commit:
<img width="1048" height="273" alt="image" src="https://github.com/user-attachments/assets/04062527-ee8d-463c-9768-72f0680c922d" />
After this commit:
<img width="1052" height="221" alt="image" src="https://github.com/user-attachments/assets/30b4f169-f4c0-485f-b895-b8d33bfd1fa6" />
opw-5221931The Due button on a partner record will now stay visible whenever the partner has at least one invoice, even if their balance is currently zero. This makes it easier for users to quickly access customer financial information and statements without the shortcut disappearing unexpectedly.
Original PR description
The `Due Button` on `res.partner` is a convenient shortcut to access the partner’s current financial situation, especially the Customer Statement report. Even if the partner has no outstanding balance, the shortcut remains useful. So in this commit, we update the visibility logic of the `Due Button` so it appears as long as the partner has at least one `invoice (in/out)` linked to them. This means the button will remain visible even when the total `due amount is `zero`, ensuring the shortcut is always accessible. Task-5264512
The employee and contract form now makes it clear that leaving the pay category field empty means the employee will not be included in pay runs. This helps avoid confusion and reduces the risk of employees being unintentionally left out of payroll processing.
Original PR description
The pay run field is now optional on employee profiles and contract templates, and therefore such employees are not included in pay runs. This commit makes the placeholder for the field indicate that the employee will be excluded from pay runs. Task-5237800
This change makes server-side call disconnections behave the same way regardless of how they happen. Users will now get a log entry and a notification every time, which makes the experience more predictable and easier to understand.
Original PR description
Before this commit, when a rtc session was removed by the server, the behavior was different depending on the notification flow, this commit makes it so that server disconnections are treated the same way, with a log entry and a notification.
This update fixes a few display issues in the Appointment app. It moves the guest option to a more natural position in the booking form and corrects the visibility of the “Add Closing Day(s)” button so it appears only where it should, reducing confusion for users managing bookings and availability.
Original PR description
Purpose ======= Fix various interface issues related to the appointment app following the Testing Days for v19. Specification =========== - Placing add guests button after registration questions on…
Purpose ======= Fix various interface issues related to the appointment app following the Testing Days for v19. Specification =========== - Placing add guests button after registration questions on front-end. Following the addition of a phone question type (odoo/enterprise#82973), the user phone input at registration is in the list of questions and not at the top of the form in the base user information section anymore. The Add Guests feature can thus be displayed before the phone number which seems a bit odd. Fixing the issue by moving the Add Guests feature at the end of the form, after the list of questions. - Fix the "Add Closing Day(s)" button visibility. The button should be visible on every resource views (gantt, calendar, list), and should be invisible on every staff booking views (gantt, calendar, list). Currently, the button is visible on the list view for staff bookings, it should not. The button is also not present on the calendar view for resource bookings, it should be. Task-5079021
This change limits the width of thread previews shown under messages in the inbox and discussion views. It makes the message itself stand out more clearly and keeps long previews from taking over the layout.
Original PR description
Before this commit, thread preview below message in message list may took lots of width. This is a problem because the thread preview could be more visible than the message itself. This commit fixes the issue by having a max-width on the thread preview from a message, similar max-width as a link preview. Before <img width="903" height="723" alt="Screenshot 2025-11-18 at 16 10 56" src="https://github.com/user-attachments/assets/1b493eb9-6fe9-4150-bc77-a524337286f7" /> After <img width="902" height="738" alt="Screenshot 2025-11-18 at 16 21 32" src="https://github.com/user-attachments/assets/757c81df-3aec-4d96-a8ab-3bfccef13157" />
This update adjusts how check messages are shown so they appear on a single, cleaner line instead of wrapping awkwardly. It makes the report interface look more consistent and easier to read, without changing the underlying business logic.
Original PR description
Multi-line messages for checks are displayed on multiples lines starting in 19.0. This is ugly and we fix this so every checks have a similar look. Before: <img width="368" height="103" alt="image" src="https://github.com/user-attachments/assets/67bb84f9-ac61-4c0d-84ba-b8a886763546" /> After: <img width="337" height="74" alt="image" src="https://github.com/user-attachments/assets/4f45b368-cf60-4b46-b10a-dd1b75ceb9f9" />
Users can now customize the size style of multiple mega menus and have those choices saved correctly. Previously, only the first mega menu kept its style change, which could lead to inconsistent website design after saving.
Original PR description
The implementation of `save_handlers` for mega menus only saved the classes of the first mega menu found. Thus, customization of the "Size" of the second menu was not saved. This commit change the handler to select all mega menus. Steps to reproduce: - Open website builder - Create multiple mega menus - Set "Size" to "Narrow" on each mega menu - Save - Bug: Only the first mega menu is narrow task-5248206 Fixes #234222 Forward-Port-Of: odoo/odoo#234911
This update fixes a bug that prevented file uploads from working after users interacted with elements inside shadow-root components. It improves the reliability of automated UI tests and other interactions in screens that use this web structure.
Original PR description
Before this commit, using 'setInputFile' after interacting with an element contained in any shadow root would not work ("no input has been interacted with" error).
This commit allows the listeners responsible for detecting clicks/focus on file inputs to handle the shadow root cases properly.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#235961This pull request appears to contain a very small change with no clear user-facing impact based on the provided information. It likely serves as a maintenance or test update, so business users should not expect any functional difference.
Original PR description
Very clean, 0 mistakes