Daily updates from Odoo
Friday, January 23, 2026
9 changes · master
Enhancements to existing features
This update allows users to select and personalize the design of their completion certificates. Previously, certificate styles were fixed, but now users can choose from available options and update designs through document layouts, improving the user experience and offering greater flexibility.
Original PR description
Before: - Users could not choose the completion certificate style. - Certificate design was fixed and could not be changed. After: - Users can now select the certificate style they like. - Certificate design can be updated from document layout. Impact: - More flexibility for users to personalize certificates. - Better user experience and improved customization. task-5423843
This update enhances the connection between Odoo's planning and field service modules. Specifically, a key field has been reintroduced to the planning.slot data structure, enabling more accurate management of invention contracts and streamlining workflows between teams. This improves the overall efficiency of scheduling and resource allocation.
Original PR description
This commit adds the task_id in planning.slot to prepare the integration between planning and field service to correctly manage the invention contract. task-5259217
This update allows users to directly rearrange their favorite articles within the knowledge base, eliminating the need to navigate to other sections. New restrictions have been implemented to prevent incorrect hierarchy changes, ensuring data integrity and usability. The changes also include updated tours to guide users through the new functionality.
Original PR description
Before this commit, it was only possible to resequence favorites (child and roots). This commit enables to allow changing the heirarchy directly from the favorite section to avoid scrolling down to the workspace and other sections. Also, there are three restrictions while dragging: 1. Cannot remove parent and make new root of the children. 2. Cannot make a readonly article a children. 3. Cannot make an article children of a readonly article. Tours are also modified to verify the behaviour. Task-4830559
This update aligns the subscription sale order view with the new eCommerce sale order view. This ensures a consistent and streamlined experience for customers purchasing subscriptions through the online store. The change improves the usability and presentation of subscription options within the website.
Original PR description
This commit replicates the existing subscription sale order view and adjusts it for the newly created sale order view for the eCommerce context. See Also: - https://github.com/odoo/odoo/pull/230760 task-5153059
This update changes the way Odoo generates language URLs from underscores to hyphens (e.g., en-US). This aligns with modern web standards, boosting SEO performance and ensuring consistent URL usage across the system. This change improves the overall user experience and search engine optimization.
Original PR description
Current behavior before PR: - The url_code stored for a language used the underscore format (en_US, fr_BE, etc.). - This format is not SEO-friendly and goes against modern conventions which prefer hyphens (e.g., en-US, fr-BE). Desired behavior after PR is merged: - The url_code is now automatically generated using a hyphenated format (en-US, fr-BE) instead of using an underscore. - This url_code can now be used consistently anywhere in the system for building URLs or SEO paths. Task - 4953805 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update enhances the way complex salary rule parameters are edited within the system. Previously, these parameters – which can include nested data structures – were difficult to view and modify. Now, a new table preview provides a more user-friendly grid-like view for editing, ensuring accurate rule configuration.
Original PR description
Salary rule parameters may contain complex Python expressions such as nested dictionaries or lists of tuples. Displaying those values directly as raw text makes them difficult to read and edit. This commit introduces a dedicated table preview for such parameters. When a tabular structure is detected, the field displays a "View data" button opening a dialog with a grid-like representation of the data, while simple values keep the standard text field behavior. The dialog allows editing table cells and serializes the result back to a valid Python literal, preserving existing rule evaluation semantics. task-5349178
This update enhances the way complex salary rule parameters are managed. Previously, these parameters – which can include nested data structures – were difficult to view and edit. Now, a new table preview provides a more user-friendly grid-like view for editing, ensuring accurate rule configuration.
Original PR description
Salary rule parameters may contain complex Python expressions such as nested dictionaries or lists of tuples. Displaying those values directly as raw text makes them difficult to read and edit. This commit introduces a dedicated table preview for such parameters. When a tabular structure is detected, the field displays a "View data" button opening a dialog with a grid-like representation of the data, while simple values keep the standard text field behavior. The dialog allows editing table cells and serializes the result back to a valid Python literal, preserving existing rule evaluation semantics. task-5349178
This update simplifies stock management by adding a direct access button to locations within warehouses and clearly marking empty locations during stock transfers. These changes reduce navigation time and minimize errors, leading to more efficient stock operations.
Original PR description
Improves stock usability and clarity by: - Adding a new “Locations” smart button on warehouses to provide direct access to all related internal locations, reducing navigation friction. - Making empty internal locations clearly identifiable during stock relocation by appending “Empty” to destination location names. - Simplifying warehouse and location navigation to avoid manual searching through records. - Reducing the risk of selecting unintended destination locations during relocation. - Improving overall efficiency and decision-making in daily stock operations. Task ID: 4535914
This update significantly speeds up the process of analyzing module dependencies within Odoo, reducing processing time by a third. The change streamlines the underlying code and removes unused features, resulting in a more efficient system. This improves overall Odoo performance and stability.
Original PR description
Looping through every module of community + enterprise (1367 modules) and getting their entire set of dependencies, the new version runs in about a third the time on my machine (1.5s to 4.2s), yielding a result that's almost identical: the new version includes `base`, the old one did not (not sure why, or how).
Now supports calling with `exclude_states=()`, which did not work previously and led to wonky workarounds e.g.
self.upstream_dependencies(exclude_states=('',))
or
module.upstream_dependencies(exclude_states=('uninstallable'))
(which the keen-eyed will notice does not pass a tuple so excludes the individual non-existent states `u`, `n`, `i`, `s`, `t`, `a`, `l`, `b`, and `e`).
Also drops support for `known_deps`: it's not used anywhere and doesn't really seem useful.