Thursday, December 11, 2025
8 changes · 17.0
Resolved issues and error corrections
This update fixes an issue where very long text inputs in the Web Studio application would overflow and cause display problems. Now, long text fields are automatically truncated, ensuring a clean and usable experience for users. This prevents data loss and improves the overall stability of the Web Studio interface.
Original PR description
**Before this commit:** Long input text overflowed and was not truncated. **After this commit:** Long input text is now properly truncated, preventing overflow. task-5240113
This update resolves an issue where a previous odoo version would crash when a Many2one field contained an empty record. The change ensures the system gracefully handles empty records by returning 'False' instead of raising an error, preventing service disruptions.
Original PR description
In OCA we develop a module that assigns dynamic attributes to a product. In odoo 16.0 and prevous 14.0 the module is running smoothly with odoo. In this version convert_to_read method is introduced…
In OCA we develop a module that assigns dynamic attributes to a product. In odoo 16.0 and prevous 14.0 the module is running smoothly with odoo. In this version convert_to_read method is introduced and it deals with use_display_name and value, it assumes value record is always has a value Aluthough use_display_name can be False or value record can be empty. In that case I retun False instead of causing the server to raise error because it assumes value has id and it is just an empty recordset.
Description of the issue/feature this PR addresses:
Current behavior before PR:
========================================================================================
2025-02-19 20:15:58,724 46176 ERROR pim_17_1 odoo.http: Exception during request handling.
Traceback (most recent call last):
File "/home/kobros/Workspace/odoo17/odoo/odoo/http.py", line 2206, in __call__
response = request._serve_db()
^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/http.py", line 1782, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/service/model.py", line 133, in retrying
result = func()
^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/http.py", line 1809, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/http.py", line 2013, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/addons/base/models/ir_http.py", line 221, in _dispatch
result = endpoint(**request.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/http.py", line 757, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/addons/web/controllers/dataset.py", line 24, in call_kw
return self._call_kw(model, method, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/addons/web/controllers/dataset.py", line 20, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/api.py", line 468, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/api.py", line 453, in _call_kw_multi
result = method(recs, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/addons/web/models/models.py", line 86, in web_read
values_list: List[Dict] = self.read(fields_to_read, load=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/models.py", line 3557, in read
return self._read_format(fnames=fields, load=load)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/models.py", line 3770, in _read_format
vals[name] = convert(record[name], record, use_display_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kobros/Workspace/odoo17/odoo/odoo/fields.py", line 3110, in convert_to_read
return value.id
^^^^^^^^
Attri
buteError: 'mail.thread' object has no attribute 'id'
========================================================================================
Desired behavior after PR is merged:
The method can just retun False if no condition is met.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update ensures that Thai VAT numbers entered into the system are valid. The system now checks that all Thai VAT numbers consist of exactly 13 digits, aligning with Thai regulations. This improves data accuracy and prevents incorrect VAT number entries.
Original PR description
**Description of the issue/feature this PR addresses:** This PR adds a validation method `check_vat_th()` to verify Thai VAT numbers. In Thailand, a VAT number must consist of exactly 13 numeric digits. **Desired behavior after PR is merged:** For partners with country set to Thailand, the system will only allow VAT numbers that are exactly 13 digits long. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a bug that caused invoices with journal items lacking labels to trigger error tracebacks. The fix ensures that all labels are treated as strings, defaulting to an empty string if a label isn't present, preventing the error and improving invoice validation stability. This change impacts the stock_account module.
Original PR description
Creating an invoice containing journal items without a label triggers a traceback because the code unconditionally slices the 'name' field (line.name[:64]) without ensuring it is not False. Since 'name' is not a required field on account.move.line, it must be safely handled.
This commit ensures that the label is always a string by falling back to an empty string when the value is missing.
Steps to reproduce the bug:
- Create a storable product
- Create an invoice:
- Add the product to the invoice
- Set any customer
- Go to the journal items tab
- Remove the label of the journal item corresponding to the product
- Try to validate the invoice
- A traceback is raised
opw-5360602This update corrects a potential issue where an update failure could cause the IoT Box to incorrectly believe it's up-to-date. By retaining the original branch name during updates, the system avoids this misinterpretation and ensures proper functionality after a failed update process. This prevents unnecessary restarts and potential disruptions.
Original PR description
We used to renamed the Odoo branch name before running the update script in order to get the target branch name easily inside it. Issue is if for any reason the update fails, when the IoT Box will restart, the branch name will be the target one, so it will assume it's up to date. Task: 5407662
This update resolves an issue where users could create invalid fields within Odoo's report editor, leading to errors when previewing reports. The fix prevents the generation of these invalid fields, ensuring reports render correctly and consistently. This improves the reliability of report creation and prevents disruptions to users.
Original PR description
cf commit
A minor bug in the Odoo code's JavaScript transpilation process was causing a slight misalignment in the debugger output when using unnamed imports. This update corrects the process to preserve leading whitespace during the conversion, ensuring consistent code formatting and debugging experience. This fix ensures the development environment remains accurate and reliable.
Original PR description
Steps to reproduce
==================
- Create a js file with a blank line followed by an unnamed import
```js
import { mailModels } from "@mail/../tests/mail_test_helpers";
import "@account_accountant/components/bank_reconciliation/list_view/list_view_many2one_multi_edit";
import "@account_accountant/components/bank_reconciliation/list_view/list";
debugger;
```
- Open the devtools
=> The debugger will be off by one line
Cause of the issue
==================
When remplacing unnamed imports by a require statement, the leading whitespace was not preserved.
Solution
========
We add back the captured space. This is done for every other replacement.This update fixes an issue where HR users were receiving reminder emails even when they didn't have timesheet access or hadn't submitted timesheets recently. The change filters out time-off and holiday entries, ensuring reminders are only sent for active timesheets requiring user input. This improves email efficiency and reduces potential user annoyance.
Original PR description
**Steps to reproduce:** - Install timesheet_grid_holidays - Create a user with no timesheet access - Create a leave and approve it as a manager - Set up employee reminders in timesheet settings - Run the timesheet reminder scheduled action **Issue:** HR users without timesheet app access or who haven’t submitted timesheets in the past 3 months were still receiving reminder emails. **Cause:** When a time-off is approved or a public holiday is recorded, it generates timesheet entries, which causes reminder emails to be sent incorrectly. **Fix:** Filter out time-off and public holiday entries when sending reminders. Now, reminders are only sent for actual timesheets that require user input. task-5085790