Friday, November 28, 2025
6 changes · 17.0
Resolved issues and error corrections
This update resolves an issue where freezing spreadsheets with empty data rows incorrectly reported data as text. The change ensures that empty strings are handled correctly when freezing, preventing false positive results in data analysis. This improves the reliability of spreadsheet exports for business reporting.
Original PR description
Steps to reproduce: - insert a list - expand the list beyond the number of records in order to have ODOO.LIST with no result - add =ISTEXT( <a reference to an empty ODOO.LIST> ) -> the result is TRUE - Freeze and share the spreadsheet => the result of ISTEXT is FALSE in the frozen version task-5360561 opw-5359100 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a previous issue where website theme previews were always displayed in English, regardless of the user's selected language. Now, theme previews automatically translate to the user's preferred language, improving the website creation experience and ensuring consistency for all users.
Original PR description
Before this change, when a user is creating a website, the three theme previews that appear at the last step are always in english, even if the user installed another language. Steps to reproduce: - Go into the user preferences and install any other language - Switch to that language - Install the website app and follow the creation steps => When you reach the theme preview step, the themes will be in english even if another language was selected After the change, the theme previews get translated and appear in the language chosen by the user. design-themes PR: https://github.com/odoo/design-themes/pull/1100 task-3415840
This update resolves an issue where MRP users couldn't assign serial numbers to work orders due to access restrictions on analytic accounts. The fix ensures that the system correctly handles analytic line creation using sudo(), allowing authorized users to complete the validation process without errors.
Original PR description
Steps to reproduce: - Create a storable product with the following BoM: - Tracking: Serial number - Component “C1”: - Sales price: $10 - Cost: $20 - Operation: OP1 (60 min) - Add any analytic…
Steps to reproduce:
- Create a storable product with the following BoM:
- Tracking: Serial number
- Component “C1”:
- Sales price: $10
- Cost: $20
- Operation: OP1 (60 min)
- Add any analytic distribution
- Give the following access rights to Marc Demo:
- Manufacturing: User
- Timesheets: User
- Log in as Marc Demo
- Confirm the MO
- Start the work order
- Try to assign a new serial number using the "+" button
Problem:
```An access error is raised:
Uh-oh! Looks like you have stumbled upon some top-secret records.
Sorry, Marc Demo (id=6) doesn't have 'write' access to:
Analytic Line (account.analytic.line)
```
Since the user has no access to analytic accounts, calling
`_prepare_analytic_lines()` attempts to modify an existing analytic line
amount, which triggers the access error.
Solution:
Because analytic lines are created using `sudo()`, we also need to
call `_prepare_analytic_lines()` with `sudo()` to avoid write-access
violations.
opw-5258044This fix resolves an access error that prevented MRP users from correctly validating manufacturing orders (MOs) linked to project accounts. The issue stemmed from a lack of write access to analytic lines, triggering an error when the system attempted to update them. By using sudo() to manage the analytic line creation, the fix now allows authorized users to complete the validation process.
Original PR description
Steps to reproduce: - Create a storable product with the following BoM: - Tracking: Serial number - Component “C1”: - Sales price: $10 - Cost: $20 - Operation: OP1 (60 min) - Add any analytic…
Steps to reproduce:
- Create a storable product with the following BoM:
- Tracking: Serial number
- Component “C1”:
- Sales price: $10
- Cost: $20
- Operation: OP1 (60 min)
- Add any analytic distribution
- Give the following access rights to Marc Demo:
- Manufacturing: User
- Timesheets: User
- Log in as Marc Demo
- Confirm the MO
- Start the work order
- Try to assign a new serial number using the "+" button
Problem:
```An access error is raised:
Uh-oh! Looks like you have stumbled upon some top-secret records.
Sorry, Marc Demo (id=6) doesn't have 'write' access to:
Analytic Line (account.analytic.line)
```
Since the user has no access to analytic accounts, calling
`_prepare_analytic_lines()` attempts to modify an existing analytic line
amount, which triggers the access error.
Solution:
Because analytic lines are created using `sudo()`, we also need to
call `_prepare_analytic_lines()` with `sudo()` to avoid write-access
violations.
opw-5258044This update resolves a test failure related to user switching in the MRP work order module. The fix ensures the test waits for updated shop floor records to appear before checking their visibility, improving overall test reliability. This prevents intermittent test failures caused by timing issues.
Original PR description
The test `test_shop_floor_my_wo_filter_with_pin_user` sometimes fails on these steps:…
The test `test_shop_floor_my_wo_filter_with_pin_user` sometimes fails on these steps: https://github.com/odoo/enterprise/blob/422ac3d5b10c44233321010b9ecb8e37735b3ea3/mrp_workorder/static/tests/tours/tour_shopfloor.js#L177-L190 https://github.com/odoo/enterprise/blob/422ac3d5b10c44233321010b9ecb8e37735b3ea3/mrp_workorder/static/tests/tours/tour_shopfloor.js#L196-L206 https://github.com/odoo/enterprise/blob/422ac3d5b10c44233321010b9ecb8e37735b3ea3/mrp_workorder/static/tests/tours/tour_shopfloor.js#L212-L221 This happends since changing the user requires some time to display the related shopfloor records, but the steps check the number of visible records as soon as it has switched rather than when it is sure that the records are displayed. #### Fix: Since switching employees will first empty the recordset and later display the related records, we can split the steps in two. We first check that we switched users, then we check the existence of a record that is not present for the previous user, and only then perform the related checks. #### runbot-226734
This update resolves an issue preventing the 'fuel_type' selection field in the HR contract model from being properly translated. By directly using the variable for options, this change ensures all text within the field can be localized, improving the system's internationalization capabilities.
Original PR description
The selection field `fuel_type` in the `hr.contract` model was not properly translatable, because it used a function yielding static strings for the options. This commit changes the field to use the variable directly, allowing them to be translated.