Wednesday, August 13, 2025
18 changes · saas-18.2
Resolved issues and error corrections
This change fixes an unstable automated test in the HTML editor toolbar by waiting properly for a dropdown popover before checking it. It helps reduce false test failures in Odoo's validation pipeline, making releases and maintenance more reliable without changing user-facing behavior.
Original PR description
The input dropdown is a popover and is therefore affected by [1]. Because of that, we cannot simply use `contains` without awaiting properly as it can easily break non-deterministically on the runbot. [1]: https://github.com/odoo/odoo/pull/211426/commits/54da715df84789f9a1acc0cfc91be41dcdbab140 Forward-Port-Of: odoo/odoo#222583
This fixes an upgrade issue that could block updates when one module changes a field to be company-specific while another does not. The system now preserves the correct field handling during upgrades, reducing failed updates and manual intervention.
Original PR description
before this commit: if module_A has a field ``company_dependent=False`` and module_B override it to ``company_dependent=True`` When -u module_A, there would be an error since ORM tries to convert column type of the field from varchar/integer/boolean... to jsonb This commit will add a patch to the field in the ORM registry if the field was company dependent before upgrade. 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 Forward-Port-Of: odoo/odoo#220983
This fix prevents confusing system errors when a document numbering sequence is configured with an invalid placeholder. Users now receive a clear validation message, helping administrators correct the setup without disrupting sales order creation or other document workflows.
Original PR description
Currently, an error is raised when a sequence is generated with an invalid legend in the prefix or suffix. **Steps to reproduce:** - Install Sales module. - Update the sale order sequence prefix to S%(days)s. - Create a new sale order. **Error:** `KeyError - 'days'` **Cause:** An error occurs when the user provides an invalid suffix in `ir_sequence` and the system tries to generate that sequence at [1]. [1] - https://github.com/odoo/odoo/blob/18da9b6dfc9dc376700cd948a09ae201bf897990/odoo/addons/base/models/ir_sequence.py#L235-L236 **Fix:** To resolve the issue, raise a user error for an invalid sequence. **Ref:** https://github.com/odoo/odoo/commit/18cac1caa21149d70009aa50f3e90dfbc18456a3 Sentry - 6684586181 Forward-Port-Of: odoo/odoo#222527 Forward-Port-Of: odoo/odoo#217142
The POS payment method form now hides the payment provider card selector correctly when online payment is enabled. This prevents confusing or inconsistent setup options for users configuring point-of-sale payments.
Original PR description
Before this commit, when the `is_online_payment` field was set to `True` the widget `pos_payment_provider_cards` was not properly hidden in the form view of the POS payment method. This commit ensures that the widget is correctly hidden when the field is set to `True` by resetting the `payment_method_type` to 'none'. Thanks to @elierwclik for the report and initial PR #222142
This fixes an automated test in the Point of Sale sales flow by ensuring quantity changes made with the on-screen numpad are fully applied before the test continues. It helps keep quality checks stable so future updates can be validated with fewer false failures.
Original PR description
Wait for the quantity update to take effect when updating with numpad. runbot-230078 Forward-Port-Of: odoo/odoo#221370
This fix prevents an error when users press Enter while chat group search results are still loading on a slow connection. It makes the messaging experience more reliable by safely waiting for available results before allowing a selection.
Original PR description
Description of the issue/feature this PR addresses: --- **Reason for PR** When a user searches for a chat group, if the network is slow and the search results have not yet been loaded, pressing **Enter** will cause the system to attempt to access the `unselectable` property of an `option` variable that is not yet initialized. This leads to the following error: ``` Uncaught Javascript Error: undefined is not an object (evaluating 'option.unselectable') ``` This PR adds handling to prevent the error when data has not been fully loaded. --- Current behavior before PR: https://github.com/user-attachments/assets/de3964c7-ff83-4f94-bc1a-cb8e09bfb62f --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222576
Readonly custom fields on invoice lines can no longer be accidentally edited when working on draft invoices. This prevents unintended changes and avoids invoices being marked as modified just because a protected checkbox was clicked.
Original PR description
Steps to reproduce ================== - Go to invoices - Open studio - Click on the invoice lines - Edit the list view - Add a new field of type checkbox - Mark that field as readonly - Exit studio - Open an invoice - Click on the checkbox => The form is marked as dirty and the checkbox is toggled Cause of the issue ================== https://github.com/odoo/odoo/commit/291518a7e7708690d183b9d1ca53c84d0c56ad90 If the state is not in ["cancel", "done", "posted"], the fields are never in readonly Solution ======== Only do this for the "name" and "product_id" fields opw-4917471 Forward-Port-Of: odoo/odoo#222595
This update aligns Point of Sale and restaurant checkout code with a recent internal change in how information is passed between screens and services. It helps prevent errors in receipt, product screen, and restaurant workflows, keeping checkout operations stable for staff.
Original PR description
In a previous commit, some method signatures were changed to use an options object instead of multiple parameters. This commit updates the affected method calls to use the new options object format.
The point of sale now handles product searches while offline without showing an unexpected crash. Staff will see the usual connection error instead, making the issue clearer and keeping the experience consistent when internet access is unavailable.
Original PR description
- Fix issue that was causing a traceback when searching for products in offline mode. Now when we search a product in offline mode, we get the `ConnectionLostError` as before instead of a traceback. task-id: 5008058 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Point of Sale now reuses an existing empty, unfinished order when staff click “New order” from the receipt screen instead of creating another blank order. This reduces clutter from unnecessary empty orders and helps keep POS sessions cleaner.
Original PR description
- When clicking `New order` on the receipt screen, we now want to reuse an empty order (not finalized and no order lines) before creating a new one. This avoids creating many useless empty orders. task-id: 5003010 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222276
This update removes an unnecessary page reload from an automated test for public discussion channels. It helps reduce unstable test failures, making release validation more reliable without changing customer-facing functionality.
Original PR description
This test suspiciously fails in various ways in all versions before the following PR: https://github.com/odoo/odoo/pull/214358 This seems to indicate an issue with the page reload. Starting from 18.2 the bus is available in tour, so reloading the page is not necessary. https://runbot.odoo.com/odoo/error/111051 https://runbot.odoo.com/odoo/error/223165 https://runbot.odoo.com/odoo/error/227755 https://runbot.odoo.com/odoo/error/227756 https://runbot.odoo.com/odoo/error/227757 https://runbot.odoo.com/odoo/error/227758 https://runbot.odoo.com/odoo/error/229657 https://runbot.odoo.com/odoo/error/229724 https://runbot.odoo.com/odoo/error/229745 https://runbot.odoo.com/odoo/error/229817 https://runbot.odoo.com/odoo/error/230901 Forward-Port-Of: odoo/odoo#222825
The Cash Flow report now handles grouping by account codes consistently, preventing an error that could block report generation in certain configurations. This helps finance users reliably view cash flow information when account code fields are customized or present.
Original PR description
The term used by GROUP BY should be the same term in the SELECT, avoiding the posible error like: ERROR: column "account_move_line__account_id.code_store" must appear in the GROUP BY clause or be used in an aggregate function That appears when a column named account_code is created for the model account_move_line. opw-4963180 Forward-Port-Of: odoo/enterprise#91915
A recent internal change altered how some point-of-sale restaurant functions receive information. This fix updates the affected calls so restaurant preparation display and related order flow tests continue to run correctly, reducing the risk of checkout or kitchen display regressions.
Original PR description
In a previous commit, some method signatures were changed to use an options object instead of multiple parameters. This commit updates the affected method calls to use the new options object format.
This fix updates an internal subscription test so it works reliably regardless of the calendar year. It helps keep automated checks stable and reduces false failures during development and release validation.
Original PR description
Before this commit, when test_uninvoiced_upsell_close_log was launched in a year different than 2025, it would fail with the following error: ``` File…
Before this commit, when test_uninvoiced_upsell_close_log was launched in a year different than 2025, it would fail with the following error:
```
File "/data/build/enterprise/sale_subscription/tests/test_sale_subscription.py", line 2085, in test_uninvoiced_upsell_close_log
action = subscription.prepare_upsell_order()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/sale_subscription/models/sale_order.py", line 1042, in prepare_upsell_order
action = self._prepare_renew_upsell_order('7_upsell', upsell_msg_body)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/sale_subscription/models/sale_order.py", line 1012, in _prepare_renew_upsell_order
order = self._create_renew_upsell_order(subscription_state, message_body)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/test_sale_subscription/models/sale_order.py", line 228, in _create_renew_upsell_order
order = super()._create_renew_upsell_order(subscription_state, message_body)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/sale_subscription/models/sale_order.py", line 998, in _create_renew_upsell_order
values = self._prepare_upsell_renew_order_values(subscription_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/project_sale_subscription/models/sale_order.py", line 40, in _prepare_upsell_renew_order_values
res = super()._prepare_upsell_renew_order_values(subscription_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/partner_commission/models/sale_order.py", line 72, in _prepare_upsell_renew_order_values
values = super()._prepare_upsell_renew_order_values(subscription_state)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/sale_subscription/models/sale_order.py", line 1182, in _prepare_upsell_renew_order_values
raise UserError(_('You cannot create an upsell for this subscription because it :\n'
odoo.exceptions.UserError: You cannot create an upsell for this subscription because it :
- Has not started yet.
- Has no invoiced period in the future.
```
runbot-task-230716This fixes a rounding problem in Mexican Point of Sale receipts when specific prices, taxes, and full discounts caused tiny remaining totals instead of zero. The total is now rounded using the currency precision, helping affected POS orders validate correctly and avoid unnecessary errors.
Original PR description
Issue: With specific prices and discounts, we can get an rounding issue that does not pass the Validation Error. Purpose of this PR: To round the amount total based on the currency's rounding precision to pass the check. Steps to Reproduce on Runbot: install pos, l10n_mx create products prices with 75.00 and 60.00 respectively. create discount 100% on order change decimal accuracy to 3, change tax to Include with Price create PoS order with products and apply discount receive ValidationError even though the amount total should be rounded to 0.0. opw-4944830 Forward-Port-Of: odoo/enterprise#92141
The default Swiss payroll rate for 13th month salary has been adjusted from 8.33% to 8.3333%. This improves payroll calculation precision for Swiss contracts and helps ensure employee compensation is computed more accurately.
Original PR description
-changed the default contractual thirteen month rate for Switzerland from 8.33 to 8.3333 Forward-Port-Of: odoo/enterprise#92129 Forward-Port-Of: odoo/enterprise#92095
The Argentine electronic invoicing test setup now stops retrying after a small number of failed connection attempts. This prevents automated test runs from getting stuck indefinitely and reduces the risk of repeatedly hitting external services.
Original PR description
In 18.0 and above test hasn't worked in months, half the time it fails because pretty much nothing works in it and half the time it's because it keeps looping on trying to set up the connection and failing (possibly because we're getting blacklisted due to how much spamming we do). For now restrict to just trying 5 times (per class since it's called from a `setUpClass`) with an exponential backoff. This may yet end up in removing the entire test directory as it doesn't seem like anyone cares. Forward-Port-Of: odoo/enterprise#92226 Forward-Port-Of: odoo/enterprise#92207
Fixes an error that prevented users from exporting the Journal Audit report to PDF when filtering by receivable or payable account types. This ensures finance teams can reliably generate audit PDFs with those common filters applied.
Original PR description
- In the Journal Audit report options, set the Account Type (filter_account_type) to either receivable, payable, or both. - Attempt to export the PDF of the Journal Audit report. A traceback occurs because, in _generate_document_data_for_export, we attempt to add a join using an alias. However, if the filter_account_type option is enabled, there is already a left join in the query with the same alias: account_move_line__account_id. opw-4926547 Forward-Port-Of: odoo/enterprise#91683