Wednesday, July 9, 2025
14 changes · 18.0
Enhancements to existing features
The Point of Sale weighing dialog has been reorganized so businesses or implementation partners can customize it more easily. This is a small internal improvement that supports future adaptations without changing the standard user experience.
Original PR description
Enterprise PR: https://github.com/odoo/enterprise/pull/89280 This commit makes a small change to move the code that calls the weighing dialog into its own function. This is so it can more easily be overridden. task-4910716 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This update adjusts an automated test for the HTML editor's link popover to prevent intermittent failures. It helps keep quality checks stable so fixes and improvements can move through validation more reliably.
Original PR description
The fix at [1] did not fix the issue. This is another attempt. runbot-227759 [1]: https://github.com/odoo/odoo/pull/215168/commits/9a3c9ecca14fb8701e4f934cf5285297cbe26310
A flaky automated check in the Mail discussion area was stabilized by waiting until a reaction is fully removed before reloading the page. This helps reduce false failures in validation systems and supports smoother delivery of future updates.
Original PR description
Before this commit, tour "discuss_channel_public_tour" was failing non-deterministically at the following step: ``` .o-mail-Message:not(:has(.o-mail-MessageReaction)) ``` This happens because prio steps added a new reaction and asserted it was shown. It clicks on reaction to remove it and then page reload to see the reaction is gone. Problem is that it can reload page too fast and the RPC to remove the reaction did not have time to occurs. This commit fixes the issue by awaiting message no longer has reaction before page reload. Fixes runbot-error-227769
This update fixes an unreliable automated test for message reactions selected from the emoji picker. It helps ensure future changes accurately catch reaction behavior issues without false or inconsistent test results.
Original PR description
Before this commit, test "Add the same reaction twice from the emoji picker" may fail non-deterministically in 18.1 on last step: the message reaction is sometimes kept, sometimes removed. The feature works in 18.0 but no longer in 18.1. The test was still passing though very rarely can fail and actually show the feature doesn't work. This happens because the test is clicking on reaction too fast and doesn't assert on UI the 1st message reaction has been added, thus it may flicker and keep showing there's 1 message reaction still. This commit fixes the test in 18.0, in preparation to keep the same test in 18.1 and show the bugged change of behaviour in 18.1 to fix. Fixes runbot error 229340
The HTML editor font size field now uses the correct text color when dark mode is enabled. This improves readability and consistency for users editing content in dark-themed environments.
Original PR description
Purpose of this PR: - Backport a [PR #206008](https://github.com/odoo/odoo/pull/206008), which ensures that the font-size input now changes its color appropriately in dark mode. task-4897771 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes the Discuss channel test wait for a fully saved message before trying to add a reaction. It prevents intermittent automated test failures caused by reacting to a temporary message that is replaced moments later.
Original PR description
Backport of https://github.com/odoo/odoo/pull/217982 [FIX] mail: fix runbot error 222093 (o-mail-Message:contains(cheese)) Before this commit, tour "test_discuss_channel_public_page_as_guest" would…
Backport of https://github.com/odoo/odoo/pull/217982 [FIX] mail: fix runbot error 222093 (o-mail-Message:contains(cheese)) Before this commit, tour "test_discuss_channel_public_page_as_guest" would crash in test after posting a message in which we attempt to add a reaction. This happens because the step is a `hover && click 'Add a reaction'`, so it hovers on selector `o-mail-Message:contains(cheese)` then clicks on the 'Add a reaction' action. In discuss channels, when sending a message, the message is immediately shown on UI before there's a genuine message that is created in DB. This optimistic behavior gives impression the app is fast, but some actions require a genuine message like 'Add a reaction'. The problem of test is that selector `.o-mail-Message:contains(cheese)` passes with temporary / transient message of optimistic behavior, so the `hover` step would be triggered on the temporary / transient message and 'Add a reaction' action is awaited for click. Problem is that when genuine message data is received, implementation detail deletes the temporary / transient message and then shows the genuine message. Because the genuine message is different, component identity is different (it uses message.localId in `t-key`), thus it awaits `Add a reaction` on UI but it's not visible because we need to hover again, this time on genuine message. This commit fixes the issue by awaiting message is shown on UI is the persistent, i.e. non-temporary and non-transient, so that hover and click on the 'Add a reaction' action works without issue. fixes runbot error 181660 fixes runbot error 222093 fixes runbot error 227756 fixes runbot error 227758
Expense posting no longer requires an employee to have a work email address. This prevents valid expense reports from being blocked when partner records can now be created without that email information.
Original PR description
- removed work email constraint while posting the expense as the partner is now created without the need of work email --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Product back-in-stock notification emails no longer display a price that may exclude taxes. This avoids confusing customers when website prices are configured to include taxes and keeps the email focused on product availability.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Configure website to display prices tax-included; 2. disable selling out-of-stock products; 3. go to an out-of-stock product page; 4. request a reminder email; 5. replenish product stock; 6. run the `_send_availability_email` action; 7. check email that was sent. Issue ----- The price display in the email does not include taxes. Cause ----- The email only checks the `list_price` defined on the product. Solution -------- Don't include the price in the email: - On stable: hide the element to avoid breaking xpaths - On master: remove the price element from the email template opw-4712613 Forward-Port-Of: odoo/odoo#215292
This fix prevents an error when users view reserved packaging quantities for kit products that do not have packaging set. Inventory reporting can now display these reserved quantities reliably instead of failing with a crash.
Original PR description
### Steps to reproduce: - In the settings enable "Product Packagings" - Create a product P with a kit bom: 1 x COMP - Create and confirm a delivery for 1 unit of P - Reserve 1 unit of COMP (put the…
### Steps to reproduce: - In the settings enable "Product Packagings" - Create a product P with a kit bom: 1 x COMP - Create and confirm a delivery for 1 unit of P - Reserve 1 unit of COMP (put the quantity of the move to 1) - Go to Inventory > Reporting > Moves history - Add the field "Reserved Packaging Quantity" in the view (with studio) - remove the "done" filter #### > Traceback: ZeroDivisionError in _compute_product_packaging_qty ### Cause of the issue: The computation of the `product_packaging_qty` can not succeed for a kit move line without `packaging_id` on its move since: `move_line.move_id.product_packaging_id.qty` will be 0: https://github.com/odoo/odoo/blob/b87c896969cc576a799ac63f03501be1e87b0e84/addons/mrp/models/stock_move.py#L107 By contrast since if the packaging is set, there should not be an issue since the field is required and since there is a positive constraint: https://github.com/odoo/odoo/blob/b87c896969cc576a799ac63f03501be1e87b0e84/addons/product/models/product_packaging.py#L21-L27 opw-4781180 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#217877
The media attachment remove icon is now shown correctly in the editor dialog. This fixes a small visual issue that could make it harder for users to remove selected media attachments.
Original PR description
Description of the issue this PR addresses: - The remove icon in the media dialog attachment was not visible due to the use of an invalid `z-index-1` class. This commit c5a98c76ea1cce4acb55faf4768388b94255508f removed custom `z-index` utilities. Replaces `z-index-1` with Bootstrap's default `z-1` class. Before this commit: - The icon used `z-index-1`, which is not a valid Bootstrap class. After this commit: - Replaced with `z-1`, the correct Bootstrap 5 utility class for `z-index: 1`. task-4903381 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes an internal mail presence test stable when automated test systems are under heavy load. It reduces false test failures, helping keep releases and updates moving reliably without changing user-facing behavior.
Original PR description
Since [1], https://github.com/odoo/odoo/pull/207974 websocket timeout has been increased during test. Fetching notification only returns the notifications of the last 50 seconds initially. When runbot is under high load, this can lead to non deterministic failures. This commit patches the cursor date to bypass this issue. [1]: https://github.com/odoo/odoo/pull/207974 fixes rubot-223758 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
Phone numbers entered with parentheses are now handled correctly by the VoIP feature. This helps avoid dialing issues when users copy or type numbers in common formats such as area codes in brackets.
Original PR description
Add parentheses to the list of characters that are stripped from phone numbers. Part of task-4891947. Forward-Port-Of: odoo/enterprise#89625 Forward-Port-Of: odoo/enterprise#89551
Italian POS fiscal receipts and invoices no longer add a manual header because the fiscal printer already prints one automatically. This prevents customers from receiving receipts with duplicated header information, making printed documents cleaner and compliant with printer behavior.
Original PR description
The printer is already adding a header by default so we don't need to add one manually. Steps to reproduce: ------------------- * Setup an Italian fiscal printer in the POS * Open the POS and create a new order * Add a product and validate the order > Observation: The printed receipt has 2 headers. Why the fix: ------------ According to the Italian fiscal printer documentation, the header is automatically added by the printer, so we don't need to add it manually. Ticket before and after the fix:  opw-4794322
The empty screen image in Subscriptions now scales with its surrounding space instead of using a fixed size. This makes the image larger and easier to see, improving the first-use experience for users who have no subscription records yet.
Original PR description
Changed the empty screen image size from a fixed value to a dynamic ratio based on its parent element. The image is now larger and clearer for the user. task-4912109