Wednesday, May 6, 2026
10 changes · 18.0
Resolved issues and error corrections
A test related to order settlement was failing due to an unreliable data field. This update replaces the failing field with a more robust calculation based on order quantity and picking status, ensuring the test now passes and the point-of-sale functionality remains stable.
Original PR description
Issue: ===== - The test was using the `qty_done` field on `stock.move.line`, which is not always available. Fix: ==== - Replace `qty_done` with a computation based on `quantity` and `picked` for the assertion. Task-6183114 Error-243452 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a bug that prevented users from merging mailing lists, resulting in an error message. The fix ensures that the system correctly identifies record IDs during the merge process, preventing the 'Record does not exist' error. This improves the reliability of the mailing list management feature.
Original PR description
Currently, error occurs when user tries to merge a mailing list. Steps to replicate: - Install `mass_mailing`. - Open Email Marketing > Mailing Lists > Mailing Lists and switch to list view. - Select…
Currently, error occurs when user tries to merge a mailing list.
Steps to replicate:
- Install `mass_mailing`.
- Open Email Marketing > Mailing Lists > Mailing Lists and switch to list view.
- Select a single record, and from cog menu Click merge.
Warning:
```
odoo.http: Record does not exist or has been deleted.
(Record: mailing.list(6,), User: 2)
```
Cause:
- When the user clicks Merge, the `mailing.list.merge` form opens and `default_get()` is executed to populate defaults.
- At this point, `src_list_ids` is added to res in a structured format like `[(6, 0, ids)]` [1].
- Later, `res.get('src_list_ids')` is reused and assigned to `src_list_ids` [2].
- Taking `src_list_ids[0]` [3] returns `(6, 0, ids)`, and its first element `6` is incorrectly treated as a record ID and assigned to `dest_list_id`.
- This leads to an attempt to access a record with ID 6, which does not exist, causing the error.
Solution:
- Instead of reading `src_list_ids` back from `res` after it has been set, we initialize and reuse local variables (src_list_ids, active_ids) at the beginning of the method.
- This avoids relying on transformed values in `res` and ensures that `dest_list_id` is computed using a consistent and valid list record IDs.
[1]: https://github.com/odoo/odoo/blob/21877c09863222a237fe99334787ac46935dcca4/addons/mass_mailing/wizard/mailing_list_merge.py#L20-L22
[2]: https://github.com/odoo/odoo/blob/21877c09863222a237fe99334787ac46935dcca4/addons/mass_mailing/wizard/mailing_list_merge.py#L24
[3]: https://github.com/odoo/odoo/blob/21877c09863222a237fe99334787ac46935dcca4/addons/mass_mailing/wizard/mailing_list_merge.py#L26
sentry-7447326420
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#262466This update fixes an issue where comment counts on slides weren't accurately reflecting the number of active comments due to changes in how Odoo handles messages. The fix ensures that comment counts are synchronized with the actual number of comments, improving the user experience and data accuracy for course slides.
Original PR description
Steps to reproduce: - Open a slide of a course in non fullscreen mode (website). - Go to the comments tab and add a comment in the chatter. - The comments count does not change in the tab. - The same thing happens when a comment is deleted. - Another way to see the incorrect counter is to add a note in the slide form view (backend). Before this change, `website_slides` used `website_message_ids` to calculate the comments. Since #138233 the old portal chatter has been replaced with the mail chatter and the way messages are displayed on the portal has changed. For example notes are no longer considered portal messages and also deleted messages should not be displayed or counted as such. This change ensures that comments calculations are based on a domain that considers those changes meaning that comments will be synced with the actual number of available comments.
This update fixes a visual issue where the background color of selected table cells wasn't displayed in the toolbar. The changes add a mechanism to calculate and show the correct background color for selected cells, ensuring a more accurate and user-friendly experience when working with tables in the HTML editor.
Original PR description
Before this commit: the background color of selected table cells isn't shown in the toolbar. After this commit: we have a background color processor in the table plugin to calculate the background color of selected cells. The color and background color are also properly reset to update the selected color when selecting an empty table cell. table_selectionchange_handlers is created to make sure the selected color is updated after it. task-5976046 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a UI issue where the change amount displayed during point of sale transactions was incorrectly shown as a positive value. Now, change amounts are displayed as negative, accurately reflecting the money leaving the store with the customer. This ensures accurate financial reporting and a better user experience.
Original PR description
Steps to Reproduce ------------------------ - Install point of sale. - Do a order and pay more than the amount. Issue ------ - The change amount is displayed as a positive value on the UI. - Typically, amounts going out of the shop (like change given to the customer) should be shown as negative. Cause ------- - The change amount was not correctly represented in the UI. - Since the change flows in the opposite direction of the payment, it should be displayed as the negation of the original amount. FIX ----- - Updated the frontend to display the change amount with the correct (negative) sign. - No backend changes were required, as the correct value was already being handled during order synchronization Enterprise PR: https://github.com/odoo/enterprise/pull/112560 task: 6074620
This update fixes a visual issue in the Point of Sale interface where the change amount was not displayed with the correct negative sign. The change ensures that the POS system accurately reflects the amount of change given to customers, improving the user experience and preventing potential errors.
Original PR description
In this commit: --------------- - The tours are updated to adapt the change as now frontend display the change amount with the correct (negative) sign. Community PR: https://github.com/odoo/odoo/pull/256776 task: 6074620
A bug preventing the snippets drag-and-drop tour from completing was resolved. The fix ensures the editor is responsive during snippet loading, preventing errors when users remove or interact with snippets. This improves the user experience and prevents tour failures.
Original PR description
`test_03_snippets_all_drag_and_drop` was consistently failing on runbot. The tour stopped after removing the snippet `s_dynamic_snippet_products` because no drop zones were found for the next snippet. **Cause** The public widget `DynamicSnippetProducts` performs an RPC call in `willStart` (~1 second), but it is still possible to delete the snippet while the promise is pending. In this case, the editor is unresponsive until the promise resolves. The tour fails because the snippet is removed while the promise is still pending, the editor is not ready to process the click on the next snippet, and no drop zones are generated. **How to reproduce the problem** This is impossible to trigger manually, but consistently happening on runbot. The easiest way to reproduce the problem is to add a delay in `_fetchData()`. **Fix** Wait for the snippet to finish loading before proceeding with the tour, ensuring the editor is responsive when the next steps runs. runbot-226770
This update resolves an issue where payment reminders wouldn't render correctly when the 'payment' module wasn't installed. The fix ensures the necessary 'payment.method' model exists before attempting to use it in the email template, preventing a rendering error. This ensures all payment reminder emails display properly.
Original PR description
Repro steps: 1. Initialize a new DB 2. Install account_followup module without payment module 3. Go to Email templates > Payment reminder 4. Click on Preview You will get an error Failed to render QWeb template for Mail Template: 'Payment Reminder' (ID: 9) Target Model: res.partner Language context: en_US Error: Error while render the template KeyError: 'payment.method' Root cause: The method `_show_pay_now_button` that was being called in the template email_template_followup_1 was using self.env['payment.method'] even tho payment module is not a dependency of account_followup Fix: The introduced fix ensures that 'payment.method' model exists before attempting to use it build_error-243030
A technical issue with how data was imported into the product_unspsc module was resolved. This fix corrects a syntax error related to older PostgreSQL versions, ensuring data imports function correctly. This prevents potential disruptions during updates.
Original PR description
last week this fix deployed https://github.com/odoo/enterprise/pull/112652 https://www.postgresql.org/docs/14/sql-copy.html in older version posgress like 14.0 ``Header`` is only accepting [boolean]…
last week this fix deployed https://github.com/odoo/enterprise/pull/112652
https://www.postgresql.org/docs/14/sql-copy.html
in older version posgress like 14.0 ``Header`` is only accepting [boolean] parameter.
```
Traceback (most recent call last):
File "/tmp/tmpfiag6d7a/odoo/17.0/odoo/service/server.py", line 1374, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "<decorator-gen-16>", line 2, in new
File "/tmp/tmpfiag6d7a/odoo/17.0/odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
File "/tmp/tmpfiag6d7a/odoo/17.0/odoo/modules/registry.py", line 110, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/tmp/tmpfiag6d7a/odoo/17.0/odoo/modules/loading.py", line 481, in load_modules
processed_modules += load_marked_modules(env, graph,
File "/tmp/tmpfiag6d7a/odoo/17.0/odoo/modules/loading.py", line 366, in load_marked_modules
loaded, processed = load_module_graph(
File "/tmp/tmpfiag6d7a/odoo/17.0/odoo/modules/loading.py", line 234, in load_module_graph
migrations.migrate_module(package, 'post')
File "/tmp/tmpfiag6d7a/odoo/17.0/odoo/modules/migration.py", line 216, in migrate_module
exec_script(self.cr, installed_version, pyfile, pkg.name, stage, version)
File "/tmp/tmpfiag6d7a/odoo/17.0/odoo/modules/migration.py", line 240, in exec_script
migrate(cr, installed_version)
File "/tmp/tmpfiag6d7a/enterprise/17.0/product_unspsc/upgrades/0.3/post-update-codes.py", line 16, in migrate
cr.copy_expert("COPY _upgrade_product_unspsc_code FROM STDIN WITH (DELIMITER '|', HEADER MATCH)", csv_file)
psycopg2.errors.SyntaxError: header requires a Boolean value
```
detected here
https://upgradeci.odoo.com/upgradeci/run/294631
Forward-Port-Of: odoo/enterprise#116351This update resolves an issue where paid orders using loyalty cards with archived programs would trigger errors when opening the partner list. The fix prevents these errors, ensuring smooth processing of paid orders with loyalty programs. This improves the reliability of the point-of-sale system.
Original PR description
Backport of https://github.com/odoo/odoo/commit/ffe46084665bb8a64ef9cd9f44b85f7178adf6f7 Before this commit, when loading a paid order with a loyalty card that its program had been archived, an error was raised when opening the partner list due to the missing program. opw-6182368 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr