Friday, August 21, 2026
29 changes · master
Enhancements to existing features
The US sales tax report now captures more complete sales tax details, including exempt, non-taxable, taxable amounts, and tax rates by jurisdiction. This helps businesses prepare more accurate state-level tax reports and lays groundwork for future e-filing support in Odoo, including automated Avalara-based configuration.
Original PR description
*: account Purpose: Improve and enhance the US tax report framework to eventually support future e-filing directly within Odoo. To do so, the US sales tax report needs to capture all relevant…
*: account Purpose: Improve and enhance the US tax report framework to eventually support future e-filing directly within Odoo. To do so, the US sales tax report needs to capture all relevant information, such as exempt sales, taxable sales, non-taxable sales, and the tax rate. It supports both Avalara and non-Avalara users. Configuration: Users can configure taxes specifically for the US jurisdiction by setting the jurisdiction type, the following information required by the type (state, county, city). If the tax is an exempt or nontaxable of a standard tax rate, then it can be added to the standard tax rate on its exempt and nontaxable tax field. For Avalara users, the configuration is automatically handled based on the Avalara response. The following tax types are supported: - Fully exempt taxes (ex. 0% exempt tax) - Fully nontaxable taxes (ex. 0% nontaxable tax) - Rate-reduction taxes (ex. 6% rate reduced to 4% tax) Report: The US tax report will organize the taxes based on its state. Per state, it lists the taxes in order based on its jurisdiction type: state, special, county, city. The header will total the columns based on the base lines to avoid double-counting. Per tax row, the column values include its linked exempt and nontaxable taxes. - Gross should be a sum of exempt, nontaxable, and taxable values. - Exempt displays the amount that are exempted. - Nontaxable displays the amount that are nontaxable. - Taxable displays the amount that are taxable. **Note: Rate-reduced taxes will not have its own row and are aggregated into its parent tax. Additional changes: To support city jurisdiction type on taxes, the res.city.csv file needs to be moved from l10n_us_hr_payroll to l10n_us for access. task-6223342 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Point of Sale customer display can now open directly on a connected secondary screen when the browser supports it and permission is granted. If that is not possible, it still opens normally on the same device, giving shops a smoother customer-facing display setup without disrupting existing workflows.
Original PR description
In this commit: ================= When a secondary screen is detected via the `Multi-Screen Window Placement API`, the customer display opens there; otherwise it falls back to opening in a new window on the same device. The Multi-Screen Window Placement API (`window.getScreenDetails()`) lets the browser report all connected displays along with their position and size, so the customer display window can be placed precisely on an external screen instead of just opening on the same monitor as the POS. It requires user permission and is only supported in Chromium-based browsers, so the feature gracefully falls back to opening on the same device when the API is unavailable, no secondary screen is found, or permission is denied. Task: 6305983
The mail interface now supports customized tab views in areas like discussions and the messaging menu. This gives teams more flexibility to organize communication views in ways that better fit their workflows.
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
This update expands automated checks for several onboarding flows and fixes issues those checks uncovered, including outdated screen targets and unreliable form entry behavior. This helps make first-time setup experiences in apps like Frontdesk, Expenses, Appointments, Subscriptions, Payroll, and Sales more dependable for users.
Original PR description
Add frontdesk_tour, hr_expense_extract_tour, appointment_tour, sale_subscription_tour and payroll_tours to the onboarding tours test, fixing the tours themselves where the robot-mode replay uncovered real bugs: obsolete selectors, incomplete many2one selections, dirty-form-on-save races, and (for payroll_tours) a full rewrite of the contract-creation flow to match the hr.version model that replaced the old hr.contract-based UI. Also fix searchOrCreateMany2X: always type the field value explicitly in the "Create and edit" dialog instead of relying on its async pre-fill on desktop, which can lose the race against the next tour step on heavier form views. 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
HR users can now create employee versions for several employees at the same time through a guided wizard. This reduces repetitive work and helps teams manage employee record changes more efficiently across groups of staff.
Original PR description
This commit introduces a new wizard in the HR module that allows users to create employee versions for multiple employees at once. TaskID: 6471477
The help and participant-list messages have been updated to be clearer for users. The option to leave a conversation is now handled consistently through the conversation action menu rather than a typed command, with wording that fits all conversation types.
Original PR description
* = im_livechat Updated `/help` description and `/who` message. Moved leave conversation eligibility logic to channel model. Renamed "Leave Channel" to "Leave Conversation" so that it works for all channel types. Removed /leave command. task-[6008262](https://www.odoo.com/odoo/project/1519/tasks/6008262) enterprise: https://github.com/odoo/enterprise/pull/112959
Website forms now automatically include required fields when a form action is changed to a less-common model, preventing silent submission failures. Long single-choice fields are shown as dropdowns for easier use, and empty date fields display cleanly instead of showing undefined values.
Original PR description
Selecting an action from "More Models" emptied the form: those models have no registered fields, unlike curated actions. Without the model's mandatory fields, the form silently fails at submission. Now those fields are added and flagged model-required (non-removable), so the form stays submittable. task-4952094
Spreadsheet scorecards now define their main value and baseline using formula syntax, making them more consistent with spreadsheet behavior. This improves reliability and clarity when scorecards are configured or displayed, including in dashboard views.
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
Manufacturing teams can now update the recorded work order duration for a specific employee. This helps keep employee time logs accurate for production tracking and related costing.
Original PR description
Now the work order duration for a specific employee can be updated.
Backend refund orders now follow the same limits as the Point of Sale frontend. Staff can still adjust quantities, delete lines, add customer notes, and specify lots, but cannot change key commercial details such as products, prices, discounts, or add new lines, reducing refund errors and inconsistencies.
Original PR description
In the frontend the refund process is limited to only certain actions/ modifications. However if you refund from the backend multiple fields are editable. Currently you are allowed to change the product, its unit price, the discount, add a new product line,... We block all those actions and we keep: - editing the quantity - deleting order line - customer note (why not?) - lot (allows to specify which lot we return) task-6445165
The emoji picker is now easier to use with clearer search guidance, a better-positioned search icon, and a quick button to clear searches. Frequently used emojis also stay in a stable order while the picker is open, making selection more predictable for users.
Original PR description
This commit improves the emoji picker UX by: - changing the search placeholder to 'Find the perfect emoji'. - moving the search icon to the left. - adding an `oi-filled` button to clear the emoji picker search. - preventing frequent emojis from being reordered while the picker is open. Task-[5879855](https://www.odoo.com/odoo/project/1519/tasks/5879855) <img width="337" height="407" alt="image" src="https://github.com/user-attachments/assets/cb832b4e-376b-4a1f-9d0b-b308186e2eb2" /> <img width="337" height="407" alt="image" src="https://github.com/user-attachments/assets/70652df6-a64f-4dd6-b589-00854d0f54b7" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Website editors now manage mega menus directly from each menu item using a checkbox instead of a separate add action. The update also adds easier content drop areas and a blank template, making it faster to build and customize large navigation menus.
Original PR description
1. Remove + mega menu item and make it a checkbox on menu item instead 2. Add dropzones before & after each template 3. Remove size on the editor for mega menu and rely on general layout 4. Add a blank template last task-6171291 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Helpdesk field service teams can now plan interventions from the standard Planning view, see all shifts, and open scheduled work filtered to the current ticket. The update also separates scheduled and completed shift counts, making it easier to understand upcoming and finished work at a glance.
Original PR description
- "Plan Intervention" now opens the standard Planning view showing all shifts. - "Scheduled" opens the Planning view filtered on the current ticket. - Open the Gantt view on the next scheduled shift, or the most recent shift when no upcoming shift exists. - Display scheduled and completed shift counts separately. task-6267783
Worksheet section titles are now shown when worksheets are printed as PDFs and viewed in the portal. This preserves the worksheet structure for customers and field service users, making forms easier to read while keeping folded sections working as before.
Original PR description
Previously, worksheet sections were not displayed in printed PDFs or on the portal UI, causing the worksheet structure to be lost. This change ensures that section titles are rendered in both the printed PDF and the portal UI while preserving the existing behavior for folded sections. task-6314616
The timesheet timer menu now loads more quickly by avoiding repeated background requests and reusing information that has already been prepared. This should make opening and using the timesheet systray feel smoother, especially for users who track time frequently.
Original PR description
This PR removes some blocking RPC calls and caches information to make the loading of the systray as lightweight as possible. Changes include: - Move `field_get` to the lazy session info, so the field metadata is available client-side without a dedicated round-trip. - Cache the pre-filled form: it does not change as long as the task / project context stays the same, so it is computed once and reused. - Drop the `get_server_time` RPC and rely on the client-side clock. - Add a client-side systray cache service to avoid redundant requests. Task-6131386 Forward-Port-Of: odoo/enterprise#125368 Forward-Port-Of: odoo/enterprise#120429
The VoIP softphone now opens directly to a pre-filled keypad when launched from a form with an available phone number. Calls made without changing that number are automatically logged against the related record, helping teams save time and keep customer activity history accurate.
Original PR description
``` [IMP] voip: auto-fill keypad with partner phone and create call activity on form record When the softphone is opened from the systray while a form view is active, automatically switch to the keypad tab and pre-fill the partner's phone number if the record has a partner_id with a phone field. Falls back to the record's own phone fields (via _phone_get_number_fields) when no linked partner is found or the partner has no phone number. If the user dials the pre-filled number without modification, the form record context (res_id, res_model) is passed to makeCall so that a phonecall activity is created and linked to that record. ``` Task-6365445
UK companies now submit HMRC VAT returns from the tax return itself instead of the tax report screen. This makes the filing process more intuitive and avoids generating unnecessary returns from the UK tax report.
Original PR description
Before this commit: - The tax return submission to HMRC for UK companies is done in the tax report view itself. - Even the returns are being generated for the UK tax report, but the filing process is handled in the tax report, which is unintuitive. After this commit: - The UK tax return filing to HMRC has been moved to the tax return itself. - So there are no more useless returns generated for the UK tax report. Related Upgrade PR: https://github.com/odoo/upgrade/pull/10198 Task-5865605
Website editor users will now see an AI badge next to individual blocks that were generated or changed with AI. This helps set expectations that some standard editing options may behave differently for those blocks.
Original PR description
This commit shows an icon next to the name of snippets edited with the AI so users know standard builder options may behave differently. The flag `containsAiContent` was only set on the zone, but the icon is shown per snippet, so it is now stamped on each generated block instead. task-6251800
Belgian payroll now includes salary rules for handling gift vouchers. This helps payroll teams calculate and report these benefits more consistently within Odoo.
Original PR description
Task: 6424079
The Belgian payroll module now includes a salary rule for calculating an additional net salary component. This helps payroll teams handle this type of compensation more directly and consistently within Odoo.
Original PR description
This commit introduces a new salary rule to the Belgian HR payroll module, allowing for the calculation of an additional net salary component. task-6409188
The salary configurator now avoids duplicate background work and reduces database lookups when users update salary offers or benefits. This should make salary simulations faster and more efficient without changing the user-facing process.
Original PR description
In the salary configurator (`/update_salary` and `/onchange_benefit` routes), `create_new_version()` was executing a redundant second call to `offer._get_version()`. This caused an extra dummy `hr.employee` and `hr.version` record to be created in memory, triggering an unnecessary nested `hr_version_context` savepoint. Fix: Pass the existing `version.payroll_properties` record into `create_new_version()` directly to avoid the second `_get_version()` call and eliminate the nested savepoint cycle. `_get_compute_results()` was executing multiple separate `search()` queries on `hr.contract.salary.resume` for different value types. Combine these searches into a single query per request to reduce database round-trips. Task: 6226629
WhatsApp conversations now keep at least one internal agent assigned by hiding options that would let the final agent leave. This helps ensure customer conversations remain accessible, supported, and manageable by the business.
Original PR description
Prevent last agent from leaving the conversation by hiding the Leave conversation action and /leave channel command. This prevents scenarios where a Whatsapp channel becomes orphaned with only the external Whatsapp customer remaining, which would make the conversation inaccessible and unmanageable. task-[6008262](https://www.odoo.com/odoo/project/1519/tasks/6008262) community: https://github.com/odoo/odoo/pull/257521
Time off requests made from the Gantt view now handle multi-day date ranges more consistently. When a selected range effectively counts as one working day due to weekends, non-working days, or overlapping leave, users are no longer shown misleading half-day choices.
Original PR description
Purpose: When taking a range which results in only 1 day taken (because it overlaps with a non working day or another time off), you only see the selector of morning / afternoon like for a unique day, but you shouldn't be able to select morning or afternoon. - added selection for request periods in the gantt for day ranges similar to the one in form view task-id: 6456270
Helpdesk reports and ticket groupings now show the total time spent instead of the average time. This gives managers a clearer view of workload and effort across tickets, periods, and reporting groups.
Original PR description
Previously, the average number of hours spent was displayed in the Ticket Analysis and SLA Status Analysis reports. The grouped view in both My Tickets and All Tickets also showed the average time rather than the total time, making it difficult to understand the actual time spent. From this commit onward, the total time spent will be displayed instead of the average. This provides a clearer view of how much time has been spent over a specific period or based on the selected grouping criteria. Task-4652757
The manufacturing work order time log dialog now updates the employee's total logged time instead of only the most recent entry. This makes the displayed time better match what users expect and reduces confusion when tracking work on production tasks.
Original PR description
Before, the update time log dialog was targeting the last employee time log entry, causing confusion as it didn't match the total time spent on the task. The employee total time is defined as the sum of its time log entries without checking if they overlap, unlike the work order duration. Task-6467195
WhatsApp message templates can now use meaningful placeholder names, such as customer name, instead of only numbered fields. This makes templates easier to read and keeps Odoo compatible with newer WhatsApp Cloud API template formats.
Original PR description
This commit introduces support for named parameters in WhatsApp templates, allowing users to use descriptive placeholders like `{{customer_name}}` in addition to the standard positional `{{1}}` format.
This change ensures compatibility with newer template formats supported by the WhatsApp Cloud API and improves template clarity.
Documentation: https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/overview#parameter-formats
Task-5871301Payroll setup now offers a clearer closing-date selection, including the 15th of the month, ordered from month-end backwards. Employee onboarding screens show only relevant actions at the right time, and missing employer category warnings appear earlier on the dashboard so payroll issues can be addressed before payslip processing.
Original PR description
In this PR expected to update Payroll closing date in payroll config, where before picking the day of payroll fells weird because of the order and also not possible to choose the 15 og the month. Update to list all possible options from the last day ot the month below in decreasing order. During creation first employee, there are smartbuttone that better to show with specific condition - Salary adjustment -> Displayed only when an active contract exists. - Time off -> Displayed only after the employee record has been saved. - History -> Displayed only when the employee record has been saved. Update warning missing employer category, where before only visible in the payslip. Display the warning on the dashboard so users are awated upfront than discovering it later on Individual payslip. task-6438703
Rescheduling tasks in the Gantt view now keeps the same number of working hours between the planned start and end dates. This helps project schedules remain accurate when tasks are moved, reducing manual corrections for planners and managers.
Original PR description
When rescheduling tasks from gantt view, we should keep the number of working hours between the start and end dates of the task when rescheduling it --- task-5376423
Australian payroll can now include post-tax deductions on payslips that reduce net salary without being reported through Single Touch Payroll. The change also supports separate accounting treatment for different deduction types and refreshes year-to-date opening balances when new salary rules are added.
Original PR description
This commit allows post tax deductions to be added to the payslip without impacting STP. This also allows automatically creating opening balances entries for new salary rules. task - 6236042 Forward-Port-Of: odoo/enterprise#119952