Daily updates from Odoo
Saturday, July 26, 2025
24 changes
15 changes
Resolved issues and error corrections
Fixes a visual issue where dragged items could appear with the wrong width or height when certain page styles were applied. This improves consistency in drag-and-drop interactions, including in automation rule kanban views.
Original PR description
This commit fixes an issue in draggable_hook_builder where elements with !important percentage-based width or height styles would be incorrectly sized when dragged. The sizing would be computed relative to the document rather than the style computed by the hook. To address this, the hook now applies max-width and max-height styles explicitly. This helps enforce correct sizing and prevents !important rules from interfering with the visual consistency of dragged elements. The issue was first spotted in the actions kanban view present in the automation rules form view. task-4891808 Forward-Port-Of: odoo/odoo#219246
This fixes an internal issue where post-upgrade tests could be skipped when custom modules were present after an upgrade. It helps ensure upgrade validation runs as expected, reducing the chance of unnoticed problems after updates.
Original PR description
Since e4ca53b0a3780c298c280988997321c2be8e7d3f we compute `updated_modules` from information in the DB. This leads to an empty `module_names` list if there are custom modules after an upgrade. Since the `to upgrade` modules is non-empty, `module_names` gets the list of `registry.updated_modules` which is empty when we are just running post upgrade tests. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#220429
Users can now upload product documents without the quote builder immediately crashing when a non-PDF file is marked for inclusion inside a quote PDF. The system skips PDF-specific processing for non-PDF files and relies on the existing save-time validation to guide users, improving reliability during product document setup.
Original PR description
Currently an error occurs when user uploads a non-pdf file on product documents. Steps to replicate: - Install `sale_management` and go to products. - Open any product's form view and click on the…
Currently an error occurs when user uploads a non-pdf file on product documents. Steps to replicate: - Install `sale_management` and go to products. - Open any product's form view and click on the `Documents` smart button. - Click new and upload any non-pdf file. - On the field `Sale : Visible at`, select the value `inside quote pdf` and you will get the error. Error: `PdfReadError: EOF marker not found` The error occurs because at the line [1] the code requires a pdf file, and as we have passed a non-pdf file the error occurs. [1] - https://github.com/odoo/odoo/blob/e750244c3125a48e2ca030160b977bb0344609db/addons/sale_pdf_quote_builder/models/sale_pdf_form_field.py#L206 There is already a constraint made for this particular thing [2], but the problem is that the error is due the compute [3] (Because constraints are checked at the time of form saving, and compute runs when a field is changed so even before the constraint is checked the error will be triggered). [2] - https://github.com/odoo/odoo/blob/e750244c3125a48e2ca030160b977bb0344609db/addons/sale_pdf_quote_builder/models/product_document.py#L44-L45 [3] - https://github.com/odoo/odoo/blob/e750244c3125a48e2ca030160b977bb0344609db/addons/sale_pdf_quote_builder/models/product_document.py#L59-L61 This commit resolves this issue by skipping the pdf extraction if the file is not a pdf type, because we already have a constraint [2] that will trigger at save. sentry-6161120972 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#220574 Forward-Port-Of: odoo/odoo#215844
This fix makes an internal web test more reliable by ensuring simulated waiting is fully controlled during automated testing. It helps reduce random test failures under heavy system load, supporting smoother validation and releases without changing user-facing behavior.
Original PR description
Hoot provides us with "time control" features such as "advanceTime", which is useful for testing scenarios where we want to wait for some events to happen (such as a debounced function), but without…
Hoot provides us with "time control" features such as "advanceTime", which is useful for testing scenarios where we want to wait for some events to happen (such as a debounced function), but without actually waiting too much. The way it works is that hoot simply override setTimeout and related functions to keep track of all handlers and their scheduled time. However, this is not enough, as the real setTimeout is still by default called, so it can happen in some tests that when we advance the time by some amount, say 500ms, if the cpu load is very high, then other handlers that are scheduled AFTER the 500ms may have run as well. To fix this, we can use the freezeTime feature from hoot. It simply give the full control to hoot, and do not call the real setTimeout function. 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#220534
The Sales Order task counter now ignores task templates linked to the order, so users see only real active tasks. This prevents inflated task counts and makes the Sales Order overview more accurate for sales and project follow-up.
Original PR description
…count Before this commit, the tasks stat button displayed in the SO form view takes into account the task templates if the templates are linked to the SO. This commit adds a condition to exclude the task templates in the count displayed in that stat button. Steps to reproduce the issue ---------------------------- 0. Install sale_timesheet module 1. Go to Sales app 2. Create a quotation with a service product in which a task will be created once the quotation will be confirmed. 3. Confirm the SO 4. Click on tasks stat button 5. Click on the task containing in the list view 6. Convert that task into a template 7. Go back to the form view of the SO created. Expected Behavior ----------------- The Tasks stat button count should not take the template into account. Current Behavior ---------------- The Tasks stat button count take the template into account. task-4781135 Forward-Port-Of: odoo/odoo#209491
Creating a user from an employee record now checks whether another user already has the same email address. Instead of failing with an error, the system shows a warning, helping HR teams avoid disruption when employee and user emails overlap.
Original PR description
This error is triggered when creating a users from employee records. Steps to Reproduce: - Install the `hr` module. - create a `user`. - Create an `employee` using the same email as the user. - In…
This error is triggered when creating a users from employee records.
Steps to Reproduce:
- Install the `hr` module.
- create a `user`.
- Create an `employee` using the same email as the user.
- In the newly created employee record, click the Create User action.
`ValueError: UniqueViolation('duplicate key value violates unique constraint "res_users_login_key"\nDETAIL: Key (login)=(roman.hatossy@gmail.com) already exists.\n') while evaluating
"employees = env['hr.employee'].browse(env.context.get('selected_ids', []))\nif employees:\n action = employees.action_create_users()"`
This error occurs when attempting to create users from employee records, but user with the same email already exists in the system.
This commit ensures that users are created for employees only if no existing user is using the same email address. If a user with the employee's email already exists, a warning notification is displayed instead of error.
sentry-6600672947
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#210037This fixes the website form editor so adding form field options appears as the expected dropdown instead of a button. It also corrects how form field records are loaded after editing, preventing errors when switching field types such as Author or Guest.
Original PR description
Before the [html_builder refactoring], form option list had a dropdown, not a button, which was lost in the refactoring. To see the issue: - open website and start editing - drop form and click on it - click on a field and change its type to author/guest => 'Add new option' is a button instead of a dropdown Related to task-4367641 [html_builder refactoring]: odoo/odoo@9fe45e2b7ddb
This update repairs an automated website editor test that had stopped working after recent website builder changes. Re-enabling the test helps ensure link editing in the website builder remains reliable in future updates.
Original PR description
test_09_website_edit_link_popover tests was broken and disabled after the new website builder changes. This PR adapts the tour steps accordingly and re-enables the related test. 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
Restricted website editors no longer see or access the Theme tab in the website builder. This prevents users without design permissions from reaching theme settings and encountering access errors.
Original PR description
Since the `html_builder` version of the website builder, the "Theme" tab is always available. This should not be the case for restricted editors. This commit restricts the access to the theme tab to the users having the designer role. Steps ot reproduce: - Connect as a restricted editor user - Edit a page => The "Theme" tab should not be available. If you try to access it you get an access error. task-4367641
The self-ordering product header now shows product names using the intended color instead of defaulting to black. This keeps the customer-facing ordering screen visually consistent and easier to read with the configured design.
Original PR description
Previously, the product name in the header was displayed in black. This commit ensures that the correct color is applied when displaying the product name in the header. <img width="865" height="328" alt="image" src="https://github.com/user-attachments/assets/48aee736-be5a-48fb-84f6-0b2a32ae7dcd" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Belgian point-of-sale configurations using a blackbox now load the required fiscal category automatically without adding it to limited categories. This keeps fiscal data available while avoiding unintended category restrictions in POS setup.
Original PR description
Before this commit, we added automatically the fiscal data module category to the list of limited categories for config with blackbox in order to be sure to load it. Now we load it automatically without the need of adding it to the list of limited categories.
This fixes a leftover internal field name used by the Belgian POS blackbox integration after a previous naming update. It helps ensure the connected fiscal device reads status data consistently and avoids small processing errors at checkout.
Original PR description
We missed a 'value' key in the driver.data dictionnary when we updated to 'result' key.
This fixes an intermittent automated test failure when resizing calendar events embedded in Knowledge pages. The change makes the resize action happen reliably in one step, reducing false failures and improving confidence in release validation.
Original PR description
This commit fixes an indeterministic error in the knowledge_calendar_command_tour when a calendar view is embedded and an event is resized. The resize handler is only visible when hovering the event, which is required to actually be able to resize it. This commit merges both the "make resizer visible" step and the "resize the item" step into a single one as those actions should be done in one go, instead of separate steps (cf. the hovering state is kind of reset in-between the steps). Note: this matches the behavior of the CalendarView's unit tests helpers (`resizeEventToTime()`). runbot-error-163015 Forward-Port-Of: odoo/enterprise#91012
Printed Swiss payslips now show rates in a cleaner, easier-to-read format by removing unnecessary trailing zeroes. This improves the presentation of payroll documents without changing payroll calculations or employee data.
Original PR description
…d payslip In this PR we improve the rate display, which could include a lot of 0's after the coma. Forward-Port-Of: odoo/enterprise#90892
This fix ensures website and company fields on documents are shown only to the right internal users and only when relevant, such as when multiple websites or companies exist. It prevents unnecessary or inappropriate fields from appearing for portal users, improving clarity and access consistency.
Original PR description
Fixes the visibility of the `website_id` and `company_id` fields. These fields other than hidden from non internal users, they should be visible to internal users only when multiple websites or multiple companies are available, respectively. Partial revert of: ddf102e5 task-4505668 Forward-Port-Of: odoo/enterprise#90965 Forward-Port-Of: odoo/enterprise#86181
4 changes
Resolved issues and error corrections
Fixed a display issue where dragged items with certain forced percentage sizing could appear at the wrong size. This improves visual consistency when moving items, including in automation rule kanban views.
Original PR description
This commit fixes an issue in draggable_hook_builder where elements with !important percentage-based width or height styles would be incorrectly sized when dragged. The sizing would be computed relative to the document rather than the style computed by the hook. To address this, the hook now applies max-width and max-height styles explicitly. This helps enforce correct sizing and prevents !important rules from interfering with the visual consistency of dragged elements. The issue was first spotted in the actions kanban view present in the automation rules form view. task-4891808 Forward-Port-Of: odoo/odoo#219246
Users can now upload a non-PDF product document and choose quote PDF visibility without immediately triggering an error. The system skips PDF-specific processing for non-PDF files and relies on the existing save-time validation, making the product document workflow more stable.
Original PR description
Currently an error occurs when user uploads a non-pdf file on product documents. Steps to replicate: - Install `sale_management` and go to products. - Open any product's form view and click on the…
Currently an error occurs when user uploads a non-pdf file on product documents. Steps to replicate: - Install `sale_management` and go to products. - Open any product's form view and click on the `Documents` smart button. - Click new and upload any non-pdf file. - On the field `Sale : Visible at`, select the value `inside quote pdf` and you will get the error. Error: `PdfReadError: EOF marker not found` The error occurs because at the line [1] the code requires a pdf file, and as we have passed a non-pdf file the error occurs. [1] - https://github.com/odoo/odoo/blob/e750244c3125a48e2ca030160b977bb0344609db/addons/sale_pdf_quote_builder/models/sale_pdf_form_field.py#L206 There is already a constraint made for this particular thing [2], but the problem is that the error is due the compute [3] (Because constraints are checked at the time of form saving, and compute runs when a field is changed so even before the constraint is checked the error will be triggered). [2] - https://github.com/odoo/odoo/blob/e750244c3125a48e2ca030160b977bb0344609db/addons/sale_pdf_quote_builder/models/product_document.py#L44-L45 [3] - https://github.com/odoo/odoo/blob/e750244c3125a48e2ca030160b977bb0344609db/addons/sale_pdf_quote_builder/models/product_document.py#L59-L61 This commit resolves this issue by skipping the pdf extraction if the file is not a pdf type, because we already have a constraint [2] that will trigger at save. sentry-6161120972 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#220574 Forward-Port-Of: odoo/odoo#215844
This fix makes the automated check for resizing embedded calendar events in Knowledge more reliable. It prevents occasional false failures caused by the resize control disappearing during the test, helping keep release validation stable without changing user-facing behavior.
Original PR description
This commit fixes an indeterministic error in the knowledge_calendar_command_tour when a calendar view is embedded and an event is resized. The resize handler is only visible when hovering the event, which is required to actually be able to resize it. This commit merges both the "make resizer visible" step and the "resize the item" step into a single one as those actions should be done in one go, instead of separate steps (cf. the hovering state is kind of reset in-between the steps). Note: this matches the behavior of the CalendarView's unit tests helpers (`resizeEventToTime()`). runbot-error-163015 Forward-Port-Of: odoo/enterprise#91012
Printed Swiss payslips now show rates in a cleaner format without unnecessary trailing zeros after the decimal separator. This makes payroll documents easier to read and more professional for employees and payroll teams.
Original PR description
…d payslip In this PR we improve the rate display, which could include a lot of 0's after the coma. Forward-Port-Of: odoo/enterprise#90892
4 changes
Resolved issues and error corrections
This update adds missing labels to automated tests so they are run and measured correctly under the newer testing system. It helps maintain confidence in Helpdesk and subscription payment quality without changing customer-facing behavior.
Original PR description
With the new test-tags features that allows to add additional test tags at runtime, the tests that starts a tour or that are using a query_count and that are not detected as such must be tagged respectively `is_tour` or `is_query_count`. Forward-Port-Of: odoo/enterprise#90690 Forward-Port-Of: odoo/enterprise#89934
Text shown in parts of Documents and Studio was moved into standard translation-ready files. This helps ensure users can see these interface labels in their selected language instead of untranslated text.
Original PR description
Inline XML templates aren't translated. This commit redefines inline XML templates containing human-readable strings as full-fledged XML files so that they can be translated. Community: https://github.com/odoo/odoo/pull/219894
Printed Swiss payslips now show rates in a cleaner format without unnecessary trailing zeroes after the decimal separator. This makes payroll documents easier to read and more professional for employees and HR teams.
Original PR description
…d payslip In this PR we improve the rate display, which could include a lot of 0's after the coma. Forward-Port-Of: odoo/enterprise#90892
This fix makes automated checks for embedded calendar events in Knowledge more reliable when resizing events. It prevents intermittent failures caused by the resize control disappearing between actions, helping maintain stability without changing user-facing functionality.
Original PR description
This commit fixes an indeterministic error in the knowledge_calendar_command_tour when a calendar view is embedded and an event is resized. The resize handler is only visible when hovering the event, which is required to actually be able to resize it. This commit merges both the "make resizer visible" step and the "resize the item" step into a single one as those actions should be done in one go, instead of separate steps (cf. the hovering state is kind of reset in-between the steps). Note: this matches the behavior of the CalendarView's unit tests helpers (`resizeEventToTime()`). runbot-error-163015 Forward-Port-Of: odoo/enterprise#91012
1 change
Resolved issues and error corrections
Printed Swiss payslips now show rates in a cleaner format without unnecessary trailing zeros. This makes payslip information easier for employees and payroll teams to read while avoiding confusing number formatting.
Original PR description
…d payslip In this PR we improve the rate display, which could include a lot of 0's after the coma. Forward-Port-Of: odoo/enterprise#90892