Daily updates from Odoo
Wednesday, June 4, 2025
20 changes · 18.0
Resolved issues and error corrections
When editing content, users can once again search and select existing website pages while entering a link URL. This restores a basic website editing convenience and reduces the chance of broken or mistyped internal links.
Original PR description
Steps to reproduce: 1. install website, add a link into an editing area in Todo app 2. at the url input, we don't have the internal link suggestion (fuzzy search) when typing The PR target to 18.0…
Steps to reproduce: 1. install website, add a link into an editing area in Todo app 2. at the url input, we don't have the internal link suggestion (fuzzy search) when typing The PR target to 18.0 because fuzzy page search is considered as a basic function when website is installed. It's a functional fix for the html_editor In this PR, we've updated the linkpopover component of the html_editor to add a fuzzy page search feature to the URL input. Before 18.0, we created another OWL app to load the page anchors. Here we do it by using autocomplete component, users can now see and select from a dropdown of relevant Odoo page anchors as they type in the URL input field. To achieve this, we modified the popover template to include an autocomplete field specifically designed for the link popover. In the AutoCompleteInLinkpopover component, two new props were introduced: 1. inputClass: Allows customization of the input field's styling. 2. updateValue: Enables updating of the link popover's URL state when an option is selected from the autocomplete dropdown. We also remove the redundant linkpreview reload when clicking on apply, cause the loadAsyncLinkPreview is already called at onMounted. A unit test using hoot is added for testing the fuzzy page search in the linkpopover. task-4222657 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Point of Sale now blocks event ticket sales when required order-level event questions are left unanswered. This prevents incomplete event registration information and keeps mandatory question rules consistent across ticket and order questions.
Original PR description
Steps to reproduce: ------------------- 1. Create an event with a gloabl question, by checking the box "ask once per order", and mark it as mandatory. 2. In PoS, buy one ticket for this event, and leave this mandatory question unanswere. Observe the we're not blocked, we were able to keep the mandatory answer blank! Reason: ------- We are only validating that the mandatory questions on the registation level are valid, but not those on on the order level. Fix: ---- We do the same check for the global questions too. opw-4793837
This fix ensures that clicking a month or quarter value in a spreadsheet pivot table correctly updates the related dashboard filter. Users will now get the expected filtered results, such as December or Q4, instead of only filtering by the year.
Original PR description
Steps to reproduce: - Create a dashboard with a pivot table with a date field and a global filter on it. Ensure that the date field is set to "Month" in the pivot table and at least a value for the month of December is present. - Open the dashboard - Click on the "December" value in the pivot => Only the year is selected in the global filter, not the month. Same thing happens when the date field is set to quarter and the value Q4 is selected. Task: 4844417 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
Fixes an error that occurred when website editors clicked the publish button on a user profile page. This restores the expected ability to publish or unpublish profiles and may also prevent similar publishing errors in related website features.
Original PR description
Currently, an error is encountered when clicking on the publish button in the profile page in the website view. **Steps to Reproduce:** - Install `website_profile` module. - Navigate to the user's…
Currently, an error is encountered when clicking on the publish button in the profile page in the website view. **Steps to Reproduce:** - Install `website_profile` module. - Navigate to the user's profile page.`(/profile/user/2)` - Click on the publish button in the editor view. **Note:** - The error is generic and could be generated via different website modules as well (e.g, website_forum). **Error:** AttributeError: The method `res.users.website_publish_button` does not exist. **Root Cause:** - since [1] we are using `website_publish_button` method to publish/unpublish records, however, `res.users` model **inherits** the publishing fields from its `res.partner`, but not its related publishing methods [1]- https://github.com/odoo/odoo/commit/97d00377de0c32e919587a98210679376e27ecc4 **Solution:** - This commit ensures that the `res.users` model can handle publish/unpublish calls by adding the `website_publish_button` method to `res.users`. sentry-6356507720
This fixes a problem where users could not extend a text selection while scrolling through long editable content. The editor now avoids forcing the page back to the current selection when that selection is already visible, making selection smoother and preventing flickering.
Original PR description
**Current behaviour before PR:** Steps to reproduce: - Have a long content so that editable content becomes scrollable. - Scroll to the bottom of content. - Select the last line of text. - Try extending selection by scrolling through mouse. - Selection is not extending and it flickers. The issue happens because `scrollToSelection` function is invoked on selectionchange and forcefully scrolls to the selected content. As result, selection is not extending when scrolling. **Desired behaviour after PR is merged:** Now, `scrollToSelection` doesn't scroll to the selection if selection range is is within visible viewport area. As result, selection can be extended by scrolling. task-4756869 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix corrects account settings used during tax closing, including checks that tax group accounts can be reconciled. It also fixes mixed-up receivable and payable account assignments in Bolivian tax groups and the Spanish 0% tax group, reducing the risk of incorrect tax balances during closing.
Original PR description
In our [previous commit][1], there were still a few missing bits: - We forgot to check for the `reconcile` option on the accounts set on a tax group. - The Bolivian localization had its receivable and payable accounts mixed for the tax groups. We reversed them and created a new one. - The 0% tax group for Spain had its receivable and payable accounts reversed. We changed them as well. [1]: https://github.com/odoo/odoo/commit/925f8cbe6aebad20de5423814b43e4c07644e9e1 [task-3763030](https://www.odoo.com/odoo/project.task/3763030) Issues noticed in https://github.com/odoo/upgrade/pull/7787
Fixes an editor display issue where restoring a deleted embedded video with undo could leave the command hint and action buttons on different lines. The editor now waits until embedded content is fully mounted before repositioning these controls, keeping the writing experience clean and predictable.
Original PR description
Steps to Reproduce: 1. Insert a video using the /video command. 2. Place the cursor on the new line below the video. 3. Press Backspace to delete the video. 4. Press Ctrl + Z to undo the deletion. 5.…
Steps to Reproduce: 1. Insert a video using the /video command. 2. Place the cursor on the new line below the video. 3. Press Backspace to delete the video. 4. Press Ctrl + Z to undo the deletion. 5. Observe that the `Type / for commands` hint and the magic buttons appear misaligned on different lines. Current behavior before PR: - After undoing video removal, the video block is remounted and at that time powerButtons position updates but iframe loads after that. - PowerButtons update runs too early when video height is zero, causing misalignment. Desired behavior after PR is merged: - Introduce `post_mount_component_handlers` dispatched after each component mount completes. - PowerButtonsPlugin uses this to update positions after the video and iframe are fully ready. - Ensures powerButtons and hint paragraph stay correctly aligned after undo restores video. task-4832484 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Invoice screens in Spanish now display the outstanding credits section correctly, even when browser zoom or longer translated text is used. This prevents important credit information from being cut off and improves readability for Accounting users.
Original PR description
**Issue** When viewing an invoice in Spanish, the "Outstanding credits" section may overflow or be cut off on the right side. **Steps to Reproduce** 1. Install the Accounting module. 2. Switch the…
**Issue** When viewing an invoice in Spanish, the "Outstanding credits" section may overflow or be cut off on the right side. **Steps to Reproduce** 1. Install the Accounting module. 2. Switch the user language to Spanish. 3. Navigate to Contabilidad > Clientes > Facturas. 4. Open an invoice that has outstanding credits. 5. Set the browser zoom to 125%. 6. Observe that the outstanding credits widget content is truncated or overflows its container. **Root Cause** The field `invoice_outstanding_credits_debits_widget` was placed directly in the form without a layout container, causing it to misalign and overflow in cases where translated text or zoom scaling increased its width. The lack of a proper responsive layout prevented it from adapting gracefully. **Fix** Wrapped the field inside a `<group>` element with class `oe_subtotal_footer px-4` to ensure it inherits consistent padding and alignment with other form elements. This provides a flexible layout that handles longer text and browser zoom correctly, maintaining readability and visual consistency. opw-4716266 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where text could appear twice for another user when editing the same record in multiple tabs. The change keeps shared editing history consistent, reducing confusing duplicate content during collaboration.
Original PR description
Since 18.0, we don't store `nodeId` on a `Node` anymore. The error fixed by this commmit led to failure of the mechanism in charge of avoiding duplication of nodes during serialization of history steps. Steps to reproduce: - Open the same project task in two tabs, so that collaboration is enabled. - In one tab, type some text, select it, and make it bold. - Notice that in the other tab the typed text is duplicated. task-4825081
This fix prevents sales module updates from unexpectedly changing warehouse information on existing sales orders. It protects existing order data during module maintenance or upgrades, reducing the risk of accidental operational changes.
Original PR description
Since [1], `-u sale` will lead to a `write` on the WH of all existing SO, which is of course unexpected ORM side: While dealing with `sale` module, we drop the NOT NULL condition of the WH field https://github.com/odoo/odoo/blob/1c959dee906eba2f881904b06eeccd584f4653c6/odoo/models.py#L2520-L2542 Later, when processing `sale_stock` since there is a difference between the psql column and the orm field (nullable vs required), we call `_init_column`: https://github.com/odoo/odoo/blob/1c959dee906eba2f881904b06eeccd584f4653c6/odoo/fields.py#L1055-L1060 [1] d794b8da77c54cc257348d46482ae4b948460cc5 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Printing invoices with long Terms & Conditions text no longer creates an unwanted horizontal scrollbar in that section. This keeps invoice documents cleaner and easier to read for customers and internal users.
Original PR description
<b>Steps to reproduce:</b> 1. Go to Invoices > Create new 2. Add a long string in Terms & Conditions > Click "Print" <b>Issue:</b> - In Invoices, a horizontal scrollbar appears in the Terms & Conditions section. <b>Cause:</b> - The class `overflow-auto` was applied to the container, which triggers scrollbar when content overflows. <b>Solution:</b> - Replace `overflow-auto` with `overflow-hidden` to avoid overflow. <b>opw-4776919</b> Image of issue:  
This fix allows businesses to remove a Point of Sale manager from advanced access rights when needed. It helps keep employee permissions accurate and avoids managers retaining elevated POS access after their role changes.
Original PR description
Before this commit, it wasn't possible to remove a POS manager from the advanced access rights. opw-4774770 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The marketing card section added to robots.txt will now stay in the required standard format regardless of the website language. This prevents search engine crawler instructions from being translated into invalid text and cleans up the file formatting.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Set up a site in Dutch; 2. go to `/nl/robots.txt` Issue ----- File shows "Toestaan: /kaarten/", which is not a valid string for a robots.txt file. This section is also oddly indented. Cause ----- Inserting the additional text in a template override does not inherit the parent view's `t-translation="off"` setting. Solution -------- Add `t-translation="off"` to the template override, and ensure there's no indentation when generating the file. opw-4815818
The Time Off dashboard now uses the active running contract when an employee has overlapping contracts. This prevents leave balances and day calculations from being based on the wrong work schedule, such as using a full-time contract when the employee is currently part-time.
Original PR description
Steps:
- Install the hr_holidays_contract module
- Create two contracts for the same employee:
- Contract A (Part-time) starting from 01/01/2025 and set to Running
- Contract B (Full-time) also starting from 01/01/2025 and set to New
- open holiday dashboard for that employee
Description of the issue/feature this PR addresses:
The Time Off dashboard incorrectly considers the full-time contract instead of the part-time one, even though the part-time contract is in the running state.
Cause:
The contract selection logic did not correctly prioritize the running contract when multiple contracts existed for the same period.
Fix:
This PR updates the logic to ensure that:
- If a contract is in the running state at a given time, it is used to determine the working schedule and time off calculations.
- If no contract is running during that time and multiple contracts exist, the contract with the latest creation_id will be considered.
task-4724155This fix ensures sales orders that begin with a section or note are handled correctly in Point of Sale. It prevents incorrect or missing lot information, reducing errors when processing linked sale orders.
Original PR description
Before this commit, if the first line in a sale order was a Section or Note, it would not be included in the `read_converted` result. As a result, using the index to access the corresponding data and read `lot_names` could fail, leading to missing or incorrect `lot_names`. opw-4816447 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents imports from crashing when a record contains an empty selection field inherited from a parent record. Businesses can now export and re-import affected records reliably without manual data cleanup.
Original PR description
If the selection property of a parent record is NULL, and the record is exported and then re-imported, a TypeError occurs. This is resolved by returning an empty dictionary during import whenever the selection property's value is NULL in the parent record. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: opw-4670210 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an error when printing picking operations for deliveries involving kit products where one line uses packaging. It helps sales and warehouse teams complete delivery documents reliably without a system crash.
Original PR description
Step to reproduce : - Create a quotation with 2 products using kits - Use the delivery smart button - Change one of the line to use a packaging - Print the picking operation Problem: ZeroDivisionError: float division by zero [opw-4824380](https://www.odoo.com/odoo/project.task/4824380) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a test issue that could occur when certain accounting apps were installed without the Accountant app. It helps keep automated quality checks reliable across different installation combinations, reducing false failures during development and release validation.
Original PR description
If account and account_accountant are installed but not accountant the test test_change_payment_state_valid will fail This occurs because the valid payment states for batch payments change when accountant is installed runbot-226305
Closing a POS session with customer account payments now ignores cancelled or unposted accounting entries during reconciliation. This prevents session closing failures caused by invalid entries and helps keep payment processing smoother.
Original PR description
Before this commit, closing a session containing a customer account payment would attempt to reconcile all move lines related to the customer with the same account. However, some of these lines could belong to cancelled journal entries, leading to an error. opw-4843923
The Colombian DIAN invoicing setup now checks that a certificate contains usable data before trying to reload configuration. This prevents users from hitting an error screen when an invalid certificate file was saved, making the setup flow more stable.
Original PR description
The system crashes with the error because a certificate record exists (cert_sudo is not None), But the **pem_certificate field** is False. https://github.com/odoo/odoo/blob/18.0/addons/certificate/models/certificate.py#L282 **Steps to Produce:** 1. Navigate to **Settings > Certificates and Keys > Manage Your Certificates > Certificates**. 2. Add a new certificate using an invalid file and fill in the other required details. 3. Go to **Invoicing > Configuration > Accounting > Journals**. 4. Open any journal of type **Sales or Purchase**. 5. Go to **Advanced Settings** and click the **Reload DIAN Configuration** button. **Error:-** `TypeError: argument should be a bytes-like object or ASCII string, not 'bool'` **Solution:-** - Checked whether **cert_sudo.pem_certificate** is not False to avoid crash. **Sentry - 6373511231**