Tuesday, July 14, 2026
24 changes · master
Enhancements to existing features
Invoice Analysis now uses a simpler report query and relies on standard currency aggregation for monetary totals. This reduces unnecessary data processing while preserving existing product category and quantity reporting behavior.
Original PR description
Description of the issue this commit addresses: Invoice Analysis included joins that were not needed for the report result, notably account_account and commercial partner joins. It also handled company currency conversion directly in its SQL query through a dedicated currency table join. --- Desired behavior after this commit is merged: Invoice Analysis uses monetary fields and delegates currency aggregation to sum_currency, while keeping the existing product template join for category and UoM-based quantity computations. The report query no longer joins account_account or commercial partner data. --- Upgrade PR: https://github.com/odoo/upgrade/pull/9884 task-6106204 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update makes database debug logs easier for developers to read by adding optional color highlighting for SQL queries in terminal output. It does not affect normal production use, and logs stay unchanged when color support is unavailable or disabled.
Original PR description
When running with `--log-level=debug_sql` or when using `cr._enable_logging()`, SQL queries are dumped to the terminal as plain text, which becomes hard to read once queries grow long or numerous.…
When running with `--log-level=debug_sql` or when using `cr._enable_logging()`, SQL queries are dumped to the terminal as plain text, which becomes hard to read once queries grow long or numerous. This adds optional syntax highlighting of the logged SQL using pygments. Highlighting is applied through `config.colors['sql']`, reusing the existing colorization options (`http_response_body`, `perf`, `cursor_mode`), so it is automatically disabled when output is not a terminal (e.g. when logging to a file) and can be forced on/off via the same `auto`/`always`/`never` mechanism, the `[colors]` section of the config file, or the `NO_COLOR`/`FORCE_COLOR`/`ODOO_PY_COLORS` environment variables. `pygments` is not added as a hard dependency: it is only used for this debugging convenience, and is never needed in production since `debug_sql` is a manual opt-in and colors are automatically off on non-interactive output. When pygments is not installed, SQL logs fall back unchanged to their previous plain-text form.
Analytic plans now show the standard multi-company icon next to the default applicability setting. This helps users understand that the setting applies only to the currently active company, reducing confusion in multi-company environments.
Original PR description
Currently, the default_applicability field on analytic plans is company-dependent, meaning it can be configured differently per company. The UI does not show the standard company-dependent indicator, so users misunderstand that the setting was global across all companies. This commit improves the UI by explicitly rendering the multi-company building icon. This visual cue clarifies that the configuration is isolated to the active company. Task-6320247 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Belgian payroll and HR teams now have a dedicated leave type for compensating public holidays. This helps standardize how public holiday compensation is recorded and processed in Odoo Time Off.
Original PR description
In this commit, we created the public holiday compensation leave type for L10N BE. task-5480426 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 update lets the web interface detect and respond when a record is changed inside a reusable record component. It supports more responsive customizations and future Studio-style editing workflows without directly affecting everyday users.
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
The Mail message search box now stays visible at the top of the search panel while users scroll through results. This makes it easier to refine or start a new search without returning to the top of the panel, improving navigation for conversations with many results.
Original PR description
Before this commit, searching for messages with many results required users to scroll back to the top or reopen the search panel to update their search. This commit makes the search input sticky at the top of the panel, allowing users to refine or start a new search regardless of their scroll position. Task-6343771 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo's test runner can now limit JavaScript tests to the modules selected by test tags, instead of always running tests for every installed add-on. This makes developer and quality assurance test runs faster and more predictable when teams want to exclude specific areas such as mail or project.
Original PR description
Before this commit, executing the test `:WebSuite.test_unit_desktop` would launch js tests for every addon installed no matter the addon is excluded by a "--test-tags". So executing odoo-bin with --test-tags /web,-/mail -/project would launch js tests even for mail and project addons. Now, it would launch the js tests for every addon that are not excluded by a "--test-tags". So executing odoo-bin with --test-tags /web,-/mail, -/project would now launch js tests without mail and project addons. task-5042253
The spreadsheet app’s screen and viewport handling was reorganized to use a shared store instead of an older plugin approach. This is mainly an internal improvement that should make spreadsheet behavior easier to maintain while preserving the user experience.
Original PR description
The SheetViewPlugin and the viewport handling was moved into a store rather than a plugin. This commit make the necessary changes to odoo. Task: [6314784](https://www.odoo.com/web#id=6314784&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The payment token form has been visually refreshed to provide a clearer, more modern experience when viewing or managing saved payment details. This improves usability across the main payment area and related payment providers without changing underlying payment behavior.
Original PR description
Refresh the token form view UI. task-6251341
The printer setup form now presents the printer type first and uses a clearer radio-button choice, matching the point-of-sale printer setup experience. This makes configuration more consistent and easier for users to understand.
Original PR description
Enterprise PR: https://github.com/odoo/enterprise/pull/122652 This commit changes the printer form view to follow the same layout as the POS printer form view, where the printer type is first and is a radio button. task-6333695 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#273723
This change removes an unnecessary internal check from the sales order invoice status calculation. It makes the code easier to maintain while keeping the existing sales and invoicing behavior unchanged.
Original PR description
Description of the issue/feature this PR addresses: The `invoice_status` computation already filters `orders_to_compute` to include only confirmed sales orders (`state == "sale"`). Because of this, the subsequent condition: ```python if order.state != "sale": ``` can never evaluate to `True`, making it unreachable (dead) code. Current behavior before PR: The `invoice_status` computation contains an unnecessary state check for non-confirmed sales orders. Since only confirmed sales orders are processed, this condition is never executed. Desired behavior after PR is merged: Remove the unreachable condition to simplify the computation and eliminate dead code without changing the existing behavior or business logic. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adds three standard work entry categories needed for Belgian payroll localization. It helps ensure Belgian employee time and leave records can be classified correctly for payroll and reporting needs.
Original PR description
Introduce three new base work entry types (LEAVE14704, LEAVE14708, LEAVE14713) to be extended by the Belgium localization. Task: 6361609 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Payroll users can now search rule parameters using the parameter value, not just the name or code. This makes it easier to find the right payroll setting when users know the amount or value, including older stored values.
Original PR description
Users often know the exact value of a payroll parameter but not its name or code. This adds a search field on the rule parameter search view targeting the related values, enabling lookups across both current and old values. Task: 6365318
Several apps were updated to use the newer Material Symbols icon style instead of the older FontAwesome setup. This keeps icons displaying correctly across screens such as appointments, documents, knowledge, rooms, sign, studio, website appointments, rentals, and live chat after the platform-wide icon change.
Original PR description
This is the minimal migration required for odoo/odoo#273606 to work. task-5901783
Full-week payroll calendars for several localizations are now provided as demo examples instead of standard setup data to align with new calendar rules. Hong Kong company defaults are adjusted so new companies still get an equivalent working calendar where needed.
Original PR description
In odoo/odoo#267961, we are disallowing the use of time types linked to a country on a resource calendar without a company. This commit aims at moving some calendars that had such time types from the data to demo. task-6298866
The Mexican electronic invoicing report template was adjusted to stay compatible with the updated main invoice template. This helps ensure localized invoice documents continue to render correctly after the template change.
Original PR description
Adjusting Enterprise l10n templates to work with updated main template. task-6152210
The Peppol settings section now appears at the top of the relevant settings page. This makes it easier for users to find and configure Peppol-related options without scrolling through other settings first.
Original PR description
Peppol block was moved to the top of the page task-5977363
Dark mode color choices in the color list have been adjusted to make them clearer and more consistent. This helps users better distinguish colors while keeping the interface aligned with recent visual updates.
Original PR description
this commit applies some small changes to the colorlist dark mode colors for clarity purpose and fit with the new color added in https://github.com/odoo/odoo/pull/189689 task-4384898
The Planning mobile resource view now shows an employee photo for people and a tool icon for material resources. This makes it easier for users to quickly identify the right resource while planning on a mobile device.
Original PR description
planning mobile view improvement - displayed picture of the employee if resource type is human on the resource kanban view. - displayed tool icon if resource type is material on the resource kanban view task-3770245
Spreadsheet screen display and scrolling behavior were reorganized to use a shared store, making the experience more consistent across comments, lists, pivots, history, and sales field sync features. This is mostly an internal improvement that should help maintain reliability while preserving expected user behavior.
Original PR description
The `SheetViewPlugin` and the viewport handling was moved into a store rather than a plugin. This commit make the necessary changes to odoo. Task: [6314784](https://www.odoo.com/web#id=6314784&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form)
Payment token records for SEPA Direct Debit now show the linked mandate directly on the form. This makes it easier for staff to verify the authorization behind a saved payment method without navigating elsewhere.
Original PR description
Add sdd_mandate_id on the payment token form. See https://github.com/odoo/odoo/pull/268220 task-6251341
An unused repair-related view and action were removed from the planning field service repair module. This cleans up the application internals and reduces maintenance overhead without changing the visible user experience.
Original PR description
Currently, action_open_reference_no_repair is not called anywhere, so the view remains unused. Therefore, this commit removes the unused view.
Uzbekistan financial reports now include Russian translations alongside Uzbek. This helps companies operating in Uzbekistan serve Russian-speaking users and improves adoption in the local market.
Original PR description
Uzbekistan's business environment requires Russian in addition to the official Uzbek language to ensure adoption. While localizations typically activate only statutory languages, Central Asian market realities justify this exception. task-6229114 -- I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr) Forward-Port-Of: odoo/enterprise#122901 Forward-Port-Of: odoo/enterprise#120250
Product availability checks for rentals and subscriptions are now handled through one shared purchase rule instead of several separate checks. This makes product filtering and add-to-cart behavior more consistent and easier to maintain, reducing the risk of mismatched storefront behavior.
Original PR description
Replace the ad-hoc _website_show_quick_add / _is_add_to_cart_allowed / _can_be_added_to_current_cart / _website_can_be_added overrides with a single override of _is_purchasable() in both modules, removing website_sale_subscription/models/product_product.py entirely. Community PR: - https://github.com/odoo/odoo/pull/252296 task-5491803