Daily updates from Odoo
Wednesday, September 3, 2025
60 changes
25 changes
Resolved issues and error corrections
Event attendees can now download calendar invite files for published sessions without hitting an access error. This fixes reminder links that include session calendar files, ensuring public visitors can add event tracks to their calendars reliably.
Original PR description
[1] introduces email reminders for tracks which include an ics file url. The ics file generation includes the location name, which is not accessible by public users. It is safe to sudo the name by the point you already have access to the track (i.e. it is published and all ir rules were checked) [1]: b7efd90f23833dee85c69434f84f859056650e66 task-5061885 Forward-Port-Of: odoo/odoo#225316
Users can now retry deleting a row in related-item lists after cancelling a confirmation prompt. The delete button is briefly disabled only to prevent accidental double clicks, then becomes available again so workflows are not blocked.
Original PR description
PR [1] aimed at fixing a double-click issue with the delete button in x2many lists. In standard views, it works fine. However, there are customizations (e.g. project sub tasks, product attributes...) that add a confirmation step before actually removing the row. If the user cancelled the deletion, clicking on the delete icon of that row afterwards had no effect at all. This commit fixes the issue by re-enabling the button after 500ms, thus only preventing double clicks. [1] https://github.com/odoo/odoo/pull/173481 opw~5019621 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 Forward-Port-Of: odoo/odoo#225174 Forward-Port-Of: odoo/odoo#225072
Linking an employee to an internal user now works even when the employee has a bank account marked for sending money and the user lacks bank access rights. This removes an incorrect permission error and helps HR or administration workflows proceed without unnecessary accounting access.
Original PR description
Steps to reproduce: - Let's consider an employee E with a bank account BA - Let's consider that BA has the option "Send Money" enabled - Let's log to an internal user U without any access right in Bank - Try to link E to any internal user Bug: A user error was raised: You do not have the rights to trust or untrust accounts. opw:4553238 Forward-Port-Of: odoo/odoo#211081 Forward-Port-Of: odoo/odoo#198974
Opening an employee record on mobile and using the gear menu no longer triggers an error. This keeps the HR presence experience stable for mobile users and avoids disruption during employee management tasks.
Original PR description
Opening the Employee form on mobile and tapping the gear icon could crash because `PresenceActionItems` was undefined. Initialize it and guard the template. task-5055564 Forward-Port-Of: odoo/odoo#224942
This fix ensures standalone tests correctly verify that the controlled time mode is active. It helps keep automated testing consistent and reduces the risk of unnoticed timing-related test issues.
Original PR description
Standalone tests don't enter faketime mode. Forward-Port-Of: odoo/odoo#224077
A Spanish point-of-sale validation test was updated so it no longer relies on a fixed order reference from 2025. This keeps automated checks reliable across year changes and date-simulated builds, reducing false build failures without changing user-facing behavior.
Original PR description
The settle account due tour in l10n_es_pos was failing because the order name was hardcoded to "TSJ/2025/00001". This value includes a date-dependent year and sequence number, which vary based on `context_today`. this will ensure that the tour dynamically generates the order name based on the current year, making it correct for faketime builds build_error-230724 <img width="1366" height="768" alt="image" src="https://github.com/user-attachments/assets/2b7d0e04-9cd9-45d9-b5f0-32f39f87dd90" /> Forward-Port-Of: odoo/odoo#222796
The organization chart now loads the correct employee relationships when viewed from user, employee, or public employee forms. This prevents incorrect or missing reporting-line information, improving consistency for HR users viewing employee profiles.
Original PR description
This update ensures that the correct employee and parent IDs are fetched depending on whether the widget is displayed in a `res.users`, `hr.employee` or `hr.employee.public` form. The `onWillStart` was removed since `useRecordObserver` is triggered in `onWillStart`, and both used to have the same logic. task-5039701 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225193 Forward-Port-Of: odoo/odoo#224456
This fix improves how Odoo handles views created with unsupported XML tags. Instead of triggering a low-level error, users now receive a proper validation message, making the issue easier to understand and correct.
Original PR description
When a user tries to save a view with an invalid tag, an error occurs. **Steps to produce:-** 1. Go to Settings > Technical > User Interface > Views. 2. Click on New. 3. Add the view name. In architecture -> add `<template></template>`. 4. Try to save the changes. **Error:-** `ValueError:Wrong value for ir.ui.view.type: 'template'`. **Root cause:-** - The view type in `ir.ui.view` is automatically inferred from the `root tag` of the XML defined in the `arch` field. - In this case, `<template>` becomes the inferred view type, which is not part of the valid selections for the type field in the model `ir.ui.view`. **Solution:-** - Before calling `super().create(vals_list)`, add a validation check to ensure `values['type']` is in the allowed types. If not, raise a ValidationError. sentry-6561028171 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#207219
This update corrects the Spanish Canary Islands tax data to use the field name expected in Odoo 18. It prevents setup or update issues caused by an outdated tax configuration field.
Original PR description
Description of the issue/feature this PR addresses: In version 18 of Canary Islands taxes, the “price_include” field no longer exists. It is now called “price_include_override.” 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 Forward-Port-Of: odoo/odoo#224973 Forward-Port-Of: odoo/odoo#223996
Updates the Spanish descriptions for three Argentine IIBB sales perception taxes so they show the full jurisdiction names for San Juan, San Luis, and Santa Fe. This makes tax configuration clearer and more consistent for users working with Argentine accounting localization.
Original PR description
**Description of the issue/feature this PR addresses**: It is needed to ensure that the descriptions for the IIBB perceptions are consistent and correctly reflect the complete name of the…
**Description of the issue/feature this PR addresses**: It is needed to ensure that the descriptions for the IIBB perceptions are consistent and correctly reflect the complete name of the jurisdictions they apply to. **Steps to reproduce**: 1) Go to runbot odoo 18 instance, install l10n_ar module, take position on Argentinean company and activate "Spanish (Latin America)" language. 2) Go to "Accounting / Configuration / Accounting / Taxes", filter by "Sales" Tax Type (type_tax_use) and see that Perc IIBB San Juan, Perc IIBB San Luis and Perc IIBB Santa Fe don`t have the complete description. It is needed to show the complete description. <img width="1825" height="307" alt="image" src="https://github.com/user-attachments/assets/f664e5ec-a4b5-4a8f-bbab-9ba3d824bd2b" /> **Current behavior before PR**: Perc IIBB San Juan, Perc IIBB San Luis and Perc IIBB Santa Fe taxes don`t have the complete description. **Desired behavior after PR is merged**: Perc IIBB San Juan, Perc IIBB San Luis and Perc IIBB Santa Fe taxes have the complete description. <img width="1828" height="425" alt="image" src="https://github.com/user-attachments/assets/dc8ee6dd-23c3-40c1-a973-943971e3cb78" /> **Task Adhoc side**: 53028 **Task latam side**: 1356 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222343 Forward-Port-Of: odoo/odoo#221742
This fix improves the Website editor experience in dark mode by making the font size input and its related badge display with the correct darker styling. Users can now read and distinguish these controls more easily when editing website text.
Original PR description
### Steps to reproduce: **Issue 1:** - Switch the interface to Dark Mode. - Navigate to the website and drag & drop a snippet. - Select any text to open the toolbar. - Observe the font size input…
### Steps to reproduce: **Issue 1:** - Switch the interface to Dark Mode. - Navigate to the website and drag & drop a snippet. - Select any text to open the toolbar. - Observe the font size input field's background color. **Issue 2:** - Enable dark mode - Open the Website module - Drag and drop any text snippet and select the text - Click on font size input in the toolbar and observe badge background color. ### Description of the issue/feature this PR addresses: - The font size input field displayed a white background in Dark Mode. - This occurred because the code used the editor's document for htmlStyle, but in contexts like the website, the element's ownerDocument differs, leading to incorrect style resolution. - The badge shown next to the font size in the dropdown had same background color as the dropdown in dark mode, making it indistinguishable. ### Desired behavior after PR is merged: - Use the correct ownerDocument of the element to access its htmlStyle. - The badge background color is now darker in dark mode. task-5027790 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes Indonesian Coretax e-Faktur product codes easier to find when editing product templates. Users can now search by code, description, or the displayed label, reducing lookup friction and selection errors.
Original PR description
Description of the issue/feature this PR addresses: Because `l10n_id_efaktur_coretax.product.code` model does not have a `name` field and does not use` _rec_name`, search record in m2o field or…
Description of the issue/feature this PR addresses: Because `l10n_id_efaktur_coretax.product.code` model does not have a `name` field and does not use` _rec_name`, search record in m2o field or searchview is difficult and not normal. so this uses `_rec_name = "code"` for fixing in searchview, and overrides `_name_search()` to be able to search using field `code` or `description` or like `name_get()` string Current behavior before PR: <img width="821" height="353" alt="Before fixing coretax product code search 1" src="https://github.com/user-attachments/assets/12ca3248-0bea-4ef3-bb04-116d63520517" /> <img width="832" height="432" alt="Before fixing coretax product code search 2" src="https://github.com/user-attachments/assets/ced291b7-c4c6-42e7-a453-7a1f18945637" /> <img width="988" height="568" alt="Before fixing coretax product code search 3" src="https://github.com/user-attachments/assets/bbac4ae1-a31d-49bd-b520-a68a1a945e78" /> Desired behavior after PR is merged: <img width="438" height="314" alt="After fixing coretax product code search 1" src="https://github.com/user-attachments/assets/4469bb5b-0830-49af-af1c-f05b81dcb10c" /> <img width="467" height="331" alt="After fixing coretax product code search 2" src="https://github.com/user-attachments/assets/5528db34-e279-4d2d-98f0-644f7a618ead" /> <img width="991" height="619" alt="After fixing coretax product code search 3" src="https://github.com/user-attachments/assets/fec53a0c-ab29-46c5-b366-46653b51d7e4" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222588 Forward-Port-Of: odoo/odoo#221858
Highlighted text in the website builder now keeps its visual highlight properly aligned when users change a heading or font block type. This prevents design inconsistencies while editing pages and helps content appear as intended.
Original PR description
With the [website builder refactor], the highlight did not resize when user changes the font block type in a parent of a highlighted span. This happens because the parent node is removed to do the…
With the [website builder refactor], the highlight did not resize when user changes the font block type in a parent of a highlighted span. This happens because the parent node is removed to do the replacement of tag, which does not triggers the observers of the interaction. This commit fixes it by removing the optimization that if an element is observed, then it can be ignored during a normalize. Indeed, when a highlight is added on a node, the observers of the interaction do not only track the node itself, but also some other nodes. When the highlighted span is moved between different parents, the set of nodes that should be observed changes (and some observations may have been lost) Steps to reproduce: - Open website builder - Drop a block with a title (for example, "Cover") - Add a highlight inside the title - Change the font (for example from "Header 1" to "Header 5") - Bug: the highlight svg does not resize to follow the highlight span [website builder refactor]: 9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-4367641
The Point of Sale tax control button now appears only when relevant settings are enabled, avoiding confusion for cashiers and restaurant staff. The tax selection dialog also now shows a clear title, making it easier for users to understand the action they are taking.
Original PR description
Before this commit: =================== - When only point_of_sale is installed, the tax control button is visible only if `Flexible Tax` is enabled. But with pos_restaurant installed, the button is always visible, even if Flexible Tax is disabled. - Also, the tax selection dialog had an incorrect title: `Please register the voucher number`. After this commit: ================== - In point of sale, the tax control button will be visible if `Flexible Tax` is enabled, and in restaurant mode, the button will be visible if the `Flexible Tax` or `Takeout/Delivery` is enabled. - The tax selection dialog title has been updated to: `Choose the tax you want to apply`. Task: 4937977 Forward-Port-Of: odoo/odoo#224957 Forward-Port-Of: odoo/odoo#218815
The Current Stock button on a warehouse location now shows only stock for that specific location instead of listing all products. This helps inventory users quickly see the relevant stock and avoids confusion when reviewing location details.
Original PR description
From this [commit](https://github.com/odoo/odoo/commit/81acb532a45cf7ab2837634e4d347b216c95f07a), clicking the "Current Stock" button on a location form opened the stock quant list without filtering…
From this [commit](https://github.com/odoo/odoo/commit/81acb532a45cf7ab2837634e4d347b216c95f07a), clicking the "Current Stock" button on a location form opened the stock quant list without filtering by the selected location, showing all products. After this commit, the context `search_default_location_id` is added so that the stock quant list is properly filtered by the active location. **Before fix** <img width="1919" height="951" alt="2025-09-01_12-15" src="https://github.com/user-attachments/assets/93a6034b-0d07-4668-b67d-a84df2285a48" /> **After fix** <img width="1913" height="862" alt="2025-09-01_12-20" src="https://github.com/user-attachments/assets/03eb5b48-0799-4a73-a826-b3c9971b4a85" /> opw-5033643 upg-3117055 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 Forward-Port-Of: odoo/odoo#224923
This fix prevents the hotkey help overlay from accidentally triggering page navigation updates. Users should experience fewer unexpected focus jumps when using keyboard shortcuts, making the interface feel more stable.
Original PR description
This commit fixes an issue where the update of the navigation_hook would trigger for any dom modification (including hotkey overlay) which could cause unwanted re-focus on some elements. Backport of 6939e29b2bf9d943fa82a5969a2472cdc3c81c8a to 18.4 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A failing mobile test in Point of Sale was corrected to restore reliable validation for mobile scenarios. This helps keep the Point of Sale experience stable on mobile devices and reduces the risk of regressions reaching users.
Original PR description
The mobile test was failing due to an issue. opw-5059482 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225127
Fixes an issue where refreshing a completed live survey page could crash if a survey question had been deleted in another tab. This keeps the survey experience stable for participants and avoids an error page in this edge case.
Original PR description
Currently, an error occurs when refreshing a live session's `Thank You` page after deleting a survey question. **Steps to reproduce:** - Install the `survey` module. - Create a `new survey`, `add a…
Currently, an error occurs when refreshing a live session's `Thank You` page after deleting a survey question. **Steps to reproduce:** - Install the `survey` module. - Create a `new survey`, `add a question` and click on `Create Live Session`. - Complete the survey and leave it on the `Thank You` page. - Switch back to the `first tab`, delete the question and `save` the survey. - Return to the `Thank You` tab and `refresh` the page. **Error:** `IndexError: list index out of range` **Root Cause:** At [1], the controller assumes the question exists and tries to access `index [0]`, but when the question has been deleted, the recordset is empty, causing an `error`. [1] https://github.com/odoo/odoo/blob/ffd9c0f96bda1bad1ad2059d9be2fae54b60eace/addons/survey/controllers/survey_session_manage.py#L236 This commit prevents a crash when refreshing a live session if the question was deleted. sentry-6736648824 Forward-Port-Of: odoo/odoo#225242 Forward-Port-Of: odoo/odoo#218312
This fix prevents settings pages from showing an error when a header is intentionally left without a label. It makes the settings interface more reliable for configurations where a label is optional.
Original PR description
Before this commit, an error would occur if a header setting did not contain an attribute string or field. This was because the code tried to infer the label. However, the label should be optional. 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 Forward-Port-Of: odoo/odoo#225119 Forward-Port-Of: odoo/odoo#225080
Users can once again swipe left to unpin conversations from the messaging menu on mobile. This restores the expected mobile interaction and avoids frustration when managing pinned threads.
Original PR description
Before this commit, swiping left to unpin threads in the messaging menu was not working. This issue was introduced by [1] (which is a backport of [2]), and it stems from trying to acccess the message_unread_counter on the thread instead of the self channel member. This commit fixes the issue by accessing the property correctly from the self channel member. [1] https://github.com/odoo/odoo/pull/212793 [2] https://github.com/odoo/odoo/pull/212793 task-5058496 Forward-Port-Of: odoo/odoo#225083
Saving the document layout wizard no longer tries to update a company's bank account number when it has not been changed. This prevents unnecessary errors for trusted bank accounts while keeping the displayed bank account field available.
Original PR description
Description of the issue/feature this PR addresses: The document layout wizard (base.document.layout) attempts to write the partner’s bank account number even if it has not been changed. If the first…
Description of the issue/feature this PR addresses: The document layout wizard (base.document.layout) attempts to write the partner’s bank account number even if it has not been changed. If the first bank account is marked as trusted, Odoo blocks the write and raises an error. This PR prevents that error by only writing the account number when it has actually changed. Current behavior before PR: - The wizard shows the account_number field. - On saving, _inverse_account_number always writes to the first partner bank account. - Trusted bank accounts trigger an error: “You cannot change the account number or partner of a trusted bank account.” Desired behavior after PR is merged: - The wizard still shows the account_number field. - On saving, _inverse_account_number only writes if the value changed. - Trusted bank accounts that are not modified do not cause an error. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#224905
The signature dialog now avoids showing drawn and auto-generated signatures on top of each other. This makes signing documents clearer for users and prevents confusion when choosing or drawing a signature.
Original PR description
Fixed an issue where both the auto-generated and drawn signatures overlapped in the signature dialog. This was caused by the system automatically setting the user's default signature to the drawn one when opening the dialog. Now, the dialog no longer defaults to the drawn signature, preventing visual overlap and ensuring a cleaner user experience. Forward-Port-Of: odoo/enterprise#93750
This fix ensures available rental planning time slots are no longer accidentally overwritten while being prepared. Customers and staff should see more reliable slot availability when booking rental products online.
This fix ensures the website generator stops its background checks reliably when users leave or the page flow is cancelled. It prevents repeated hidden requests that could cause crashes and improves stability during website creation.
Original PR description
In a component lifecycle, it may happen that onWillStart is called but not onWillUnmount. Indeed, if the component is destroyed before being mounted (because the current rendering has been cancelled), onWillUnmount isn't called. As a consequence, in the WebsiteGenerator component, the setInverval might never been called, thus producing an orm call every 10 seconds, when the component is destroyed. These calls lead to crashes ("Component is destroyed").
The solution is to use the onWillDestroy hook instead, which is always called.
Forward-Port-Of: odoo/enterprise#93679Commission reports now use the correct database access mode when preparing report data. This avoids warnings or errors when reports need temporary data during display, improving reliability for sales commission users.
Original PR description
Since https://github.com/odoo/enterprise/pull/88646 a temporary table is created to speed up computation of commission report. As dislayng the report is creating and dropping the temporary table, it is not compatible anymore with a read only cursor. This commit ensure that a read write cursor is used to prevent warning and errors. task-4982555 Forward-Port-Of: odoo/enterprise#91352
15 changes
Resolved issues and error corrections
When a user is archived, their pending activities are now found even if they belong to a company that is not currently selected. This prevents old tasks from being left behind and keeps activity lists accurate after user deactivation.
Original PR description
**Steps to reproduce:**
- Set up one user with a new company
- With this user :
- Create sale order
- Create activity on the new sale order
- Go back to the admin user
- Disable the new company in the top right menu
- Archive the user
- Activities of the user are still present
**Issue:**
In `activities_to_delete = self.env['mail.activity'].search([('user_id', 'in', self.ids)])`, the access rights of the records used in the activities are checked, which means that the sale order domains are applied. If the given domain doesn't match (for example `('company_id', 'in', company_ids)` when the company_id is manually disabled), the search can miss the activity to unlink.
**Fix:**
Added `.sudo()` to ensure all of the user's activities of any company
are considered, overwriting the current company context.
opw-4716031
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#206813Fixes an issue where linking an employee to an internal user could fail if the employee's bank account was marked for sending money and the user lacked bank permissions. This helps HR or administration users complete employee setup without needing unrelated banking access.
Original PR description
Steps to reproduce: - Let's consider an employee E with a bank account BA - Let's consider that BA has the option "Send Money" enabled - Let's log to an internal user U without any access right in Bank - Try to link E to any internal user Bug: A user error was raised: You do not have the rights to trust or untrust accounts. opw:4553238 Forward-Port-Of: odoo/odoo#211081 Forward-Port-Of: odoo/odoo#198974
Users can now try deleting a row again after cancelling a confirmation dialog in editable list fields. The delete button is briefly disabled only to prevent accidental double-clicks, then becomes available again so work is not blocked.
Original PR description
PR [1] aimed at fixing a double-click issue with the delete button in x2many lists. In standard views, it works fine. However, there are customizations (e.g. project sub tasks, product attributes...) that add a confirmation step before actually removing the row. If the user cancelled the deletion, clicking on the delete icon of that row afterwards had no effect at all. This commit fixes the issue by re-enabling the button after 500ms, thus only preventing double clicks. [1] https://github.com/odoo/odoo/pull/173481 opw~5019621 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 Forward-Port-Of: odoo/odoo#225174 Forward-Port-Of: odoo/odoo#225072
Event attendees can now download calendar invitation files for published event tracks without being blocked by access restrictions on the location name. This fixes reminder links so public users can add sessions to their calendars reliably.
Original PR description
[1] introduces email reminders for tracks which include an ics file url. The ics file generation includes the location name, which is not accessible by public users. It is safe to sudo the name by the point you already have access to the track (i.e. it is published and all ir rules were checked) [1]: b7efd90f23833dee85c69434f84f859056650e66 task-5061885
Fixed an issue where a Discuss channel could stay marked as unread in one browser even after it had already been read elsewhere. This keeps unread indicators accurate when users work across multiple browser sessions or recover from missed live notifications.
Original PR description
Before this commit, if you opened an unread channel that the server already considered “read,” the channel would remain marked as unread in your browser. This typically happens when one browser instance misses the bus notification that cleared the unread status. Steps to reproduce: 1. Open Discuss as the same user on two browsers (A and B) 2. Send a message to said user 3. Stop bus notifications on browser A 4. Read the message on browser B 5. Re-enable bus notification on browser A 6. Open the channel on browser A -> not being marked as read This happens because the method `_set_last_seen_message` skips sending the notification when the message seen is older than the current `seen_message_id` (previously set by the other browser). This commit fixes the issue by setting the `allow_order` parameter in the rpc call. task-4863058 Forward-Port-Of: odoo/odoo#224881 Forward-Port-Of: odoo/odoo#218623
This update fixes an internal test issue so standalone tests correctly verify faketime behavior. It helps ensure automated testing catches timing-related problems consistently, reducing the risk of unnoticed regressions.
Original PR description
Standalone tests don't enter faketime mode. Forward-Port-Of: odoo/odoo#224077
This update prevents a confusing system error when someone saves a view with an unsupported XML tag. Users now receive a proper validation message, making the issue easier to understand and avoiding unnecessary error reports.
Original PR description
When a user tries to save a view with an invalid tag, an error occurs. **Steps to produce:-** 1. Go to Settings > Technical > User Interface > Views. 2. Click on New. 3. Add the view name. In architecture -> add `<template></template>`. 4. Try to save the changes. **Error:-** `ValueError:Wrong value for ir.ui.view.type: 'template'`. **Root cause:-** - The view type in `ir.ui.view` is automatically inferred from the `root tag` of the XML defined in the `arch` field. - In this case, `<template>` becomes the inferred view type, which is not part of the valid selections for the type field in the model `ir.ui.view`. **Solution:-** - Before calling `super().create(vals_list)`, add a validation check to ensure `values['type']` is in the allowed types. If not, raise a ValidationError. sentry-6561028171 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#207219
The organization chart now correctly identifies employees and managers when viewed from user, employee, or public employee forms. This prevents incorrect or missing links in employee profile views, improving reliability for HR users.
Original PR description
This update ensures that the correct employee and parent IDs are fetched depending on whether the widget is displayed in a `res.users`, `hr.employee` or `hr.employee.public` form. The `onWillStart` was removed since `useRecordObserver` is triggered in `onWillStart`, and both used to have the same logic. task-5039701 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225193 Forward-Port-Of: odoo/odoo#224456
Fixed an issue where opening an Employee form on a mobile device and tapping the gear menu could cause the app to crash. This improves reliability for mobile users managing employee information.
Original PR description
Opening the Employee form on mobile and tapping the gear icon could crash because `PresenceActionItems` was undefined. Initialize it and guard the template. task-5055564 Forward-Port-Of: odoo/odoo#224942
Refreshing the Thank You page in a survey live session no longer causes an error if a survey question was deleted in another tab. This improves reliability for presenters and participants by keeping completed live sessions accessible instead of showing a crash.
Original PR description
Currently, an error occurs when refreshing a live session's `Thank You` page after deleting a survey question. **Steps to reproduce:** - Install the `survey` module. - Create a `new survey`, `add a…
Currently, an error occurs when refreshing a live session's `Thank You` page after deleting a survey question. **Steps to reproduce:** - Install the `survey` module. - Create a `new survey`, `add a question` and click on `Create Live Session`. - Complete the survey and leave it on the `Thank You` page. - Switch back to the `first tab`, delete the question and `save` the survey. - Return to the `Thank You` tab and `refresh` the page. **Error:** `IndexError: list index out of range` **Root Cause:** At [1], the controller assumes the question exists and tries to access `index [0]`, but when the question has been deleted, the recordset is empty, causing an `error`. [1] https://github.com/odoo/odoo/blob/ffd9c0f96bda1bad1ad2059d9be2fae54b60eace/addons/survey/controllers/survey_session_manage.py#L236 This commit prevents a crash when refreshing a live session if the question was deleted. sentry-6736648824 Forward-Port-Of: odoo/odoo#225242 Forward-Port-Of: odoo/odoo#218312
This update fixes a failing mobile test in the Point of Sale app. It helps keep quality checks reliable so future Point of Sale changes can be validated with more confidence.
Original PR description
The mobile test was failing due to an issue. opw-5059482 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225127
This fixes an error that occurred when a settings header was configured without a label or linked field. Businesses can now use optional header labels in settings screens without causing the page to fail.
Original PR description
Before this commit, an error would occur if a header setting did not contain an attribute string or field. This was because the code tried to infer the label. However, the label should be optional. 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 Forward-Port-Of: odoo/odoo#225119 Forward-Port-Of: odoo/odoo#225080
Saving the document layout wizard no longer tries to update a company's bank account when the account number has not changed. This prevents unnecessary errors for trusted bank accounts while keeping the displayed account number available for review or real edits.
Original PR description
Description of the issue/feature this PR addresses: The document layout wizard (base.document.layout) attempts to write the partner’s bank account number even if it has not been changed. If the first…
Description of the issue/feature this PR addresses: The document layout wizard (base.document.layout) attempts to write the partner’s bank account number even if it has not been changed. If the first bank account is marked as trusted, Odoo blocks the write and raises an error. This PR prevents that error by only writing the account number when it has actually changed. Current behavior before PR: - The wizard shows the account_number field. - On saving, _inverse_account_number always writes to the first partner bank account. - Trusted bank accounts trigger an error: “You cannot change the account number or partner of a trusted bank account.” Desired behavior after PR is merged: - The wizard still shows the account_number field. - On saving, _inverse_account_number only writes if the value changed. - Trusted bank accounts that are not modified do not cause an error. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#224905
The signature dialog now avoids showing a drawn signature on top of the auto-generated signature. This prevents confusion when signing documents and gives users a clearer, cleaner signing experience.
Original PR description
Fixed an issue where both the auto-generated and drawn signatures overlapped in the signature dialog. This was caused by the system automatically setting the user's default signature to the drawn one when opening the dialog. Now, the dialog no longer defaults to the drawn signature, preventing visual overlap and ensuring a cleaner user experience. Forward-Port-Of: odoo/enterprise#93750
This fix prevents the website generator from continuing background checks after its screen has been closed or cancelled. It reduces avoidable crashes and keeps the website creation experience more stable for users.
Original PR description
In a component lifecycle, it may happen that onWillStart is called but not onWillUnmount. Indeed, if the component is destroyed before being mounted (because the current rendering has been cancelled), onWillUnmount isn't called. As a consequence, in the WebsiteGenerator component, the setInverval might never been called, thus producing an orm call every 10 seconds, when the component is destroyed. These calls lead to crashes ("Component is destroyed").
The solution is to use the onWillDestroy hook instead, which is always called.
Forward-Port-Of: odoo/enterprise#936797 changes
Resolved issues and error corrections
French payroll settings now include the missing country information needed by the configuration screen. This prevents upgrade validation errors and helps ensure the payroll module updates reliably.
Original PR description
The payroll settings view referenced `country_code` in its invisibility condition, but the field was missing from `res.config.settings`. This caused a validation error and access rights inconsistency during module upgrade. A related field `country_code` has been added, pointing to `company_id.country_id.code`. build_error-231428
The update clarifies the wording shown for stock accounting settings, helping users better understand what each option does. This reduces confusion when configuring inventory and manufacturing accounting behavior.
This fixes a configuration issue in Lithuanian payroll settings so Lithuania-specific options are shown or hidden correctly. It helps prevent confusing settings from appearing in the wrong country context and supports a cleaner setup experience.
Original PR description
Add a related field in res.config.settings to expose country_code , Then the view condition invisible="country_code != 'LT'" will work. build_error-231410
The website generator now reliably stops its background status checks when users leave or the screen is closed early. This prevents unnecessary repeated server calls and avoids crashes that could interrupt the website creation experience.
Original PR description
In a component lifecycle, it may happen that onWillStart is called but not onWillUnmount. Indeed, if the component is destroyed before being mounted (because the current rendering has been cancelled), onWillUnmount isn't called. As a consequence, in the WebsiteGenerator component, the setInverval might never been called, thus producing an orm call every 10 seconds, when the component is destroyed. These calls lead to crashes ("Component is destroyed").
The solution is to use the onWillDestroy hook instead, which is always called.
Forward-Port-Of: odoo/enterprise#93679Fixes issues in the salary offer form so users see cleaner messages and the correct contract template name when saving. This reduces confusion during salary offer preparation and review.
Original PR description
This commit contains few fixes for the salary offers form view: - Filter duplicate info messages - Avoid showing wrong name for contract template on save task-5030712
The employee form warning shown when a wage is below the Belgian minimum wage can no longer be edited. This prevents confusion and reduces the risk of accidental changes while still clearly alerting users to the issue.
Original PR description
When an employee’s wage falls below the minimum, the warning displayed on the employee form appeared with editable fields. This was misleading and could allow accidental changes. task-5051879 Forward-Port-Of: odoo/enterprise#93533
The website generator now again lets users choose a custom footer template, restoring an option that disappeared after the website builder refactor. This helps businesses keep their preferred website branding and layout when generating or editing website footers.
Original PR description
With the initial [website builder refactor], the possibility to select the custom footer template has been lost. This commit adds it again with a resource. Instead of modifying the view with the list of templates when one is created, it queries the server to know whether there is one [website builder refactor]: 9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-4367641
13 changes
Resolved issues and error corrections
The Discuss welcome screen now uses a shared application setting instead of temporary screen state to decide when it appears. This prevents inconsistent display behavior caused by page or component loading order, giving users a more predictable experience.
Original PR description
Before this commit, whether to display the welcome view was based on a component state, so it was dependent on the lifecycle of components This commit changes the condition so that it relies on the store which should prevent inconsistent state. https://runbot.odoo.com/odoo/error/111051
This update speeds up Odoo's internal test loading by avoiding an unnecessary tag check unless it is explicitly needed. It also helps prevent failures in environments where source files are not available, improving reliability for development and release validation.
Original PR description
`get_method_additional_tags` can be slow when there are a lot of test to load while the feature is only needed in rare cases. This commit removes the check if the corresponding tag is not in the config test-tags. This should also solve an issue when the sources are not available. Forward-Port-Of: odoo/odoo#225109 Forward-Port-Of: odoo/odoo#225061
When a user is archived, their activities are now found and removed even if they belong to a company that is not currently selected. This prevents old user activities from lingering and keeps activity lists accurate in multi-company setups.
Original PR description
**Steps to reproduce:**
- Set up one user with a new company
- With this user :
- Create sale order
- Create activity on the new sale order
- Go back to the admin user
- Disable the new company in the top right menu
- Archive the user
- Activities of the user are still present
**Issue:**
In `activities_to_delete = self.env['mail.activity'].search([('user_id', 'in', self.ids)])`, the access rights of the records used in the activities are checked, which means that the sale order domains are applied. If the given domain doesn't match (for example `('company_id', 'in', company_ids)` when the company_id is manually disabled), the search can miss the activity to unlink.
**Fix:**
Added `.sudo()` to ensure all of the user's activities of any company
are considered, overwriting the current company context.
opw-4716031
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#206813This update fixes an internal test issue so standalone tests correctly verify the expected time-handling mode. It helps keep Odoo's automated quality checks accurate and reduces the risk of unnoticed test gaps.
Original PR description
Standalone tests don't enter faketime mode. Forward-Port-Of: odoo/odoo#224077
Guided tours now wait for the screen update to finish after an action, such as opening a menu, before moving to the next step. This prevents tours from jumping backward or failing when page content changes quickly, making onboarding and automated guidance more stable.
Original PR description
Step to reproduce: - Create a tour - Add a step that click on a menuitem on the systray with a view already opened - Then add a step that click on the search bar of the view Before this commit, if the step of a tour was triggering an action (e.g.: a menuitem) and that the next step's trigger was finding an element on the view before the action has finished to update the view, then the tour was backwarding because the found element diseppeared when the new action loaded the new view. Now, the tour interactive wait that the action manager finish to update the view to be sure the get the right element for the step trigger. ISSUE: https://github.com/odoo/odoo/issues/214652 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Creating a debit note now keeps the chatter history clear by avoiding duplicate log messages. Users will see only the relevant debit note creation message, reducing confusion when reviewing accounting records.
Original PR description
* PROBLEM: install account_debit_note module, add a debit note -> check the log at chatter we will see 2 message, one is 'This entry has been duplicated from ...' and another is 'This debit note was created from..' * Fix by only keep one message log in that case * This continue work of https://github.com/odoo/odoo/pull/214302 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
The wishlist checkout test now allows more time to finish, reducing false failures when the process runs slowly. This helps keep automated validation stable without changing the customer-facing wishlist experience.
Original PR description
Increase timeout for wishlist tour. As it was taking too long to complete. runbot-229616 Forward-Port-Of: odoo/odoo#219653
The Indian e-waybill stock view now shows errors and warnings with the correct alert colors, making important messages easier to understand. Access errors are also handled more reliably, reducing confusion when users encounter permission-related issues.
Original PR description
Before: --- Error and warning colors were mismatched in the e-waybill view. In this commit: --- Fixed the e-waybill view to correctly display error messages - Errors now display in red (alert-danger) :red_square: - Warnings now display in yellow (alert-warning) :yellow_square: AccessError now handled correctly. --- task-5050937 Forward-Port-Of: odoo/odoo#225078
The signature dialog now avoids showing auto-generated and hand-drawn signatures on top of each other. This prevents a confusing visual overlap and makes signing documents cleaner for users.
Original PR description
Fixed an issue where both the auto-generated and drawn signatures overlapped in the signature dialog. This was caused by the system automatically setting the user's default signature to the drawn one when opening the dialog. Now, the dialog no longer defaults to the drawn signature, preventing visual overlap and ensuring a cleaner user experience.
This update fixes an automated Planning app test by using today's date directly when editing schedule data. It helps keep quality checks stable so future changes can be validated reliably before release.
Original PR description
Now the tour use edit with the date of today and not a function runbot build error: 164213
Users no longer encounter an error when trying to link a document to a vehicle or other record type that has no existing records. The system now prevents the unsupported link action instead of opening a wizard that would crash, improving reliability in empty setups.
Original PR description
*= documents_fleet Currently, when user tries to link a document with a vehicle and if there is no vehicle exists an error is raised. **Steps to Reproduce:** 1) Install `documents_fleet`…
*= documents_fleet Currently, when user tries to link a document with a vehicle and if there is no vehicle exists an error is raised. **Steps to Reproduce:** 1) Install `documents_fleet` module(without Demo Data). 2) Open Documents App. 3) Upload a file in `Fleet` folder. 4) Select the uploaded file and click on `'Link to a vehicle'` button. Error: `ValueError: invalid literal for int() with base 10: 'False'` Root Cause: The `link_to_record` method attempts to find the first record of the target model to use as a default value when opening the linking wizard. If no records exist, the search returns an empty recordset, and accessing `.id` at [1], on it results in the value `False`. The code then incorrectly constructs a default reference string like `fleet.vehicle,False`. The wizard crashes when it tries to parse this string and convert the `False` part to an integer. Solution: This commit prevents error by ensuring that the user cannot link a document to a model without existing records. [1]- https://github.com/odoo/enterprise/blob/83640d21b2c31ed9d572c48e02a9aeea9eb1607b/documents/models/documents_workflow_rule.py#L113 sentry-6792079496 Forward-Port-Of: odoo/enterprise#91888
Spreadsheet ownership is now restricted so portal users cannot become owners when they are not allowed to edit shared spreadsheets. This prevents permission issues and keeps spreadsheet access aligned with internal user rules.
Original PR description
Following the discussion I had with @flch-odoo regarding https://github.com/odoo/enterprise/pull/92134 , Since Spreadsheets can not be shared in edit mode to non-internal users, we prevent them from becoming owners. opw-4753670
This fix ensures a quality control test has the required serial number printing permission when run without demo data. It prevents false test failures in isolated module runs, improving reliability for maintenance and validation workflows.
Original PR description
## Issue:
The test `test_receipt_validation_triggers_serial_number_label_print` fails when running `quality_control` alone without demo data
## Cause:
The user is missing the group `stock.group_production_lot`, that enable serial number printing
As a result, the condition `self.env.user.has_group('stock.group_production_lot')` in `stock.picking` `_get_autoprint_report_actions()` is not satisfied
The `button_validate()` in `stock.picking` will have an empty report_actions and will not print anything
The Demo data that allow the test to work is in `stock`
https://github.com/odoo/odoo/blob/9b08449f25cd16dc15117d305726380298c313d8/addons/stock/data/stock_demo.xml#L176-L182
## Steps to reproduce:
- Install only `quality_control` (no demo data)
- Run the test `test_receipt_validation_triggers_serial_number_label_print`
related-to: https://github.com/odoo/enterprise/pull/90134
opw-4790427