Tuesday, June 24, 2025
14 changes
6 changes
Resolved issues and error corrections
This fixes an issue in the website editor on Firefox where the text editing toolbar disappeared when users tried to change text color or background. Users can now format text colors reliably without losing the toolbar during editing.
Original PR description
problem: In the website editor, while editing text, it is impossible to change the text color or text background, only on Firefox. On Firefox, the DomListener was not focusing the right element, instead it was focusing the html document.
Duplicated Profit and Loss reports no longer fail due to internal label changes during copying. This prevents errors when users create and open copied accounting reports, supporting reliable financial reporting workflows.
Original PR description
**Issue** Duplicated Profit and Loss reports fail to open and raise an "invalid operation" error when accessed. **Steps to Reproduce** 1. Install the Accounting module and French localization. 2. Go…
**Issue** Duplicated Profit and Loss reports fail to open and raise an "invalid operation" error when accessed. **Steps to Reproduce** 1. Install the Accounting module and French localization. 2. Go to Accounting > Configuration > Accounting > Accounting Reports. 3. Duplicate the "Profit and Loss (2024)" report. 4. Navigate to Accounting > Reporting > Profit and Loss. 5. Attempt to open the duplicated report. 6. An error occurs. **Root Cause** During duplication, the label field of expressions is altered to include a " (copy)" suffix. Some formula expressions rely on exact label matches (e.g., i_1_2024.balance), so when "balance" becomes "balance (copy)", the lookup fails. This mismatch causes a KeyError when resolving subformulas like line_code.balance, breaking the report evaluation. **Fix** Prevent the duplication process from altering the label of expressions. There is no functional need to add " (copy)" to these internal labels, as they are not user-facing and must remain stable for formula resolution to work. Opw-4826749 X-original-commit: de68b1d3a1c321173ffa90018abc2bd971eedf0a 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 fixes cases where applying, changing, or removing text highlights left unnecessary hidden markup behind. Website and editor content now stays cleaner and more consistent, reducing formatting glitches and making future edits more reliable.
Original PR description
This PR has a few commits to clean up the DOM when the user performs operations on highlights. Some cases were not handled, which meant that similar highlights were not merged leading to a messy DOM.…
This PR has a few commits to clean up the DOM when the user performs operations on highlights. Some cases were not handled, which meant that similar highlights were not merged leading to a messy DOM. **[FIX] website: fix similar highlight merging** Steps to reproduce: Go to the website builder in edit mode Write "test1Test2" Select "test1" and put an underline highlight Select "Test2" and put another highlight Select "Test2" and change the highlight to underline Expected Behaviour test1 and Test2 are merged into the same highlight Current Behaviour test1 and Test2 are not merged into the same highlight. **[FIX] html_editor: ensure similar adjacent node are merged** Steps to reproduce: Go to a project task Type "test1 test2" in the editor Color "test1" in red Color " test2" in orange Color " test2" in red Current behaviour: "test1" and " test2" are not merged into the same <font> node. Expected behaviour: "test1" and "test2" are merged in the same <font> node. Technical explanation: When applying the color to "<font ...> test2", the common ancestor mutation node is the font node itself. The normalize and then mergeAdjacentInlines methods are therefore called with this node as the root. The problem is that mergeAdjacentInlines does not check if the root should be merged with adjacent nodes. While it is not a visual bug for colors, it matters for highlights who's impacted by the same bug. e.g. Two unmerged "circle" highlight is not visually the same than one merged "circle" highlight. **[FIX] website: avoid empty node when removing highlight format** Steps to reproduce: Go to the website builder in edit mode Select a text Put a highlight with the highlight button in the toolbar Select the end of the highlight Click on "Remove Format" in the toolbar (eraser button) Current behaviour: The highlight is removed but an empty highlight node is created. It's not visible but it pollutes the DOM. Expected behaviour: The highlight is removed without pollution in the DOM.
Live chat channels now use the same fixed 120-second buffer time instead of allowing each channel to set its own value. This makes operator assignment timing more consistent and removes a configuration option that could lead to uneven behavior across channels.
Original PR description
This PR removes the `buffer time` field from live chat channels and hardcodes the buffer time to 120 seconds for all channels. Task-4892243 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes several problems in website translation mode, including incorrect tab availability after changing languages and missing text highlighting. It also reduces unnecessary save requests when multiple translated elements belong together, making translation editing more reliable and efficient.
Original PR description
[FIX] website: correctly evaluates translation mode Steps to reproduce: - On a website with "French" installed, go in translate mode. - Discard. - Change the language of the website to "English". -…
[FIX] website: correctly evaluates translation mode Steps to reproduce: - On a website with "French" installed, go in translate mode. - Discard. - Change the language of the website to "English". - Enter in translate mode. - The "Blocks" and "Theme" tabs are not selectable as the system thinks it is in translate mode. The problem is that `this.translation` in the `WebsiteBuilder` is not updated when the language of the website is changed. To solve the problem, it has been transformed into a getter so that it is evaluated at run time. Related to task-4367641 ---------------------------------------------------------------------------------------------------------------------------------------------------------- [FIX] website: activate HighlightPlugin in translate mode Since the [website refactoring], it was not possible to highlight text in translate mode. This commit fixes the issue by activating the `HighlightPlugin` plugin in translate mode. [website refactoring]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 Related to task-4367641 ---------------------------------------------------------------------------------------------------------------------------------------------------------- [FIX] html_builder, website: group elements to save if possible Steps to reproduce: - On a website with "French" installed, drop a "Text-Image" snippet. - In translate mode, translate the title and the last paragraph. - Save -> Two calls to the `/web_editor/field/translation/update` routes are done while only once should have been done. Since the [website refactoring], elements were not grouped together before being saved. The consequence is that extra rpc are made at the save step. This commit restores the old behavior and groups elements that are from the same field of the same record (if they are not part of view or the system is in translate mode). [website refactoring]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 Related to task-4367641 ---------------------------------------------------------------------------------------------------------------------------------------------------------- [IMP] html_builder, *: make html_builder agnostic of the translate mode *: website The goal of this commit is to make `html_builder` agnostic of the translate mode (website specific feature). Related to task-4367641
The AI assistant features now work in the updated website editor without causing errors. This prevents interruptions for users creating or editing website content with AI support.
Original PR description
In this commit we fix the ai functionality that was breaking inside the new website editor. Recently, the website editor was changed to be based on the html editor that already existed in the backend. That meant that all the back-end plugins which existed for the html editor now worked for the website editor as well. The chatgpt_plugin had not been updated to support this change. This commit made the necessary changes for the website editor to use the chatgpt_plugin without getting a traceback.
1 change
Resolved issues and error corrections
The payroll pay run kanban view no longer crashes when opened. This restores access to the pay run overview, helping payroll teams continue their work without interruption.
Original PR description
Problem ---------- - Traceback when payrun kanban view is open Objective ---------- - Make the payrun kanban view available Solution ---------- - Remove the xpath in the PayrunKanbanHeader task-4890216
7 changes
Resolved issues and error corrections
This fixes an issue where images copied and pasted inside the HTML editor could disappear if they were stored directly in the copied content. The editor now preserves those embedded images correctly, reducing broken content when users paste rich text.
Original PR description
Problem: When copying content that includes an image with a `src` in base64 format, the origin is incorrectly prepended to the `src`, resulting in a broken image on subsequent paste. Cause: The logic that prepends the origin doesn't exclude base64 images, causing the final `src` to be invalid. Solution: Skip appending the origin if the `img.src` is already in base64 format. Steps to reproduce: 1. Copy an image (with base64 `src`) into the editor. 2. Copy the image again from within the editor. 3. Paste the image. → The image is not shown due to incorrect `src`. opw-4872676 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an error that could stop users from printing Picking Operations reports for kit products when packaging was removed from a component. This keeps delivery paperwork available and avoids disruption during sales and warehouse processing.
Original PR description
**Step to reproduce:** 1. Install mrp & sales module. 2. Ensure Product Packaging is activated for Inventory. 3. Create a product with a Kit-type BOM that includes two components. 4. Assign packaging…
**Step to reproduce:**
1. Install mrp & sales module.
2. Ensure Product Packaging is activated for Inventory.
3. Create a product with a Kit-type BOM that includes two components.
4. Assign packaging to the product.
5. Create and confirm a Sales Order for this product.
6. Open the Delivery Order generated from the Sales Order.
7. Remove the packaging from one of the components of the kit in the delivery order.
8. Try to print the Picking Operations report.
**Issue:**
When printing the Picking Operations report, a
`ZeroDivisionError: float division by zero` occurs during the
computation of the `product_packaging_qty` field on stock.move.line.
**Cause:**
The `_compute_product_packaging_qty` method performs a
division operation that assumes packaging is present on the move:
https://github.com/odoo/odoo/blob/c1d88949a3c305b425ab3a862741ebab7b7cd344/addons/mrp/models/stock_move.py#L101
When the packaging is removed, `move.product_packaging_id` becomes
falsy, and accessing `.qty` returns 0. This leads to division by zero.
**Solution:**
To fix this, the computation of product_packaging_qty is avoided for kit
component move lines that do not have packaging assigned.
This ensures that the computation only applies to valid lines with the packaging.
**opw-4805679**Internal users without sales or event-specific permissions can now register for events that include multiple-choice questions. This prevents a server error during registration and adds test coverage to help keep the flow reliable.
Original PR description
A global rule for base.group_user is missing for the event.answer.model. This commit adds it. A test has been added to check that internal users have all the permissions required to register for events. Reproduce: The administrator must create a new user and let empty the permissions for sales and for events. When trying to register for an event that has questions with options, this new user will trigger a 500 error. task-
Canceling the payment that created a third-party check now also updates the check’s status, so it no longer incorrectly appears as "In Hand". This keeps payment and check records aligned and helps avoid confusion in check tracking workflows.
Original PR description
Fixed an issue where, when canceling a payment that originated the third-party check, the check remained in "In Hand" status when it shouldn't. Now, when the payment is canceled, the check status is…
Fixed an issue where, when canceling a payment that originated the third-party check, the check remained in "In Hand" status when it shouldn't. Now, when the payment is canceled, the check status is properly updated to reflect its cancellation, ensuring consistency in the workflow. **Description of the issue/feature this PR addresses:** This PR addresses an issue where a third-party check remains in the "In Hand" status even after the origin payment is canceled. **Current behavior before PR:** A customer payment is created with a third-party check. The payment is confirmed, then moved to draft and canceled. After cancellation, the third-party check remains in the "In Hand" status in the third-party checks menu, even though the origin payment has been canceled. **Desired behavior after PR is merged:** When the payment is canceled, the check will no longer remain in "In Hand" status in the third-party checks menu after the payment is canceled. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update refreshes the spreadsheet component and fixes several issues that could affect daily spreadsheet work. Users should see more consistent behavior for data validation rules, pivot tables with blank values, and formatting copied across merged cells.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/a38db25af [REL] 18.0.35 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/a38db25af [REL] 18.0.35 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/000269c29 [IMP] demo: add clear action [](https://www.odoo.com/odoo/2328/tasks/) https://github.com/odoo/o-spreadsheet/commit/6dbaa3f6e [FIX] data_validation: preserve rule order when updating a rule [Task: 4863726](https://www.odoo.com/odoo/2328/tasks/4863726) https://github.com/odoo/o-spreadsheet/commit/ea088b06f [FIX] pivot: treat empty strings the same as blank cells [Task: 4889073](https://www.odoo.com/odoo/2328/tasks/4889073) https://github.com/odoo/o-spreadsheet/commit/a3a8e49d6 [FIX] paint_format_store: copy and apply merges on paste format [Task: 4179256](https://www.odoo.com/odoo/2328/tasks/4179256) https://github.com/odoo/o-spreadsheet/commit/28db4a786 [FIX] paint_format_store: update selection after pasting format [Task: 4807659](https://www.odoo.com/odoo/2328/tasks/4807659) https://github.com/odoo/o-spreadsheet/commit/efd5a396e [REF] clipboard: extract paste helpers to reduce duplication [Task: 4807659](https://www.odoo.com/odoo/2328/tasks/4807659) 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>
Paused timers now keep the correct elapsed time when they are resumed. This prevents inflated time entries and improves accuracy for users relying on timers for work tracking or billing.
Original PR description
The current implementation of the `startTimer` function incorrectly calculates the current time when the timer has been paused. For ex, if the timer started 24 hours ago and was paused 23 hours ago. Calling `startTimer` to resume the timerReactive component, would calculate the offset between the paused time and current time incorrectly. This change ensures that no extra time is added to the timer, when it is in a paused state, maintaining accurate tracking of elapsed time. opw-4658402 opw-4824616 opw-4829820
This fix ensures subscription lines that have already been invoiced keep their invoiced quantity even when related dates are changed. This helps prevent incorrect billing adjustments and keeps subscription revenue records consistent.
Original PR description
Backport of: - [ ] https://github.com/odoo/enterprise/commit/981665196f162df9702d471223e16edf5deb99d5