Monday, September 22, 2025
13 changes · 18.0
Resolved issues and error corrections
This fix prevents an error that could occur when editing replenishment rules linked to confirmed manufacturing orders. Users can update min/max replenishment values without the page crashing in this specific manufacturing planning scenario.
Original PR description
When modifying fields in a replenishment rule with an associated Manufacturing Order (MO) in a confirmed state and a lead_timedate between date_start and date_finished, the orderpoint.id sometimes…
When modifying fields in a replenishment rule with an associated Manufacturing
Order (MO) in a confirmed state and a lead_timedate between
date_start and date_finished, the orderpoint.id
sometimes contained <NewId>. This resulted in a KeyError when attempting to
index res[orderpoint.id] in _quantity_in_progress.
Steps to reproduce:
Install MRP
Go to Inventory > Operations > Replenishment
1. Click new > select product `[[D_0045_GR] Stool (Grey)]` and set min and max as 1
2. Press 'Order' button of selected product
3. Open Bill of material of product `[D_0045] Stool`
4. Go to the Miscellaneous Page and make Manuf. Lead Time it 10 days and save it.
5. Open manufacturing order of product `[[D_0045_GR] Stool (Grey)]`
6. Select Scheduled Date Field and put it 2 days into the future if date is 2
future date should be 4.
7. Go back to Inventory App Operations>Replenishment.
8. Remove default filters To Reorder and Not Snoozed.
9. Stool Grey should now be visible make the `Min = 2` and then only click on Max
Value (Not anywhere else, do not save it).
KeyError: 8
Solution:
1.Check if the orderpoint exist in res
2.If the key does not exist we initialize it.
3.This ensures there are no key errors.
Sentry - 6135193468This fixes an error that could occur when the appointment calendar processed multiple events at the same time. It helps ensure video call redirection links are generated reliably for bookings, reducing failed appointment flows.
Original PR description
In the event of calendar.event() having multiple id's such as `calendar.event(1,2)` within `_compute_videocall_redirection` it is possible that the `models.py` returns the following: `ValueError: Expected singleton or no record: calendar.event(2, 1)` Solution: Replacing 'self.get_base_url()' and 'self.access_token' with 'event.get_base_url' and 'event.access_token' allowing only single event record instead of multiple at once. Sentry - 6491567020
This fix prevents an error when preparing a manufacturing order after the component separator is left blank during batch production with serial-numbered products. Users can continue the preparation process without being interrupted by a system traceback.
Original PR description
When user unsets the Component separator in Batch Production of serial number,
A traceback will appear.
Steps to reproduce the error:
- Create two Product A and B
- Tracked by Unique Serial Number
- Create a MO > Product: Product A > Quantity: 2
- Components > Product: Product B > To Consume: 2
- Confirm > Produce All
- Unset Component separator > Prepare MO
Traceback:
```
File "/home/odoo/src/odoo/addons/mrp/wizard/mrp_batch_produce.py", line 52, in _compute_production_text_help
text += wizard.component_separator + move_raw.product_id.display_name
TypeError: unsupported operand type(s) for +: 'bool' and 'str'
```
https://github.com/odoo/odoo/blob/47992d61a1ffa96287099be7dee8f9f244d835d4/addons/mrp/wizard/mrp_batch_produce.py#L52
Here, When ``component_separator`` is False.
It will lead to the above traceback.
sentry-6625936682
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prCreating a new user no longer fails if a specific mail notification setting has been removed or renamed. The system now checks whether the setting exists before applying it, helping administrators avoid an unexpected error during user setup.
Original PR description
When the reference to external ID `mail.group_mail_notification_type_inbox` is not found while creating a user a value error is thrown. **Steps to reproduce:** * Install the module mail. * Delete/rename id `mail.group_mail_notification_type_inbox` from External Identifiers. * Create a new User and save. `Value Error:External ID not found in the system: mail.group_mail_notification_type_inbox` **Solution:** * Make `raise_if_not_found=False` and add an if statement to check for `inbox_group` and only proceed if it exists. **Sentry-6564294068** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users now receive a clear validation message when an asset depreciation period is set beyond supported date limits. This prevents confusing system errors during asset confirmation and helps users correct unrealistic depreciation settings.
Original PR description
Currently, creating an asset with an excessively long depreciation duration (e.g., 50,000 years) causes an error during depreciation computation. **Steps to Reproduce:** 1. Go to Accounting > Assets & Liabilities > Assets. 2. Create new assets with a duration of 50,000 years for depreciation method. 3. Click on the "Confirm/Compute Depreciation" button. **Error:** `ValueError - year 502025 is out of range` **Cause:** The computation of the last depreciation date relies on `relativedelta`. When the duration is too long, it produces a year value far beyond python’s supported datetime range, which raises an error during computation. **Fix:** This commit wraps the computation in a `try/except` block and raises a user-friendly Validation Error instead of a traceback. sentry-6832993432
Timesheet reports printed from a sales order now show the related helpdesk ticket name when time was logged on a ticket. This makes billed support work easier to identify and avoids reports showing only the helpdesk team name.
Original PR description
to reproduce: ============= 1. make helpdesk team billable and records timesheets 2. create a helpdesk ticket and link it to a sale order 3. log timesheets on the ticket 4. print the timesheet report from the sale order -> the task column will contain only the helpdesk team name, while it should contain "helpdesk team / ticket name" Problem: ======== on the report template, the task name is fetched from line.task_id only, but helpdesk timesheets are linked to a ticket through line.helpdesk_ticket_id Solution: ========= use conidtionally line.task_id or line.helpdesk_ticket_id to display the task name opw-5002650 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents the Project view from failing when two independent modules use the same ordering value for project statistic buttons. It makes the view more reliable for businesses using multiple project-related customizations or add-ons.
Original PR description
Description of the issue/feature this PR addresses: If a sequence in function _get_stat_buttons in project.project is repeated, the view view fail because we are using the sequence as key Current behavior before PR: If we repeat a sequence in two independent modules, the view fails. Desired behavior after PR is merged: The view works as expected --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Planning now shows progress for flexible employee shifts based only on the hours that fall within the selected week. This prevents shifts spanning multiple weeks from making the current week look over-allocated.
Original PR description
### Steps to reproduce: - Install Planning app - Create a shift for a flexible employee that starts on Friday and end on the following Tuesday for example - Go to the gantt view for the week that the shift should start at - Notice the progress bar is showing the whole allocated hours not just the week's hours ### Cause: This mainly happening because when the employee is flexible we are getting the value by multiplying the hours_per_day of his schedule by the period.days and the period is the shift period ### Fix: We use the interval we are just checking as the period now so if the shift is extended to the next week we are just going to use the end of the week as the interval end not the shift's end_datetime opw-5022800
This fix ensures payment file details are passed correctly when other payment-related customizations rely on them. It reduces the risk of errors in Swedish ISO 20022 payment processing setups that use inherited or extended behavior.
Original PR description
Pass all arguments to super-call of _get_company_PartyIdentification32-method in account_iso20022/models/account_journal_iso20022_se.py so they can be passed correctly in other modules inheriting the method.
The newsletter subscription form editor now shows clean mailing list names when adding checkbox options. This prevents confusing numbers from appearing beside mailing list choices, making setup clearer for website editors.
Original PR description
In the "Subscribe to newsletter" form, "Add new Checkbox" on the web editor for "Subscribe to" field lists mailing list with number. This commit removes the number by fetching the records from mailing list via "name" and not "display_name". Steps to Reproduce: 1. Add a form 2. Change action to "Subscribe to Newsletter" 3. Click on "Subscribe to" field 4. Click on "Add new Checkbox" and you see the numbers on the list. opw-4730089 Forward-Port-Of: odoo/odoo#210891
This fix ensures helpdesk ticket information appears correctly in timesheet reports when relevant. It corrects a previous report update that did not target the right report element, helping users see complete task, project, and ticket context.
Original PR description
Description of the issue/feature this PR addresses: The previous commit attempted to extend the timesheet report <td> to display tickets by using position="attributes" on a new <td>. This approach does not work in Odoo reports because position="attributes" can only modify existing elements. There is no indication that the behavior of not displaying tickets was intentional, so this PR corrects that implementation. Current behavior before PR: - The previous fix did not correctly locate the existing <td> element for task/project info. Desired behavior after PR is merged: - The existing <td> is correctly found and updated to include show_ticket in its t-if.
Fixed an editor issue that could cause an error when users selected linked content and changed it between numbered and bulleted lists. This improves reliability while editing to-do items and other rich text content.
Original PR description
Steps to Reproduce: 1. Go to To-Do 2. Create a link 3. Select all using Ctrl + A 4. Switch to order list and then unordered list. 5. Traceback occurs Description of the issue: - This issue occurs because a feff (zero-width no-break space) character is present inside the link. When the link is inside a list and the list type is changed, the `removeFEFF` method is triggered. `removeFEFF` removes the feff characters, but the selection is preserved based on positions from when those feffs were still present inside the link. As a result, after the list type is changed, restoring the selection causes a traceback. Solution: - Triggered `clean_handlers` before preserving the selection. This ensures feff characters are removed from the link before the selection is preserved, preventing invalid selection offsets and avoiding the traceback. task-5095561
Timesheet reports printed from sales orders now show the related helpdesk ticket name alongside the helpdesk team. This makes billed support work easier to identify and reduces confusion for customers and staff reviewing reports.
Original PR description
to reproduce: ============= 1. make helpdesk team billable and records timesheets 2. create a helpdesk ticket and link it to a sale order 3. log timesheets on the ticket 4. print the timesheet report…
to reproduce: ============= 1. make helpdesk team billable and records timesheets 2. create a helpdesk ticket and link it to a sale order 3. log timesheets on the ticket 4. print the timesheet report **from the sale order** -> the task column will contain only the helpdesk team name, while it should contain "helpdesk team / ticket name" Problem: ======== in helpdesk_timesheet we inherit `hr_timesheet.timesheet_table` to adapt it to helpdesk tickets, but we use `show_ticket` to display the ticket name, which is only set in `hr_timesheet.report_timesheet` and `hr_timesheet.timesheet_project_task_page` but not in `sale_timesheet.timesheet_sale_page` which is the one used when printing the report from the sale order. Solution: ========= `show_ticket` should be set with value `bool(lines.helpdesk_ticket_id)` which is equivalent to `line.helpdesk_ticket_id` in the t-if condition. so we can directly use `line.helpdesk_ticket_id` and remove the `show_ticket` variable. opw-5002650