Wednesday, May 6, 2026
29 changes · 19.0
Resolved issues and error corrections
The cart now hides an unnecessary border around the quantity field for free shipping reward lines. This improves the checkout presentation by making unsellable reward items look consistent and less confusing to shoppers.
Original PR description
Steps to produce: --- - Install `website_sale` module. - Enable `Discounts, Loyalty & Gift Cards` from settings. - Go to `Website > eCommerce > Loyalty > Discount & Loyalty`. - Create a new program…
Steps to produce: --- - Install `website_sale` module. - Enable `Discounts, Loyalty & Gift Cards` from settings. - Go to `Website > eCommerce > Loyalty > Discount & Loyalty`. - Create a new program and edit the reward to set the reward type to `Free Shipping`. - Create a new product, set its price to 1000, and publish it. - Open the product on the website and add it to the cart > open the cart. Issue: --- - The quantity field for the unsellable product (Free Shipping reward) displays a border in the cart. Root cause: --- - The form-control class is applied to the quantity field at [1]. - This class includes a default border style defined in Bootstrap at [2]. Solution: --- - Apply the Bootstrap utility class `border-0` to remove the border from the quantity field for unsellable products. [1]https://github.com/odoo/odoo/blob/8638dbc21a7a3ebb3c9cc195d2249b4eb5c264ab/addons/website_sale/views/templates.xml#L2901 [2]https://github.com/odoo/odoo/blob/8638dbc21a7a3ebb3c9cc195d2249b4eb5c264ab/addons/web/static/lib/bootstrap/scss/forms/_form-control.scss#L5-L31 Before: --- <img width="822" height="135" alt="image" src="https://github.com/user-attachments/assets/d66c0445-5fd4-45c5-ae81-b4270cab6378" /> After: --- <img width="827" height="132" alt="image" src="https://github.com/user-attachments/assets/9cc2bd65-c542-4d1f-89de-2212fa968c8e" /> opw-6153161 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261275
The web interface now avoids unnecessary field selector refreshes when nothing relevant has changed. This reduces repeated background processing and can improve responsiveness in areas such as spreadsheets.
Original PR description
Currently, the component `ModelFieldSelector` will call the field service on `willUpdateProps` regardless of its current state. Since the introduction of the persistent cache, there is a slight overhead when calling the fieldService (notably caused by the call to deepCopy) and this call can now become costy when called repeatedly, which occurs in the spreadsheet component for instance. Task-6185388 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#262497
This fixes an issue in Mass Mailing where a duplicate email design block was added and some updated blocks were not properly marked as changed. The email editor can now correctly recognize outdated content and suggest the right replacements, reducing confusion when editing mailing templates.
Original PR description
Issue ============= - vxml was not bumped in [commit] for updated snippets. - A duplicate snippet template was introduced. Fix ============= Remove the duplicated snippet template and add missing vxml bumps so the editor can detect outdated blocks and suggest replacements correctly. [commit]: https://github.com/odoo/odoo/commit/81e43a8dd70ffa2746740f7bd5904007e76d2260 task-5959046
This fix prevents an error from appearing when a user removes the unit of measure from a sales order line. It keeps the sales order form usable by skipping a price discount calculation that cannot run without a selected unit.
Original PR description
Issue: --- Due to this issue, there is a TB when you try to remove uom. Steps to reproduce: 1- Create a SO and add a line. 2- On SOL, remove uom. You get a traceback. This is because of `ensure_one` here: https://github.com/odoo/odoo/blob/saas-18.4/addons/product/models/product_pricelist_item.py#L588 We can prevent the discount compute on the line which is causing the `compute_price`, when uom is not set. opw-6144426 Forward-Port-Of: odoo/odoo#262266
Discuss now correctly prioritizes contacts whose email addresses start with the user's search terms. This makes search results more relevant and helps users find the right people faster.
Original PR description
In Discuss, the function used to sort partners prioritizes those whose email addresses start with the search terms. However, due to an error in the programming of the corresponding condition, this check could never be true. This commit adjusts the condition so that it behaves as expected. Forward-Port-Of: odoo/odoo#262583
This fixes a display issue in the website editor where highlighted text that wrapped onto multiple lines could appear with the highlight covering the text in Firefox. Highlights are now ordered so they stay behind the text, improving readability and consistency across browsers.
Original PR description
# How to reproduce - Go to the website editor - Select some text that wraps - Add text highlight to that text # The problem On firefox, for every line of text that wraps, the highlight is displayed in front of the text instead of behind. # Why The highlights are made of SVG's that are added to the html element of the selected text. To be sure that theses SVG's are displayed behind the text, they have position: absolute and z-index: -1. Sadly, z-index and absolute positionning in an inline context (like in a span) is a browser specific behavior and in the case of firefox, seems to sometimes be ignored. Since the SVG's are appended in the html element after the text, they are rendered after. This fix aims to insert the SVG's in the html element before the text to make sure the rendering order is correct opw-5976647 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#254196
This fixes an issue in the website HTML editor where the color picker would close unexpectedly when users tried to change the color of inserted icons. Editors can now apply icon colors and background colors smoothly without interruption.
Original PR description
Problem: Trying to change the color of an icon causes the color picker to close when hovering over colors. Cause: When the icon (`span`) is wrapped inside a `font` element, the `toolbar_namespace_providers` for the icon return `false` because the `font` wrapper was not handled. As a result, the `namespace` becomes `undefined`, which causes the toolbar to close during selection changes. Solution: Handle cases where an icon is wrapped by styling elements (such as `font`) so the correct toolbar namespace is preserved. Steps to reproduce: - Insert a Font Awesome icon using `/media`. - Click on the icon to open the toolbar. - Try to apply a color or background color. - Notice the color picker closes instantly when hovering over colors. task-6109153 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The search bar menu now correctly highlights the custom group-by option when users hover over it. This also restores keyboard navigation to that option, making the menu easier and more consistent to use.
Original PR description
The CustomGroupByItem select was missing the `o-navigable` class, so the navigation system never registered it. On hover, it would not receive the `focus` class, which ensures proper styling of dropdown items. The fix also restores the ability to reach the CustomGroupByItem select with keynav. task-6108677 Forward-Port-Of: odoo/odoo#262608 Forward-Port-Of: odoo/odoo#260675
Folder-style report headers now display correctly when using right-to-left languages such as Arabic. This prevents broken invoice header styling and improves document presentation for RTL users.
Original PR description
Steps: - Enable rtlcss - Install an RTL language (e.g Arabic or change english direction to rtl) - Enable RTL language - Go to settings - Configure report layout document - Select Folder type - Try to print an invoice - The header title style is broken the svg image used in the title should be mirrored to be displayed correctly on RTL opw-6140277
The online shop product filmstrip now keeps a consistent height even when some items do not have images. Empty image-style filmstrips also show a placeholder, making the shop page look more polished and avoiding awkward blank spaces.
Original PR description
This commit fixes two issues regarding the filmstrip in the /shop page : - Adding a minimum height to the elements of the `default` and `bordered` designs, so that their heights remain consistent whether they contain an image or not. - Display a placeholder image for the `images` filmstrip if empty. task-5491550 | Before | After | |--------|--------| | <img width="613" height="103" alt="image" src="https://github.com/user-attachments/assets/852ef2ce-6265-4622-9e30-4e8112bbf264" /> | <img width="618" height="114" alt="image" src="https://github.com/user-attachments/assets/0933c0c2-a669-4236-9148-a25226214ce6" /> | | <img width="718" height="164" alt="image" src="https://github.com/user-attachments/assets/ac1b8d91-44fa-4ce0-8ddb-beba271a2423" /> | <img width="718" height="164" alt="image" src="https://github.com/user-attachments/assets/8676e9f9-074b-40e9-a75b-76561437c081" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Accounting sequences that do not start at 1 are now treated as valid, so users will no longer see warnings about them. This reduces confusion in list views and dashboards when companies use legitimate custom numbering setups.
Original PR description
We don't want to warn users about their sequence not starting at 1 as it is a perfectly valid case. This removes the warning both in the list view and in the dashboard. task-5253768
This fix ensures HR version searches by start or end date return the correct records. It matters because HR teams can now rely on date-based filtering to find the right employee contract versions without misleading results.
Original PR description
Previously, the searches defaulted to delegating the search to the contract_date_start/end fields instead of mapping to the actual computes of date_start and date_end, which caused incorrect results when searching for versions with a specified date_start or date_end. This PR fixes this by implementing the search method on date_start and date_end to correctly map the search to the expected values for date_start and date_end. Task-6067139 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#256581
A duplicate header snippet in the Mass Mailing app has been removed. This keeps the email design tools cleaner and avoids showing the same option twice to users building mailings.
Original PR description
A duplicated snippet template was introduced in a prior [commit], and is removed through this commit. [commit]: https://github.com/odoo/odoo/commit/81e43a8dd70ffa2746740f7bd5904007e76d2260 task-5959046
This change stabilizes an automated test for the HTML editor's power buttons by correcting the timing around when buttons are hidden. It helps reduce false test failures in Odoo's validation pipeline, improving confidence in releases without changing user-facing behavior.
Original PR description
The previous fix [1] removed one animation frame too many because the first one after arow down is needed in order to trigger the hiding of the power buttons in the first place, otherwise the timer can have elapsed without an animation frame when the runbot is slow. Then, for the other ones, the animation frame must not be awaited, otherwise we risk having an animation frame when the runbot waited more than the debouce delay, as explained in [1]. runbot-242466 [1]: https://github.com/odoo/odoo/pull/259654 Forward-Port-Of: odoo/odoo#262679
Deleting a replaced, center-aligned image in the editor no longer causes an error. This makes image editing in website and note content more reliable for users.
Original PR description
Steps to Reproduce: - Go to the website - Add an image and set it to center alignment - Copy the image - Paste it into a To-Do note - Replace the image - Click the Delete button Description of the issue: - A traceback error occurs when deleting the image after replacement. Cause: - When an image has display: block, the closestBlock function returns the image element itself as the closest block. However, this causes an issue, After the image is deleted, fillEmpty is called on this closestBlock, which refers to an image that has already been removed from the dom resulting in a traceback. Solution: - Instead of finding the image's closestBlock directly, find the closestBlock of its parent element. - This ensures the correct block is found even when the image has display:block. task-6171827
Employees who only have Timesheets access can now open project details from their timesheet entries without seeing an access error. This removes a blocker for staff recording time on customer projects while keeping project app access requirements unchanged.
Original PR description
### Steps to reproduce: - Download 'Sales', 'Project', 'Employees', and 'Timesheets' apps - Create an employee and link them to a user that doesn't have any access rights except to 'Timesheets =…
### Steps to reproduce:
- Download 'Sales', 'Project', 'Employees', and 'Timesheets' apps
- Create an employee and link them to a user that doesn't have any access rights except to 'Timesheets = User:own timesheets'
- In Sales, create a service with the following specifications:
- 'Create on Order' is 'Project'
- 'Invoicing Policy' is 'Based on Timesheets'
- Create a new quotation that requests this service and click 'Confirm'
- In 'Project' > 'Configuration' > 'Projects', choose the newly created project and add a line that has the new employee in the 'Invoicing' tab
- Log in as that employee and go to 'Timesheets'
- Create a new entry for the newly created project
- Click the project's name
> Access Error: You are not allowed to access 'Collaborators in project shared'
(project.collaborator) records.
### Cause of Issue:
This happens because the user doesn't have access rights to the 'Project' app, hence they don't have access to `collaborator_ids` which are retrieved here. https://github.com/odoo/odoo/blob/3dfb2849acd899ccbf4048f2a15dff3c74aed96d/addons/project/models/project_project.py#L1113-L1120
### Fix:
Since an access to the 'Projects' app isn't necessary to view a project assigned to you, `sudo()` is necessary for hr_timesheet users without project access rights.
opw-6074833
Forward-Port-Of: odoo/odoo#262649
Forward-Port-Of: odoo/odoo#258370Long radio button labels in configuration forms can now wrap onto multiple lines, preventing overlap with nearby fields in narrow layouts. This improves readability for users working in languages with longer translations, such as Ukrainian, without changing standard form label behavior.
Original PR description
Steps to reproduce: - Go to Accounting > Configuration > Product Categories - Open the "Goods" category in a narrow enough form layout - Check the "Reserve Packagings" radio field in Ukrainian #### Issue: In configuration forms, `.o_form_label` is forced to `white-space: nowrap`. Since radio option labels also use `.o_form_label`, long translated labels cannot wrap and can overlap the neighboring valuation field area. #### Fix: Exclude `.form-check-label` from that rule so radio labels can wrap without changing the behavior of regular form labels. opw-6086700 <img width="1872" height="966" alt="image" src="https://github.com/user-attachments/assets/db5e5803-b5e7-4904-a036-8bdfbb5504fc" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents errors when changes to monetary property fields are tracked in mail-related activity. It ensures the needed currency information is included, so users can update and audit these values without hitting a traceback.
Original PR description
`_create_tracking_values_property` was missing `currency_field` in `col_info` when processing monetary-type properties, causing a traceback. Fixed by injecting it from the property definition dict. task-6175845 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
This fix ensures payment-related error handling works consistently across different server environments. It prevents confusing technical JSON parsing errors from surfacing when a payment provider returns an unexpected non-JSON response, helping users receive the intended validation message instead.
Original PR description
Issue:
Requests library prioritizes simplejson over the stdlib json for JSONDecodeError if installed.
Since we have simplejson installed on all of our hosted platforms, when we try to use the json JSONDecodeError after a requests call the inconsistencys between simplejsons JSONDecodeError and jsons JSONDecodeError cause incompatibility issues.
Error:
'test_parsing_non_json_response_falls_back_to_text_response
self.assertIsInstance(e, ValidationError)
AssertionError: JSONDecodeError('Expecting value: line 1 column 1 (char 0)') is not an instance of <class 'odoo.exceptions.ValidationError'>'
Fix:
Catch all Exceptions instead of just the JSONDecodeError.
request package priority check:
https://github.com/psf/requests/blob/main/src/requests/compat.py
simplejson:
https://github.com/simplejson/simplejson/blob/19b5f94f235d3ac11646b82c02f292845b2aa184/simplejson/errors.py#L28
stblib json
https://github.com/python/cpython/blob/main/Lib/json/decoder.py#L20
opw-6086192This update resolves a minor visual issue with account reports where the bottom of the report wasn't properly spaced when the report content exceeded the page width. This ensures consistent and professional-looking reports for users.
Original PR description
Since this commit https://github.com/odoo/enterprise/commit/690eff4af4af6ec1cc634c8c55dcc2f349a9b723, the styling at the bottom of the reports is slightly broken, as there is no space below the final line (when the report takes more than the full page) task-https://www.odoo.com/odoo/project/967/tasks/6191828
This update fixes a minor error in the French financial reports (l10n_fr_reports) module. Specifically, a typo was corrected in the section name for 'exceptionnel' to ensure proper feminine agreement when referring to charges. This ensures accurate reporting in accordance with French accounting standards.
Original PR description
There was a small typo in section 8 of the pnl report. "exceptionnel" must go feminine when referring to charges. Forward-Port-Of: odoo/enterprise#116198
A technical issue prevented the confirmation email from being sent correctly when users clicked 'Access Options Anyway'. This update corrects a version mismatch in the email template, ensuring that confirmation emails are delivered with the correct content. This resolves a problem where users received blank emails.
Original PR description
The Confirmation mailing template ships an `s_text_block` section without `data-vxml`. The mass_mailing builder compares it against the canonical snippet's `data-vxml="001"` and flags the block as…
The Confirmation mailing template ships an `s_text_block` section without `data-vxml`. The mass_mailing builder compares it against the canonical snippet's `data-vxml="001"` and flags the block as outdated. Clicking ACCESS OPTIONS ANYWAY in the sidebar leaves the section flagged but saves an empty `body_html`, so the confirmation test email arrives blank. https://github.com/odoo/odoo/blob/b293ce50e0fc9355ffd233557f079916b514eac7/addons/mass_mailing/static/src/builder/plugins/version_control_plugin.js#L23 The section is structurally identical to the canonical snippet and to the version already used by the default theme template, so adding `data-vxml="001"` makes the version check match and the outdated banner is no longer shown. https://github.com/odoo/odoo/blob/b293ce50e0fc9355ffd233557f079916b514eac7/addons/mass_mailing/views/snippets/mass_mailing_text_snippets.xml#L3 https://github.com/odoo/odoo/blob/b293ce50e0fc9355ffd233557f079916b514eac7/addons/mass_mailing/views/themes_templates.xml#L41 Steps to reproduce: 1. Marketing Automation > New > Marketing > Double Opt-in > Create Campaign 2. Open the Templates smart button and click the Confirmation row 3. Click the welcome block in the email body 4. Click ACCESS OPTIONS ANYWAY in the right sidebar 5. Click Test and send to your address => arriving email body is empty Ticket [link](https://www.odoo.com/odoo/project/49/tasks/6143321) opw-6143321
This update resolves a bug that caused bank reconciliation balances to reset to zero after editing a bank statement move line when using multiple currencies. The fix ensures accurate balance calculations during bank reconciliation processes, improving financial reporting reliability.
Original PR description
Fixed an issue where when editing a move line for the bank reconciliation and setting the currency to a currency other than the company's currency if we edit the move line again we will find that the balance is equal to 0. task-6037835 Forward-Port-Of: odoo/enterprise#114898
This update resolves an issue where the Intrastat CSV export was failing due to data formatting and database synchronization problems. The fix ensures accurate data is included in the export, addressing a disruption to reporting on Dutch Intrastat data.
Original PR description
Since the technical refactoring of intrastat in 18.0, the csv export in `l10n_nl_intrastat` seems broken. Here is the fixes done in this commit: 1. `Commodity flow` is supposed to be a single diggit (6 or 7) but an empty blank space was hidden. 2. Switching the condition on `country_origin_code` as it was the opposite 3. Add a `flush_all` before calling the report during the export, to be sure the database is up to date. opw-5799126 Forward-Port-Of: odoo/enterprise#116153 Forward-Port-Of: odoo/enterprise#115791
This update resolves a build error in the l10n_ae_faf module related to a dependency issue with a related Odoo module. By adjusting the view's location, the update eliminates the need for the problematic dependency, ensuring the module builds correctly and functions as intended.
Original PR description
the inherited tax view form was raising an error since ubl_cii_tax_category_code is in the view under the module account_edi_ubl_cii and this module is not in the resolved dependencies of l10n_ae_faf but is usually autoinstalled. to fix this we are changing the xpath to be something that doesn't need the dependency of the account_edi_ubl_cii but only account. runbot-239123
This update corrects a previous issue where payslips were incorrectly referencing contract dates instead of the correct version dates. The fix ensures payslips accurately reflect the version of the contract being processed, leading to more reliable payroll reporting. This change was enabled by a related update to search functionality.
Original PR description
Prior to this commit, the version domain on payslips only looked at the contract dates rather than the version's dates. The domain was fixed in this commit to limit the domain based on the version's dates instead, and this was allowed after the searches on the version date_start and date_end fields were fixed in the odoo/odoo#256581. task-6067139 Forward-Port-Of: odoo/enterprise#113818
This update fixes a minor usability issue in the Helpdesk module. Previously, users attempting to delete a stage in a ticket kanban view were prompted with a warning if the stage contained tickets. Now, keyboard shortcuts are correctly assigned to the confirmation and discard buttons within this wizard, streamlining the deletion process.
Original PR description
Before this commit, when the user tries to delete a kanban column in ticket kanban view when the group by is stage_id. A pop-up appears when there is at least one ticket in that stage to notify the user it would be better to archive the stage or remove all tickets from that stage before deleting it. The Confirm and Discard buttons of that wizard does not have keyboard shortcut as the other discard button in the other views/wizards. This commit makes sure the keyboard shortcut is correctly assigned to those buttons. task-4885677 Forward-Port-Of: odoo/enterprise#89141
This update automatically refreshes the payment screen when the PIS (Payment Initiation System) status changes. Previously, users had to manually refresh the page to see the updated status, leading to delays. This improvement ensures payment information is always current and accurate.
Original PR description
There were some buttons like sign payment that were visible even when the PIS status was signed which needed a manual page refresh for the update to reflect, now it's reflected automatically on the PIS status change. task-5417365 Forward-Port-Of: odoo/enterprise#114299
This update fixes an issue where the AI systray button had excessive padding, creating an uneven look. The change removes unnecessary styling classes to streamline the design and ensure a consistent user experience. This improves the visual appeal of the application.
Original PR description
Remove the `btn` class because it adds additional padding, and eliminate the other unnecessary classes since the rules have already been applied in the `navbar.scss` file. task-5079952