Wednesday, April 8, 2026
16 changes · 18.0
Resolved issues and error corrections
This update fixes a minor issue with the SendCloud delivery module by adding a clearer error message to users when delivery problems occur. This helps users quickly understand the reason for the failure and take appropriate action, improving the overall delivery process. The change was driven by a specific user feedback ticket.
Original PR description
Add hint with error message. ----- Ticket: opw-6072855
This update resolves a bug that caused Odoo reports to crash when comparing data containing string values. The fix ensures the report accurately handles different data types during comparisons, improving overall stability and reliability. This prevents unexpected errors when users utilize the report comparison feature.
Original PR description
To reproduce: - Create a company in LU - Open the annual tax report for LU - Click on the comparison filter, compare with 1 period in the past ==> Traceback. This happens because that report contains a string value (an editable one, but it's not important here). Since there are only 2 comparison periods, we try creating the "%" column, comparing their amounts. The condition checking whether or not to display "N/A" was wrong, as it considered the values could only be int/float or None. Here, they are strings, so we don't enter that condition and crash when trying to evaluate float_is_zero on a string.
This update fixes a bug that prevented product descriptions from appearing on barcode receipts. Previously, only the product name was shown. Now, when a product has a description, it's correctly displayed on the barcode receipt, improving clarity and accuracy for users.
Original PR description
**problem:** The description/internal notes of a product is not displayed on the barcode interface. **steps to reproduce:** 1. Create a product with a "Description" 2. Create and confirm a request…
**problem:** The description/internal notes of a product is not displayed on the barcode interface. **steps to reproduce:** 1. Create a product with a "Description" 2. Create and confirm a request for quotation for this product through the purchase app 3. Open the receipt in the barcode app 4. The description is not visible on the line **cause:** - The JS barcode model (`/stock_barcode/barcode_picking_model.js`) never propagated the description_picking from the parent stock.move record to the stock.move.line data used by the UI template. - The view did not have a tag for the description. - In Python (`_get_stock_barcode_data()`) in `stock_barcode/stock_picking.py` did not filter out the redundant default description_picking, which was set to product.name when no specific picking description exists on the product. **fix:** - In `_get_stock_barcode_data()`, recompute the move description to be the actual description (or `False` when empty/default 'product.name'). - We need to propagate the description_picking from stock.move to the stock.move.line data, and render it in the views. opw-6058584
This update resolves an issue preventing non-stock users from duplicating helpdesk tickets with associated sales. The fix sets the product ID to 'false' during duplication, allowing users without stock access to create copies of tickets. This improves usability for all users.
Original PR description
Steps to reproduce: - Install helpdesk_sale_timesheet. - Create a Helpdesk Ticket and set its sale_line_id. - Log in as a user without stock.group_stock_user access. - Try to duplicate the ticket. Issue: Duplicating a ticket raises an AccessError because the user lacks stock rights required when copying the product_id. Fix: Set `product_id` to False during duplication for non-stock users. Reference: https://github.com/odoo/enterprise/pull/9100 task-5356318
This update resolves a technical issue that prevented users from closing sessions when generating the DSFinV-K export for German Point of Sale certifications. The change ensures a fallback user ID is used, allowing session closure to proceed smoothly. This improves the reliability of the certification export process.
Original PR description
Before this commit, closing a session was blocked if an order was missing the user_id field during DSFinV-K export generation. opw-6067382
This update fixes an issue where the employee health warning incorrectly flagged individuals with long-term sick leaves. The change adjusts the logic to include employees who have been on sick leave for at least 31 days, ensuring more accurate reporting of employee health status. This improves the reliability of the HR dashboard.
Original PR description
-**Issue**: The warning shows employees who had a long sick leaves before 31 days, which is incorrect. -**Fix**: Adjust the logic to include employees who have been on a sick leave for the past 31 days (at least). Forward-Port-Of: odoo/enterprise#112985
This update resolves an issue that occurred when a product was removed from a POS order, preventing a crash. The fix ensures the system handles cases where a preparation display order has no assigned stage, avoiding an error and maintaining order processing functionality. This improves stability and reliability for users.
Original PR description
When a product is removed from a POS order, _process_preparation_changes sorts the preparation display lines by their current stage sequence to determine cancellation priority. This relies on `order_stage_ids[-1]`, which raises an IndexError when a preparation display order has no stage assigned. Steps to reproduce: 1. Create a preparation display with at least one category filter. 2. Add a product to the POS with no POS category assigned. 3. Add that product to an order and send it. 4. Remove the product from the order and proceed to payment. 5. → IndexError: tuple index out of range opw-6089731 Forward-Port-Of: odoo/enterprise#112757
This update enhances error tracking for invoice processing within the account_peppol module. By including full error tracebacks in logs, developers can quickly identify and resolve issues, leading to faster problem resolution and improved system stability.
Original PR description
This change improves error logging when receiving invoices by including the full traceback in the logs. This provides better visibility into the root cause and simplifies debugging by giving more context around the error. opw-6059877 Forward-Port-Of: odoo/odoo#256619
This update resolves an issue where tours would fail to run after making changes to views using the Studio customization tool. The fix filters out a misleading module entry, 'studio_customization,' that was incorrectly identified as an installed module. This ensures tours function correctly after view modifications.
Original PR description
Step to reproduce: - start a fresh db, install studio and pos - using studio, edit any view (add or remove a field) - run any tour Observation: - we are not able to run any tour Traceback ``` File…
Step to reproduce:
- start a fresh db, install studio and pos
- using studio, edit any view (add or remove a field)
- run any tour
Observation:
- we are not able to run any tour Traceback
```
File "/home/odoo/odoo/codebase/odoo/18.0/odoo/addons/base/models/ir_qweb.py", line 2703, in _get_lazy_bundles_from_js
for fname in glob.iglob('**/static/src/**/*.js', root_dir=modroot, recursive=True):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/glob.py", line 46, in iglob
root_dir = os.fspath(root_dir)
^^^^^^^^^^^^^^^^^^^
TypeError: expected str, bytes or os.PathLike object, not bool
```
Cause:
- `_get_lazy_bundles_from_js` fetches module path for all installed module in addons
https://github.com/odoo/odoo/blob/05d0944a7640e196db989039140ae5ddb12152ac/odoo/addons/base/models/ir_qweb.py#L2686-L2697
- in case we have a view edited, we get the `studio_customization` as installled module, which doesn't have any path in addons. i.e. False
Fix:
- filter out such pseudo-modules from the list
Note: this is not a reported issue, i stumbled across it, hence made a fix
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#257806This update resolves an issue where empty attachments during PEPPOL invoice imports could cause errors and prevent invoice creation. The fix safely falls back to default settings, ensuring invoices are created and any errors are logged, improving invoice processing reliability. The root cause of the empty attachments is currently being investigated.
Original PR description
Empty attachments could crash parsing during import, this commit falls back on default journal and move type in case of error, allowing the invoice to be created and the issue logged properly. Root cause of empty XML remains unclear, likely a 3rd party error. opw-6060739 opw-6018364
This update ensures that attachments uploaded to cloud storage retain their original file type (mimetype). Previously, the system was incorrectly guessing the file type, which could lead to issues with file display and functionality. This fix improves the reliability of cloud storage attachments.
Original PR description
When uploading an attachment to cloud storage via `_post_add_create(cloud_storage=True)`, the attachment's original `mimetype` is guessed even if we specify it. With this commit we explicitly preserve given mimetype Discovered during task-5153790
This update resolves a technical issue that was preventing the system from correctly validating software package requirements. Specifically, the system could not handle version strings with non-integer components like 'post1'. This fix ensures accurate requirement checks, improving system stability and reliability.
Original PR description
This commit fixes a crash in the parse_version() function where it doesn't support non-integer castable version parts (i.e. 5.4.2.post1).
This update fixes an issue where floors were incorrectly displayed in the restaurant's point-of-sale (POS) system. Previously, floors were loaded through indirect processes, leading to inaccurate selections. Now, the system correctly uses the configured floor IDs for each POS setup, ensuring accurate floor selection for restaurant staff.
Original PR description
Floors loaded indirectly (e.g. via recursive loading of paid orders) could appear in the floor selector even if they belonged to a different PoS config. The selector was iterating over the full in-memory model store instead of the floors explicitly assigned to the current config. opw-6025172 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where attendance records were incorrectly flagged as 'already checked-in' due to a timezone calculation error. The fix ensures accurate attendance tracking by correctly applying employee timezones when determining absence times, regardless of the database timezone.
Original PR description
### Steps to reproduce: - Have a database in timezone America/Asuncion for example - Create an employee - Create an attendance for the day before yesterday from 13h to 19h - Run the absence detection cron - An error will be raised saying the user is already checked-in on that day ### Cause: When trying to create an absence attendance we localized yesterday's midnight into UTC and then apply the employee timezone. Which cause a one-day shift when having a timezone behind UTC as at that point we try to create an attendance on the day before yesterday not yesterday ### Fix: We use the timezone of the employee to localize midnight then get this time in UTC. opw-5930309
This update ensures that new purchase orders, repairs, and stock picking batches display translated names instead of 'New' in English. This change aligns with existing Odoo logic, providing a more consistent and user-friendly experience, even before records are saved.
Original PR description
New POs, repairs, and batch pickings always showed "New" in English for the name of a new (not saved) record. We now make it match the SO logic to show up as translated so as to not confuse users (even though it will automatically change to another name once saved) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Features or functions removed from Odoo
This pull request removes a mistakenly added translation file for the website_twitter module. The file was previously corrected in another pull request, and this action ensures the codebase remains clean and consistent. This change has no impact on Odoo's functionality.
Original PR description
Wrongly added in https://github.com/odoo/odoo/pull/172269. Module was deleted in https://github.com/odoo/odoo/pull/172755. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr