Wednesday, August 26, 2026
7 changes · saas-19.4
Enhancements to existing features
Improves HR performance by skipping unnecessary calendar checks when employee contract or version dates follow each other without a gap. This reduces processing time and database queries for related HR wage validation tasks, making the system faster without changing business behavior.
Original PR description
Optimize `has_work_hours_between_versions` by adding a fast path for back-to-back versions. If a new version starts the exact day after the previous one ends, there is no time gap between them (the old version ends at midnight and the new one begins immediately). In this scenario, we can safely return `False` and bypass the expensive calendar lookup entirely. `._get_l10n_be_min_wage_invalid_employees` on next.odoo.com: | | time | SQL queries | |--------|--------|--------| | before | ~7.8s | 6744 | | after | ~2.4s | 491 | <img width="1874" height="995" alt="image" src="https://github.com/user-attachments/assets/2b61179b-10c5-46a6-a3ac-4a0cad14f6d6" /> <img width="1874" height="995" alt="image" src="https://github.com/user-attachments/assets/7a70fb39-ece9-4090-ba2e-f3c4acca2657" /> task-6472490 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Belgian payroll now reflects 2026 rules for copyright royalty payments made through payroll. These payments will be subject to social security contributions and taxed at a flat withholding rate, helping payroll calculations stay compliant with upcoming legislation.
Original PR description
As of 2026, copyright (IP) royalties paid through the payroll are subject to ONSS and their withholding tax becomes a flat rate: - new rule "Intellectual Property - ONSS Part" (IP.PART.ONSS) computes the 13.07% ONSS on the IP part of the remuneration - the IP withholding tax is now a flat 15% (new rule parameter ip_tax_rate) applied on the IP part net of its ONSS part, replacing the 50%/25% cost-deduction brackets and the withholding cap (ip_deduction_bracket_1/2 are no longer referenced by the code) Forward-Port-Of: odoo/enterprise#129136
The Indian localization stock demo data now includes a warehouse for the Indian demo company. This removes extra setup work during demonstrations, testing, and purchase or delivery workflows involving e-way bills.
Original PR description
Following the task-4034713, we used to create warehouse for all company but after this task we only create warehouse for the main company while testing for Indian Demo company considering the ewaybills it's annoying to create a new warehouse for Devs and POs and even for Demos After this commit, we will create demo warehouse for the Indian demo company Task [link](https://www.odoo.com/odoo/project.task/4034713) task-4034713 Forward-Port-Of: odoo/odoo#283797
The timesheet assistant now shows the actual record name when ActivityWatch cannot directly match an Odoo page but can identify a record from the URL. This makes generated work descriptions clearer and more useful, such as showing the department or record being worked on instead of only the general app name.
Original PR description
Before this commit, when the ActivityWatch integration encountered unmatched Odoo URLs, it would fallback to displaying the general application name (e.g., "Working on Sales"). With this commit, if the URL path ends with a valid record ID (e.g., /odoo/departments/1) and the corresponding model can be identified, the assistant will attempt to fetch and display the actual record name (e.g., "Working on Research & Development"). task: 6365568 Forward-Port-Of: odoo/enterprise#127547 Forward-Port-Of: odoo/enterprise#124138
The appointment booking view now groups entries by guest automatically, making it easier for staff to review reservations by customer. This improves day-to-day booking management by reducing manual filtering and helping teams quickly spot each guest's appointments.
Original PR description
Add default Group By Guest Task-id: 6253719 Forward-Port-Of: odoo/enterprise#118681
French DAS2 and fiscal declaration return forms now display the expected color indicators for their statuses. This makes it easier for users to quickly understand the state of these returns at a glance.
Original PR description
During the development of the das2 report and fiscal declaration, we didn't change the _compute_visible_states to accept the return of those reports. By doing so, we now have colors on the returns. task-6297355 Forward-Port-Of: odoo/enterprise#120417
Bank journals now receive the correct outstanding payment accounts automatically for Moroccan companies, and the shared behavior is also available for India. This helps cash-basis tax reporting include payments correctly even when bank synchronization is not available.
Original PR description
Reason: - Moroccan companies usually use cash basis accounting. And the cash basis entries are only made when the invoices are reconciled with the bank transactions. However, in Morocco, there is no…
Reason: - Moroccan companies usually use cash basis accounting. And the cash basis entries are only made when the invoices are reconciled with the bank transactions. However, in Morocco, there is no Moroccan bank available for bank synchronization. Before this commit: - We are not assigning the outstanding accounts on the bank journals by default. - Which is causing the issues when the user creates a payment without an entry and without having any bank transactions to reconcile it with. Therefore, the tax report won't show the moves and taxes that occurred in the period. After this commit: - Introduced a method for updating the accounts on the payment method lines of the bank journal in the account module, as we need the same functionalities in l10n_in as well. - For Moroccan localization, from now on, we are setting the outstanding accounts automatically on the bank journals. - The payment accounts are applied by default during CoA loading and whenever payment method lines are recomputed, ensuring accounts remain consistent. Task-6041119 Forward-Port-Of: odoo/odoo#254642