Friday, February 20, 2026
37 changes · saas-19.2
New functionality added to Odoo
This update adds a visual icon for the AI app within the Odoo platform. This improves the appearance of the AI app on odoo.com, making it more recognizable and user-friendly. It's a small cosmetic change that enhances the overall brand experience.
Original PR description
Adding svg icon to ai app in order to use it on odoo.com task-5431654 Forward-Port-Of: odoo/enterprise#107302
This update refreshes the icons used for Odoo apps, specifically for the new /brand-assets page on odoo.com. These updated icons improve the visual presentation of Odoo's apps and contribute to a more consistent brand experience for potential users. This is a cosmetic enhancement to improve the overall user interface.
Enhancements to existing features
This update ensures a consistent look and feel for the Emoji Picker across Odoo's frontend and backend. Previously, different environments used separate styles, leading to visual inconsistencies. This change fixes a border issue and enforces a standard design for improved user experience.
Original PR description
*: im_livechat, web, html_editor task-3679384 ------------------------ Standardizes the `EmojiPicker` design to ensure visual consistency between the frontend and backend. Prior to this PR, this…
Resolved issues and error corrections
This update corrects a problem where the timesheet approval reminder email was sending to an outdated action. The action was updated as part of a recent system change (17.3) to consolidate time tracking actions. This ensures the reminder email functions correctly and reliably.
Original PR description
### Issue: The action used in the ` timesheet approval reminder` email template refair to a non existing action. ### Cause of the issue: The issue has been introduced in…
### Issue: The action used in the ` timesheet approval reminder` email template refair to a non existing action. ### Cause of the issue: The issue has been introduced in [1](b56e355c400c874f7cd9c3174e2253ad5769a461) b56e355c400c874f7cd9c3174e2253ad5769a461 Starting from 17.3 the actions `action_timesheet_previous_week` and `action_timesheet_previous_month` have been removed and merged in a single action `timesheet_grid_to_validate_action`. See [2](7040535ffe2c08d0d286cfccbaf4cc7f81f18443) 7040535ffe2c08d0d286cfccbaf4cc7f81f18443 However, while [2](7040535ffe2c08d0d286cfccbaf4cc7f81f18443) correctly replaced the usage of both actions used in the template as `action_xml_id`: https://github.com/odoo/enterprise/blob/913418bb3d7558b6b44916455e28de855eb123f5/timesheet_grid/models/res_company.py#L209-L221 https://github.com/odoo/enterprise/blob/913418bb3d7558b6b44916455e28de855eb123f5/timesheet_grid/data/mail_template_data.xml#L43-L45 The forward port of [1](b56e355c400c874f7cd9c3174e2253ad5769a461) replaced it with the deleted action: https://github.com/odoo/enterprise/blob/913418bb3d7558b6b44916455e28de855eb123f5/timesheet_grid/models/res_company.py#L161-L171 https://github.com/odoo/enterprise/blob/913418bb3d7558b6b44916455e28de855eb123f5/timesheet_grid/models/res_company.py#L193-L198 opw-5890269 Forward-Port-Of: odoo/enterprise#107440 Forward-Port-Of: odoo/enterprise#107385
Code cleanup and technical improvements
This update refactors how HTML snippet background colors are calculated, focusing on performance and future flexibility. The change utilizes a new resource to determine which snippets connect, streamlining the process and preparing for a planned move of the visibility plugin. This ensures more efficient and reliable background updates for HTML snippets.
Original PR description
Commit e591ea77f4a800bf79cb19f80529eed0d8ded927 added the recomputation of shape colors based on background of sibling snippets. This computation needs to ignore (among other things) the snippets that can be invisible. And used a new shared function of the visibility plugin. This commit instead uses a resource, as we are planning to move the visibility plugin to the website module; and implements the loop to search for the sibling only once. task-5149984
Original PR description
Adding new icons formats to apps for the new /brand-assets page of odoo.com Forward-Port-Of: odoo/odoo#241599
This update adds high-resolution icons for various Odoo apps displayed on the /brand-assets page of odoo.com. These new icons enhance the visual appeal and consistency of the Odoo ecosystem, providing a more polished user experience for potential customers. This improves the overall presentation of Odoo apps.
Original PR description
Adding new icons formats to apps for the /brand-assets page on odoo.com Forward-Port-Of: odoo/enterprise#103024
*: im_livechat, web, html_editor task-3679384 ------------------------ Standardizes the `EmojiPicker` design to ensure visual consistency between the frontend and backend. Prior to this PR, this component relied on environment-specific overrides which caused the font-size to render differently in the backend vs. the frontend. This change removes the related utility classes in favor of manual overrides to enforce a single source of truth for the design. - Removed environment-specific `font-size` classes; - Removed environment-specific `background/text color` classes; - Implemented CSS variables with SCSS variables fallbacks for the styling. This commit also fixes an issue related to Commit [^1] which enforced a `width` of `300px` on the `.o-EmojiPicker` child of the popover while our standard popover have a `max-width` of `276px`, causing a visual issue with the borders of the picker being cut. To fix this, we simply set the `--popover-max-width` to `300px`, the value previously defined and also apply a class on the popover element to scope the style inside. | Master | This PR | |--------|--------| | <img width="362" height="440" alt="image" src="https://github.com/user-attachments/assets/803051f4-d5d7-4702-8f05-b2833c04da38" /> | <img width="326" height="387" alt="image" src="https://github.com/user-attachments/assets/9f7c8d0a-aa4c-43f7-833e-5a195663ca18" /> | [^1]: https://github.com/odoo/odoo/commit/cc919f3b59ef18bd95edf42eb354a627c4041b68
This update optimizes how spreadsheet data is stored within Odoo, reducing the size of files and improving performance. A new feature allows for easy debugging by providing access to both compressed and uncompressed versions of spreadsheets. This change enhances the overall user experience and system efficiency.
Original PR description
Changing the storage of spreadsheet/dashboards and all other odoo spreadsheet documents to a more compressed version, while staying human readable-ish. Add a way to download the non compressed version of the spreadsheet as well as the compressed version, for debugging purposes. Add an menu to vefity the compression: it will load the spreadsheet multiple times and provide feedback if the compression doesn't work. For now we only store the uncompressed version in the database (like before) Task: 5489478
This update resolves an issue where test runs were repeatedly generating unnecessary assets, slowing down the testing process. By adding a key asset bundle to the test preparation list, we've eliminated redundant generation, resulting in faster and more reliable test execution. This improves overall development efficiency.
Original PR description
During tests runs, lazy loaded assets are generated on the fly, and eventually multiple hundred of times (i.e. +/- 150 times on runbot). This commit adds the `web_studio.studio_assets` bundle to the pregeneration list to avoid regenerating during tests runs. Forward-Port-Of: odoo/enterprise#107147
This update resolves an issue where closing a POS session would fail if the partner's address (street or postal code) was missing. Previously, an empty address caused an error, now the system gracefully handles this situation, ensuring POS sessions can be completed without interruption. This improves the reliability of the POS process.
Original PR description
Before this commit, if a POS order was created with a partner that had an empty street or postal code, the system would raise an error when closing the POS session. opw-5897334 Forward-Port-Of: odoo/enterprise#106300
This update fixes a minor error in the account return processing logic. The incorrect configuration of check codes was resolved, preventing potential issues with report generation. While previously shielded by a safeguard, this change ensures consistent and accurate account return processing.
Original PR description
the check codes to ignore was wrongly defined, leading to contain records instead of 'code', plus having the exact opposite of what it was supposed to contains, i.e. codes that aren't supposed to be run at the current state of the return. However, it didn't have any impact functionally because it was "protected" by the function _should_run_checks(), which might disapear in the future. Forward-Port-Of: odoo/enterprise#107158
This update clarifies the visibility of specific fields related to Belgian payroll and fleet within the Odoo Enterprise system. Previously, these fields were inconsistently displayed, and this change ensures they are only visible for Belgian companies, aligning with local tax regulations. This simplifies the system for users outside Belgium while maintaining the necessary functionality within the Belgian context.
Original PR description
This branch only hides BE-specific fields in l10n_be_hr_payroll_fleet (they remain defined/used there and are invisible for non‑BE companies). On master (19.3) those generic fields (can_be_requested, default_car_value) were refactored into hr_payroll_fleet so payroll+fleet consumers across all countries can use them; BE fiscal logic stays in l10n_be_hr_payroll_fleet task-5906656 Forward-Port-Of: odoo/enterprise#107620 Forward-Port-Of: odoo/enterprise#106456
This update fixes a bug that caused errors when trying to view sales order items from projects without a linked customer. The fix prevents the creation of sales orders from these projects, ensuring a smoother user experience. This resolves a technical issue impacting sales order functionality.
Original PR description
Currently, an assertion error is raised when opening "Sales Order Items" from a project without a customer. **Steps to Reproduce:** - Install `sale_project` module with demo data. - Create a new project using "Sale Order" project template. - Do not set a customer on project. - Project > Task (Kanban) > Show _Top Menu_ > Show _Sales Order Items_. - Click "**Sales Order Items**". Video Ref: https://drive.google.com/file/d/1xgYHZBvIt5Ep9Gt-wALGIb9f7mj4NPh_/view?usp=drive_link Error: AssertionError **Cause:** The sale order line depends on `default_partner_id` from the context to create a sale order when none exists. When the project has no customer set, this value is missing, causing an assertion failure. **Fix:** This commit returns the list view of SOLs and disables the creation when no partner is set for the project. sentry-7220116560 Forward-Port-Of: odoo/odoo#246058
This update resolves an issue that occurred when attempting to cancel a Point of Sale (POS) order with no items. The fix ensures the system handles empty orders gracefully, preventing errors and improving the user experience. The button to cancel the order is now disabled when no order lines are present.
Original PR description
Steps: --- - Open a Restaurant session. - Open a table with no order. - Click the control button and click Cancel Order. Issue: --- - A traceback occurs when cancelling an order. Cause: -- - The order is cancelled first, and then `isSelectedLineCombo` tries to access the current order, which is already null. Fix: --- - Safely check for the selected order before accessing combo data. - Disable the Cancel Order button when there are no order lines. task-5934004 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248639
This update corrects a display issue with 'float_time' in the MRP module. Previously, the minutes were shown in a less intuitive format. This change ensures a clearer and more standard presentation of time values within the MRP workflow, improving usability for users.
Original PR description
odoo/odoo#240555 has changed the way the float_time widget shows minutes, so we need to adapt. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue with how time is recorded in the MRPO (Manufacturing Resource Planning) work order modules. The system now consistently uses minutes for time fields, ensuring more accurate calculations and reporting. This improves the reliability of production scheduling and cost tracking.
Original PR description
Make sure that time fields in mrp modules are in minutes.
This fix addresses an error that occurred when creating invoices with negative tax percentages. The issue stemmed from a filtering process within the accounting module that resulted in an empty list of tax factors. We've reverted a recent change to avoid this error and ensure invoices can be created correctly with various tax configurations.
Original PR description
Steps to reproduce: - Install `account` module - Taxes > open any existing tax > Set `factor_percent(%)` of repartition lines to negative(eg:…
Steps to reproduce: - Install `account` module - Taxes > open any existing tax > Set `factor_percent(%)` of repartition lines to negative(eg: [Image](https://www.awesomescreenshot.com/image/58851592?key=ce0017bb467a583ad020f33d21d4d8ba)) - Create a Invoice and add tax in move line and save Traceback: `IndexError: list index out of range` We are getting `factors` as empty because `target_factors` from `_add_accounting_data_to_base_line_tax_details` is empty. This happens because, in `tax_reps`, we are filtering repartition lines with a `factor` greater than `0`. However, when the `factor` is less than `0`, `tax_reps` becomes empty, which leads to the error. We are reverting this PR: https://github.com/odoo/odoo/pull/234334 because it prevents the validation error from being raised when there is a negative value in the repartition lines. [factors]: https://github.com/odoo/odoo/blob/de056cc784a3bbe2575fd3c9e81ca62e73c362d4/addons/account/models/account_tax.py#L1641 [tax_reps]: https://github.com/odoo/odoo/blob/de056cc784a3bbe2575fd3c9e81ca62e73c362d4/addons/account/models/account_tax.py#L2429-L2431 sentry-7102210210 Forward-Port-Of: odoo/odoo#249220
This update resolves an issue where PDFs embedded in XML files used to create bills via email aliases weren't correctly attached. The fix clears a specific field when attachments are removed, preventing a misassignment of the PDF to the XML document. This ensures that bills always have the correct associated attachments.
Original PR description
Problem: when a user uploads an XML file containing an embedded PDF to create a bill, the bill is created correctly and the PDF is set as the main attachment. However, when the same XML is used to…
Problem: when a user uploads an XML file containing an embedded PDF to create a bill, the bill is created correctly and the PDF is set as the main attachment. However, when the same XML is used to create a bill via email aliases, the PDF is not set as the bill’s main attachment. Root cause: 1. When an email is received, it's first posted as a message on the bill chatter 2. Posting the email sets its XML as the main attachment of the bill 3. _fix_attachments_on_record from account.document.import.mixin then removes res_id and res_model fields from the XML 4. The PDF is then attached as the main attachment of the bill 5. In documents_account module, when the PDF is set as the main attachment, it mistakenly assigns it as an attachment to the XML document because the XML was assigned as the bill main attachment, resulting in the bill having no attachment actually linked to it. Solution: This commit fixes this issue by clearing the field message_main_attachment_id whenever the attachment in it gets unattached in _fix_attachment_on_record. task-5900088 Forward-Port-Of: odoo/odoo#246991
This update corrects a discrepancy in how time data is handled within the MRP modules. Specifically, it ensures all time fields are recorded in minutes, improving the accuracy and consistency of reporting. The change involves updating widgets and formats to align with the new standard.
Original PR description
Make sure that time fields in mrp modules are in minutes. Add a new widget in mrp_plm for updates on time data types. Replace formatFloatTime by formatDuration.
A recent update caused a crash when users attempted to undo a duplicated list within the spreadsheet feature. This fix ensures that the undo function correctly handles list duplication, preventing unexpected errors and improving the user experience. This resolves a frustrating issue for users working with lists in spreadsheets.
Original PR description
How to reproduce: - insert an odoo list in a spreadsheet - duplicate the list from the sidepanel - undo with Ctrl+z -> crash The command "DUPLICATE_ODOO_LIST" was not supported in the inverseCommand registry. Task-5943688 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#249475 Forward-Port-Of: odoo/odoo#248969
This update fixes a technical error that could cause a traceback when opening barcode rule forms within the Stock module. The change removes a dependency on a parent record, ensuring the form loads correctly and preventing disruptions to users. This improves stability and prevents potential data issues.
Original PR description
Issue before this commit: ========================= When opening a Barcode Rule form view, a traceback was raised due to the following python expression: bool(parent.is_gs1_nomenclature or type ==…
Issue before this commit: ========================= When opening a Barcode Rule form view, a traceback was raised due to the following python expression: bool(parent.is_gs1_nomenclature or type == 'alias') Steps to Reproduce: ========================= - Install the stock module. - Go to Configuration → Barcode Nomenclatures in the Stock app. - Open any Barcode Nomenclature form. - Go to the Rules tab and open a rule (pop-up form view). - Click on the Expand button. - A traceback is raised. Cause of the issue: ========================= The form view tries to evaluate `parent.is_gs1_nomenclature`, but the `parent` record is not defined when the rule form view is opened directly (via expand), leading to a traceback. This happens because the form view is not defined as a child of any parent view, so no parent context is available, which leads to a traceback. With This Commit: ========================= Removed the usage of `parent.is_gs1_nomenclature` and use `is_gs1_nomenclature` directly instead. The `is_gs1_nomenclature` field on `barcode.rule` is already a related field to `barcode.nomenclature`, so it can be safely used without relying on the parent. opw-5949083 Forward-Port-Of: odoo/odoo#249293
This update resolves a connection issue that occurred when Odoo was configured to use a replica database. The change ensures Odoo automatically uses the primary database port when a replica port isn't specified, preventing connection errors and improving overall stability. This enhances the reliability of the Odoo system.
Original PR description
Start postgres on an alternative port (e.g. 5434), start odoo with `--db_port 5434 --db_replica_host=''`, access /web/database/manager, there's a warning in the logs that says it is not possible to connect to the replica database.
The empty string for the replica host is Odoo 18 way to tell Odoo to simulate a replica database by connecting to the same db as the primary one. It should use `--db_replica_port` and when not set fallback on the same port as `--db_port`. The problem is that in case no `--db_replica_port` is set, the option is set `None` in the config, i.e. `get('db_replica_port', cfg)` was retuning `None` as was not using the fallback.
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#249291This update resolves an issue where tests were failing due to unexpected behavior when handling JSON responses. The fix ensures that test responses are correctly formatted as recordsets, preventing errors in the automated testing process. This improves the reliability of our test suite.
Original PR description
The return value of the patched methods was a MagicMock and not a recordset, and make_json_response was doing funny stuff with that returned MagicMock 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#249496
This update adjusts the size of the 'RedirectWarningDialog' in the Odoo web interface. Previously, the dialog was unnecessarily large, which negatively impacted the user experience. This change ensures the dialog is appropriately sized for its content, creating a cleaner and more user-friendly interface.
Original PR description
Currently `RedirectWarningDialog` are using `xl` size which is way too big for the content it displays. Dialog sizes were reviewed in commit[1], the RedirectWarning should follow the same styling. task-5477287 [1]: odoo/odoo@01741aa2619998078bd19aca848146ac75c027fc --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#249235
This update fixes an issue where users could accidentally select multiple accounts during the online synchronization process. The change adds a 'disable' feature, ensuring only one account can be selected at a time, improving data accuracy and streamlining the synchronization workflow. This enhances the reliability of our cloud accounting service.
Original PR description
Before this commit, it was possible to click on multiple card when doing the account selection from the wizard. This commit will add a disable feature so that when clicking on the card, other account cannot be clicked. task-5943474 Forward-Port-Of: odoo/enterprise#107637
This update adds a warning message in the batch wizard to alert users if the automated invoice sending cron job is disabled. This ensures users are aware that their invoices may not be sent as scheduled, preventing potential delays and improving invoice processing transparency. It addresses feedback from SBR to enhance user experience.
Original PR description
When the Cron responsible of sending the invoices asynchronously is disabled, the user has no clear indication that his invoices won't be sent as they should. Let's add a warning in the batch wizard that notify the user something is wrong. task-none (feedback from SBR) Message when no rights to update cron: <img width="990" height="328" alt="image" src="https://github.com/user-attachments/assets/1100ef6f-d047-49f2-bd8f-c8ef9fd543d8" /> Message when admin: <img width="999" height="308" alt="image" src="https://github.com/user-attachments/assets/28e90295-d225-4785-82a9-65be3ce79621" /> Forward-Port-Of: odoo/odoo#249270 Forward-Port-Of: odoo/odoo#248994
This update corrects a minor issue in the Point of Sale system's testing functionality. The system now correctly uses the 'printer_ip' field instead of the outdated 'epson_printer_ip' field for configuring printers. This ensures consistent and reliable test button operation.
Original PR description
IP address field changed from epson_printer_ip to printer_ip
This update resolves a bug that was causing forum posts to fail to create when the Odoo system was in debug mode. The issue stemmed from incorrect property settings being passed to a key component. By changing 'disabled' to 'isReadOnly', the system now correctly handles forum post creation, ensuring a stable user experience.
Original PR description
Following rewrite in odoo/odoo@33206fd1941ae, this commit update passed props (`disabled` -> `isReadOnly`) to avoid a crash when creating a new forum post while being in debug mode: `OwlError: Invalid props for component 'WebsiteForumTagsWrapper': unknown key 'disabled'` --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#249477 Forward-Port-Of: odoo/odoo#244063
This update resolves a technical issue that caused email generation to fail when processing multiple equity transactions. The fix corrects a configuration error in the email template, ensuring accurate record context and preventing errors during email creation. This improves the reliability of sending shareholder communications.
Original PR description
## Issue Before This Commit A missing record error occurred during email generation when the number of `equity.transaction` records exceeded the `res.partner` records. ## Cause of the Issue The issue was caused by an incorrect `model_id` configuration in the `equity_shareholder_email_template`. This created a mismatch between the template model and the record context passed to the mail compose wizard, leading to a missing record error during template rendering. ## With This Commit The template `model_id` has been corrected `equity.transaction`. This ensures that the mail compose wizard receives the correct model context and prevents missing record errors during email generation. Steps to reproduce : [Video](https://drive.google.com/file/d/19WXbjmYPKh0IjQHcEGU4FdUbGSF4GGlx/view?usp=drive_link) opw-5899070 Forward-Port-Of: odoo/enterprise#107891
This update resolves an issue where changing a partner in Odoo would erase the previously set default payment term for invoices. Now, the default payment term will remain consistent even after switching partners, ensuring a smoother and more reliable invoicing process. This prevents frustration and maintains data integrity.
Original PR description
When you want to set a default payment term for an invoice, it will be there when you create the invoice. But then, when you change the partner, even if there is no default payment term defined on there, it will empty it, so setting a default does not work. This can even be annoying if you set the payment term first and then the partner. In odoo/odoo#112360 this condition was added for perf issues. opw-5387239 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#242041
This update resolves an issue where clicking 'View' on certain activity types (like 'Eat cookies') in the calendar view would cause a technical error. The fix ensures that activities, even those without a linked model, can be properly displayed and accessed, improving user experience.
Original PR description
Steps to reproduce ================= 1. Go to “View all activities”. 2. Switch to calendar view. 3. Click on an activity not linked to any model (e.g. “Eat cookies”, “Send Email to Alfred”). 4. Click…
Steps to reproduce ================= 1. Go to “View all activities”. 2. Switch to calendar view. 3. Click on an activity not linked to any model (e.g. “Eat cookies”, “Send Email to Alfred”). 4. Click “View” in the popover. => Traceback Reason ====== The commit [1] allow activities without a linked model and from commit [2] such activities can be opened in the activity form view. In the calendar view, the action is retrieved from the model and executed using `doAction`. Since the action does not define `views`, and the `doAction` depends on `action['views']`, an error occurs when the action service attempts to copy it. After this commit ================== This commit fixes the issue by modifying the action returned from `action_open_document` for non-linked models to include `views`, similar structure used when a model is present. [1] https://github.com/odoo/odoo/commit/165b060473be8a5d33d62d311f0dc55ed6332d69 [2] https://github.com/odoo/odoo/commit/abeac135b9bb7aec4bcddd84fb0705743297f80d Task-5857887 Forward-Port-Of: odoo/odoo#246442
This update fixes an issue where tables copied from the Knowledge editor were only partially copied, resulting in incomplete table structures when pasted elsewhere. The change ensures that tables are copied fully, providing a consistent and reliable experience for users adding and sharing tables within Knowledge.
Original PR description
Problem: In Knowledge, when adding a clipboard block and inserting a table inside it, clicking on the copy button only copies the text inside the table instead of the full table structure. Cause: In…
Problem: In Knowledge, when adding a clipboard block and inserting a table inside it, clicking on the copy button only copies the text inside the table instead of the full table structure. Cause: In `html_viewer`, the copy logic clones only the deepest selected node. In contrast, `html_editor` (via `clipboard_plugin`) copies the entire selection range. This difference causes inconsistent behavior between editable and locked content. Solution: Align the behavior by copying the full selection in `html_viewer`, ensuring tables and other complex structures are copied entirely and consistently. Steps to reproduce: - Open Knowledge. - Add a clipboard block. - Insert a table inside the block. - Lock the content. - Click the copy button. - Paste into any editable field. - Observe that only the text (not the table) is pasted. opw-5476320 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248213 Forward-Port-Of: odoo/odoo#247930
This update corrects a bug where vertical videos would lose their orientation after a page was saved and reloaded. The fix ensures that vertical video settings are properly preserved, maintaining the intended layout for users. This improves the visual consistency of video content on our website.
Original PR description
Problem: When setting a video to vertical and saving the page, the alignment is not preserved after reload. Cause: `generateVideoIframe` always sets the `media_iframe_video_size` class, even for vertical videos. As a result, the vertical configuration is lost after saving. Solution: Apply `media_iframe_video_size_for_vertical` when the video is marked as vertical, so the correct layout is preserved after saving. Steps to reproduce: - Drop a Video snippet on a page. - In the selector, enable the vertical option. - Add the video. - Save the page. - Observe that the video is no longer vertical. opw-5941900 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#249335
A bug was causing the total time displayed in the Timesheet list view to be formatted incorrectly after a page refresh. This update ensures the total is always displayed as a time value, regardless of whether the user is viewing the data in a grid or list format. This improves the accuracy and usability of the Timesheet reporting feature.
Original PR description
# Steps to reproduce - Open Timesheets - Go to list view - Refresh page - Total is formatted as regular float instead of time # Cause of the issue The list view uses the `timesheet_uom_timer` widget…
# Steps to reproduce - Open Timesheets - Go to list view - Refresh page - Total is formatted as regular float instead of time # Cause of the issue The list view uses the `timesheet_uom_timer` widget for the `unit_amount` field. While the row entries were formatted correctly since the widget is added to the fields registry in `timesheet_uom_timer.js`, the aggregate (total sum) is not formatted in the same way because the formatters registry is missing that particular widget. Switching to the grid view and going back to the list view would solve the formatting. That is because the `timesheet_uom_timer` widget is added to the formatters registry when loading the grid view (in `timesheet_grid_uom_service.js`). We ensure the formatter is registered globally by patching the `timesheetGridUOMService` outside the grid view context, ensuring consistent aggregate formatting in list view, even after a page refresh. task-5907954 Forward-Port-Of: odoo/enterprise#107203 Forward-Port-Of: odoo/enterprise#107006
This update resolves an issue where the expense report generation process would fail when encountering encrypted PDF attachments. The fix skips these encrypted files, preventing errors and ensuring reports can be created successfully. This improves the reliability of expense reporting for users.
Original PR description
**Steps to reproduce:** - Install hr_expense - Create an expense - Attach several receipts with at least one encrypted PDF - Create Report - From cog menu, print "Expenses Report" **Issue:** A traceback is raised while trying to add the attachments to the report: 1) With a version of PyPDF2 lower than 2.12.1 (e.g. 1.26.0), a PdfReadError is raised: "File has not been decrypted". 2) With version 2.12.1 of PyPDF2, if PyCryptodome library is not installed, a DependencyError is raised: "PyCryptodome is required for AES algorithm". **Cause:** The encrypted file cannot be appended to the report PDF. **Solution:** Skip encrypted files and log a note with the reason in the report. opw-5194501 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#249365 Forward-Port-Of: odoo/odoo#248869
This update clarifies the label for the 'Remove from Bookmarks' action within the Discuss app. By capitalizing 'Bookmarks,' the change aligns with existing labels and improves user understanding of this specific action. This ensures consistency and reduces potential confusion for users.
Original PR description
Backport of https://github.com/odoo/odoo/pull/249454 Use capital letter for "Bookmarks" in this label, for consistency with labels of other actions but also to make it clearer this is related to the "Bookmarks" item in Discuss app. Before / After <img width="212" height="226" alt="Screenshot 2026-02-19 at 12 40 06" src="https://github.com/user-attachments/assets/28f8777e-521f-4ce5-ac07-2c8ff19539d2" /> <img width="211" height="230" alt="Screenshot 2026-02-19 at 12 40 24" src="https://github.com/user-attachments/assets/fa6168ef-7128-42a0-a2eb-d94bf381db5f" />
This update resolves an issue where the cursor's position was incorrect after using backspace within the HTML editor, specifically when inserting text after a button. The fix ensures the cursor remains correctly positioned within the button area, improving the user experience and preventing unexpected text insertion.
Original PR description
When using backspace after a button, the cursor is visually displayed as being inside the button, but it a character is typed, it is inserted after the button, while it should be inside. What actually happens is that after backspace after a button, the selection is set around the FEFF that follows the button. This commit fixes this by putting the selection before the FEFF inside the button instead. Steps to reproduce: - Go to a "To do" note - Insert a button - Insert text after the button - Put cursor before text after button - Press backspace: the cursor is displayed inside the button - Type a letter => The letter was inserted after the button. task-5928806 Forward-Port-Of: odoo/odoo#249285 Forward-Port-Of: odoo/odoo#248179
This update resolves an issue where the 'Group by category' option in Point of Sale was not displaying all products correctly. The change utilizes a more robust method to group products by category, ensuring a complete and accurate product list is presented to users. This improves the overall POS experience.
Original PR description
Before this commit when activating the "Group by category" option in the POS, some products were missing from the product list. Now we use the `getAllBy` generic model method to group products by category, which ensures that all products are correctly grouped and displayed in the POS. Forward-Port-Of: odoo/odoo#248250 Forward-Port-Of: odoo/odoo#247782