Friday, July 24, 2026
9 changes · master
Enhancements to existing features
Users can now create batch payments from the payment wizard even when the payment method is not SEPA. SEPA payments keep the existing flow, ISO payments can generate downloadable XML without initiation, and other methods can still be grouped into batches.
Original PR description
Since the new payment initiation features, we added a wizard in the payment list view to allow users to create a batch or start a payment initiation. But this was only possible for SEPA payments. This commit allows users to create batch payments from this wizard with any payment methods. This works like so: - If SEPA payment -> same as before - If any ISO payment -> Not allowed to initiate the payment but can download XML - If any other methods -> Just allowed to create a batch without XML task-6272798 Forward-Port-Of: odoo/enterprise#120976
Clicking a phone number now follows the company’s mobile calling preference when VoIP cannot place the call. Users may see the softphone to check connectivity, open the native phone dialer, or choose between options, reducing confusion and accidental duplicate actions.
Original PR description
…ability When the user clicks a phone number in a PhoneField widget but VoIP is not available (canCall = false), the behavior now depends on the how_to_call_on_mobile setting: - "voip": show the softphone so the user can check the connection - "phone": fall back to the base class default (native dialer) - "ask": show a selection dialog for the user to choose We also backport the code to prevent double click from [1]. [1]: https://github.com/odoo/enterprise/commit/fa6c8747d69ffee25a7f308d26baca8500226784 Forward-Port-Of: odoo/enterprise#123065
When a user selects a project in the timesheet timer, Odoo now automatically fills in the task they most recently logged time on for that project. For Helpdesk projects, the same behavior applies to the most recent ticket, helping users start timers faster while still allowing easy changes.
Original PR description
When selecting a project in the timesheet timer, the task on which the user most recently logged time for that project is now prefilled, as they are most likely to keep logging time on it. If not, selecting a different task only requires one click. For Helpdesk projects, where the timer shows the ticket field instead of the task field, the most recently timesheeted ticket is prefilled in the same way. task-6359030 Forward-Port-Of: odoo/enterprise#124010
Self-order kiosk orders that will be paid at the counter are no longer sent to the Belgian blackbox before payment is completed. This prevents premature fiscal registration and supports mixed self-order payment flows more reliably.
Original PR description
This commits adapts the code in confirmation_page.js to not send the order to the blackbox from the kiosk if the order is not in paid state. task-id: 5960666 Forward-Port-Of: odoo/enterprise#123699 Forward-Port-Of: odoo/enterprise#117585
Uruguayan e-invoicing now lets users mark products as non-billable directly on the product record. This helps businesses report items such as manual rounding adjustments correctly to the tax authority using the required non-billable indicators.
Original PR description
Purpose: In UY e-invoicing, the DGI defines indicators 6 (positive non-billable) and 7 (negative non-billable). Currently, Odoo only supports down payment flows utilizing these indicators. However, indicators 6 and 7 are commonly used for other business cases, such as manual rounding adjustments. To support other flows outside of down payment, an explicit product-level flag is added to represent non-billable items/services in UY. Users will be able to set a product as non-billable in the Accounting tab. When an invoice containing non-billable products is sent to the DGII, it will be sent with the appropriate indicators, 6 or 7 and aggregated into MontoNf node of the CFE document. task-5904238
The automated clickbot now also verifies that screens meant to work offline still behave correctly when the network is unavailable. Several dashboards and views now open faster by showing cached information first, helping users avoid waiting while fresh data loads.
Original PR description
The clickbot only ever exercised the app while online. It now also checks that the views marked as available offline still work correctly once the network is cut, catching regressions that only show up in offline mode. task-id 6366264
The Employee Gantt view in Manufacturing now shows only employees who are currently assigned to active work orders or who worked on one in the last 30 days. This reduces clutter and helps planners focus on the employees most relevant to current production work.
Original PR description
Before, in Employee Gantt in MRP module, all employees of the company were shown, even if they have never done a work order. Now, the following employees are visible: - Employees currently assigned to any work order (not done, not cancelled) - Employee assigned to any work order in the last 30 days task-6276316
Event staff can now print attendee badges in A4 PDF format directly from the registration desk. The update also extends badge printing support to Point of Sale, making on-site event check-in and badge handling more flexible.
Original PR description
This PR adds the support for A4 pdf badge printing through the registration desk. Requested for OXP in Kenya See https://github.com/odoo/odoo/pull/275021 Forward-Port-Of: odoo/enterprise#123799 Forward-Port-Of: odoo/enterprise#123478
Spreadsheet users can now retrieve the visible label of a global filter, such as a customer name, instead of only its internal ID. This makes spreadsheet reports easier to read and share when filter values need to be displayed in a business-friendly way.
Original PR description
Before this commit: If you use ODOO.FILTER.VALUE and have a customer set in the global filter, it returns the id of the customer. That can be useful in some cases but in others you might simply want the label. Task: 6167605 Forward-Port-Of: odoo/enterprise#124746 Forward-Port-Of: odoo/enterprise#115984