Saturday, June 28, 2025
12 changes · saas-18.3
Enhancements to existing features
The website generator now provides clearer translated messages for specific failure cases, including timeouts, redirection issues, and duplicate requests. This helps users and support teams better understand what went wrong and respond more quickly.
Original PR description
Added new translated error messages: - "error_navigation_timeout" - "error_url_redirection" - "error_duplicated_request"
The VoIP header now displays the user's Do Not Disturb status text. This makes availability clearer at a glance and helps users understand their current call interruption setting without opening additional controls.
Original PR description
Show the Do Not Disturb state text on the voip header Task-4891947
Resolved issues and error corrections
This fixes an issue where a child company with its own VAT number did not show the expected tax return records, even though it should be treated as the main company for that VAT branch. Businesses using multi-company setups can now access the correct VAT returns for subsidiaries without missing filing information.
Original PR description
Steps to reproduce: - Create a company (for example a Belgian one) and set the vat - Create a child company with same country, but different vat - set the account opening date for both companies - open the tax returns page with the child company -> the child company should have VAT returns associated, because it's the main company for the vat branch, but it doesn't contain anything
Miscellaneous changes
Because recordsets are immutable, `-=` is in O(n), and doing it in a loop is therefore O(n²). Forward-Port-Of: odoo/enterprise#88704 Forward-Port-Of: odoo/enterprise#88261
Original PR description
Because recordsets are immutable, `-=` is in O(n), and doing it in a loop is therefore O(n²). Forward-Port-Of: odoo/enterprise#88704 Forward-Port-Of: odoo/enterprise#88261
The AI feature now allows additional OpenAI GPT models beyond GPT-4. This gives businesses the option to use less expensive models such as GPT-4o and GPT-4.1 while keeping AI capabilities available.
Original PR description
Allows the use of less expensive models. GPT-4 is much more expensive than 4o and 4.1.
Refreshing or opening a shared Documents link now restores the intended document selection instead of leaving users unsure which file was referenced. This makes document links reliable again, especially in folders containing multiple files.
Original PR description
Reproduce: 1. Select a document so that its token is now part of the URL 2. Refresh the page 3. The document is not selected as it should This is problematic because if you are given a link to access a document in a folder with any siblings, you have no way to know which one the link pointed to. Technically, since 18.3, records are no longer found in `onMounted`. Note that due to another (older, independent, and less critical) bug, non-previewable records are not focused. Task-4873715
VoIP configuration now handles cases where the default phone call activity type has been removed. This prevents users from seeing an error when refreshing or loading the system after that activity type is missing.
Original PR description
Currently, an error occurs when the system initializes the voip configuration for the currently logged-in internal user. Steps to Reproduce: - Install the `voip` module. - Delete the activity type where the `Action` is `'Phonecall'`, and then refresh the page. `IndexError: tuple index out of range.` This error occurs when the system initializes the voip configuration and no phonecall activity type exists. The system attempts to search for activity types with the 'phonecall' category, which returns an empty recordset. Then it tries to access the first record of this empty recordset[1], which raises an error. [1] https://github.com/odoo/enterprise/blob/2896974e9eda61bfe5e1d67423dc56f6ab17b2af/voip/models/res_users.py#L128 This commit ensures that if activity type with the 'phonecall' category is present, it store the activity type id, otherwise, it stores False as the activity type id. sentry-6689050392
opw-4816130 Forward-Port-Of: odoo/enterprise#88744
Original PR description
opw-4816130 Forward-Port-Of: odoo/enterprise#88744
Add the computed current year profit/loss to the balance sheet to have the full picture as expected Translation files were changed based on Odoo Export, so I guess the diff is ok as it will anyway appear with the next code change if created from the system. Info: @wt-io-it Forward-Port-Of: odoo/enterprise#86823 Forward-Port-Of: odoo/enterprise#83875
Original PR description
Add the computed current year profit/loss to the balance sheet to have the full picture as expected Translation files were changed based on Odoo Export, so I guess the diff is ok as it will anyway appear with the next code change if created from the system. Info: @wt-io-it Forward-Port-Of: odoo/enterprise#86823 Forward-Port-Of: odoo/enterprise#83875
Prior to this commit, the `_sla_generate_status_values` method in the `helpdesk.ticket` model was using a shared list for storing SLAs per ticket. This could lead to unexpected behavior when multiple tickets are processed simultaneously, as they would share the same list instance. We then removed that logic and replaced it by directly excluding the SLAs of the ticket status having a reached deadline, preventing unnecessary recomputation. Forward-Port-Of: odoo/enterprise#88563 Forward-Port-Of: o
Original PR description
Prior to this commit, the `_sla_generate_status_values` method in the `helpdesk.ticket` model was using a shared list for storing SLAs per ticket. This could lead to unexpected behavior when multiple tickets are processed simultaneously, as they would share the same list instance. We then removed that logic and replaced it by directly excluding the SLAs of the ticket status having a reached deadline, preventing unnecessary recomputation. Forward-Port-Of: odoo/enterprise#88563 Forward-Port-Of: odoo/enterprise#88341
With this PR: https://github.com/odoo/enterprise/commit/d0659e4bea162d52604910e86a93c38bc3769bf1 The field `totals_below_sections` became uncheckable. The cause was a missing readonly=False on the field task-4894698 Forward-Port-Of: odoo/enterprise#88491
Original PR description
With this PR: https://github.com/odoo/enterprise/commit/d0659e4bea162d52604910e86a93c38bc3769bf1 The field `totals_below_sections` became uncheckable. The cause was a missing readonly=False on the field task-4894698 Forward-Port-Of: odoo/enterprise#88491
Steps to reproduce: - Set language to RTL Orientation - Go to Accounting > Reporting > Aged Payable - Add multiple columns to report - Print as PDF Issue: When enough columns have been added to the report, the report will overflow the right side of the page Cause: Wkhtmltopdf does not correctly shrink the table if the direction is specified on the body of the document opw-4746361 Forward-Port-Of: odoo/enterprise#87520
Original PR description
Steps to reproduce: - Set language to RTL Orientation - Go to Accounting > Reporting > Aged Payable - Add multiple columns to report - Print as PDF Issue: When enough columns have been added to the report, the report will overflow the right side of the page Cause: Wkhtmltopdf does not correctly shrink the table if the direction is specified on the body of the document opw-4746361 Forward-Port-Of: odoo/enterprise#87520