Tuesday, December 2, 2025
16 changes · master
Enhancements to existing features
The Reporting menu item previously named "Locations" has been renamed to "Stock Locations". This reduces confusion with another Locations menu and helps users find the correct stock reporting option more easily, including through global search.
Original PR description
There were two submenus named _"Locations"_ - one under the `Configuration` menu (visible only when `Storage Locations` is enabled) and one under the `Reporting` menu, which could mislead users when searching through the global search (e.g., using CTRL + K). This commit improves usability and avoids confusion by renaming the submenu under the `Reporting` menu from: - `Locations` to `Stock Locations` Task - 5154204
Product variant setup now shows example placeholder text for attribute and value fields. This helps users understand that they should enter an attribute such as Color or Size and list its possible values, reducing confusion during product configuration.
Original PR description
## **Purpose:** When creating a new product variant using attributes and values, new users often find it unclear how these fields should be filled in whether each line represents a combination or a…
## **Purpose:** When creating a new product variant using attributes and values, new users often find it unclear how these fields should be filled in whether each line represents a combination or a single attribute. This lack of guidance can lead to confusion during product variant setup. **Before This PR:** <img width="1011" height="364" alt="image" src="https://github.com/user-attachments/assets/6408683e-5fbc-47d5-bd39-0ecb4183ba5b" /> ## **With This PR:** To make the process clearer and more intuitive, placeholders are added to the attribute and value fields: - Attribute: Attribute name (e.g. Color, Size, …) - Values: List of possible values (e.g. Blue, Green, White, …) These hints help users understand how to correctly define product attributes and their possible values when creating variants. **After This PR:** <img width="936" height="350" alt="image" src="https://github.com/user-attachments/assets/f661f1d6-033b-428f-ab4d-1b83bf3d2a56" /> Task - 5173800
Point of Sale no longer keeps barcode scanner connection logic in the main app. That IoT-specific handling is now managed by the dedicated POS IoT module, making ownership clearer and reducing duplication.
Original PR description
For consistency, we moved barcode scanner IoT related code to `pos_iot`. see odoo/enterprise#101019
The demo Point of Sale and restaurant data now includes orders from past dates instead of showing every order at the same time. This makes dashboards look clearer and more useful when demonstrating sales trends and activity over time.
Original PR description
Before this commit: =================== All demo orders had the same date and time, so the dashboard did not show useful or clear data. After this commit: ================== Demo orders from past dates are added to make the dashboard look better and show more helpful data. Task: 5024928 | Before this PR | After this PR | |--------|--------| | <img width="1914" height="933" alt="before" src="https://github.com/user-attachments/assets/5f7301a1-f0ff-4295-88da-414a0d904982" /> | <img width="1919" height="935" alt="after" src="https://github.com/user-attachments/assets/0c4386af-30a5-4d12-a0ae-3b76766afd89" /> |
Users can now open the optional field menu in list views even when they are offline. This lets them adjust visible columns without reconnecting, improving continuity for offline work.
Original PR description
Before this commit, it wasn't possible to open the optional field dropdown when being offline, because the toggler was automatically disabled. This commit makes it available offline, and ensures that checkboxes inside the dropdown are enabled as well. Task~5359151 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
The HR app now uses a single wage lookup process instead of maintaining a duplicate shortcut field. This supports ongoing cleanup of payroll and HR wage data, reducing confusion and making future maintenance easier without changing day-to-day user workflows.
Original PR description
contract_wage field is just a shortcut field that calls _get_contract_wage() to get the wage from the correct wage field in function of the context. In the process of merging and cleaning the multiple wage field that exists in hr and payroll, this field can be deleted, and each time it was used, the _get_contract_wage() method is used instead. Task-5125864
This update adds new tax helper capabilities in Accounting to better support electronic invoicing integrations. It should make tax information easier and more consistent for EDI processes, reducing future integration complexity.
Original PR description
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#237678 Forward-Port-Of: odoo/odoo#235510
Stock move history now shows a quantity of zero in a neutral color instead of red or green. This reduces confusion for users by avoiding visual cues that could suggest a warning or positive value when there is no quantity.
Original PR description
The red color while displaying "0" confuses the users, as it suggests that there might be an issue. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The website editing system now uses clearer internal naming for areas that can be saved, reducing confusion for future maintenance. It also simplifies how edited content is detected and saved, helping the editor behave more consistently across website, blog, email, and marketing templates.
Original PR description
[IMP] html_builder, *: rename the o_editable class by o_savable *: html_editor, marketing_cards, mass_mailing, mass_mailing_crm, mass_mailing_sale, test_website, website, website_crm,…
The website highlight color picker now stays aligned with the selected theme colors when those colors are updated. This helps users keep page styling consistent and avoids outdated color choices appearing in the editor.
Original PR description
Before this commit: 1. The colors in the _highlight_ color picker were not properly synchronized with the _theme_ colors. 2. The _theme_ colors were copied as raw values instead of using _CSS_ variables, which caused them to fall out of sync. After this commit: 1. The _solid_ tab theme colors of _highlight_ color picker now stay in sync with _theme_ colors, even when they are updated. 2. Used CSS variables `var(--o-color-x)` instead of copying _theme_ color values. task-5079081 Forward-Port-Of: odoo/odoo#238197 Forward-Port-Of: odoo/odoo#228123
This update improves the efficiency of IoT display updates by intelligently determining if a URL change is needed. Previously, updates were triggered unnecessarily, but now the system only updates the URL when a screen rotation is requested, streamlining the process and reducing unnecessary network traffic. This results in a more responsive and reliable IoT experience.
Original PR description
To avoid updating the URL of the IoT display when we only want to rotate the screen, we now check which value changed before sending the request.
This update replaces the fa_book icon in knowledge article search results with the article's specific emoji, enhancing visual clarity. Crucially, the article body is now also displayed, providing users with complete information. This improves the user experience when searching for knowledge articles.
Original PR description
Before this commit, when a knowledge article appeared in the search results, if an image or icon was displayed for that result, it was represented with the fa_book icon. Also the body of the article was not shown. Now, when an article is shown, it is represented with the emoji defined specifically for that article. The body of the article is also showed. Part of task-4029264. linked with [this PR 192032](https://github.com/odoo/odoo/pull/192032)
This update adjusts the way the quantity input is handled within the product catalog modules (industry_fsm_sale and industry_fsm_stock) to align with recent changes made by the Odoo community. This ensures consistent functionality and a better user experience for entering product quantities.
Original PR description
*: industry_fsm_sale, industry_fsm_stock Adapt to the changes made in community where the DOM for the quantity input is reworked. task-4671411 Community: https://github.com/odoo/odoo/pull/236932
This update aligns the Odoo Enterprise MRP Work Order module with recent community changes. Specifically, a new parameter has been added to ensure compatibility and proper integration with updated functionality, streamlining the creation of work order catalogs. This ensures consistent behavior across all Odoo Enterprise versions.
Original PR description
With this commit: --------------------------- - Added a child_field parameter to the _get_new_catalog_line_values method to align with the changes made in the community. This ensures compatibility and proper integration with the updated function. Task Id: 4737887 Community PR: [228145](https://github.com/odoo/odoo/pull/228145)
This update refines how Odoo's editor handles data saving. The `o_editable` class has been renamed to `o_savable` to align with the editor's internal processes. This change ensures smoother editing experiences across several modules, including appointment scheduling and marketing automation.
Original PR description
[IMP] appointment, *: rename the o_editable class by o_savable *: marketing_automation, marketing_automation_website_sale, website_appointment, website_helpdesk This commit renames the `o_editable` class by `o_savable`. It also removes this class from the template as it is a system class handled by the editor. In most cases, the editor will add the `o_savable` class on those elements when entering in edit mode as the elements already have the `o_mail_wrapper_td` class (that is used as a `o_editable_selectors`). task-5248483
This update simplifies the VoIP code by removing redundant `async/await` calls. This optimization improves the overall performance and stability of the VoIP feature within Odoo Enterprise. The change is considered a routine improvement.
[IMP] html_builder, *: rename the o_editable class by o_savable *: html_editor, marketing_cards, mass_mailing, mass_mailing_crm, mass_mailing_sale, test_website, website, website_crm, website_profile, website_sale The goal of this commit is to rename the `o_editable` class by `o_savable` in order to reduce confusion about its role. This system class is added on savable area (area with the branding) by the editor when entering in edit mode and is removed when leaving the edit mode. The class has also been renamed to avoid confusion with `.o_not_editable`: while `.o_not_editable` is a class that a user can add on templates to mark a zone as non editable (`[contenteditable=false]` is added on those nodes when entering in edit mode), `.o_savable` is a system class that concerns savability (not only editability) and should not be added on templates as it is entirely managed by the editor. The class has also been removed from `html_editor` templates used on tests as this class is managed by `html_builder` (`html_editor` should be agnostic of this class). It has also been removed from elements on templates that already have the `o_mail_wrapper_td` class. As `o_mail_wrapper_td` is defined in the `o_editable_selectors` resource, elements with this class will receive the `o_savable` class when entering in edit mode. task-5248483 ------------------------------------------------------------------------------------------------------------------------------------------------------ [IMP] html_builder, *: remove 'savable_selectors' resource *: website, website_blog The goal of this commit is to remove the `savable_selectors` resource. This resource was used to identify the element on which to add the `o_dirty` class when a modification was applied. This resource is useless and we should rather use the `o_savable` class to identify those elements. Indeed, more checks are done before adding the `o_savable` class on an element (check that the element is not `[data-oe-readonly]`, check that it is not inside an `.o_not_editable` element etc...). That being done, few templates had to be adapted; - In `website_blog.post_cover_image`: `.o_not_editable` has been removed from the `additional_classes` to be added on the `website.record_cover` template as we want the `[data-res-model]` element to be a savable element (elements that are `.o_not_editable` or are inside `.o_not_editable` are not considered as savable elements). Instead, the `.o_list_cover` selector is added in the `content_not_editable_selectors`. Thanks to it, `[contenteditable='false']` is added on the element so the user can not directly edit it (add text or make the toolbar appear) but it is saved when options modify its content. - In `website_blog.post_author`: `.o_not_editable` is moved from the parent `div` to the "avatar" `div` as we want the author to be saved when it is changed by the options. Note that `author_id` is a `many2one` that will be marked as `contenteditable=false`. `post_date` is a `datetime` field that will be marked as `contenteditable=false`. - `website_blog.dynamic_filter_template_blog_post_card`: the useless `.o_not_editable` has been removed as the template is used in `website.s_dynamic_snippet_template` that contains itself the `o_not_editable` class. task-5248483 ------------------------------------------------------------------------------------------------------------------------------------------------------ [IMP] html_builder, *: rename resource and class *: mass_mailing, website As the `o_editable` class has been renamed into `o_savable`, this commit renames the `o_editable_attribute` class by `o_savable_attribute` and the `o_editable_selectors` resource by `savable_selectors`. task-5248483 ------------------------------------------------------------------------------------------------------------------------------------------------------ [REM] html_builder, website: avoid removing nonexistant class This commit removes the useless remove of the `o_savable` class from elements when saving a custom snippet or "oe structures" (introduced by [1]). Indeed, since the [website refactoring], this class (previously `o_editable`) is already removed at the clean for save. [website refactoring]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 [1]: https://github.com/odoo/odoo/commit/4625cb2fefa0e105031e9e76b16cef756d7b9322 task-5248483