Wednesday, October 29, 2025
12 changes · 18.0
Resolved issues and error corrections
Repair order users can no longer enter a serial number on a new repair line before that line has been saved. This prevents the serial number from disappearing when the repair order is saved, reducing data entry mistakes and rework.
Original PR description
When creating a repair order, if you add a line and assign a serial number before saving the line, the serial number is removed when saving. Steps to reproduce: - Create a repair order and save it. - Add a repair line with a product tracked by serial number. - Without saving the repair order, add a serial number on the line. - Save the repair order. - You will notice that the serial number is no longer assigned to the repair line. This PR fixes the issue by making the serial number field read-only until the repair line is saved. opw-5156267 Forward-Port-Of: odoo/odoo#232973
A test in the Project Timesheet Holidays module now uses the correct user record when checking time off that includes a public holiday. This helps keep automated validation accurate and reduces the risk of future regressions in timesheet and holiday handling.
Original PR description
In the 'test_timesheet_time_off_including_public_holiday' test case, 'employee' was mistakenly passed to 'with_user'. This commit replaces 'employee' with 'user' for consistency. task-4809916 Forward-Port-Of: odoo/odoo#233366
This fix restores a missing border on selected category items in the search panel. It improves visual clarity so users can more easily see which category is currently active.
Original PR description
This commit introduces a missing border on active category items within the search panel. task-5121027 Requires: - https://github.com/odoo/enterprise/pull/95900 | Before | After | |--------|--------| | <img width="587" height="654" alt="Capture d’écran 2025-10-28 à 10 28 49" src="https://github.com/user-attachments/assets/4c9f9292-9a18-4470-863d-35b34a3fade6" /> | <img width="494" height="645" alt="Capture d’écran 2025-10-28 à 10 28 31" src="https://github.com/user-attachments/assets/d7994472-b7ae-4518-966a-d42def9e35d5" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The mobile search panel now uses colors that better fit dark mode. This improves readability and visual consistency for users working in dark mode on smaller screens.
Original PR description
This commit adapts colors of search_panel for mobile in dark mode. task-5121027 Requires: - https://github.com/odoo/odoo/pull/233193 | Before | After | |--------|------------| | <img width="904" height="1022" alt="image" src="https://github.com/user-attachments/assets/9d2dd1d9-4d23-4c55-8e2d-2cb978db5f39" /> | <img width="360" height="640" alt="Capture d’écran 2025-10-28 à 10 37 46" src="https://github.com/user-attachments/assets/2b030e05-d0ad-46d9-ae7c-10593de1bb36" /> |
Generating a pricelist report no longer crashes when no pricelists have been configured. Instead, users are shown a clear message asking them to create at least one pricelist first, helping avoid confusion and support requests.
Original PR description
Description of the issue/feature this PR addresses: When generating a pricelist report, Odoo crashes if there are no configured pricelists. Current behavior before PR: The system raises an unhandled error when attempting to generate a report without any pricelist record. Desired behavior after PR is merged: If no pricelist exists, a user-friendly UserError message is shown instructing to configure at least one pricelist before generating the report. This is a backport of PR #233429 (merged in 19.0) to 18.0. Issue : https://github.com/odoo/odoo/issues/233393 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change fixes an unstable automated test in the manufacturing app where timing differences could cause inconsistent results. It helps keep quality checks reliable without changing business workflows or user-facing behavior.
Original PR description
### Issue: The test `test_mrp_backorder_operations` behaves non-deterministically. It may fail at this assertion:…
### Issue: The test `test_mrp_backorder_operations` behaves non-deterministically. It may fail at this assertion: https://github.com/odoo/odoo/blob/6e37542b53f9c9ec1baf8d58b1eeca376252186f/addons/mrp/tests/test_backorder.py#L986-L989 Because the `duration` of done workorder can vary. ### Cause: The delta time between `button_start()` and `button_finish()` https://github.com/odoo/odoo/blob/6e37542b53f9c9ec1baf8d58b1eeca376252186f/addons/mrp/tests/test_backorder.py#L983-L985 `button_finish()` triggers `Productivity._close()` https://github.com/odoo/odoo/blob/6e37542b53f9c9ec1baf8d58b1eeca376252186f/addons/mrp/models/mrp_workcenter.py#L572-L576 Which sets `Productivity.duration` to 0 if delta time is zero. Consequently, `workorder.duration` also becomes zero. When `bo_2.button_mark_done()` is called, the duration is set to `duration_expected` (240 in this test), which the assertion only can pass in that case. If delta time isn't zero, then duration will also be non-zero. So it will not set to `duration_expected`. As a result the assertion will fail. runbot-233247
Fixed an issue where course slides with a "|" character in their name could cause the browser tab title to show the wrong website name after switching slides. This keeps course navigation labels consistent and avoids confusing learners.
Original PR description
How to reproduce: - Go to a course with a slide containing "|" in its name. (e.g. Basics of Gardening) - Change slide to this special named slide. - Change back to another slide. - The browser title contains the string part after the "|" instead of the website name. This commit now handles slides with name containing the "|" character. Task-5152858 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230489
Calendar events created across multiple days in week view now show the correct start and end times on each day segment. This prevents confusing 12pm or midnight times from appearing, making scheduling clearer for users.
Original PR description
When creating an event in week view spanning over multiple days, all parts of the event display 12pm as end date (except the last one) and 00am as the start date (except the first one). This fix allow calendar views to display the correct hour in week view when the event spans multiple days. task-4700158
Inactive guests who have not been online in the last 12 hours will no longer receive call notifications. This prevents outdated or disconnected live chat participants from being disturbed and keeps call alerts focused on active users.
Original PR description
With this commit, guests who haven't been online in the last 12 hours will not be notified of a call starting. task-5136330 backport of https://github.com/odoo/odoo/pull/230337
Managers using the attendance approval view will now see attendance records even when they have zero overtime. This ensures they can still review, manually adjust, or approve those entries instead of having them hidden by the filter.
Original PR description
Currently attendances having 0 overtime are hidden by the filter "To approve", which is weird because managers might want to manually edit them, or approve them. task-5189190
This fixes an issue where users could not save changes to an expense category cost when vendor taxes from multiple companies were configured. It helps multi-company setups manage expense categories without being blocked by an incorrect validation error.
Original PR description
Steps to reproduce: - Create 2 companies - Create a tax one each - Create an expense category - Set the 2 taxes as Vendor Taxes - Select only one of the companies - Change the cost of the expense category - Try saving --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Changing a customer's email address between uppercase and lowercase no longer triggers signature request emails to be sent again. This avoids duplicate messages, reduces confusion for recipients, and keeps signing communication cleaner.
Original PR description
Before this commit, when changing the partner email to uppercase or lowercase, it would resend sign requests emails for each previously sent signed request to that email. After this commit, we don't resend anymore the sign requests emails after a case sensitive email change of a partner. task-4844230