Daily updates from Odoo
Monday, October 13, 2025
14 changes · 17.0
Resolved issues and error corrections
Changing an activity type in the scheduler now correctly updates or clears the summary and note based on the newly selected type. This prevents users from accidentally keeping outdated instructions when switching to an activity type with no default text.
Original PR description
Steps to reproduce: -------------------------- 1. Install Discuss Module 2. Create two activity types: one with a default summary and default note, and another with both fields empty. 3. Go to any…
Steps to reproduce: -------------------------- 1. Install Discuss Module 2. Create two activity types: one with a default summary and default note, and another with both fields empty. 3. Go to any user's partner record and click on Activities from Chatter 4. Select the activity type with the default summary and note. 5. Now change it to the activity type with no summary and note. Observation: -------------------------- The scheduler still shows the previous summary and note after changing to an activity type without defaults. Issue: -------------------------- The compute methods only update the summary and note if the new activity type has them. As a result, fields are not cleared when the new type has empty values https://github.com/odoo/odoo/blob/b2c1af2e60968ee745e0a1238602aafe12f486b0/addons/mail/wizard/mail_activity_schedule.py#L167-L177 Solution: -------------------------- Remove the condition that blocks updating the summary and note. Now, the scheduler updates correctly even when the new activity type has no summary or note. opw-5106771
The HR organization chart now avoids an error that could occur when loading employees with many levels of subordinates. This makes the org chart more reliable for companies with deep management structures.
Original PR description
This commit fixes a recursion error that occurs in `_get_subordinates`. An iterative approach is used instead of the current recursive implementation. task-5118697 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Subscriptions MRR Breakdown report now ignores archived companies when preparing report data. This prevents access errors for users working in databases where the original company was archived and another active company is in use.
Original PR description
Step to reproduce: - Start database without demo data and install Subscriptions - Create a new Company and archive the first Company in the Database - Set a currency rate on a currency (i.e. Euro),…
Step to reproduce: - Start database without demo data and install Subscriptions - Create a new Company and archive the first Company in the Database - Set a currency rate on a currency (i.e. Euro), then set that currency as the Main Currency of the new Company. - Then, set a currency rate on the previous Main Currency i.e USD. - Create a Subscription Sales Order and confirm it. - Open the MRR Breakdown report. - Click into the data of the report. Observation: An error message will occur appear (Access Error) Issue: - when building the query, it also fetches the archived company, due to `active_test` context applied from [fetch()](https://github.com/odoo/odoo/blob/754599a7720ee179fc5304b9613df9c177e4b231/odoo/models.py#L3858), and hence wrong query is build which fetches no data, leading to sort of access error as this [condition](https://github.com/odoo/odoo/blob/754599a7720ee179fc5304b9613df9c177e4b231/odoo/models.py#L3876) matches. Fix: - we explicitly search for active companies opw-5090463
This fix adds the missing sample blog data needed for an automated website blog tour to run reliably. It prevents test failures in environments without preloaded demo data, improving confidence in blog feature validation without changing customer-facing behavior.
Original PR description
With PR [1], the blog_tags_with_date tour was introduced, but the required demo data were missing, causing the tour to fail when executed in an environment without demo data. This commit adds the necessary demo records to ensure the tour runs successfully even when no demo data are present. [1]: https://github.com/odoo/odoo/pull/225845 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
Swiss payroll users can now access all required backend configuration fields directly from the salary rule screen. This helps payroll teams configure wage types more completely and reduces the need for technical backend access.
Original PR description
task-4954650
Restricted website editors can now update pages even after an administrator adds an embedded video. The change keeps videos visible to visitors while storing them in a way that remains compatible with content safety rules, reducing editing interruptions for business teams.
Original PR description
Steps to reproduce the current behaviour: - Update the DEMO user to be a website "restricted editor" and sales "admin" who cannot bypass HTML field sanitization. - As ADMIN, add a YouTube video to a…
Steps to reproduce the current behaviour: - Update the DEMO user to be a website "restricted editor" and sales "admin" who cannot bypass HTML field sanitization. - As ADMIN, add a YouTube video to a product page > Save. - As DEMO, try to update the content on the product page > You cannot (a dialog informs you that you cannot edit the content because an admin edited it previously). Explanation: Starting from [1], an HTML field can be flagged as `sanitize_overridable` which allowed users with the `base.group_sanitize_override` group to skip the HTML field sanitize process. If such users added some content that is not considered "sanitize friendly" (e.g. YouTube iframe), a restricted user won't be allowed to add content in the fields, since the sanitizer will remove the original content from the DOM. For this case, the code from [2] added an implementation to consider the field as none editable and warn the user once he tries to update it. Implementation: The goal of this commit it to fix the current limitation for video upload that currently prevents non admin users to edit a website record once an admin adds a video on it... The idea of the fix is the following: - We already have a technical fallback when uploading a video to save the iframe `src` to an attribute: `data-oe-expression`. - The public widget is now destroying the video iframes so they are never saved in the DOM. - A non-lazy code will build the iframes immediately on page load. - The public widget can always create the iframes if they are not already created (for compatibility). [1]: https://github.com/odoo/odoo/commit/cf844e34dd0ce4830eb99fd0fa5b6b9cb58c867c [2]: https://github.com/odoo/odoo/commit/cb80c15d3db49ede3c93171abcaa9064b88822c6 task-3757205
This fix prevents surveys from failing when a required matrix question includes a table in its description. It ensures the survey checks the correct matrix answer data, improving reliability for respondents and survey creators.
Original PR description
A conflict occurs if a matrix question is set to "Mandatory answer" (questionRequired = True) and a table is also added to its description. The issue is that when the system evaluates a required matrix, it gets the subQuestionsIds by looking for the first table within the question's wrapper. If a table exists in the description, the system incorrectly tries to retrieve the IDs from that table. This action throws a traceback because the descriptive table does not contain any sub-question data. This commit fixes the issue by being more specific when looking for the table containing the subQuestionsIds. It adds a specific class to this table and uses it in the selector. An attribute selector, like 'table[data-sub-questions]', could also have been used as an alternative. opw-4931881 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Project profitability now reflects only the portion of an expense assigned to a project through analytic distribution. This prevents expenses that are partially allocated to a project from being counted in full, giving managers more accurate profitability figures.
Original PR description
…nse profitability #### Issue: While looking at project profitability, expenses analytic distribution are treated as being set to 100%. #### Step to reproduce: - With modules: project_{hr,…
…nse profitability
#### Issue:
While looking at project profitability, expenses analytic distribution are treated as being set to 100%.
#### Step to reproduce:
- With modules: project_{hr, sale}_expense, accountant
- enable "Analytic accounting"
- enable project > Timesheet
- Create a project "A"
- Set it as billable
- Create a Meal expense for an amount of 115$
- Set an analytic account of 50% for the project "A"
- Validate
- Approve
- Post journal entries
- Go to the project "A" > settings > Set Status
#### Current behavior:
- profitability display '-100'. It took the whole expense.
#### Expected behavior:
- profitability should display '-50'. Only 50% of the untaxed amount.
#### Cause of the issue:
- While querying `hr_expense`, the full untaxed amount of all expenses having the right `analytic_account` in their `analytic_distribution` were added together with no regard to the percent they were set to.
#### Solution:
- weight the expenses depending of their analytical distribution
opw-4949634
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prSpanish Facturae e-invoices now use the invoice’s recorded accounting lines to calculate tax totals, preventing small rounding differences in the XML when global tax rounding is enabled. This helps ensure the electronic invoice matches the tax amounts shown in Odoo and reduces validation or reconciliation issues.
Original PR description
If the tax rounding is set to round_globally, the XML generated for an invoice might have a different TotalTaxOutputs than the tax computation shown in the invoice. This is due to an extra rounding occuring during the XML generation. In this commit, we base the computed values of the InvoiceTotals segment of the facturae document on the move's line_ids, avoiding unnecessary and error-prone re-computation. task-4650439 As the file changed in 18.0, another PR is necessary from 18 on : https://github.com/odoo/odoo/pull/229236
Website document icons now remain visible when translating pages into another language. This prevents visitors and editors from seeing missing or invisible file indicators on multilingual website content.
Original PR description
This commit permits to keep document icon visible during the translation of a website page. Steps to reproduce the issue: - Have a website in English (main) and French - Edit the website in the main lang (English) - Drop Image text block - Change the image to a document - Save - Edit the translation in French => The document logo becomes invisible. This commit fixes this issue. task-3626918
Website form fields now keep their spacing settings when display options such as label position or description are previewed or changed. This prevents accidental layout changes and saves editors from having to reapply spacing manually.
Original PR description
Before this commit, changing display parameters of a field (label position, description, etc.) would remove the offset already added. It would require to add them again if a change was made on the display, even if the mouse just hovered the buttons. This commit solves the issue. Steps to reproduce the bug: - Add a form snippet - Add an offset to a field - In the snippet customization, hover over the label position (The offset was removed for good) task-3675509
Dashboard charts on mobile now behave like desktop charts: tapping a chart opens the linked Odoo menu. This makes mobile dashboards more useful and consistent for users who rely on charts to navigate to related business information.
Original PR description
Current behavior before PR: - Clicking on a chart in mobile did nothing, unlike on desktop where it redirects to the linked Odoo menu. Desired behavior after PR is merged: - Clicking on a chart in mobile also redirects to the corresponding Odoo menu. - The test has been refactored to remove duplication and improve readability. Task: [4884509](https://www.odoo.com/odoo/2328/tasks/4884509)
App icons created in Studio are now resized before being saved, with a maximum size of 64x64 pixels. This prevents unnecessarily large icon files from increasing database size, cache usage, and request payloads.
Original PR description
Before this commit, the IconCreator images were sent as is in their full size. Downstream it was problematic because apps' icons were bigger than necessary, bloating the different caches, the database, and the request. After this commit, icon are resized to a max of 64x64 pixels.
Clearing the website search box now removes the typed text without reloading the page. This preserves the current search results until the visitor chooses to run a new search, reducing confusion and unnecessary page refreshes.
Original PR description
Before this commit, clicking on the "x" button on the searchbar would refresh the page and remove the result immediatly. The user might want to keep the result if he does not do another search. This commit avoids refreshing the page when removing the input content. Steps to reproduce the bug: - Click on the search button in the navbar - Search "tree" - Press enter (You are redirected to /website/search) - Click on the "x" button to delete the input content (The page refresh) task-3570756