Daily updates from Odoo
Tuesday, July 7, 2026
28 changes
3 changes
Enhancements to existing features
The timesheet assistant now gives clearer guidance when setup issues prevent activity tracking, including distinguishing connection problems from CORS configuration issues and warning when the browser extension is missing or inactive. It also improves suggestion quality by showing real record names, preserving deleted Odoo events properly, and selecting more relevant projects for calendar-based timesheets.
Original PR description
Forward-Port-Of: odoo/enterprise#121939 Forward-Port-Of: odoo/enterprise#115859
The Courses menu is no longer hidden when Course Allocation is enabled in a restaurant point of sale. This makes course setup and management accessible to the people who need it, and the added help text guides users when creating courses.
Original PR description
Before this commit: ======================= The Courses menu was always hidden because it was restricted to `base.group_no_one`, making course management inaccessible even when Course Allocation was enabled in a restaurant PoS. After this commit ====================== The Courses menu now always visible. A help message is also added to the Courses action to guide users when creating courses. Task-6317914 Forward-Port-Of: odoo/odoo#274300 Forward-Port-Of: odoo/odoo#271308
PDF reports can now be converted into images before printing, which makes them compatible with ePOS printers. This helps businesses print documents like labels on devices such as the Epson TM-L100.
Original PR description
We now use wkhtmltoimage to render pdf reports as images in order to print them using an ePOS printer. This is useful to print labels using an Epson TM-L100 for example.
3 changes
Enhancements to existing features
UK VAT returns now prompt users when their company belongs to a tax unit and can automatically switch the report to that tax unit. When filing to HMRC, the system uses the tax unit's VAT number where applicable, reducing filing errors for grouped companies.
Original PR description
BEFORE: - Before this commit, when the current company is a member of the tax unit, there is no blocking level error for the user to select the tax unit. - And the vat used while creating a connection to the HMRC or while sending a tax report to the HMRC is of the current company. AFTER: - After this commit, there is one blocking level error, which tells the user that the current company is part of a tax unit, and on confirmation, the tax unit will automatically be selected for the current report. - And if the return contains the data of a tax unit, then the vat set on the tax unit will be considered while establishing the connection and sending the tax report to HMRC. Task-5865605 Forward-Port-Of: odoo/enterprise#122965 Forward-Port-Of: odoo/enterprise#107253
This update improves the French reporting tools used for fiscal declarations. It helps make local compliance reporting more reliable and easier to maintain for businesses operating in France.
The product list in Point of Sale now stays in the full layout on medium-sized tablets instead of switching to the compact view too early. This gives staff more space to browse products and improves usability on devices in landscape or medium-width screens, including a fix for iPhone/iPad orientation changes.
Original PR description
Previously, the product list was rendered in "small display" mode for all screen sizes below the medium breakpoint (< 992px). However, some small tablets are able to fully display the product list at the medium breakpoint (≥ 768px and ≤ 991px). After this fix, "small display" mode is only applied when the screen width is below 768px. This commit also includes a fix for iOS devices where the screen breakpoint was not correctly recomputed on orientation change. Task.6251934 Enterprise: https://github.com/odoo/enterprise/pull/119534 Forward-Port-Of: odoo/odoo#270394 Forward-Port-Of: odoo/odoo#266704
4 changes
Enhancements to existing features
UK VAT returns now guide users to file through the relevant tax unit when their company belongs to one. The system uses the tax unit VAT number for HMRC connections and submissions, reducing filing errors and ensuring reports are sent under the correct entity.
Original PR description
BEFORE: - Before this commit, when the current company is a member of the tax unit, there is no blocking level error for the user to select the tax unit. - And the vat used while creating a connection to the HMRC or while sending a tax report to the HMRC is of the current company. AFTER: - After this commit, there is one blocking level error, which tells the user that the current company is part of a tax unit, and on confirmation, the tax unit will automatically be selected for the current report. - And if the return contains the data of a tax unit, then the vat set on the tax unit will be considered while establishing the connection and sending the tax report to HMRC. Task-5865605 Forward-Port-Of: odoo/enterprise#122965 Forward-Port-Of: odoo/enterprise#107253
Belgian payroll rules were updated with the new employment bonus parameters taking effect on 1 July 2026 and 1 September 2026. This helps ensure payroll calculations remain aligned with upcoming legal requirements and reduces the risk of incorrect payslips.
Original PR description
Update the employment bonus parameters for 1st July 2026 and 1st September 2026. task-6369633
Belgian payroll calculations now include updated employment bonus parameters taking effect on 1 July 2026 and 1 September 2026. This helps ensure payroll remains aligned with the latest Belgian rules for eligible employees.
Original PR description
Update the employment bonus parameters for 1st July 2026 and 1st September 2026. task-6369633
Creating employees will now process future public holiday time entries much faster. This prevents long waits or timeouts when many holidays have been set up far into the future, improving reliability for HR and planning teams.
Original PR description
**Problem:** When creating a new employee, the future timesheets due to public holidays are computed. If the number of public holidays is large (i.e. if the user creates them for each year, several…
**Problem:** When creating a new employee, the future timesheets due to public holidays are computed. If the number of public holidays is large (i.e. if the user creates them for each year, several years in the future), then it takes excessively long and the action may not complete. **Cause:** The pytz method `localize` and comparing times with non-static timezones is done repeatedly and unnecessarily which becomes costly with more records. **Solution:** Only localize the time when absolutely necessary (determining the date of the leave in the calendar timezone). **Performance Stats:** |Record count|Time before|Queries before|Time after|Queries after| |------------|-----------|--------------|----------|-------------| |100 |3.1s |393 |0.8s |117 | |1,000 |22.3s |2,090 |1.5s |183 | |10,000 |Timeout |N/A |6.7s |541 | opw-6087422 Forward-Port-Of: odoo/odoo#270684 Forward-Port-Of: odoo/odoo#263953
10 changes
Enhancements to existing features
Field service users can now see product availability forecasts and expected arrival timing directly in the stock moves list. This saves time by reducing the need to open each record individually when checking supplementary products for planned sales orders.
Original PR description
Previously, when a sales order for a field service product was planned, adding supplementary products only displayed the basic delivery status in the stock moves list view. To view the replenishment forecast or expected arrival date, users had to navigate into the form view. This commit exposes the `forecast_widget` in the list view. Users can now check product availability and arrival timelines at a glance without opening individual records. task-5929015
Project task users can now dismiss time off warning banners once they have been seen or addressed. Dismissed employees are skipped in future time off checks, reducing unnecessary processing and improving performance on tasks with multiple assignees.
Original PR description
Previously, leave warnings were always computed and displayed for all assigned employees, even if the warning was already known or addressed. For tasks with multiple assignees, this led to unnecessary processing. - Add a dismissal mechanism to the leave warning banner on the task form view. - Exclude dismissed users from the time-off calculation pool to avoid redundant fetching and performance degradation. task-5025297
The preparation display used by kitchen and order teams has been refreshed with a cleaner layout and improved visual styling. A new dark mode makes the screen easier to use in low-light environments and gives restaurants more flexibility for their setup.
Original PR description
*: pos_restaurant_preparation_display, pos_self_order_preparation_display, pos_urban_piper In this commit: ----------------------- - Implemented dark mode for the kitchen display. - Updated styling and layout for improved visuals. Task: 6112459 | Brfore | |--------| | <img width="1919" height="896" alt="image" src="https://github.com/user-attachments/assets/082924e6-f442-429f-afb0-6b5c16b7d761" /> | AFTER | Light | Dark | |--------|--------| | <img width="1919" height="898" alt="image" src="https://github.com/user-attachments/assets/225ce5c1-fee2-4ea7-ac80-5ee9c9232d1b" /> | <img width="1920" height="895" alt="image" src="https://github.com/user-attachments/assets/bee6c761-49ea-49b0-b20e-bd7d96904e6d" /> |
AI chats now behave more like standard Discuss conversations, with message search, editable conversation titles, and a visible favorite button in the header. Tools and Skills setup options were moved under Configuration so administrators can find setup-related settings in a more intuitive place.
Original PR description
AI chats were missing several behaviors users expect from any other Discuss conversation: searching within messages, renaming the conversation, and displaying the favorite button in the header (the action was already available but not visible there). The Tools and Skills configuration entries were also moved from the Agent menu to the Configuration menu, as they are setup-time settings rather than something a user interacts with during day-to-day agent use, and grouping them under Configuration is more consistent with where users expect to find them. task-6326376 Related: https://github.com/odoo/odoo/pull/273973
After a user signs a document, the thank you dialog now only suggests documents that are ready for that user to sign. This prevents users from opening or signing documents before their turn, making the signing flow clearer and more reliable.
Original PR description
Before this fix: After signing a document, the thank you dialog would show pending documents regardless of signing order. This allowed users to navigate to and sign documents even when it was not yet their turn. After this fix: The thank you dialog now only shows documents where it is the user's turn to sign, respecting the signing order set on the request. Impact: Improves user experience by ensuring the signing order is respected when navigating to the next document from the thank you dialog. Task ID: 6306061
Subscription product pages now show discount badges only when a plan is truly cheaper than the one-time purchase option or the relevant comparison price. Goods product pages also avoid showing misleading recurring price information, helping customers compare options more clearly before buying.
Original PR description
Before: - When "Accept One-Time Sale" was enabled, plans priced higher than the Buy Once price still showed a discount badge incorrectly. - For goods products, the "per period" price column was shown, which is misleading since goods are not sold on a recurring price basis. After: - When "Accept One-Time Sale" is enabled, each plan is compared against the Buy Once price; only cheaper plans show a discount badge. - For consumable products, discount is calculated against the most expensive delivery option so cheaper plans show the saving correctly. - For non-consumable products, plan prices are normalized to the shortest billing period for a fair comparison across all plans. - The "per period" price column is now shown only for service products. Impact: - Customers always see accurate discount badges. - Goods product pages no longer show a misleading per-period price, reducing confusion for customers during purchase. Taskid- 6230474
Rental orders now update key dates and prices automatically, reducing manual work and the risk of pricing mistakes. The sales form is also cleaner by showing subscription and rental fields only when they are relevant.
Original PR description
Before this change: - A delivery date field was manually editable and used to control the rental delivery date. - Changing the rental start or end date showed an 'Update Rental Prices' button to update rental pricing. - The rental period field was displayed below the delivery date. - The recurring plan field was visible even when no subscription product was present. After this change: - The delivery date field is hidden and automatically computed from rental_start_date. - Rental prices are automatically recomputed when the rental start or end date changes, removing the 'Update Rental Prices' button. - The rental period field is moved before the pricelist field for better UI flow. -The recurring plan field is now hidden when the order does not contain any subscription product. task-6031439 Community PR:https://github.com/odoo/odoo/pull/255832 Upgrade PR:https://github.com/odoo/upgrade/pull/9693
Project document workspaces now update their company when all linked projects belong to the same company. This removes an inconsistency where projects created in different ways could leave shared documents without the right company assignment.
Original PR description
Before this PR --- - Projects created from the kanban quick create have no company at creation time, so their workspace is born without one. Changing the company later from the form view was silently…
Before this PR
---
- Projects created from the kanban quick create have no company at creation
time, so their workspace is born without one. Changing the company later
from the form view was silently ignored for the workspace, causing the
workspace and its documents to remain without a company.
- Projects created from the list view had their company set at creation, so
their workspace already had a company, and changes were correctly propagated.
This inconsistency made the behavior depend on how the project was created.
After this PR
---
- When a project's company changes, all projects linked to the same workspace
are checked:
- If all linked projects are now in the same company, the workspace company
is updated accordingly.
- If linked projects are in different companies and the workspace has no
company, the workspace is left untouched (accessible to all companies).
- If linked projects are in different companies and the workspace already has
a company, an error is raised (existing behavior, unchanged).
- This makes the behavior consistent regardless of how the project was created
(kanban quick create or list view).
task-4988098Salary offers based on an existing employee version can now use a different PDF template. This gives HR teams more flexibility to tailor offer documents without changing the underlying employee version.
Original PR description
When the offer is based on an employee version (template is the version of the employee), allow to modify `sign_template_id`. Task-6094733
Companies can now explicitly choose whether Stripe Issuing for expense cards runs in demo or production mode. This helps teams test cards safely without creating unnecessary fake Stripe accounts in a live setup.
Original PR description
In this PR: - Added a selection field "Mode" for users to explicitly select demo or production mode. - This avoids unnecessary creation of fake Stripe accounts in production. task-5952661
1 change
Enhancements to existing features
This update adds the new 13.5% Finnish tax rate and its related reporting group to support an upcoming VAT change from 14%. Businesses using Finnish localization can apply and report the new rate correctly when it becomes relevant.
Original PR description
backport of 5324615 As in Finland the tax rate will change from 14 to 13.5 on certain goods and services those taxes and the corresponding tax group were added to the l10n task-6332565
5 changes
Enhancements to existing features
French companies without an Enterprise subscription can now complete required identity verification to submit VAT reports, DAS2, and fiscal declarations through Odoo. If verification was already completed, submissions can continue without extra steps; otherwise, users are guided through the KYC process.
Original PR description
When sending a request from odoo to iap, we do a check subscription on all routes. The problem is that user without enterprise cannot send their vat report, das2 or fiscal declaration. For them, we will ask a kyc process. If the KYC has been done already then fine. Otherwise, we ask the user to do it. task-6208829
The Danish localization reports have been updated to match the 2026 minimal reporting requirements. This helps businesses using Danish accounting reports stay aligned with the latest expected balance sheet and profit and loss formats.
Original PR description
This commit adds the updated minimal reports task-5427493
Xendit payments now support PayNow for Singapore, along with SGD and USD currencies. It also adds more accepted card brands, helping businesses offer a wider range of payment options to more customers.
Original PR description
This commit expands Xendit support to include the Singaporean market and additional card brands. The following changes were made: - Added support for the PayNow (SGQR) payment method. - Added SGD and USD to the list of supported currencies. - Added JCB and AMEX to the supported card brands (available for some markets). - Updated the base payment provider data for Xendit to include PayNow. Task-5964309 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update prepares the French e-invoicing setup to enforce two-factor authentication when the new PDP integration is enabled. It helps ensure the connection meets compliance requirements before users can send invoices through the approved platform.
Original PR description
WIP: waiting for the pdp pr To be compliant with pdp, a 2FA process needs to be setup on the login. task-5486860 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users can now manually import bills from KSeF whenever they need them, instead of waiting for the scheduled background sync. The new option appears in the list and kanban view menus and refreshes the screen after the import completes, making it easier to get up-to-date documents on demand.
Original PR description
Previously, bills could only be retrieved from the KSeF platform via a scheduled cron job, leaving users with no option to manually sync documents on demand. An "Import from KSeF" action has been added to the gear (cog) menu within both the list and Kanban views. Clicking this option triggers the synchronization process immediately and reloads the active view. Task [link](https://www.odoo.com/odoo/project.task/6306892) task-6306892
2 changes
Enhancements to existing features
Attachment deletion is now much faster for companies using Chilean electronic invoicing and stock documents. This reduces delays during cleanup operations on large databases, improving system responsiveness without changing user workflows.
Original PR description
## The problem Deleting attachments checks foreign key triggers. Lookups in `account_move` and `stock_picking` tables for `ir_attachment` related fields coming from `l10n_cl_edi` overrides were slow due to missing indexes. ## The solution Added needed indexes to optimize triggers' lookups. ## Benchmark Time benchmark (deleting attachments from a customer database with 224K account moves and 204K stock pickings): |# of rows|Time (Before)|Time (After)| |----------|--------------|-------------| 100 | 29s | 16ms 1000 | 285s | 300ms OPW-6331845
Attachment deletion is now much faster for Chilean electronic invoicing and stock documents. This reduces delays when cleaning up or managing files in databases with large volumes of accounting and inventory records.
Original PR description
## The problem Deleting attachments checks foreign key triggers. Lookups in `account_move` and `stock_picking` tables for `ir_attachment` related fields coming from `l10n_cl_edi` overrides were slow due to missing indexes. ## The solution Added needed indexes to optimize triggers' lookups. ## Benchmark Time benchmark (deleting attachments from a customer database with 224K account moves and 204K stock pickings): |# of rows|Time (Before)|Time (After)| |----------|--------------|-------------| 100 | 29s | 16ms 1000 | 285s | 300ms OPW-6331845