Tuesday, May 5, 2026
9 changes · 17.0
Resolved issues and error corrections
This update clarifies the purpose of the invoice_mail_template_id field in the subscription module. The help text has been revised to specifically state that it applies only to recurring renewal invoices, reducing potential confusion. This change ensures users understand when and how the email template is utilized.
Original PR description
The existing help text of the invoice_mail_template_id field was unclear andcould lead to confusion about when the email template is used. After discussion with the Product Owner, the help text has been updated to better clarify that it applies only to recurring renewal invoice emails. **opw-5993315**
This update fixes a bug that prevented users from accessing timesheet data when certain access rights were configured. The change ensures that access controls are correctly applied to analytic lines, avoiding errors related to manufacturing orders. This improves the reliability of timesheet reporting for all users.
Original PR description
Steps to reproduce the bug:
- give only the following access rights to Marc demo:
- Timesheets, mrp, inventory: User
- create a storable product “P1”
- create an analytic distribution model:
- product: P1
- analytic distribution: Administrative
- create a manufacturing order to produce 10 units of P1
- confirm the MO
- set qty producing to 5 units
- save
Problem:
An access error is triggered:
“
Sorry, Marc Demo (id=6) doesn't have 'write' access to:
- Analytic Line (account.analytic.line) “
Solution:
The account analytic line is not linked to a project or timesheet, so we should not check this access right.
opw-4534971This update resolves an issue preventing free FSM services with prepaid invoicing from appearing on invoices. The change adjusts a calculation to ensure these services are correctly reflected when creating invoices, aligning with expected functionality. This ensures accurate billing for service-based contracts.
Original PR description
Changed _compute_qty_to_invoice in industry_fsm_sale, SaleOrderLine to no longer set qty_to_invoice to 0 for free services with prepaid invoicing. Previous changes seem intended for goods. Steps to reproduce: - Create service product with 0 price, prepaid invoice policy, creates FSM task - Create/Confirm sales order with created product - Attempt to create invoice, get 0 quantity to invoice error Current Behavior: Free services linked to FSM tasks do not appear on invoices due to compute 0 qty_to_invoice Expected Behavior: Prepaid Invoice Services linked to FSM tasks appear on invoices. Other invoice policies can be invoiced through the generated sales order lines (timesheets, delivered quantity, etc.) opw-6047992
This update corrects a bug in the Discuss feature that prevented partners with matching email prefixes from being correctly prioritized during sorting. The fix ensures that search results are displayed accurately, improving the user experience when searching for partners.
Original PR description
In Discuss, the function used to sort partners prioritizes those whose email addresses start with the search terms. However, due to an error in the programming of the corresponding condition, this check could never be true. This commit adjusts the condition so that it behaves as expected.
This update resolves an issue that occurred when users attempted to merge mailing lists within Odoo. The fix corrects a misinterpretation of record IDs during the merging process, preventing a warning message and ensuring the feature functions correctly. This improves the user experience for managing mailing lists.
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-prThis update fixes a bug that prevented users with limited access rights from correctly processing partial manufacturing orders. The issue stemmed from incorrect access permissions related to analytic lines, specifically during the production of goods. This change ensures accurate accounting and reporting for partial production runs.
Original PR description
Steps to reproduce the bug:
- give only the following access rights to Marc demo:
- Timesheets, mrp, inventory: User
- create a storable product “P1”
- create an analytic distribution model:
- product: P1
- analytic distribution: Administrative
- create a manufacturing order to produce 10 units of P1
- confirm the MO
- set qty producing to 5 units
- save
Problem:
An access error is triggered:
“
Sorry, Marc Demo (id=6) doesn't have 'write' access to:
- Analytic Line (account.analytic.line) “
opw-4534971This update fixes an issue where the stock forecast incorrectly indicated products were out of stock, even when sufficient inventory was available. The change ensures accurate forecasting calculations, preventing potential overstocking or understocking situations. This improves inventory management accuracy.
Original PR description
Steps to reproduce the bug:
- Create a storable product “P1”
- Set the on-hand quantity to 2 units
- Create a delivery with 2 units of P1
Problem:
The forecast field is displayed in red, indicating that the product is out of stock, even though sufficient stock is available.
opw-5159142This update resolves a bug where test emails sent through the Email Marketing app would leave a related attachment visible in contact records' chatter. The fix ensures that test messages are properly removed from the chatter, preventing clutter and ensuring accurate record information. This improves the user experience when testing email campaigns.
Original PR description
**Steps to reproduce:** - Go to Email Marketing app - Create a mailing campaign - Set its recipients to Contact - Upload a file in Settings > Attach a file - Click on the test button to send a test mail to any mail - Go to the first contact record - Related attachment appears in the chatter **Issue:** Before 18.2, messages created for testing were ignored by the Chatter as they were empty (and not unlinked). But if an attachment was provided, it was linked to the test message and not deleted afterwards (which means it shows up in the record chatter). **Fix:** Ensure the related messages are unlinked at the same time as the test mail in `send_mail_test` by setting `is_notification` to False to trigger the `unlink` logic and remove the related attachments at the same time. backport of: https://github.com/odoo/odoo/commit/526b3d73886558315f2435714b2ed82fec313e78 opw-6168632
This update corrects a flaw in how Odoo retrieves XML IDs from ir.model.data records. Previously, the system didn't properly update its data after changes, leading to outdated information being returned. This fix ensures that all data is refreshed, guaranteeing accurate results for XML ID lookups.
Original PR description
Steps to Reproduce: - write on ir.model.data to modify noupdate. - _lookup_xmlids still returns the old noupdate value. Example: In [1]: imd = self.env['ir.model.data'] In [2]: xml_id =…
Steps to Reproduce:
- write on ir.model.data to modify noupdate.
- _lookup_xmlids still returns the old noupdate value.
Example:
In [1]: imd = self.env['ir.model.data']
In [2]: xml_id = self.env['ir.model.data'].search([], limit=1)
In [3]: imd._lookup_xmlids([xml_id.complete_name], self.env[xml_id.model])
Out[3]: [(18603, 'auth_signup', 'action_send_password_reset_instructions', 'ir.actions.server', 149, False, 149)]
In [4]: xml_id.write({'noupdate': not xml_id.noupdate})
Out[4]: True
In [5]: imd._lookup_xmlids([xml_id.complete_name], self.env[xml_id.model])
Out[5]: [(18603, 'auth_signup', 'action_send_password_reset_instructions', 'ir.actions.server', 149, False, 149)]
In [6]: imd.flush_model()
In [7]: imd._lookup_xmlids([xml_id.complete_name], self.env[xml_id.model])
Out[7]: [(18603, 'auth_signup', 'action_send_password_reset_instructions', 'ir.actions.server', 149, True, 149)]
Issue:
- _lookup_xmlids is returning values from ir.model.data executing an SQL query w/o flushing.
Fix:
- Add flushing in _lookup_xmlids.