Daily updates from Odoo
Thursday, June 18, 2026
36 changes
2 changes
Enhancements to existing features
This update enhances navigation between sold assets and related customer invoices. Now, invoices linked to a sold asset will display a direct link to the asset within the invoice chatter, and vice-versa. This streamlines workflows by providing easier access to relevant financial information.
Original PR description
This commit improves the navigation from a sold asset to the customer invoice and vice versa. A reference link of the sold asset is added to the chatter of each invoice used in sale. Also, all invoices used in sale are added as reference link to the asset's chatter. task-4413649 Forward-Port-Of: odoo/enterprise#118665
This update integrates with the new Gmail Chrome and Firefox extension to automatically capture email data (sender, recipients, etc.). Odoo then uses this information to provide more relevant suggestions for timesheet entries, connecting email activity with project and task assignments.
Original PR description
[IMP] timesheet_grid: Gmail watcher In this commit, Odoo now consumes data from the new Gmail Chrome and Firefox web extension, which captures the from, to, cc, and bcc fields of read and composed emails and sends them to Activity Watch. Odoo retrieves these events, extracts the emails, searches for partners linked to projects and/or tasks, and adds them to suggestions as keyEvents. task-5956040 Forward-Port-Of: odoo/enterprise#112014
4 changes
Enhancements to existing features
This update enhances navigation between sales assets and customer invoices. Now, invoices linked to a sale asset will display a direct link to the asset's details within the invoice chatter, and vice-versa. This streamlines workflows and provides easier access to related information.
Original PR description
This commit improves the navigation from a sold asset to the customer invoice and vice versa. A reference link of the sold asset is added to the chatter of each invoice used in sale. Also, all invoices used in sale are added as reference link to the asset's chatter. task-4413649 Forward-Port-Of: odoo/enterprise#118665
This update optimizes how Odoo identifies relevant analytic plans, resulting in faster processing of journal entries and distributions. The change avoids redundant filtering, leading to a noticeable performance boost, especially when handling multiple journal entries simultaneously. This improves overall system responsiveness.
Original PR description
The method `get_relevant_plans` is called in `_validate_distribution`, which is often called in loops, for instance when validating the analytic distribution of multiple journal entries or of journal entries with multiple lines. That method is doing a lot of work by filtering all the plans and all the applicabilities every time, which can be avoided since the `kwargs` are likely to often be the same ones. Forward-Port-Of: odoo/odoo#269155
This update adjusts the checksum within the EU IoT Scale Certification module to ensure compatibility with a recent update in the core Odoo system. This change aligns the module with the latest Odoo version, preventing potential issues and maintaining proper functionality. It's a routine maintenance update.
Original PR description
This commit simply adjusts the checksum to align with the changes in odoo/odoo#269211. task-6273412
This update enhances the visual appearance of both customer receipts and preparation tickets within the Point of Sale system. Specifically, font styling has been improved, and table numbers on preparation tickets now include floor information, making them easier to read and understand for staff.
Original PR description
In this commit - --------------- Enhanced font styling for receipt and preparation ticket Added floor information next to table number on preparation ticket Task - 6125322 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#269850 Forward-Port-Of: odoo/odoo#260559
2 changes
Enhancements to existing features
This update enhances navigation between customer invoices and sold assets. Now, invoices linked to a sold asset are directly accessible from the asset's chatter, and vice versa. This streamlines workflows and provides easier access to related financial information.
Original PR description
This commit improves the navigation from a sold asset to the customer invoice and vice versa. A reference link of the sold asset is added to the chatter of each invoice used in sale. Also, all invoices used in sale are added as reference link to the asset's chatter. task-4413649 Forward-Port-Of: odoo/enterprise#118665
This update optimizes a key process in Odoo's accounting system, specifically when validating journal entries. By caching a frequently used calculation, the system now responds more quickly, especially when handling multiple journal entries or complex transactions. This results in a smoother and more efficient user experience.
Original PR description
The method `get_relevant_plans` is called in `_validate_distribution`, which is often called in loops, for instance when validating the analytic distribution of multiple journal entries or of journal entries with multiple lines. That method is doing a lot of work by filtering all the plans and all the applicabilities every time, which can be avoided since the `kwargs` are likely to often be the same ones. Forward-Port-Of: odoo/odoo#269155
26 changes
Enhancements to existing features
This update enhances the sales dashboard by correctly incorporating subscription data. Specifically, the system now recognizes and displays subscription products within the pivot table view. This ensures more accurate reporting and insights related to subscription sales performance.
Original PR description
Domaine updated for Pivot** #2 Addition of Product > Subscription Product is set on Pivot #2 Task: 6079819
This commit implements changes to align with Welmec certification requirements for the point-of-sale system. Specifically, it ensures order lines are visually marked as deleted, units are displayed correctly, and key numbers are large enough for readability. The LNE certificate number is also now prominently displayed.
Original PR description
See: https://github.com/odoo/odoo/pull/269211 This commit makes the following changes in order to satisfy the WELMEC certification requirements: - Whenever a weighed order line is deleted, instead of disappearing completely it remains visible to the customer but with a strikethrough. - The 'kg' unit is now always displayed to the right of the quantity in the order lines, never below it. - The size of the weight and price numbers when weighing a product have been increased (the guide specifies 9.5mm tall, but we have no physical control of the screen/zoom/PPI, so an `h1` equivalent size is used). - When the tare function is inactive on the scale, we now display 'Gross Weight' instead of 'Net Weight'. - The LNE certificate number is now always visible next to the certified scale icon. task-6273412 <img width="402" height="602" alt="image" src="https://github.com/user-attachments/assets/dd866c5b-d6b3-45a6-8d97-59dbe49c0a0a" />
This update simplifies lead management by directly linking existing subscriptions to leads. Salespeople now have a quick way to view and access customer subscriptions, enabling them to accurately create renewals and upsells. The system automatically connects new quotations to the original lead, streamlining the sales process.
Original PR description
Before this commit, leads did not display a customer's active subscriptions. Salespeople had no direct shortcut to existing contracts, making it difficult to ensure new quotations were correctly created as renewals or upsells for those records. After this commit, a smart button is added to the Lead form showing the count of subscriptions linked to the contact or its parent. Clicking it navigates to the subscription(s). Creating a renewal or upsell from this view automatically links the new quotation to the original lead via context. taskid-6124059
This update merges the 'Ask AI' and 'Odoo Agent' into a single 'Odoo AI' agent, streamlining the AI experience for users. It also optimizes how context data is handled, reducing unnecessary information and improving performance. Finally, the AI agent now supports more complex requests and integrates better with SEO optimization.
Original PR description
Purpose: -------- The "Ask AI" and "Odoo Agent" agents are quite similar except that the latter can not open views. However, users may want to go to another view when using AI from a record. So instead of having two almost identical agents, they are merged into a single "Odoo AI" agent. To avoid context bloating, the list of available menus and models are moved from the initial context to the tool result of the load_topics tool, which allows to only include them when needed. Some columns are also removed from the get_menus and get_model tools because they provided duplicate or inaccurate info (eg. app name is in the complete_path, or model_description was included in the result of both tools although the models are always included in the context if the menus need to be included). Task-6234767
This update enhances the user experience when managing holiday pay within the payroll process. The changes include visual cues – color-coding and tooltips – to highlight outstanding holiday balances and required actions, making it easier for HR staff to track and manage time off allocations. This improves clarity and efficiency.
Original PR description
This commit improves the user experience with the following changes: - Remove the global warning alert banner from the form layout view. - Color the background in orange and add a custom tooltip if the "Allocated" value is different than 0. - Color the background in blue if the "To Allocate" value equals 0 to indicate action is required. - Hide the "Postpone Remaining" columns automatically if the total remaining days across all records is 0. Task: 6259158
This update introduces a sticky reminder pop-up that appears when employees are actively working, prompting them to start their timesheets. This prevents inaccurate attendance records and payroll errors caused by employees forgetting to check in. The reminder is targeted based on employee roles and configurations.
Original PR description
Employees working during business hours sometimes forget to check in or start their timesheet session, which leads to inaccurate attendance records and payroll discrepancies. Before: The systray only…
Employees working during business hours sometimes forget to check in or start their timesheet session, which leads to inaccurate attendance records and payroll discrepancies. Before: The systray only displayed a passive check-in indicator that users could easily overlook during their daily workflow. After: A sticky reminder popover appears when the presence service detects activity, then waits 60 seconds. If the tab remains focused for the full duration, the reminder is shown. Subsequent presence events during the wait do not restart the timer, ensuring a single consistent trigger. The reminder only appears for configured employees: - Attendance only: when "Attendance Based" is enabled on the profile. - Timesheets only: for all timesheet users. - Both installed: if either condition is met. The timer cancels if the tab loses focus or the employee checks in. Clicking the reminder opens the systray dropdown, with wording that adapts to attendance or timesheet context. task-6171500
This update streamlines the Gantt chart's progress bars, providing clearer visual indicators of task completion and workload. The redesign focuses on a cleaner, more intuitive display of remaining hours and capacity, enhancing overall project tracking. Technical changes consolidate the progress bar code for improved efficiency.
Original PR description
*: mrp_workorder, planning, project_enterprise These commits revert https://github.com/odoo/enterprise/pull/101732 and introduce a completely overhauled design and architecture for Gantt row progress…
*: mrp_workorder, planning, project_enterprise These commits revert https://github.com/odoo/enterprise/pull/101732 and introduce a completely overhauled design and architecture for Gantt row progress bars: **Visual & UX Overhaul:** * Introduces a slim, always-visible 5px bar below the row title text, spanning from the title's start column to the right edge of the sidebar (removing previous hover interactions). * Displays remaining available hours as a small text label flush-right inside the row title, which turns red when the row is over capacity. * Adds a tooltip to the progress bar showing the raw breakdown: `value / max (ratio%)`. * Hides the progress bar and label entirely on rows lacking a title. * Stops accumulating left-indent for records inside sub-groups; only group header rows now indent based on nesting level. * Aligns the bar's start column with the row title's indentation, keeping nested group rows visually consistent. * Maintains progress bar support to the total row, overlaid at the bottom via absolute positioning so it does not inflate the sidebar height. **Technical Refactoring:** * Reduces `--Gantt__RowHeader-template-column` from 12px to 8px. * Removes the `MRPWorkorderGanttRowProgressBar` override, as the feature it introduced is now core. * Deletes the `GanttRowProgressBar` OWL component entirely; progress bar rendering is now inlined directly into the renderer templates. Adapts the related overrides to that change. task-6268316
This update consolidates external platform filters into a single "Food Platform" button on the TicketScreen. This simplifies order management and improves the overall user experience by removing confusing multiple filter options. Additionally, an unused field has been removed to streamline the system.
Original PR description
*=pos_urban_piper,pos_enterprise, pos_platform_order, pos_blackbox_be Before this commit: =================== - The TicketScreen displayed separate "Plat. Orders" and "Food Platform" filter buttons. Having multiple buttons for external ordering platforms makes the user interface and order management less intuitive. After this commit: ================== - Merged all external platform filters into a single, unified "Food Platform" button. - Also removed the 'iface_print_skip_screen' field as it is no longer used. Task - 6036688 Related Community PR - https://github.com/odoo/odoo/pull/255729 Related Upgrade PR - https://github.com/odoo/upgrade/pull/9815
This update enhances the user interface for managing activities, specifically focusing on sign requests and VoIP interactions. The changes bring greater clarity and consistency to the workflow, particularly when guiding users through activity type changes, and align the UI with the latest 2026 design standards. This improves the overall user experience and streamlines task management.
Original PR description
* More clarity, more 2026 UI. * Improve UX to guide the user trying to change an activity type to sign request as it it not possible. Task-6253574
This update simplifies Partner Ledger reports for US and Canada users by removing the unnecessary display of account codes. The 'Show Account' filter is now automatically toggled off for these localizations, ensuring a cleaner report view and reducing visual clutter. This change improves the user experience for our key customers in these regions.
Original PR description
Purpose: US and Canada localizations don't use account codes, so it has no value on the report and creates visual clutter. Thus, a "Show Account" filter for Partner Ledger reports will be added in the Posted Entries dropdown, similar to Aged Payable and Aged Receivable reports. Current Behavior: The account code always appear as a column on partner ledgers for all countries. Expected Behavior: By default, companies in US and Canada will have the "Show Account" filter toggled off. All other countries will have the filter toggled on. task-6128250
This update implements Walloon Impulsion reductions for Belgian employees, allowing for monthly deductions based on age (specifically -25 years old) and a 12-month reduction period. The changes ensure accurate payroll calculations and compliance with Belgian regulations, reflecting updates to the country's payroll rules.
Original PR description
Implement Walloon Impulsion reductions in Belgian Payroll. Features: - add support for Impulsion 12 months (monthly deduction from the employee's net salary) - add support for Impulsion -25 years old (monthly deduction from the employee's net salary) - handle old/new regulation rules depending on entitlement start date - add corresponding salary rules on payslips Includes a test for payroll computation. Upgrade PR: https://github.com/odoo/upgrade/pull/10530 task: 6159809
This update prevents customers from viewing detailed timesheets within project sharing portals. It addresses a requirement for some businesses to restrict access to this sensitive information, achieved through website customization settings. This change improves data privacy and control for our enterprise clients.
Original PR description
Some companies may not want customers to see detailed timesheets in project sharing. This change hides all timesheets in the project sharing portal when they are disabled via website customization. task-5139755
This update adds a convenient side panel to the Planning app's calendar and Gantt views, allowing users to easily schedule and reschedule shifts and interventions through drag-and-drop. It also includes improvements to data handling and error prevention, ensuring a smoother and more reliable scheduling experience for Field Service and other planning activities.
Original PR description
This PR adds the side panel feature in the gantt and calendar views of the Planning app (including Field Service). The goal is to allow the user to easily schedule/unschedule their shifts and interventions with a simple drag & drop. related-https://github.com/odoo/odoo/pull/256153 task-5956860
This update enhances the visual appearance of the appointment kanban cards, making them more user-friendly and responsive across different devices. The changes include a refined layout, adjusted column sizes, and a new 'Preview' button replacing the 'Share' button, streamlining the user experience.
Original PR description
This commit improves the visual aspect of the appointment kanban cards by: - reworking the responsive layout - adjusting the size of the columns - hiding unnecessary column when needed It also replaces the "Share" button by a Preview button. task-6069165 & task-5877926
This update streamlines how Odoo responds to events within the browser by replacing older listener methods with a more modern approach. Specifically, it enhances the responsiveness of key modules like Documents, Knowledge, and Sales, improving overall user experience. This change focuses on internal technical improvements.
Original PR description
* documents,iap_extract,knowledge,mrp_workorder,room,sign,social, spreadsheet_edition,spreadsheet_sale_management,timesheet_grid, web_enterprise,web_gantt,web_grid,web_studio,website_knowledge This commit converts useExternalListener to useListener where the target is window or document.
This update simplifies leave scheduling for users and resources within appointments. Previously, managing leaves was complex and inefficient. Now, users can directly create leaves for appointments, streamlining the process and improving scheduling accuracy.
Original PR description
Purpose ======= Make it easier to manage leaves on users and resources in appointment. Specification ============= Previously, from appointment, the user could only set leaves on…
Purpose ======= Make it easier to manage leaves on users and resources in appointment. Specification ============= Previously, from appointment, the user could only set leaves on 'appointment.resource' records, not for users. To make a user unavailable, they would have to either take a leave, create an event set as busy in their calendar for the period, or install hr_holidays to get the time off form. Also, resource leaves were managed using 'resource.calendar.leaves' records, meaning blocking 4 resources for a small period of time on 5 different days would create 20 records. Now, from appointment, leaves can also be created for users completely independently from their regular hr leaves. As 'res.users' records don't have a 'resource.resource' record if they're not linked to an 'hr_employee', it wasn't optimal to use the 'resource.calendar.leave' model to manage leaves like for the resources. That's why we're introducing a new 'appointment.leave' model, which will handle the leave configurations for users and resources for specific appointment types using a method called '_get_appointment_leave_intervals'. As a leave can be set across multiple appointment types, the question of the timezone has been raised. The first idea was to consider the leave in the appointments timezone directly. Example: "From 2-3PM, in the Dental Care timezone, and from 2-3PM in the Tennis Court timezone" However, when creating a leave, the dates are converted from the browser timezone to UTC, meaning that from python it's impossible to remember the initial timezone after save. A timezone field was then considered, but another issue appeared: If the browser tz is different from the one picked in such a field, the dates would still be stored in UTC, shifted from values displayed in the form in the browser tz. A conversion into the picked tz would then not make any sense, as it would be a double shifting with no relevant feedback. As we are setting absolute datetimes, we prefer using the default behavior of the framework instead. For instance, let us consider a user with browser tz Europe/Brussels (summer time, utc+2): If they set a leave on July 8th from 14.00 to 15.00 in the form, then July 8th 12.00-13.00 will be stored (as in UTC). If an appointment with this leave is in utc+4, then their 16.00-18.00 slots will be unavailable. This matches previous datetime selection behavior when creating resource leaves, and also how slots datetimes are selected in flexible appointments. Adding an alert info in the appointment.leave form view to inform users when some of the selected appointment types have a different timezone than the current one used for leave creation. Task-5914412
This update enhances the display of commission achievements by correctly identifying the user associated with each document, particularly within dynamic plans. It also addresses several underlying issues related to target calculations, traceability of adjustments, and data type casting to prevent errors, ultimately improving the accuracy and reliability of commission reporting.
Original PR description
In dynamic plans, achievements can be computed based on other user's documents (invoice, SO etc). This commit ensure that we display the user assigned to the document. task-6253512
This update enhances the visibility of employee and manager feedback within the appraisal process. Changes were made to the underlying logic for hiding feedback, ensuring consistency and a better user experience. This improves the overall efficiency of the appraisal workflow.
Original PR description
In order to maintain the same logic while dealing with the appraisal in terms of hiding employee's and manager's feedback, some publishing conditions have been reworked. Task: 6304238
This update simplifies currency conversion within our financial reports. By centralizing currency rates in the `account.move.line` fields, we've eliminated redundant and complex report-specific calculations. This change improves report efficiency and reduces the risk of errors when currency exchange rates update.
Original PR description
Now that currency conversion is implemented in the `consolidation_rate` and `consolidation_balance` fields on `account.move.line`, the per-report boilerplate — manually joining the currency table and wrapping each column with `_currency_table_apply_rate` — is redundant. Replace it by passing `Query` objects through to the report queries and referencing the new fields directly. The conversion logic now lives in a single field definition; if the underlying rate mechanism changes, no report needs to be touched. The per-report diff is intentionally minimal: each site just drops the manual join and replaces the wrapped expression with the field reference.
This update adds a new right-click option to dynamic lists within the Odoo Enterprise application. Users can now sort lists by clicking on the column headers, improving data organization and usability. This enhancement streamlines workflows for managing data within key modules.
Original PR description
Task: 6233381
This update adds helpful tooltips to key lines within the French fiscal declaration reports. These tooltips provide users with immediate context and explanations for each line, improving understanding and reducing potential errors when preparing these important financial reports. This enhancement supports compliance and simplifies the reporting process.
Original PR description
In order to help users understand the meaning of some lines of the fiscal declaration reports, we are adding tooltips on some of them. Task ID: 6159842
This update enhances the ECO report and its associated form, making it easier for users to review and understand changes. Key improvements include a simplified report layout, a more user-friendly form with a non-mandatory description field, and a smart button that only appears when changes are present, streamlining the approval process.
Original PR description
- ADD title : ECO Changes Summary - ADD subtitle : name of the ECO - The description field is not mandatory anymore - The smart button `Review changes` is only visible if there are changes to review, otherwise it is hidden. Task-6208775
This update enhances the AI chat experience by allowing conversations to be stored for 30 days after the last message, enabling users to resume chats and gather feedback. A new 'AI' category has been added to the discuss app for easy access, alongside features for managing and deleting AI chat sessions.
Original PR description
\* = crm_livechat, livechat, website Purpose: -------- Instead of deleting AI chat channels when closing the chat window, they are deleted 30 days after that the last message was sent (they are still…
\* = crm_livechat, livechat, website Purpose: -------- Instead of deleting AI chat channels when closing the chat window, they are deleted 30 days after that the last message was sent (they are still deleted on close if no message was sent), allowing users to resume their AI conversations as well as allowing to gather feedback and evaluate the agents that are used in livechats. To ease the access to these AI conversations, a new discuss category has been introduced (making them visible in the sidebar of the discuss app). When an ai chat is expanded in full view, this category is automatically unfolded and all the other ones are folded. A new thread action "delete-ai-chat" has also been added to give the users the ability to delete their AI conversations themselves. For this purpose, the `/ai/close_ai_chat` route which was previously used every time an ai chat was closed to delete the channel if needed has been replaced by a simple unlink (the checks are now done on the client side), because only used for internal users: the channel is already deleted if a guest leaves an empty livechat channel, and one should keep the ones where a guest sent a message. ACLs have been added so that users can unlink their own AI chat channels. Some other related changes have been done such as adding a new AI category in the messaging menu, showing the AI agent partner on the livechat session's kanban cards,... Task-6007887
This update streamlines the process of submitting CIS returns by automatically generating them when applicable. Instead of a separate report submission, the system now integrates CIS return generation with the existing account return flow, improving efficiency and accuracy. This ensures compliance with UK tax regulations.
Original PR description
* Generate CIS returns automatically if period had move lines with CIS tax tags used. * Instead of submitting the CIS return via report, integrate cis submission with account return flow. task-5481774
This update changes the color of the 'To Review' status badge on employee records from grey to orange. This improves readability, particularly in dark mode, ensuring that HR staff can quickly identify and address outstanding tasks.
Original PR description
The 'To Review' status on employees uses a grey badge ('secondary'), which has poor contrast and is nearly invisible in dark mode.
Update the 'review_state' field options to change '2_to_review' to 'warning' (orange). This ensures the badge is readable in both light and dark modes.
Task: 6289919
Forward-Port-Of: odoo/enterprise#120486
Forward-Port-Of: odoo/enterprise#120268This update enhances the integration with UrbanPiper by dynamically syncing product tags based on tax configurations. Now, users can define relevant tags for their products, ensuring UrbanPiper receives the correct information and improving data accuracy for orders.
Original PR description
Before this commit: ------------------------------------------ - The UrbanPiper payload used a hardcoded tag when the tax percentage was not 5%. - There was no mechanism to add additional tags based on providers, even though UrbanPiper supports multiple tags. After this commit: ------------------------------------------ - Tags are now dynamically handled using the Tag field in the product. - Users can define tags according to their tax configurations and aggregator requirements. - UrbanPiper only accepts relevant tags (default or provider-specific). task - 5154061 Forward-Port-Of: odoo/enterprise#118827 Forward-Port-Of: odoo/enterprise#96742
1 change
Enhancements to existing features
This update enhances the global filters in Odoo Enterprise by providing an option to return the customer's label instead of just their ID. This change offers greater flexibility for users who need the customer's name or description within their filters, improving data usability.
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
1 change
Enhancements to existing features
This update enhances the error messages displayed when leave validity conflicts occur, particularly when creating public holidays. This change improves the user experience for both customers and our support team by providing clearer troubleshooting guidance and reducing the need for manual debugging.
Original PR description
The current message is pretty useless as of now when a lot of leaves are being written to, notably when creating a public holiday, which sets the state of all the leaves overlapping the public holiday's day to be reevaluated, and if an error occurs, you have to go through every employee's leave allocation and leaves taken to hopefully find one who might have to many days taken/not enough allocated. This extra information will be a huge QOL improvement, for the customer who will be able to troubleshoot his issue himself more easily, but also for our support team as the only way to debug those kind of issues now is to put a breakpoint there and see what employee has an issue. opw-4411999