Daily updates from Odoo
Friday, June 27, 2025
21 changes
7 changes
Resolved issues and error corrections
This fix stops page navigation details from being sent with every server request, making views load more consistently after refreshes and improving cache reliability. The website editor was updated to use the correct navigation information directly, preserving expected behavior while avoiding unnecessary cache misses.
Original PR description
Before this commit, the action service added a `params` key into the context, typically when doing a `loadState`, i.e. loading the state from the url. The value of that key was the state of url (an…
Before this commit, the action service added a `params` key into the context, typically when doing a `loadState`, i.e. loading the state from the url. The value of that key was the state of url (an object with, amongs other things, a `actionStack` key, representing the current breadcrumbs, a typical JS thing). Adding this key was a mistake from day 1, as it was then sent to the python at each rpc. It means that the context sent to load a form view was different before and after a page reload, which doesn't make sense. Worse, it caused an issue with the newly introduced cache system [1], as we did a cache miss on reload, due to that altered context. To circumvent that, we manually removed that key in RelationalModel, before loading data. However, this caused an issue in website, as the code was actually using that `params` key mecanism: they relied on the fact that it was automatically added by the framework in some cases (F5), and built it themselves in other case (calls to doAction). This commit properly fixes the issue we tried to fix in [1]: we no longer add the `params` key when loading the state from the url. So we don't need to remove it later anymore. We obviously had to adapt a bit the code in website. We added some props to parameterize the WebsideBuilder action, and that component now also reads directly into the state of the router. We also introduced an `extractProps` mecanism (like we have for fields), to convert an action (especially its `params`) into props to provide to the client action itself. [1] https://www.odoo.com/odoo/project/133/tasks/4479845 task-4901018
When website editors add a Newsletter form but cancel the mailing list setup, the snippet is now fully removed as expected. This prevents leftover unpublished changes and keeps the website builder behavior clean and predictable.
Original PR description
*: website_mass_mailing This commit properly cancels the drop of a Newsletter snippet when no mailing list exists and the dialog is cancelled. Indeed, it was removing the element manually, instead of using the provided mechanism, i.e. returning `true` in the `onSnippetDropped` handler. This caused some uncommitted mutations to stay after cancelling the dialog. A notable change is that the entire snippet is now removed, instead of only the "Newsletter Form". It is more correct, as adding the form later would not result in the intended options behavior anyway. The CSS rules were also modified to make them more specific to the "Newsletter Form". The code was also cleaned a bit. task-4367641
The spreadsheet dashboard now handles cases where a linked record is missing or cannot be accessed, instead of crashing when users click it. This prevents disruptions in dashboards such as Logistics or Manufacturing and keeps users in their workflow.
Original PR description
Steps to reproduce: - Open the Logistics / Manufacturing dashboard - Click on OdooBot in the Top Responsible Section - Boom Task: 4894828 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 update brings the spreadsheet component to the latest version, fixing several issues that could disrupt editing and navigation. Users should see smoother pivot table interactions, better keyboard selection behavior, fewer crashes in formatting panels, and clearer link tooltips in spreadsheet cells.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/5cecc0ed4 [REL] 18.4.1 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/5cecc0ed4 [REL] 18.4.1 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/80608aa25 [FIX] animations: fix pivot collapse animation [Task: 4894210](https://www.odoo.com/odoo/2328/tasks/4894210) https://github.com/odoo/o-spreadsheet/commit/3c8fb24ef [FIX] composer: zone selection with arrow keys [Task: 4890605](https://www.odoo.com/odoo/2328/tasks/4890605) https://github.com/odoo/o-spreadsheet/commit/a750a4062 [FIX] Selection: Fix navigation through merges [Task: 4873718](https://www.odoo.com/odoo/2328/tasks/4873718) https://github.com/odoo/o-spreadsheet/commit/f09ac3bed [FIX] CFSidePanel: do not crash when deleting the edited CF [Task: 4880418](https://www.odoo.com/odoo/2328/tasks/4880418) https://github.com/odoo/o-spreadsheet/commit/a5b7cad60 [REL] 18.4.0 [](https://www.odoo.com/odoo/2328/tasks/) https://github.com/odoo/o-spreadsheet/commit/7389b696e [IMP] clickable cell: add tooltips on links [Task: 4551511](https://www.odoo.com/odoo/2328/tasks/4551511) https://github.com/odoo/o-spreadsheet/commit/3e938c19a [FIX] SidePanel: Export interface to resolve types [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Mehdi Rachico (mera) <mera@odoo.com> Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
The website builder's Add to Cart button now works correctly when linked to products that have variants. This prevents an error during page editing, helping teams create ecommerce pages without interruption.
Original PR description
Steps to reproduce: - Drop the "Add to Cart" button - Select a "Product" that has variants (for example "Customizable Desk") - Traceback This bug was introduced by b4b215325db61fbbe9793545293c8b6fbc99f310 which moved the implementation of some function but did not declared the correct dependencies. That commit also renamed the id "addToCartAction" to "addToCart" to use that name for the class and be coherent with the other actions whose class are their id suffixed by "Action". But that rename is a poor choice in this case, because "Action" in the id refers to the action taken when a visitor clicks "Add to Cart", which is unrelated to the concept of `BuilderAction`. task-4367641
This fix stops editing tools such as links, formatting, media, and other HTML insertions from appearing or applying when users are editing plain text areas like blog titles or descriptions. It helps keep content clean and prevents accidental formatting issues when editing website, blog, forum, and similar pages.
Original PR description
> [LEBL] on /blog, edit mode, no overlay while we are able to change description and title + don't display link popover in that case (same in other modules like forum, etc.) (Just edit text content so remove toolbar)
This fixes cases where editor tools, links, toolbar actions, or content insertion options appeared in places where they should not be available. Users get a cleaner editing experience and are less likely to insert unsupported content in AI, appointments, knowledge articles, or report editing screens.
2 changes
Resolved issues and error corrections
Fixed an issue that prevented recipients from completing a document signature when SMS verification was enabled. The signing link now uses the correct access information, avoiding an error after entering the received SMS code.
Original PR description
To reproduce: ============= - Activate and set up the SMS authentication for the Sign app. - Send a document for signature request with sms validation for a contact. - Go sign the document via the signature request link, sign and validate. - validate the recieved code and you will get the error: 'Error message: Sorry, an error has occurred. Please complete the document again.' Problem: ======== when constructing the signature request link, we retrieve the `accessToken` from `props`, while `accessToken` is not defined in the `props` of the `Document` component. Solution: ========= `accessToken` is defined directly in the `Document` component we can retreive it from `this.accessToken` opw-4813339
Web Studio now blocks invalid custom view changes before they can be saved. This prevents users from accidentally making Studio unable to open a form after editing technical view settings.
Original PR description
This error occurs when a user modifies a Studio-generated custom form view by updating it through the technical settings and adds an invalid XPath expression. As a result, Web Studio fails to open and load the view. **Steps to replicate:** * Install `contacts` and `web_studio` * Open form view for any contact and Add/remove any field using studio. * Go to technical>User Interface>Views> `Odoo Studio:res.partner.form customization` * Add the following line:<xpath expr='/form[1]/field[6]'/> inside data and save. * Go to contact form view and open studio. `ValueError:The element <xpath expr='/form[1]/field[6]'/> cannot be located in the main view` **Solution** * Prevent users from saving changes to a view by raising a validation error when an invalid XPath expression is detected. **Sentry-6678221213**
1 change
Resolved issues and error corrections
Intrastat reports now show weights and supplementary units using the decimal separator from the user's language settings. This prevents confusing or non-compliant report values for EU businesses using languages such as French or Spanish.
Original PR description
**Problem:** When having products that were sold with Intrastat (which permits the selling of products accross borders in the EU), the weight was not correctly displayed. The weight always had the…
**Problem:** When having products that were sold with Intrastat (which permits the selling of products accross borders in the EU), the weight was not correctly displayed. The weight always had the '.' decimal separator, regardless of the language. In French, the decimal separator is ',' but a product weighting 3 and a half kilos would be displayed 3.5 instead of 3,5. The same can be said about the supplementary unit column. **Steps to reproduce:** - Change your company to belong to the EU. - Change the langugage to one that takes a comma as a decimal separator, like French or Spanish. - Create a product that has a weight in the inventory tab, as well as intrastat values in the accounting tab. - Make a sale for this product with a client in another country belonging to Intrastat and confirm the invoice. - Go to Instrastat report in accounting in the audit reports. - The weight is not correctly displayed. **Cause of the issue:** The language of the user was not taken into account when fetching the data. **Fix:** The fields are now changed depending on the current language, to match the needed decimal separator. opw-4575332
11 changes
Resolved issues and error corrections
Users working in a branch could hit an access error when opening Profit & Loss reports if a parent-company journal used a different currency. The fix lets Odoo safely read the needed company currency so authorized accounting reports open as expected.
Original PR description
### Steps to reproduce: - Create a branch to a company - Create a journal on the parent company with a different currency from the company - Create a user that can access both the parent company and the branch, but can't change the settings of Odoo - Log as this user, select only the branch as current company - Accounting > Reporting > Profit & Loss - Access Error ### Cause: `_compute_display_name` on the journal reads `journal.company_id.currency_id` without sudo. The current user cannot read on `company_id` because of the rule `res_company_rule_employee`. ### Solution: Use `sudo()` to read the currency of the company. opw-4847500
This fix prevents the online checkout from crashing when a pickup location does not have a ZIP or postal code. Customers can now continue payment normally for physical product orders using such pickup locations, reducing failed checkouts and support issues.
Original PR description
Description of the issue/feature this PR addresses: Fix #215501 Current behavior before PR: Crash with 500 internal error. Desired behavior after PR is merged: No crash. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Landed costs are now allocated based on the quantity still available in each lot or serial number, rather than the original received quantity. This prevents sold-out or partially sold lots from keeping incorrect extra value in inventory reports, improving valuation accuracy.
Original PR description
**Problem:** the split of the landed cost between lots doesn't take into account if a lot has no quantity left or if it has less than it's initial quantity **Steps to reproduce:** - enable the "lot &…
**Problem:** the split of the landed cost between lots doesn't take into account if a lot has no quantity left or if it has less than it's initial quantity **Steps to reproduce:** - enable the "lot & Serial Numbers" and "landed costs" settings - create a storable product, tracked by lot - in general information activate "valuation by Lot/Serial Number" - select FIFO as the category - create a request for quotation for this product for a quantity of 5 and a unit price of 10.000 - confirm and click on the receipt smart button - on the move line click on the Lots/serial number widget on the right - create 4 lots (L1 with 1 units, L2 with 2 units, L3 and L4 with 1) - save and validate the picking - create a sale order for a quantity of 2 of this product, confirm it and validate the picking - create a new service product, in "purchase" check "is a landed cost" - open accounting/vendors/bills, create a new one for the same vendor as the purhase order - add a line with the landed cost and a price of 5000 (quantity of 1) - set a bill date and save - clik on "create landed costs" - in the "transfers" field write the refernce of the receipt of the PO - open inventory/reporting/valuation and type your product in the search bar **Current behavior:** 4 lines were created : a line of 600 for L1 a line of 1200 for L2 a line of 600 for L3 a line of 600 for L4 an additional issue, is that if we now sell the 3 remaining quantity and search our product in inventory/reporting/valuation the quantity will be zero but total value will be 600 **Expected behavior:** the spliting should adapt to the remaining quantities like it does when lots are not involved (for instance when there is a landed cost linked to a PO with a quantity of 5 but only 4 of those products are still in stock the value of the landed cost valuation line linked to this product is 4/5 of the landed cost) So here it should be : no line for L1 (no remaining quantity in L1) a line of 1000 for L2 (only 1 remaining, so a third of the 3000 (3/5 * 5000)) a line of 1000 for L3 a line of 1000 for l4 **Cause of the issue:** the quantity used is the one of the initial stock move line so it doesn't take into account the current number of product in the lot opw-4828963
This update refreshes Odoo's spreadsheet component to the latest version and fixes how users move through merged cells. It helps make spreadsheet editing smoother and avoids confusing cursor movement when working with merged ranges.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/b8dc99876 [REL] 18.0.36 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/30e17f06c [FIX] Selection: Fix navigation through merges [Task: 4873718](https://www.odoo.com/odoo/2328/tasks/4873718) Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Mehdi Rachico (mera) <mera@odoo.com> Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
Link editing now avoids changing the label for links that contain images, buttons, or other formatted content. This prevents images from being removed, button formatting from breaking, and link popovers from getting stuck when users edit email templates or rich text content.
Original PR description
reproduction: 18.0+18.1: 1. In Todo, insert an inline image, and create a link including the image and some text 2. click on the text part, click edit button, modify the label area and click apply 3.…
reproduction: 18.0+18.1: 1. In Todo, insert an inline image, and create a link including the image and some text 2. click on the text part, click edit button, modify the label area and click apply 3. the image is removed Test case 2: 1. go to Recruitment, and open an application and click "Send interview" 2. click on the link inside the template, change the url 3. apply, format of the button breaks 18.2: same flow with test case 2, click apply causing a traceback 18.3: same flow with test case 2, click on the link, do nothing and click away, the popover not close Fix: a partial back port of https://github.com/odoo-dev/odoo/pull/4633 The idea is that when the link doesn't only contain text, we don't show the label input field nor apply the label to the link. Because the label field extracts/display the text content of the link element, the field doesn't support html fragment, applying the label on a link including another element inside will break it. task-4881878 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The editor now removes hidden HTML comments when content is inserted, preventing a crash when users delete elements such as images in email templates. This makes editing saved templates more reliable without changing the visible content.
Original PR description
Problem: When content containing HTML comments is added to the editor, a traceback occur when deleting the commente element. Solution: Remove HTML comments from the content when it's inserted into the editor. These comments are added by `convert_inline` and will be re-applied on save if needed. Steps to reproduce: - Create a new email template - Add an image - Save - Delete the image using backspace - Traceback occurs opw-4863747 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Italian e-invoice files sent from child branches now use the parent company when generating the filename where appropriate. This prevents duplicate filename errors when parent and branch companies share the same tax details and send invoices through the same SDI setup.
Original PR description
Previously, when using SDI on a child branch, the file name was generated using the branch’s sequence. However, since we now send invoices using the parent company’s proxy setup, this could lead to duplicated sequence numbers between the parent and its child companies. To reproduce: - Create an Italian company and a branch with the same VAT and Codice Fiscale. - Send an invoice from the parent to SDI - Send another from the branch: duplicate file name error since the sequence is the same for both companies. We can fix this by using the parent company to generate the file name when relevant. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4881219) opw-4881219
This fix prevents sales orders from failing when a user limited to one company sells to a partner linked to another company. Intercompany stock movements now use the correct transit rules, reducing order confirmation errors and manual intervention.
Original PR description
**Steps to reproduce the issue:** - Install Stock, Sales applications - Set the allowed companies to Marc Demo to be only one company - Change the user to Marc Demo - Create a SO with partner another…
**Steps to reproduce the issue:** - Install Stock, Sales applications - Set the allowed companies to Marc Demo to be only one company - Change the user to Marc Demo - Create a SO with partner another company than Marc's company - Confirm the SO **Issue:** A traceback is raised: `No rule has been found to replenish "product" in "Virtual Locations/ Inter-company transit". Verify the routes configuration on the product.` **Root Cause:** - When the procurement group searches for a pull rule with a destination location set to the inter-company transit location (due to the partner's company being different), the rules for the inter-company transit location are not automatically applied. - The `_get_rule_domain` method https://github.com/odoo/odoo/blob/05cff3b7d866f6bc95c4b32f343ae14a4da946f2/addons/stock/models/stock_rule.py#L641-L653 modifies the destination location to the customer's location if: - The user belongs to the `base.group_multi_company` group. - The destination location is the inter-company transit location. - In this use case, the user does not belong to the `base.group_multi_company` group because they are restricted to a single allowed company. Additionally, the logic in `_compute_location_dest_id` https://github.com/odoo/odoo/blob/05cff3b7d866f6bc95c4b32f343ae14a4da946f2/addons/stock/models/stock_move.py#L227-L231 for inter-company transfers does not account for users with a single allowed company. **opw-4749870** 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
Shared Knowledge articles now show a clear access error when an external user cannot open an embedded view. This prevents users from seeing an endless loading state and makes permission issues easier to understand.
Original PR description
When sharing a knowledge article with an embedded view to an external user. The view was loading indefinitely without saying that the user doesn't have access to that view. Steps to reproduce: ------------------- * Go to the Planning app * Click the 'gear' icon * Click 'Knowledge' * Click 'Inset view in article' * Select an article to add it to * Share the article with portal user > Observation: Embedded planning keeps loading indefinitely. Works with other views that require access rights. Why the fix: ------------ Embedded view was loading regardless of the error state. opw-4664036
POS Restaurant now better keeps table orders in sync when the same table is used from multiple devices or browsers. This prevents staff from running into errors when one device releases a table while another is still editing or preparing payment, and ensures kitchen displays reflect cancellations correctly.
Original PR description
`point_of_sale`, `pos_restaurant` Steps to Reproduce: = - Open POS Restaurant in `two devices` (or `two different browsers`). - On Device 1: - Open any table & click on `Book Table`. - Add products & click the `Payment` button. (Do not validate the order) - On Device 2, open the same table and click on `Release Table`. - Back on Device 1 & try to add a payment line, partner, or enable Invoice. Issue: = - `TB` will occures `Finalized order can't be modified` Fix: = - Synced new order with the backend when a table is clicked to prevent conflicts - Kitchen Display now reflects order cancellation on click on `Table Release`. Task: 4788430 Related PR: odoo/odoo#210102
Spreadsheet users can once again insert cells in pivot tables. This restores a previously removed capability, helping teams adjust pivot-based reports without rebuilding them.
Original PR description
This commit reverts the commit c4a481aa5fd4c4168e2ec0252bca46ac95cf1a67 which removed the ability to insert cells in pivot tables. Task: 4707732