Daily updates from Odoo
Wednesday, November 5, 2025
48 changes
5 changes
Resolved issues and error corrections
This change stops the chat bubble launcher from briefly moving when tapped on mobile. It keeps the bubble in place by adjusting how its position is defined, improving the experience in Discuss and on websites.
Original PR description
**Description of the issue/feature this PR addresses:** when clicking on chat bubble in mobile, the chat bubbles were moving down temporarily **Current behavior before PR:** when clicking on chat…
**Description of the issue/feature this PR addresses:** when clicking on chat bubble in mobile, the chat bubbles were moving down temporarily **Current behavior before PR:** when clicking on chat bubble in mobile, the chat bubbles were moving down temporarily. this happens because in some contexts, the chat hub bubbles are lift up, like in discuss app and at bottom of website page. This was done with a `transform: translateY()` but when the button was being clicked the chat bubble temporarily resets its unlifted position, as if no `transform: translateY()` was in effect. **Desired behavior after PR is merged:** This fixes the issue by using `bottom` CSS style rule. Chat hub bubbles part has a bottom value, the lift up is now designed to combine with the static bottom value, thus bubbles part stay at the desired position even when being clicked. Backport of #225757 task-[4914438](https://www.odoo.com/odoo/project/1519/tasks/4914438) Before  After  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234269
This change removes an extra test step that was no longer needed in the website product image removal flow. The newer website editor framework already handles the timing issue, so the test is simpler while keeping the relevant Python-side improvements.
Original PR description
Before #234150, the `remove_product_image_*` tours occasionally failed due to the incorrect assumption that removing an image from the DOM was immediately saved in the database. A fix was introduced by adding a final tour step to ensure that the asynchronous DOM save was completed before exiting the tour. This fix was later forward-ported to 18.4 with bb6825760095df30a3559bcbf69cfa17bf383654. However, in 18.4, the website editor framework was improved with the introduction of the `BuilderAction` class. The migration to this new framework already resolved the issues with the `remove_product_image_*` tours, rendering the fix in #234150 unnecessary. This commit reverts part of that fix by removing the final tour step while retaining some improvements in the Python code.
The edit favorite filter icon in the search menu no longer flickers when users hover over it. This makes the interface feel smoother and avoids small layout shifts in the popover.
Original PR description
This PR fixes an issue related to the edit favourite filter icon. Prior to this PR, the edit favourite filter icon used `d-none` by default and `display: block` on hover. Since `display: none` removes the element from the layout, the parent popover resized on hover, causing a flickering effect. This did not occur for filters with short labels (which had enough room for the icon) or for long labels (where the label was truncated). To prevent the flickering, the icon now uses `visibility: hidden/visible`, which keeps its space in the layout and avoids layout shifts. https://github.com/user-attachments/assets/5308c11e-8706-403c-80e3-fc05ab37a61d task-5237493 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234383
The gradient color picker now displays custom text more clearly in dark mode. This improves readability and makes it easier for users to choose colors while editing website content.
Original PR description
Steps to Reproduce: 1. Go to `Website` and enter edit mode. 2. Drop any `text` snippet. 3. Select the text. 4. Open color picker from the toolbar and switch to `gradient` tab. Issue: The custom text in the gradient tab of the color picker was not clearly visible in dark mode. Reason: The background is already light, and in dark mode the text color was also light. This resulted in insufficient contrast, making the text hard to read. Fix: Set the text color to black when button has no background image. In case of button containing style of background-image, the text color will be same as earlier. | Before | After | |-----------------------------|---------------------------------| | <img width="483" height="274" alt="image" src="https://github.com/user-attachments/assets/911c53f2-bb0e-4d70-9fb2-078ac17388c1" /> | <img width="473" height="326" alt="image" src="https://github.com/user-attachments/assets/c976fb49-6c10-47c0-b559-6a58cfcbcdc2" /> |
This change updates an internal website test helper so it works on a copy of the plugin list instead of modifying the original data directly. It helps keep test behavior predictable and reduces the risk of side effects in website-related tests.
Original PR description
The commit 25c602cff4db3f191434ab608ccdc51fa1ac75fb changed the internal of `addPlugin`, but did not follow the good practice of not mutating anything in a getter. In this commit, we instead create a mutated copy. task-5176469
8 changes
Resolved issues and error corrections
The website now only shows the language selector when there is more than one language available. This prevents an empty menu item from appearing in the header, which removes an unnecessary border or blank space and improves the page layout.
Original PR description
This PR calls the language selector placeholder only when multiple languages exist, avoiding an empty header list item that creates an unnecessary border or empty space. task-5150808 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#233744 Forward-Port-Of: odoo/odoo#231256
This update adjusts an automated sales/manufacturing test so it no longer depends on a field that only exists when Enterprise is installed. It helps keep the test suite reliable across different Odoo setups and prevents false failures during validation.
Original PR description
Cause ----- Test introduced in 2da1c78 uses the field `backorder_ids` which is only present when enterprise is installed https://github.com/odoo/enterprise/blob/67fdbc5ae724a184d62d8cfa23403b8c759b9317/stock_barcode_mrp/models/mrp_production.py#L10 ----- Error: 233584 Forward-Port-Of: odoo/odoo#233730
This update removes a flicker that appeared when hovering over the favorite filter edit icon in the search bar. The icon now keeps its space visible in the layout, so the menu no longer shifts size and behaves more smoothly.
Original PR description
This PR fixes an issue related to the edit favourite filter icon. Prior to this PR, the edit favourite filter icon used `d-none` by default and `display: block` on hover. Since `display: none` removes the element from the layout, the parent popover resized on hover, causing a flickering effect. This did not occur for filters with short labels (which had enough room for the icon) or for long labels (where the label was truncated). To prevent the flickering, the icon now uses `visibility: hidden/visible`, which keeps its space in the layout and avoids layout shifts. https://github.com/user-attachments/assets/5308c11e-8706-403c-80e3-fc05ab37a61d task-5237493 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adds the required accounting setup to an automated dropshipping test so it can run correctly even when demo data is not installed. It prevents the test from failing because a purchase journal was missing, improving the reliability of the test suite.
Original PR description
The test `test_dropship_return_backorders_bill_on_order` failed when running without demo data because no chart of accounts was installed, so no Purchase journal existed. As a result, `purchase_order.action_create_invoice()` raised: UserError: No journal could be found in company ... for any of those types: purchase This change inherits from `AccountTestInvoicingCommon` to have the necessary charts. [runbot-231285](https://runbot.odoo.com/odoo/error/231285) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#224775
This update removes a warning that could appear when using the booking form in Point of Sale during automated tours. It helps keep the POS experience cleaner and avoids confusing warning messages during testing and usage.
Original PR description
This will remove missing wigdet warning encountered when using the booking form from the point of sale. opw-5109501 Enterprise: https://github.com/odoo/enterprise/pull/96811
This update prevents archived reconciliation rules from showing up when users match bank transactions. It helps keep the list clean and reduces the chance of selecting outdated rules by mistake.
Original PR description
Steps to reproduce: ------------------- 1. Install Accounting (with demo data). 2. Go to Accounting > Dashboard and open the "Bank" journal. 3. Click on any unreconciled line and open the dropdown menu. 4. Select “Manage models” and archive one of the reconcile models. 5. Return to the bank journal and open any unreconciled line. Issue: ------- Archived reconcile models are still shown in the available model list. Cause: ------ The [SQL query](https://github.com/odoo/enterprise/blob/6615de3100ac1192039a5f276df278c543f2fabb/account_accountant/models/account_reconcile_model.py#L47-L118 ) does not filter out inactive reconcile models. Solution: ---------- Add a condition to include only active models. opw-5189700
This fix improves the spreadsheet version history view by avoiding an unnecessary company currency request. As a result, the view should open more efficiently and with less backend processing, especially in cases where this action is used frequently.
Original PR description
The perfomance commit added in https://github.com/odoo/odoo/pull/151725 did not account for the version history action that does not inherit from `AbstractSpreadsheetAction`. this missing value trickled down to a bug only detectable in the VersionHistory action and which is addressed in https://github.com/odoo/odoo/pull/232985 This commit adds the same performance to VersionHistory action. Task-5187293 Forward-Port-Of: odoo/enterprise#98197 Forward-Port-Of: odoo/enterprise#98038
This update corrects a linting check so that indexed relationships are properly recognized even when they come from inherited data models. It helps prevent missed indexing warnings, improving database performance checks and code quality.
Original PR description
Many2one fields that originated from an `inherits` model were not linted for indexing if they were an inverse to a One2many field, because those fields on the inverse model have `store=False`. The Many2one field that needs to be indexed is the one on the delegated model. This commit fixes this by always getting the `base_field` for the inverse field - if it's an inherited field, it will use the source field; if not, it will use the field itself. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
1 change
Resolved issues and error corrections
This change prevents an error that could appear when opening an employee avatar popover if the employee is archived or missing data. It improves reliability in Planning by handling empty results gracefully instead of showing a traceback.
Original PR description
Purpose of this PR: A guard has been added in the override of `get_avatar_card_data` to handle empty results and prevent traceback errors when data is missing. community PR: [odoo/odoo#231184](https://github.com/odoo/odoo/pull/231184)
9 changes
Resolved issues and error corrections
The Auto Transfers option in Accounting settings now points to the correct underlying module after a module rename. This means users can enable the feature from settings and have it install as expected instead of silently remaining unchecked.
Original PR description
### Steps to reproduce: - Install "account_accountant" - Go in the settings - Search for "Enable Auto Transfers", tick the option - Save - The option is not ticked ### Cause: This option is supposed to install the module for Account Transfers. The option field is called `module_account_auto_transfer`. It's supposed to install the module `account_auto_transfer`. But this module was [refactored in 19.0](https://github.com/odoo/enterprise/commit/77c248981c9e1ccbb5d4c88a0915a231f040df84) and renamed `account_transfer`. So the settings can't find the module to install, nothing happen, and the option stays the same. ### Solution: Give the variable the correct name: `module_account_transfer`. opw-5149342 Forward-Port-Of: odoo/enterprise#97513
VoIP ringtones now fully stop when a call ends, so they cannot be accidentally restarted with media controls on a keyboard or headset. This avoids confusing or disruptive sounds after calls are already finished.
Original PR description
Before this commit, users can resume "stopped" ringtones by pressing the Media Play/Pause key of their keyboard/headphones, even after the call has ended. After this commit, stopping the ringtone clears the audio source, effectively preventing it from being resumed. Task-5222704 opw-5186087 Forward-Port-Of: odoo/enterprise#98660
This fixes ESG carbon emission reporting so currency and unit values stay aligned when an emission factor changes. It helps users see accurate emission report details without stale or mismatched values.
Original PR description
The `currency` and `unit` fields on emitted emissions are supposed to be related fields on the emission factor. However, due to how the report combining accounting emissions and other emissions is implemented, they are not correctly updated when the factor is modified. This PR makes them computed fields and enable the "store" attribute en them. Despite there being no actual table to store data into, this allows us to do a round trip to the server to fetch the correct values. Forward-Port-Of: odoo/enterprise#98724
The signing confirmation dialog now has the right spacing and size after a document is signed. This fixes a visual issue introduced by a shared dialog behavior change, improving the post-signing experience for users.
Original PR description
Version: - master Steps to reproduce: - Upload a document. - Sign the document. - Notice that the “Thank You” dialog appears with incorrect margins. Issue: - After this [PR](https://github.com/odoo/odoo/pull/226581) was merged into the web module, the dialog component behavior changed medium-sized dialogs no longer include padding by default. Since the “Thank You” dialog is a medium dialog, it now appears with incorrect margins after signing a document. Solution: - Added a CSS class to fix the margin and adjust the dialog size. <img width="1570" height="789" alt="image" src="https://github.com/user-attachments/assets/4c6766df-6cc1-497a-9dcc-39a5f60054e1" />
Several screens now use the current standard button styling instead of an outdated style that no longer works. This keeps action buttons visually consistent and avoids confusing or broken-looking controls for users.
Original PR description
*: account_budget,industry_fsm,l10n_pe_edi,mrp_workorder,sign `btn-default` doesn't exist anymore, this is a dead utility class. This commit changes it for `btn-secondary` task-5236550 Com PR: https://github.com/odoo/odoo/pull/234401
Payroll processing now handles payslips that have no detected issues without causing an error. This prevents interruptions when checking multiple payslips, making payroll validation more reliable.
Original PR description
When there are multiple payslip on which we call get_error_message, some may have no issues. In this case, it raises a traceback as issues is False. Introduced in https://github.com/odoo/enterprise/pull/94748 Forward-Port-Of: odoo/enterprise#98803
This update resolves an internal warning in the Hong Kong payroll integration by using the correct access-checking method. It helps keep payroll processing stable and reduces noise from build or validation checks without changing business workflows.
Original PR description
Use `check_access` instead build-error-233453 Forward-Port-Of: odoo/enterprise#98654
### Before: - While printing payslip previously if an employee do not have any bank linked we were not printing anything,. ### After: - If no bank account present we will use: Amount to be paid to [employee_name]: [amount] task- 5101235 Forward-Port-Of: odoo/enterprise#95125
Original PR description
### Before: - While printing payslip previously if an employee do not have any bank linked we were not printing anything,. ### After: - If no bank account present we will use: Amount to be paid to [employee_name]: [amount] task- 5101235 Forward-Port-Of: odoo/enterprise#95125
The settings page now makes it clearer that accounting can be configured for inventory loss and production locations, including a direct link and helper text. This helps users find the right configuration when managing periodic closing alongside perpetual inventory accounting.
Original PR description
Forward-Port-Of: odoo/enterprise#98289
13 changes
Resolved issues and error corrections
This change adds a check to make sure menu entries still exist before the system tries to use them. It prevents upgrade and maintenance failures in HR-related apps when menus have been removed, improving reliability for affected databases.
Original PR description
To Reproduce: 1) make a database in 16.0 and go to developer mode. 2) Delete the menus 3) I mocked the views with upgrade mockcrawler. it failed for these xmlids: ``` hr_attendance.menu_hr_attendance_attendances_overview hr_timesheet.timesheet_menu_activity_use hr.menu_hr_employee ``` but we should have a check anyways. 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#230135 Forward-Port-Of: odoo/odoo#215426
A quality form view was moved to the module that actually depends on the required manufacturing work order features. This fixes module loading issues and helps ensure the view is available in the right place without causing installation or upgrade problems.
Original PR description
view `quality_point_routing_view_form_inherit_quality_mrp` was supposed to be in the module `quality_mrp_workorder` as it has `quality` and `mrp_workorder` as dependency.
The warehouse duplication test now checks whether a purchasing-related field exists before using it. This prevents the test from failing in setups where the purchasing module is not installed, making the test more reliable across different environments.
Original PR description
The test `test_duplicating_warehouses_recreates_their_routes_and_operation_types` was failing with:
AttributeError: 'stock.warehouse' object has no attribute 'buy_to_resupply'
A recent change added to the test :
wh_original.buy_to_resupply = False
However, `buy_to_resupply` is defined in `purchase_stock`. When this module is not installed, the field is absent and the test crashes.
Fix:
Only assign the field if it exists on stock.warehouse.
[RB-232580](https://runbot.odoo.com/odoo/error/232580)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prWhen customers booked a table from the website, the phone number field could stay empty. This update correctly copies the phone number from the related contact so staff can reach the customer more reliably.
Original PR description
Task: [#5005216](https://www.odoo.com/odoo/project/1737/tasks/5005216) --- The phone number field was not being populated correctly when booking a table from the website. It is now properly filled using the phone number of the `res.partner` associated with the appointment. The field remains unlinked to the partner, as it is just a copy. Forward-Port-Of: odoo/enterprise#92836
In dark mode, the account reports info popover now uses a lighter text color so the formula is readable. This improves usability for users who view reports in dark mode, especially when checking details in debug mode.
Original PR description
When using the dark mode, the popover available only in debug mode on the account reports (when pressing the info button on the right of each line) used to display the formula with a dark color, making it hard to read.
This update fixes an automated rental test so it can run in environments that do not include demo data. It removes the test’s dependency on accounting and stock settings that were not always available, preventing false failures during validation.
Original PR description
The test was failing in no-demo environments because it relied on accounting and stock configurations that were not present. When the test attempted to set property_valuation = 'real_time' on the product category, it triggered a ValidationError because the related stock accounts had not been properly set up for the test's transaction context. runbot-error-230417 Forward-Port-Of: odoo/enterprise#98155 Forward-Port-Of: odoo/enterprise#92292
This change fixes a problem where Gmail and Outlook could show the wrong error message when both features were installed. It also ensures users without an enterprise subscription see a generic message instead of triggering an unnecessary external service check.
Original PR description
Bug === When both module are installed, one overwrite the error messages of the other, because the methods have the same name. For database without enterprise, they won't have a subscription. We don't want to try reaching IAP in that case, and so we show a generic error message. For simplicity, we didn't make a bridge module just for that error, and we just check the version. Task-5113992
This update makes the product image removal checks more reliable in the website shop. It adds a short wait so the system finishes saving before the test verifies the result, which prevents occasional false failures.
Original PR description
Versions -------- 18.0+ Issue ----- The `test_website_sale_add_and_remove_main_product_image_no_variant` and `test_website_sale_remove_main_product_image_with_variant` tours fail because the main…
Versions -------- 18.0+ Issue ----- The `test_website_sale_add_and_remove_main_product_image_no_variant` and `test_website_sale_remove_main_product_image_with_variant` tours fail because the main product image is not removed as expected after the tour completes. Cause ----- Both tours assume that once the product `<img>` element is removed from the DOM, the action is fully completed. The tour then ends, and the remaining Python code verifies the result. However, this assumption can lead to issues. If the save request takes longer than expected, the Python code may execute prematurely and fail. Solution -------- Add a step at the end of both tours to wait for the `<img>` element to be fully saved and updated in the preview DOM. Additionally, during debugging, it was observed that using an alias URL (i.e., a redirect) to an `ir.attachment` could introduce further issues or slow down the test due to the server fetching the image with a remote call. To address this, this commit replaces the alias URL with a simple binary attachment. opw-5159593 runbot-163025 runbot-163615 Forward-Port-Of: odoo/odoo#234150 Forward-Port-Of: odoo/odoo#233978
The receipt printer test now once again sends a confirmation event after printing the status page. This means users will see the expected “Test page printed” notification, making it clear that the test completed successfully.
Original PR description
**Steps to reproduce:** 1. Connect a receipt printer to an IoT box, and pair the IoT box with Odoo. 2. In the device form for the receipt printer, click the 'Test' button. **Expected behaviour:** - Status receipt is printed and a 'Test page printed' notification is shown on the screen. **Actual behaviour:** - Status receipt is printed but no notification is shown on the screen. In odoo/odoo#229731, a QR code was added to the test status receipt printer action. This was achieved by directly sending commands to the printer with the `escpos` library, bypassing the `print_raw` method. However, by bypassing the `print_raw` method it also bypassed the status events that are normally sent to inform the Odoo user of the outcome of the print. This commit adds back these events to the receipt test print action. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix restores consistent behavior in website test utilities by always adding plugins through the helper functions. It helps keep automated website tests reliable after a previous change had partially undone this behavior.
Original PR description
This commit is repeating caafc9a8e356a8693d9c4a20fa29e6ace8359a39, but after the merge of 179480d996a19dff4d56265a610259b1c6e33f99 that undid parts of it task-5176469
This change corrects a validation issue in Odoo’s testing tools when a method’s parameter and return types are specified both in the documentation and in the code. It prevents the checker from failing on matching types, making automated quality checks more reliable.
Original PR description
This commit fixes a bug in `TestDocstring` when a method has type hint specified both in the docstring and as a type hint.
Example:
```
def example(a: list[int]) -> int:
"""
:param list[int] a: a list
:rtype: int
"""
return len(a)
```
the `_test_docstring_params` method will break twice:
- the `rtype` check raises `AssertionError: <class 'int'> != 'int'`
- the `type` check raises `AssertionError: list[int] != 'list[int]'`
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis change fixes an issue where the date picker could reopen after a user selected a date. It improves the experience when entering dates on forms such as customer invoices, especially when the system takes a moment to save the change.
Original PR description
Before this commit, the date picker would reopen after selecting a value. This was caused by `activeInput` being reset after the close, which took time when the `onChange` RPC was slow. As a result, `useEffect` was triggered before `activeInput` had been reset, causing the picker to reopen. To fix this, we've reduced the number of `useEffect` calls. It will no longer be triggered when the input value changes. Steps to reproduce: - Open Customer Invoice - Set the invoice date => the picker will stay instead of being closed. Note that this is a date field with an onChange 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 edit icon for favorite filters no longer flickers when you hover over it. This makes the search filter menu feel smoother and more stable for users.
Original PR description
This PR fixes an issue related to the edit favourite filter icon. Prior to this PR, the edit favourite filter icon used `d-none` by default and `display: block` on hover. Since `display: none` removes the element from the layout, the parent popover resized on hover, causing a flickering effect. This did not occur for filters with short labels (which had enough room for the icon) or for long labels (where the label was truncated). To prevent the flickering, the icon now uses `visibility: hidden/visible`, which keeps its space in the layout and avoids layout shifts. https://github.com/user-attachments/assets/5308c11e-8706-403c-80e3-fc05ab37a61d task-5237493 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234383
11 changes
Resolved issues and error corrections
The invoice totals on printed documents now use the company’s theme color consistently for both the label and the amount. In layouts with a colored totals area, the text also switches to a contrasting color so it remains easy to read.
Original PR description
Issue: - Totals amount text stayed black in invoices when using SA (and other) templates. - Only the label (inside strong) changed color, the value (inside span) did not. - In Boxed/Bubble, totals…
Issue:
- Totals amount text stayed black in invoices when using SA (and other) templates.
- Only the label (inside strong) changed color, the value (inside span) did not.
- In Boxed/Bubble, totals row has a colored background but text didn’t always switch to a readable .
Repro steps:
- Create company in Saudia Arabia
- Company → Document Layout: Light or Boxed (others also affected).
- Create a customer invoice with taxes and print without payment.
- Observe totals: label colored, amount remains black. In Boxed, amount can be unreadable over the colored background.
Cause:
- CSS targeted .o_total strong only; amounts are in span, so they weren’t colored.
Boxed sets totals cell background to the company primary, but text color didn’t flip to a contrast color.
Solution:
- General (all layouts): color the whole totals cells so label + amount are styled:
.o_total td { color: <company primary>; }
- Boxed override: ensure readable contrast on colored background:
#total .o_total td { background-color: <primary>; color: preview-color-contrast(<primary>); }
#total .o_total td strong { color: inherit; }
opw-5169079
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update restores the Swedish point-of-sale test tour by adding the missing IoT device mock. It matters because it allows the automated checks for this POS flow to run correctly again after earlier changes.
Original PR description
Due to changes introduced in odoo/enterprise#98179, the Swedish blackbox POS tour was broken. The fix is to add a mock for the IoT device, which was done in the forward ports but missed in 18.0. This commit adds the IoT mock to fix the tour. runbot-233700
This update adds the missing currency symbol next to event ticket prices in the event form. It makes pricing clearer for users and helps avoid confusion when working with ticket costs.
Original PR description
Add missing currency symbol next to the event ticket price in the event form view. Task-5114075 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change fixes a formatting issue in the editor where empty items inside tables or lists were not being handled correctly. It helps keep content consistent when users leave nested blocks empty, improving the reliability of edited documents.
Original PR description
Description of the issue this PR addresses: Commit [1] ensured that empty nodes are filled, but only handled the last element itself. If the last element was a container block (e.g, a table or list) containing empty child blocks such as or , those inner nodes were not filled. This commit ensures that is also applied to those leaf empty blocks nested within such container elements. [1]: 133478b --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes several spelling mistakes in the Surveys app, including menu labels, breadcrumbs, dashboard text, and a column heading. It improves the clarity and professionalism of the user interface, but does not change how the feature works.
Original PR description
**Surveys app misspellings on main menu item, dashboard name, breadcrumbs, and column label** Impacted versions: - 16.0+ (confirmed on Runbot, however the PR target is 18.0+ to only be applied on the latest stable release) Steps to reproduce: 1. Open any Community Runbot (or deploy Odoo locally) 2. Navigate to the **Surveys** app to view misspelling across multiple app views. Current behavior --> Expected behavior - "Participations" is not a word --> It should be "Participants" - "Quizz" is misspelled --> It should be "Quiz" Proposed changes highlighted in green [here on the screenshots](https://imgur.com/a/0vM48R0). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix corrects a problem in the editor where selecting table cells from right to left or bottom to top in Firefox could drop the first cell from the selection. It improves the reliability of table editing for users working in Firefox.
Original PR description
Steps to Reproduce: 1. Create a table in the editor (Firefox). 2. Select table cells backward (right → left or bottom → top). Description of the issue this PR addresses: - The first selected cell does not remain selected in Firefox when extending the selection backward. task-5094832 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
**Steps to reproduce** - With Studio, create a many2one field in relation to the Employee model. - Have a user with no "Employees" rights. - With this user and in mobile view, click on the field to select an employee. -> No records found. Note: the many2one_avatar_employee widget used in HR apps avoid this problem. **Cause** Issue since https://github.com/odoo/odoo/commit/e962860c6f0d8ec9e50bb376e1faab5c7bc69374 The `web_search_read` on the private employee model returns no record
Original PR description
**Steps to reproduce** - With Studio, create a many2one field in relation to the Employee model. - Have a user with no "Employees" rights. - With this user and in mobile view, click on the field to…
**Steps to reproduce** - With Studio, create a many2one field in relation to the Employee model. - Have a user with no "Employees" rights. - With this user and in mobile view, click on the field to select an employee. -> No records found. Note: the many2one_avatar_employee widget used in HR apps avoid this problem. **Cause** Issue since https://github.com/odoo/odoo/commit/e962860c6f0d8ec9e50bb376e1faab5c7bc69374 The `web_search_read` on the private employee model returns no records when an `image_*` or `avatar_*` field is part of the requested fields. This is because we try to fetch these fields https://github.com/odoo/odoo/blob/188a3fe45fb41463ff86d1fa5e930ab43fb70d0e/addons/hr/models/hr_employee.py#L240 but they are not stored on the public employee model, and will not be put in cache. When performing a read after that, these fields are missing from cache. We try to fetch them from the db https://github.com/odoo/odoo/blob/e962860c6f0d8ec9e50bb376e1faab5c7bc69374/odoo/models.py#L3185 but this fetch is again done using the public employee. This results in missing values and is interpreted as an access error, no data is returned in `web_search_read`. **Solution** Read the problematic fields to make them present in cache when the cache of the public employee is copied to the one of the private employee. opw-4297115 Forward-Port-Of: odoo/odoo#197575
This change updates the dropshipping test so it includes the accounting setup needed to create purchase invoices. It prevents the test from failing when demo data is not installed, improving reliability in automated checks.
Original PR description
The test `test_dropship_return_backorders_bill_on_order` failed when running without demo data because no chart of accounts was installed, so no Purchase journal existed. As a result, `purchase_order.action_create_invoice()` raised: UserError: No journal could be found in company ... for any of those types: purchase This change inherits from `AccountTestInvoicingCommon` to have the necessary charts. [runbot-231285](https://runbot.odoo.com/odoo/error/231285) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#224775
The mobile search panel popover now uses a background color that matches both light and dark themes. This improves readability and visual consistency for users on mobile devices, without changing the feature itself.
Original PR description
This commit adjusts the search_panel background color so it adapts correctly to both light and dark modes on mobile. It only affects the "popover" use case. task-5121027 Requires: - https://github.com/odoo/enterprise/pull/98248 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The mobile search panel now uses colors that fit dark mode better. This makes the interface easier to read and more consistent for users who work on phones or tablets at night or in low-light settings.
Original PR description
This commit adapts colors of search_panel for mobile in dark mode. | Before | After | |--------|--------| | <img width="904" height="1022" alt="image" src="https://github.com/user-attachments/assets/9136de22-3ce1-40e3-bb79-8f87c8ee2bf8" /> | <img width="372" height="653" alt="Capture d’écran 2025-10-29 à 08 37 39" src="https://github.com/user-attachments/assets/6aff402b-6dc8-46ce-8e2a-d55887374f51" /> | Requires: - https://github.com/odoo/odoo/pull/234361 task-5121027
This change corrects the automated tests for the tax reporting feature after a previous update caused them to fail. It helps ensure the tax report continues to behave as expected and reduces the risk of regressions in future updates.
Original PR description
See https://github.com/odoo/enterprise/commit/5291d0249ba925182fb9e670f9b46b9e57bda00c
1 change
Resolved issues and error corrections
The debug info popover in account reports now uses a readable text color in dark mode. This makes the formula details easier to read without changing how the reports work.
Original PR description
When using the dark mode, the popover available only in debug mode on the account reports (when pressing the info button on the right of each line) used to display the formula with a dark color, making it hard to read.