Wednesday, May 6, 2026
7 changes · 17.0
Resolved issues and error corrections
This update resolves a technical issue preventing the correct import of product data for the product_unspsc module. The problem stemmed from an outdated requirement in the database system (PostgreSQL) regarding how the 'Header' option is used when importing data. This fix ensures data imports function correctly.
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/294631This update corrects a problem where users with specific permissions (marc demo) experienced errors accessing planning records after archiving employees. The fix ensures that pending calculations are properly handled, preventing access issues and maintaining data integrity within the planning module.
Original PR description
- Step to reproduce: with hr_attendance and planning installed, archive an employee with marc demo -> access error on planning records - Cause: some records are recomputed after departure wizard closes using marc demo rights - Solution: flush all pending planning.slot computations from the wizard using .sudo() Task: 6131692
This update corrects a technical issue preventing users from selecting alternative DHL label formats (like ZPL2) when setting the 'Label Format' in the delivery method. The fix ensures DHL label requests are correctly formatted for the API, resolving a problem where labels consistently returned as PDF.
Original PR description
Backport of commit 2b26341 (original PR: #103660) ----- Ticket: opw-6152014
This update corrects a technical issue preventing the import of product data using the standard Odoo import process. The problem stemmed from an outdated configuration requiring a specific CSV format with a header row. This fix ensures the import process functions correctly, allowing for seamless data updates.
Original PR description
with header true still it gives the error because copy feature still need to pass explicitly CSV FORMAT. ``` Traceback (most recent call last): File…
with header true still it gives the error because copy feature still need to pass explicitly CSV FORMAT.
```
Traceback (most recent call last):
File "/tmp/tmpe_22i6y2/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/tmpe_22i6y2/odoo/17.0/odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
File "/tmp/tmpe_22i6y2/odoo/17.0/odoo/modules/registry.py", line 110, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/tmp/tmpe_22i6y2/odoo/17.0/odoo/modules/loading.py", line 481, in load_modules
processed_modules += load_marked_modules(env, graph,
File "/tmp/tmpe_22i6y2/odoo/17.0/odoo/modules/loading.py", line 366, in load_marked_modules
loaded, processed = load_module_graph(
File "/tmp/tmpe_22i6y2/odoo/17.0/odoo/modules/loading.py", line 234, in load_module_graph
migrations.migrate_module(package, 'post')
File "/tmp/tmpe_22i6y2/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/tmpe_22i6y2/odoo/17.0/odoo/modules/migration.py", line 240, in exec_script
migrate(cr, installed_version)
File "/tmp/tmpe_22i6y2/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 TRUE)", csv_file)
psycopg2.errors.FeatureNotSupported: COPY HEADER available only in CSV mode
```
https://upgradeci.odoo.com/upgradeci/run/294907
Co-authored-by: Pirols <pied@odoo.com>This update corrects a misleading validation error that appeared when using the translation button on Sale Order Templates. The issue stemmed from how the system attempted to save records, particularly within O2M list views. Now, the system correctly identifies and highlights missing required fields, improving the user experience.
Original PR description
Steps to reproduce: * Enable multiple languages * Go to Sale Order Templates and create a new template * Add a product line, then click the translate button on the description field * A confusing…
Steps to reproduce: * Enable multiple languages * Go to Sale Order Templates and create a new template * Add a product line, then click the translate button on the description field * A confusing validation error appears for missing `sale_order_template_id` Issue: * Instead of highlighting the missing required fields on the sale order template form view, it raises a misleading validation error on `sale_order_template_id` Cause: * `useTranslationDialog` always attempts to save the passed record directly. In O2M list views, the field can belong to a nested relational record, so the correct behavior is to save the root record instead. Affected Version: 17.0 Before: <img width="1919" height="1014" alt="image" src="https://github.com/user-attachments/assets/cd61381d-289a-4df4-bdf2-7881fa851939" /> After: <img width="1920" height="887" alt="image" src="https://github.com/user-attachments/assets/5218c74b-c024-4994-b816-cb7ae69b420f" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where contacts enrolled in shared courses were incorrectly merged. Now, attempts to merge these contacts will be blocked, preventing data duplication and ensuring accurate course enrollment records. This change improves data integrity and simplifies contact management.
Original PR description
Expected Behaviour: Contacts enrolled in common courses should not be merged and the merge should fail. Steps to reproduce: 1- Go to one of the courses 2- Add two attendees to the course 3- Go to Contacts App 4- Select the two attendees you added to the course 5- Try merging the two contacts Actual Behaviour before the Fix: Contacts enrolled in common courses are getting merged and the common courses are kept in the destination contact. Behaviour with the Fix: Contacts enrolled in common courses are blocked from being merged and an error message is shown to the user saying that the reason the merge is blocked is a duplicate course. opw-5417223
This update fixes an issue where the Point of Sale system would fail when multiple rescue sessions were open for a configuration. Now, the system intelligently displays a list of rescue sessions when multiple are active, or a direct form view when only one is open, ensuring a smoother user experience.
Original PR description
When multiple rescue sessions existed for a POS config, calling `open_opened_rescue_session_form` raised a ValueError ("Expected singleton") because `.id` was accessed on a multi-record set.
Now opens a filtered list view titled "Rescue Sessions" when multiple open rescue sessions are found, and a direct form view when there is only one.
opw-6184661
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr