Daily updates from Odoo
Tuesday, March 4, 2025
19 changes
Resolved issues and error corrections
The attendance screen no longer shows approve or refuse actions when an employee has no extra hours to review. This avoids confusing managers with unnecessary buttons for attendance entries that are already approved by default.
Original PR description
Since logging new attendance is approved by default, the refuse/approve buttons for rejecting/approving extra zero hours should be invisible. task-4320142 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
A new automated test checks that saved popup snippets appear immediately when reused on another website page. This helps prevent a past issue where users had to manually toggle visibility before the popup appeared.
Original PR description
**Steps to Reproduce:** 1. Drop a popup snippet on any page (e.g., Home page). 2. Save the popup snippet for reuse. 3. Drop the same custom snippet on another page (e.g., Contact Us page). 4. Try to…
**Steps to Reproduce:** 1. Drop a popup snippet on any page (e.g., Home page). 2. Save the popup snippet for reuse. 3. Drop the same custom snippet on another page (e.g., Contact Us page). 4. Try to make the snippet visible on this page. **Specification:** Previously, when creating a custom Popup Snippet for later use and attempting to drag and drop it, the popup was not visible on the first attempt. The visibility needed to be manually toggled from the snippet options (it only became visible on the second click). This issue was addressed in commit https://github.com/odoo/odoo/commit/d8daeed8bac9c5e48882a25031dace0b9355c7d7, and it persisted from version 16.0 to saas-17.4. To prevent this issue from recurring, we have introduced a test tour in this commit to verify that custom popups are now displayed immediately after a drag-and-drop action, eliminating the need to manually toggle visibility. Commit that resolved this issue in version 18.0 : https://github.com/odoo/odoo/commit/edf81c13d8f2f6d29a77d68cbfa0dc9216da3c2a task-4088420 Forward-Port-Of: odoo/odoo#198912 Forward-Port-Of: odoo/odoo#184659
Fixes an editing issue where pressing Enter after an image-only list item removed its bullet and changed the list layout. Users can now continue lists with images more predictably, keeping notes and to-do content properly formatted.
Original PR description
### Steps to reproduce: - Open the To-Do app. - Create a list (e.g., `/list`). - Insert an image into a list item and press `Enter`. - Notice that the list item containing the image is outdented. ### Solution: - In `handleSplitBlock`, the `!closestLI.textContent` check did not handle list items containing only an image. Adding an `isEmptyBlock` check ensures the bullet point is preserved. ### Description of the issue/feature this PR addresses: - Pressing Enter in list item containing only an image removed the bullet point. ### Desired behavior after PR is merged: - Pressing Enter in a list item with only an image preserves the bullet point and creates a new empty list item. task-4586704 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update prevents an error that could occur when users pasted content into the editor under specific conditions. It improves editing reliability by safely handling empty invisible content during paste operations.
Original PR description
Description of the issue this PR addresses: Pasting content on a node with an invisible empty text node as the last child would result in a traceback. This occured because the empty node being removed when inserting text. task-4566557 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Archived products will no longer appear as choices when adding combo products to a sales order. This prevents sales teams from accidentally selecting unavailable or discontinued items, keeping orders aligned with the active product catalog.
Original PR description
steps: - create a combo product with 1 or more combo items - archive a product part of this combo - create an SO and add this combo product issue: - it shows archived product cause: - when product is archived the linked combo item line is not archived fix: - added an active filter in combo_configurator get data opw-4579038 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The candidate form now shows the full number of related applications, including inactive or refused ones. This gives recruiters a more accurate view of a candidate's recruitment history directly from the Applications button.
Original PR description
Description of the issue/feature this PR addresses: On the candidate form view, the "Applications" smart button doesn't show the correct count. It counts only active applications. Desired behavior after PR is merged: On the candidate form view, show the correct count on the "Applications" smart button including both active and refused applications. task-4473067 **Forward port:** 18.0 -> 18.1 Candidate was removed in 18.2 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The editor toolbar now hides link, AI, and translation actions when a user selects content across block elements, such as multiple table columns. This prevents confusing or invalid toolbar options from appearing and restores the expected editing behavior.
Original PR description
**Problem**: In previous versions, the link button (AI & translation too) was not displayed in the toolbar when the selection included block elements. However, this behavior has regressed, and the link button (AI and Translation too) now appears even when the selection spans blocks. **Solution**: Hide the link button (AI & translation too) in the toolbar when the selection includes block elements. **Steps to reproduce**: 1. Create a table in the editor. 2. Select multiple columns. 3. Observe that the toolbar incorrectly displays the link button. opw-4397649 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes the quick assign icon appear again when users hover over tasks in the Project kanban view. It restores an expected shortcut, helping users assign work from the task board without extra clicks or navigation.
Original PR description
Steps to Reproduce: - go to project and navigate to the`project.task` Kanban view. - hover over any task element. - the quick qssign icon is hidden. Cause: - the CSS class responsible for displaying the Quick Assign icon on hover was removed from the views. Solution: - Added a new class to ensure the Quick Assign icon is visible when hovering over a task. task-4461236
Customers and staff can now download files attached to sales order portal messages immediately after opening the preview page. This prevents an error page caused by an incorrect preview link, making document sharing from sales orders smoother and more reliable.
Original PR description
## Versions: 18.0+ No fix needed before as feature starts here ## Issue: An error page show up when trying to download files from SO portal preview. ## Steps to reproduce: - Create a new `Sale Order`…
## Versions: 18.0+ No fix needed before as feature starts here ## Issue: An error page show up when trying to download files from SO portal preview. ## Steps to reproduce: - Create a new `Sale Order` for any client with any product(s); - Click the `Send message` button in the chatter: - Write down any message and attach at least 1 file; - Send the message; - Click on the SO's `Preview` button that will redirect you to the portal; - **Don't reload the page**; - Move down to the chatter; - Hover the message containing the file(s); - Click the three dots then `Download Files`. ## Cause: The relative URL is created a wrong way, including an old way (<16.0) to access edition mode (even replaced by `get_client_action_url`[^1]) which we don't want here. Probably copy-pasted from https://github.com/odoo/odoo/blob/ddb03a55ac94b9fd48ae6ce138e70c0070bedd36/addons/website_sale/models/account_move.py#L23-L28 *We might want to remove it from here too but no bug declared yet (?)* opw-4545106 [^1]: https://github.com/odoo/odoo/pull/99926
Fixed an issue where special mentions such as @everyone could appear as raw HTML text instead of clickable links in mail messages. This improves message readability and ensures users can interact with mentions as expected.
Original PR description
Before this commit: Special mentions (@everyone) appeared as raw HTML instead of links because when message content is not `markup()`, it is rendered as text instead of HTML when using `t-out`. After this commit: This commit ensures special mentions are correctly rendered as links. Before / After  
Payment requests now use only the first email address when a customer record contains multiple addresses. This prevents payment provider issues, especially with Stripe, which expects a single email per payment request.
Original PR description
If the email field is provided, it must be unique as Stripe doesn't handle multiple emails per payment request. In Odoo, the field partner_email is designed for more than 1 email in order to send documents easily to multiple recipients. Considering the first email only for Stripe in case of multiple emails. opw-4576386
Users who have Project access but no Sales rights can now duplicate projects without encountering an access error. This prevents an unnecessary blocker in project administration while keeping sales permissions unchanged.
Original PR description
**issue:** If a user lacks Sales module rights, they are not allowed to duplicate a project. **steps to reproduce:** - Settings / Users & Companies / Users - Remove sales rights from the user while retaining rights in projects - In the project module, try duplicating a project An access error is raised because the ```reinvoiced_sale_order_id``` field is attempted to be read during the copy operation opw-4466519
The General Ledger search now skips draft accounting lines that do not have a name. This prevents an error when users search reports after resetting entries to draft and clearing their names, keeping reporting workflows uninterrupted.
Original PR description
### Steps to reproduce: - Create a draft vendor bill - Go to Accounting > Reporting > General Ledger - Include draft entries in the report - Click the three dots on a posted entry and view the entry - Reset it to draft - Delete the name of the entry and save - Return to the General Ledger - Type something in the search bar - Error ### Cause: This flow automatically search on the lines but draft lines have no name (null) so it crashes on `const lineName = line.name.trim().toLowerCase();`. ### Solution: Ignore lines with no names when searching. opw-4589598
This fixes an automated Knowledge calendar test that could fail on rare month-start dates. It improves release reliability by making the test use a stable date and correcting checks that were not validating the page properly.
Original PR description
Prior to this commit, `knowledge_calendar_command_tour` failed on the first day of the month, if it was a Saturday. This is because it creates an `ArticleItem` on Monday of the week containing the current date, which may be in the previous month, and then tries to find that same `ArticleItem` in the FullCalendar representation of the current month with week ends days hidden. In that view, with that setting, Monday of the current week is always shown (even if it is part of the previous month) UNLESS the first day of the month is Saturday. This commit also fixes some selectors using `:not` pseudo-class incorrectly (they were always true and did not verify anything). runbot-task-114354
This fix ensures copied databases using the Tyro point-of-sale integration are neutralized so they do not accidentally contact external payment systems. It helps support teams investigate customer databases safely without risking unwanted production impact.
Original PR description
This commit adds the missing neutralization necessary for the pos_tyro module introduced in 18.0 in [1] The purpose of the standard neutralization framework is to allow us to create database copies that will not interact with external systems in ways that could impact the production database (or if it is not possible to prevent the interactions, make sure that they are benign or won't result in actual changes), or impact the customers of the operator of the production database. This is mainly useful to allow safe support investigation on database duplicates. [1] https://github.com/odoo/enterprise/pull/79432
UrbanPiper order processing now verifies that the required fiscal position exists and belongs to the correct company. If it is missing or linked to another company, the system creates a valid one, helping prevent order or tax configuration issues.
Original PR description
Before this commit: === - If `urbanpiper_fiscal_position_id` is not set, the system attempts to retrieve the default UrbanPiper fiscal position. After this commit: === - The check ensures that if no valid fiscal position is found (either missing or belonging to a different company), a new one is created. runbot-115934
Fixes an issue where Knowledge article templates sent through the chatter were inserted below the user's email signature. Templates now appear in the intended message area, helping users send cleaner, properly formatted messages without manual repositioning.
Original PR description
Currently, the "Clipboard" functionality pastes templates at the very end of the text box, causing them to appear after the signature. ### Steps to reproduce 1. Install the `knowledge` module. 2. Open any view with a chatter. 3. Click the "Search Knowledge Articles" icon (ribbon icon next to the pager). 4. Select the "Welcome Mitchel Admin" article. 5. In the article, find a template and click the "Send as message" button. You should notice that the template is placed below the signature. ### Cause Since version 18.0, the full composer includes the signature. As a result, anything pasted at the end of the composer will appear below the signature. opw-4410141
Belgian Intrastat reports no longer show duplicate CSV and XML export buttons. This reduces confusion for users preparing Intrastat declarations and also fixes the related asset loading setup.
Original PR description
- Due to how _custom_options_initializer is handled with children reports, there is 2 xml & 2 csv buttons. This fix checks that they are added only once. - This commit also corrects manifest assets import
Creating a new Field Service task from a mobile view now correctly applies the default context, so the current user is set as the assignee when expected. This also avoids a debug-mode error caused by unsupported form options, improving reliability for mobile Field Service users.
Original PR description
Steps to reproduce ================== - Go to Field Service - Use a mobile viewport - Click on "new" Without debug: The default assignee is not the current user In debug: Invalid props for component 'ProjectTaskFormController': unknown key 'additionalContext', unknown key 'onClose' opw-4512178