Daily updates from Odoo
Friday, April 3, 2026
13 changes · 17.0
Resolved issues and error corrections
This update optimizes the way Odoo searches for attachments related to accounting records. Previously, the search was slow, particularly with a large number of records. This change significantly speeds up the search process, resulting in faster performance and a better user experience.
Original PR description
The search method is called once per record in self to get the attachments. This is a backport of odoo/enterprise/pull/85346 Benchmark: | No AML in self | Before PR | After PR | |----------------|-----------|----------| | 80 | 100 ms | 4 ms | | 5000 | 3.3 s | 200 ms | Community PR: odoo/odoo/pull/256399 opw-5881026
This update resolves an issue where the 'cancel' button within the spreadsheet component didn't properly trigger the cancellation process. The fix ensures that clicking the cancel button now correctly initiates the cancellation flow, improving user experience and data integrity. This was a minor bug fix.
Original PR description
The `cancel` callback of the `env.askConfirmation` method was not called when the user clicked on the cancel button. task-6074948
This update resolves an issue where the LPP (Labor Pension Plan) was incorrectly applied to employee salaries when they were not covered by insurance. The fix ensures that LPP contributions are only calculated for employees with valid insurance coverage, aligning with Swiss tax regulations. This improves payroll accuracy and reduces potential tax liabilities.
This update fixes a display issue in the Danish balance sheet and profit & loss reports, ensuring that amounts are always shown, even when child lines are hidden. The changes also simplify the report format and improve Danish translations for accurate financial reporting.
Original PR description
We updated the Danish balance sheet and profit and loss reports to reflect the changes in the Danish chart of accounts and common practice in Danish accounting. We also simplified the reports to use the accounts themselves as sublines instead of having a separate report line for each account. Finally we made sure we use the official Danish translations and updated the English translations as well. task-5929517 Related: https://github.com/odoo/odoo/pull/256541
This update fixes an issue where the helpdesk website displayed all published knowledge articles, regardless of which team the helpdesk was associated with. Now, the website only shows articles linked to the specific helpdesk team or its related teams, improving the user experience and ensuring relevant information is presented.
Original PR description
To reproduce: ============= - create multiple published knowledge articles - link one of them to a helpdesk team - check the help page on website -> all public articles are listed Problem: ======== when fetching the articles to list, we don't take into account the team configuration and we list all the published articles. Solution: ========= fetch only the article linked to the team or its children. opw-5913355
This update fixes an issue where the website configurator displayed inaccurate or missing messages during website creation. The change replaces a complex ID-based mapping with a more reliable sequence-based approach, adding missing messages for key features like Events and Live Chat. This ensures a clearer and more informative experience for users.
Original PR description
When creating a website through the configurator, the loading screen displayed incorrect or missing feature messages. The loader matched messages using the `website.configurator.feature` record ID. Some mappings were incorrect and caused wrong messages to appear. For example, selecting the "Events" feature displayed the "Appointment" message instead. This commit: - Corrects the feature-to-message associations. - Replaces the ID-based mapping with the `sequence` field, which is defined in XML and visible in the codebase, allowing an explicit and reliable mapping in code. - Adds loading messages for features that were missing them (e.g., Success Stories, Events, Live Chat, Store Locator). - Removes the appointment loading message from community, as it belongs to enterprise. - Introduces an overridable `getFeatureMessages()` method so modules can extend the loader with their own feature messages cleanly.
This update fixes an issue where saving changes to related records could lead to errors when accessing data through the web interface. Specifically, it ensures that only accessible records are used when retrieving data, preventing access errors related to x2many fields. This improves the stability and reliability of user record access.
Original PR description
**Description of the issue/feature this PR addresses**: web_read on x2many fields can reuse cached ids after write/web_save. Some of these cached ids may be inaccessible with the current record…
**Description of the issue/feature this PR addresses**:
web_read on x2many fields can reuse cached ids after write/web_save. Some of these cached ids may be inaccessible with the current record rules/context (cache pollution).
**Example**:
- **Context**:
- Two companies exist: Company A and Company B.
- Two users exist: User A and User B.
- User A can only access Company A (company_ids=[A], company_id=A).
- User B is linked to both companies (company_ids=[A, B], company_id=A).
- The "res.company" record rule is the standard one: [('id', 'in', company_ids)] (company_ids comes from allowed_company_ids).
- User A edits User B and saves the form.
- **Steps**:
- User A performs a web_read to load User B: company_ids contains only Company A.
- User A performs web_save (write + internal web_read in the same request): cached ids [A, B] are reused and the code attempts to read Company B.
**Current behavior before PR (without fix)**:
After saving a form with an x2many field, web_save calls write and then web_read. In this flow, web_read can include inaccessible x2many ids from cache and raise an AccessError.
**Desired behavior after PR is merged**:
x2many records are re-filtered with current read rules before formatting, and inaccessible ids are removed from values_list.This update significantly speeds up the process of searching for attachments within Odoo, particularly when dealing with large numbers of records. By batching the search, the system now completes this task much faster, reducing response times from seconds to milliseconds. This improvement enhances overall system performance and user experience.
Original PR description
The search method is called once per record in self to get the attachments. This is a backpot of odoo/odoo/pull/209562. Benchmark: | No AML in self | Before PR | After PR | |----------------|-----------|----------| | 80 | 100 ms | 4 ms | | 5000 | 3.3 s | 200 ms | enterprise PR: odoo/enterprise/pull/112345 opw-5881026 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a potential issue where tax amounts weren't accurately adjusted when users grouped lines within a sales or invoice move. Now, the system correctly calculates and applies tax differences after grouping, ensuring accurate financial reporting. Additionally, a related technical update removed an unused context key and revised a test case to reflect Belgian tax regulations.
Original PR description
[FIX] account_edi_ubl_cii: correct tax amount when grouping lines When the user group lines of a move, the tax amount is now corrected if there's a difference in the tax amount before and after grouping This commit also removes the `ungroup_lines` context key, as the flow was changed in odoo/odoo#252458 Reword the `test_import_and_group_lines_by_tax` test: use belgian company and belgian taxes task-5993555
This update fixes an issue where the green link style was lost when freezing spreadsheets. The change introduces a new 'neutralized' link type to maintain the desired visual style for dashboards while preventing users from clicking on internal links. This ensures consistent formatting and layout within the spreadsheet.
Original PR description
Since https://github.com/odoo/odoo/pull/166843, we remove the odoo links entirely from the spreadsheet on `freeze and share`. While it is true that the link is not usable from a public page (and that…
Since https://github.com/odoo/odoo/pull/166843, we remove the odoo links entirely from the spreadsheet on `freeze and share`. While it is true that the link is not usable from a public page (and that we'd somehow leak internal views information in the links), cells with links benefit from a specific style that is not hardcoded on the cell but rather computed based on their content. By removing the links from teh cells altogether, the greenish link style is lost on those cells and we actually rely on that style for our dashboards layout. To preserve the intension of https://github.com/odoo/odoo/pull/166843, we introduce a new type of links `neutralized` which allows the cell to be recognized as a link (and benefit from the style) while disabling their behaviour (no click). Task-6063301 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 an issue where single-letter unit of measure names (e.g., 'm', 'l') couldn't be exported for translation. The change harmonizes filtering to allow these names while still preventing the export of irrelevant strings. This improvement was requested by a translator and ensures accurate translation workflows.
Original PR description
Single-letter strings (as used for units of measure, like `m`, `l`, `g`) are not exportable for translation, because the export of translation strings was filtering out different strings based on the type of the translation. This commit harmonized the filtering to the single condition of a string containing at least one letter, which allows exporting single-letter strings while still filtering out non-meaningful strings like `:`, `...`, `.00`, etc. Issue reported by one of our translators.
This update fixes an issue where increasing the quantity of a service product on a sales order incorrectly generated a purchase order with an inflated quantity. The fix ensures the quantity is always calculated in the sales order's unit of measure, preventing double-counting and inaccurate purchase order generation. This improves order accuracy and reduces potential discrepancies.
Original PR description
Steps to reproduce the bug: - Create a service product "P1": - In the Purchase tab: - Vendor: Azure Interior - Subcontract Service: True - UoM: dozen - Purchase UoM: unit - Create a sales order with…
Steps to reproduce the bug:
- Create a service product "P1":
- In the Purchase tab:
- Vendor: Azure Interior
- Subcontract Service: True
- UoM: dozen
- Purchase UoM: unit
- Create a sales order with 1 dozen of P1
- Confirm -> a purchase order with 12 units of P1 is generated
- Confirm the purchase order
- Go back to the sales order:
- Update the quantity from 1 to 2 dozen
Problem:
A new purchase order is generated, but with 144 units instead of 12
units. The quantity difference between the old SO quantity and the new
one is computed twice in the purchase order line UoM, in both
`_purchase_increase_ordered_qty` and `_purchase_service_prepare_line_values`:
https://github.com/odoo/odoo/blob/17.0/addons/sale_purchase/models/sale_order_line.py#L186
Solution:
The `quantity` parameter must be expressed in the SO line UoM, as
described in the documentation of the function `_purchase_service_prepare_line_values`.
https://github.com/odoo/odoo/blob/17.0/addons/sale_purchase/models/sale_order_line.py#L178
opw-6049106This update ensures Odoo's Danish localization (l10n_dk) aligns with the latest Danish tax regulations. It includes updated account details, translations, and migration scripts to maintain accurate financial reporting for Danish businesses. This improves compliance and data integrity.
Original PR description
We updated the following in the Danish localization: - Updated the accounts to match the latest version provided by the Danish tax authorities. - Made sure we use the official Danish translations for the accounts and updated all of the English reference translations. - Removed outdated accounts and tags and have a migration script archive them for existing users. - Updated the account groups to match the CoA structure and use the correct Danish and proper English translations. - Adapted the account tags to match the updated accounts/numbers and replaced the outdated ones with their new version on existing accounts. - Removed unused account tags. - Updated some of the default accounts and prefixes on the chart template. task-5929517 Related: https://github.com/odoo/enterprise/pull/112430