Friday, September 11, 2026
37 changes · master
Enhancements to existing features
The attendance menu now shows a more compact review, with details expanded only when needed, making it easier for employees and managers to use. The kiosk also keeps users on the break entry screen when a break is too long, so mistakes can be corrected immediately without starting over, and break totals now match the attendance records shown.
Original PR description
This PR brings a few improvements to the attendance review of the systray so that it takes less room and only details an attendance on demand. It also fixes the break duration of the kiosk: 1. Enable "Break Management on Checkout" in Settings > Attendances and open the attendance kiosk 2. Identify as an employee to check in, then identify again to check out 3. On the goodbye screen, click "Add my break times" and enter a duration longer than the attendance that was just closed 4. Confirm -> the error is shown but the kiosk has already gone back to its main screen, so the break has to be entered again from scratch With this PR, the duration is checked against the attendance before being sent and the dialog stays open until it fits. Task-6542050
Website editors can now choose a rounded icon style in addition to the existing outlined and sharp options. The setting is easier to understand with added guidance, loads only the selected icon font for better efficiency, and now applies consistently in the media dialog.
Original PR description
[IMP] web, website: add rounded icon style for the website --- __Before this commit__ The user could only choose between Outlined and Sharp icon style fonts. __After this commit__ - The rounded…
[IMP] web, website: add rounded icon style for the website --- __Before this commit__ The user could only choose between Outlined and Sharp icon style fonts. __After this commit__ - The rounded Material Symbols style font is added as a choice in the website builder. - The option is moved to the *Advanced* section since it's a once in a website lifetime change. - Some tooltips are added because the differences are subtle, especially at small font sizes. [IMP] web, website: fetch only a single icon style font in the frontend --- __Problem__ It's possible to choose the icon style in the Theme tab of the website builder. However, all the Material Symbols style fonts are currently fetched regardless of which is selected. __Fix__ Add a `_get_icon_font_family` method on the website that allows to retrieve which icon style is used and call this method to replace the font asset with the right one. [FIX] html_editor, website: use website icon font in Media dialog --- __Problem__ It's possible to choose the icon style in the Theme tab of the website builder. However, the icons inside the Media Dialog aren't reflecting the icon style of the current website. __Fix__ Pass the current document to `IconSelector` to retrieve the current icon font family and use this font for the Media Dialog icons.
The Sales menu has been reorganized to reduce clutter and make commonly used options easier to find. This improves navigation across sales, delivery, loyalty, and eCommerce-related areas, helping users work more efficiently.
Original PR description
*: delivery,loyalty,sale,sale_loyalty,sale_management,
website_sale,website_sale_loyalty
Sales menu was cluttered with too many things. This change is meant to simplify it.
task-6523967Employees using both Attendance and Timesheets now see a more compact systray menu with better-organized tabs and actions. The update also prevents both tab contents from appearing at the same time after checking out and back in, making the experience clearer and less cluttered.
Original PR description
This PR brings a few improvements to the systray of an employee who has both the attendance and the timesheets features, reorganising its tabs and the actions around them to take less vertical room. It also fixes the tabs themselves: 1. Enable both the attendance and the timesheets systray for an employee and check them in 2. Open the systray and go to the "Attendance" tab 3. Unfold the running attendance, set a "Check Out" and save -> the employee is checked out, so the tabs disappear, as expected 4. Click "Check in" without closing the systray -> the tabs are back but the "Timesheets" and the "Attendance" panes are displayed one under the other With this PR, the active tab is tracked by the component instead of the bootstrap tab plugin, which cannot keep up with panes that come and go. Task-6542050
The Sales and Rental apps now have cleaner menus, with commission options simplified and rental promotions grouped together. This makes it easier for users to find related sales, rental, and promotion features with less menu clutter.
Original PR description
As an extension of the sales menu simplification we also grouped the Promotions in the Rental app. Community PR: https://github.com/odoo/odoo/pull/285971
Bank reconciliation users can now select one or more lines and specify the amount to assign to each account. This gives accounting teams more flexibility and accuracy when splitting or matching statement lines.
Original PR description
This commit will add a new feature to be able to have a set account where we choose the amount we want to set. Clicking the line will do a basic set account. Selecting the line will enable the edit on the amount, and so you will be able to select multiple lines and choose an amount for each. task-6307681
Time-off accrual plans can now be linked to work entry types and working schedules, making it easier to compensate employees for extra worked days. When work exceeds the company reference schedule, the system can automatically create the appropriate accrual allocation, reducing manual HR adjustments.
Original PR description
Task#6360628
Field-level access groups defined in code are now shown in the Access Rights tab, matching what the system already enforces behind the scenes. This improves transparency for administrators reviewing model fields and prevents confusion when configuring or auditing access rights.
Original PR description
**Purpose**: Fields defined in Python with a groups attribute (e.g., `test_field = fields.Char(...,groups='base.group_user')`) did not display associated groups in the "Access Rights" tab, although access was enforced at runtime. **Specification**: Display the group(s) under the Access Rights tab of `base.view_model_fields_form`. To do this, a new method `_reflect_field_groups()` reads the groups attribute from base fields, finds the real group from the XML ID, and populates the `ir_model_fields_group_rel relation`. task-4285741 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Buying, manufacturing, and subcontracting routes are once again managed at the warehouse level, so products can be prepared for these flows by adding the relevant vendor or bill of materials instead of manually selecting routes. This simplifies day-to-day product configuration while related automated tests were updated to match the intended behavior.
AI agents can now create and update automations more reliably, with clearer validation, previews, and run logs. Agent profiles also get a broader avatar set and more consistent first-person descriptions, while a preview crash for empty selection fields is fixed.
Original PR description
Add a dedicated ai_tool_create_update_automation tool so agents manage base.automation records without going through the generic create/update tools: it takes model and field names instead of ids,…
Add a dedicated ai_tool_create_update_automation tool so agents manage base.automation records without going through the generic create/update tools: it takes model and field names instead of ids, validates the trigger and the ai_action_prompt against the target model, and shows a single preview instead of one per underlying record. Log automation runs properly in their own chat: post a kickoff note with field placeholders resolved to the record's actual values instead of their labels, log "has run <automation>" when triggered from the chat, and steer the agent to update the right automation when asked to change one. Forbid Markdown in ai_action_prompt (the field only renders HTML) and fall back to converting it when the model writes it anyway. Ship the full agent avatar set: 3 silhouettes x 5 colors x 8 job roles, under a consistent AvatarN-<Color>[-<Role>] naming. An agent gets a random silhouette on creation; picking a role via the Self Update skill redraws it in the same color and number. Rewrite the standard agent subtitles in the first person, and align the Self Update skill so agent-generated subtitles follow the same voice. Fix a crash in ai_tool_update_records's preview when a Selection field being updated is currently unset (e.g. res.partner.type, ai.agent.avatar_role): field._selection[value] raised a KeyError on a falsy value instead of falling back to displaying "None". task-6512101
Bank statement imports in CAMT, OFX, and QIF formats now populate transaction details with a clearer, formatted view of the imported values. This helps accounting users review imported bank transactions more easily and consistently with CODA imports.
Original PR description
Fill the `transaction_details` field as we do with coda to display a well formated version of the values. task-4744298
Work entry categories are simplified so unpaid work entries use a clearer single “Unassimilated” category where relevant. This improves HR payroll classification, reporting, and search by aligning categories, DMFA codes, and related filters more consistently.
Original PR description
Purpose: Currently in the system, we have categories for `Unpaid and unassimilated` and `Unpaid and assimilated` but we only need one category because if the time type is paid, it's assimilated by default. So we only need to have a category for `Unassimilated` to differenciate between unpaid types. - removed category `Unpaid and Assimilated` - renamed category `Unpaid and Unassimilated` to `Unassimilated` - corrected category and dmfa code on some work entry types - added a filter for assimilated work entries and allowed to search with dmfa code and salary rule categories - added an `Unassimilated` for some work entry types that become unassimilated after 9 or 12 months task-id: 6478968 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves how Odoo handles social media direct messages through Discuss and Live Chat, including conversations that arrive when no operator is available. It also makes failed message sending clearer for users by showing the reason for the failure and improves several messaging views for easier customization.
Original PR description
Purpose ======= Improve the form view of the mail guest Move code from the controller to the model to be able to re-use it in enterprise. Allow to change reaction on mail message without specifying…
Purpose ======= Improve the form view of the mail guest Move code from the controller to the model to be able to re-use it in enterprise. Allow to change reaction on mail message without specifying the emoji (in Facebook / Instagram, we can react only once per message, and when we remove the reaction, we don't know the emoji). When posting a message on discuss, if an error occurred, we can retry to send the message. But in some cases, it's useful to know why it failed, and so we show the error message. Allow creating a channel without operator. For social, we would like to be able to create a channel without operator. For website, we don't show the chat button if no operator (human, script, AI) are available, but for social, users can send messages when no operators are available. For the chatbot script, we have a related archived partner, same for AI. So we skip the creation of the member if we have no operator partner. Set the "left channel" message as "notification type". Improve the view of the live channel. Task-5948062
Belgian payroll tax reports now use a configurable mapping table instead of hard-coded payroll rules. This makes it easier for support teams to update fiscal reporting logic, including reports 281.45 and 273S, without requiring code changes.
Original PR description
l10n.be.281.mapping: one row per (year range, tag, declaration), pointing at a salary rule, a python expression, or a sum of other rows. 281.45 and 273S are both rebuilt on it. Adding a rule to a report is a data change Salary rule and total links are real relations now (many2one/many2many). Also added a Fiscal Nature field on hr.salary.rule showing which mapping rows use it, and a debug-only menu so support can edit the mapping table directly. Task 6413391
Belgian payroll now makes employee seniority easier to manage by grouping related information and allowing a custom fictive hire date. End-of-collaboration notice durations can also be adjusted manually, helping HR teams better reflect individual employment situations.
Original PR description
- Moving seniority information in dedicated group under employee Payroll tab. - New fictive hire date field in orer to use a custom seniority. - Using year + month to set seniority at hire. - Notice duration manually editable in end of collaboration wizard. Task: 6381058
Belgian payroll now uses one clearer “Unassimilated” category for unpaid absence types, removing duplicate classification. This improves payroll reporting accuracy by correcting relevant work entry categories and DMFA codes, and makes it easier to find assimilated or unassimilated entries.
Original PR description
Purpose: Currently in the system, we have categories for `Unpaid and unassimilated` and `Unpaid and assimilated` but we only need one category because if the time type is paid, it's assimilated by default. So we only need to have a category for `Unassimilated` to differenciate between unpaid types. - removed category `Unpaid and Assimilated` - renamed category `Unpaid and Unassimilated` to `Unassimilated` - corrected category and dmfa code on some work entry types - added a filter for assimilated work entries and allowed to search with dmfa code and salary rule categories - added an `Unassimilated` for some work entry types that become unassimilated after 9 or 12 months task-id: 6478968
The Belgian advance payment return screen now shows the relevant checks directly and includes the payment setup within the same view, reducing the need to open a separate wizard. Users also receive a clearer warning when a missing VAT number would prevent correct payment communication.
Original PR description
Embed the advance payment return wizard into the return/checks view The advance payment return view previously did not display any checks and only allowed opening a separate configuration wizard. task-5490631
Spanish balance sheet and profit and loss reports now better match the official Spanish accounting plan. The update adds abbreviated report formats and corrects existing full and SME versions, helping Spanish companies produce more accurate statutory reports.
Original PR description
Spanish PGC defines three distinct balance sheet and profit and loss reports: full, abbreviated and PYMES(SMES). Until now this module only had the pymes and full report data. This commit adds the abbreviated and corrects the full and pymes reports which were not updated to the accounting spanish plan. A matching entry for the abbreviated balance sheet was added to test_balance_sheet_balanced.py
Website shoppers can now search for products by barcode, including variant barcodes and barcodes on single-variant products. Matching searches take users directly to the relevant product or variant page, making product lookup faster and reducing friction for barcode-driven workflows.
Original PR description
Barcode search was not supported on the website product search, making it difficult to find products directly using their barcode values. This update adds support for searching products using: - Variant barcode - Single-variant product barcode The search now redirects users to the matching product or product variant page. Additionally, the Barcode and Reference fields are kept visible on product templates even when variants exist. task-6213261 For upgrade PR see : https://github.com/odoo/upgrade/pull/10895
Korean VAT reports now alert users when invoices or bills in the filing period are missing proof of issuance, helping prevent transactions from being left out of the return unnoticed. The update also completes VAT return setup for general and simplified taxpayers with the correct filing periods.
Original PR description
The VAT report boxes now dispatch on `l10n_kr_issuance_type` rather than on the taxes alone, so an invoice or bill left without a proof of issuance (발행 증빙) belongs to no box at all and silently disappears from the return. Nothing on the report itself signals this, so a user could file a return missing entire transactions without ever noticing. Attach a custom handler to both VAT reports raising a warning when moves of the period are missing the field, with a link to the offending records so they can be fixed before the return is closed. While at it, complete the return types, which were only stubbed: - Rename `kr_tax_return_type` to "VAT Return" and give it the trimester deadline periodicity general taxpayers actually file on. - Add the yearly "VAT Return (Simplified Taxpayer)" type for the simplified report. [task-6216393](https://www.odoo.com/odoo/my-tasks/6216393)
Users can now download a fiscal declaration template, fill it in, and import the data back into the French fiscal reporting workflow. Existing declaration values are included in the template, making updates easier and reducing manual re-entry.
Original PR description
This commit will add a way for users to import data into the fiscal declaration. For that, we give a template that the user has to follow. If the user already has value in a line, it will be put in the template. task-5914069
Belgian companies can now record their NSSO immatriculation date in payroll settings. The payroll dashboard warns users when this date is missing, helping ensure first-hire reductions can be checked correctly.
Original PR description
The NSSO immatriculation date is required to properly check the first hires reduction for Belgian companies. This change adds the NSSO immatriculation date to the company and a warning to the payroll dashboard if that date is not set. task-6527410
Users who are allowed to create products can now use barcode lookup to create products without needing administrator access. This makes inventory and barcode workflows more consistent with existing product creation permissions.
Original PR description
Currently, the barcode lookup functionality is available only for users with administrator right. However, in user access rights we have a setting that allows users to be able to create products without being admins. Due to that, even if user can create a product from Inventory or other apps, they are not able to do it via barcodelookup. This commit ensures that such users are able to create products. task-6005042
The website generator has been updated to use the latest snippet package for Odoo 20. This gives users access to refreshed and newly available website building blocks when generating websites.
Original PR description
Updated the version number to get the updated and new snippets
Czech invoicing now supports a dedicated QR code method and lets companies set a preferred QR code option on customer or vendor records. When an invoice is created, the partner preference is applied automatically, helping streamline payment setup and reduce manual choices.
Original PR description
- Introduce a new QR code method for Czech localization. - Make the 'qr_code_method' field of account.move compute stored. - Add a QR code method field to partners. - Automatically apply the partner's QR code method to the invoice when configured. task-[6024259](https://www.odoo.com/odoo/project/967/tasks/6024259)
Invoices can now show a partner's company registry identifier when no valid VAT number is available. This helps businesses include the best available official identification on invoice documents across affected localizations.
Original PR description
Adding functionality for displaying multi ID of "Company Registry" type for partners that do not have a valid VAT provided, if available. task-6152210 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Manufacturing work centers can now have their own barcode. This makes it easier for shop floor users to quickly select the right work center by scanning it, reducing manual selection time and potential mistakes.
Original PR description
This commit adds a `barcode` field on workcenter model. The purpose is to be able to scan it to select the workcenter in Shopfloor. task-6545274 **Enterprise PR**: odoo/enterprise#131006
The accounting dashboard has been simplified to focus on the most useful indicators, with clearer receivable and payable cards and more direct links to relevant audit views. Margin reporting and sales/purchase graphs were adjusted for more accurate, easier-to-read business insights, while dashboard cards were improved for tablet layouts.
Original PR description
[IMP] account: improve dashboard KPIs - redirect some cards directly to their relevant audits - split receivable and payable into separate cards and redirect them to open items with receivable or payable selected accordingly - remove the net margin card to make the dashboard less overwhelming for the users and to keep only the important kpi cards - change the gross margin formula to use cost of revenue instead of expenses becuase this is the accurate one, using expenses here was not correct - simplify sale and purchase graphs to show monthly totals - enhance journal cards responsivity to show two cards per row for ipad screen size - highlight the invoice layout setup card task-[6526878](https://www.odoo.com/odoo/project/967/tasks/6526878) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Companies can now choose whether customers receive confirmation emails when field service shifts are published. This helps reduce unnecessary notifications for long-running projects while still allowing businesses to keep emails enabled and customize the template when needed.
Original PR description
- Publishing a shift always sends a confirmation email to the customer. This is too noisy for long-running projects (e.g. construction). - Add a company-specific setting (enabled by default) to control whether the email is sent and which template is used. Archiving or deleting the selected template disables the option. task-6420326
Shop floor users can now scan a workcenter barcode to quickly select the correct workcenter. This reduces manual selection steps and helps operators move faster with fewer selection mistakes during production.
Original PR description
Allow the user to scan a workcenter barcode to select the workcenter in shopfloor.. [Task 6545274](https://www.odoo.com/odoo/project/966/tasks/6545274) Community PR: odoo/odoo#287683
Users can now open related records shown in embedded list sections in a full page view. This makes business tools like search filters, grouping, export, and bulk actions available without extra configuration.
Original PR description
Before this commit, the records of an x2many could only be consulted through the sub view embedded in the form. The search panel, the groupbys, the export and the multi-record actions are features of a full blown action, and none of them was reachable from there. After this commit, every x2many displayed as a list gets a button in the header of the table, next to the optional columns dropdown, which opens its records in an act_window on the comodel. It is a property of the field itself, so it comes for free on all of them, without any widget or option in the arch. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Belgian payroll now uses the standard work location setup for DMFA location units, reducing duplicate configuration and making payroll reporting easier to maintain. This helps companies keep Belgian social security reporting aligned with employee work locations more consistently.
Original PR description
task-6476798
Mobile calendar navigation is smoother because scrolling and swiping are now kept separate, reducing accidental day changes and jittery movement. The update also improves mobile layouts for calendar headers, sync status, and the homeworking location wizard, including clearer employee setup guidance when needed.
Original PR description
[IMP] calendar,hr_calendar: UX improvements Several smaller ux improvements: - Updated the homeworking location wizard to work with mobile view - Updated header and sync status for mobile view - In…
[IMP] calendar,hr_calendar: UX improvements Several smaller ux improvements: - Updated the homeworking location wizard to work with mobile view - Updated header and sync status for mobile view - In the worklocation wizard, if the user doesn't have a linked employee_id but has the rights to set one, they now see a button redirecting them to the employees view [IMP] web: prevent scrolling and swiping at the same time In the calendar view on mobile devices, if the user starts scrolling vertically and then switches to horizontal swiping, both motions are triggered at the same time, leading to some very janky movements. When scrolling up/down, the swiper input is very sensitive to left/right motions, which means you can very easily accidentally swipe to the next day when scrolling The idea behind this change is to: - scroll down or up OR left or right - NEVER both at the same time This commit introduces an `axis lock` which only enables scrolling in one direction at a time. Test changes: The drag called in tests performs an initial movement to start up the dragging motion. This motion can happen on either axis, which can trigger the axis lock before the actual drag we want to test happens. The change to the test removes this initial motion. When calling navigate, the swipe was performed from (0, 0) to the middle right of the target element. This introduced a significant Y offset to the drag, and was considered a vertical scroll. With this update, we start the swipe in the center of the element to ensure a ~0 Y delta. Task-6396805
The delivery planning Gantt view for fleet-related stock operations has been improved to make scheduling easier to read and manage. This helps teams coordinate delivery batches and fleet resources more efficiently.
Original PR description
WIP task-6542620
Field service planners can now use a combined map and schedule view to see where jobs are located alongside their timing. This makes it easier to coordinate technician assignments, routes, and availability in one place.
Original PR description
Proof of Concept: this commit introduces a customization of the map view that combines a map and a gantt views for planning field service. task-6273718
Ecuador electronic invoicing settings now use a provider contact instead of a free-text system value for the billing software provider RUC. This helps ensure the RUC is properly validated and gives users non-blocking reminders when the provider is not configured.
Original PR description
Purpose: Users can now configure the billing software provider's RUC for electronic invoicing in stable thanks to this PR: https://github.com/odoo/enterprise/pull/129456. In stable, it introduced a system parameter to store the RUC for the database, but there was no validation enforced on the RUC. To improve this, the system parameter storing the RUC is replaced with a many2one res.partner field, so the user can add the billing software provider contact instead. Configuring the RUC on the contact enforces the RUC validation. Non-blocking warnings are added to the flow to remind users to configure the billing provider in settings if empty. task-6432810
ESG metric screens and wizards are now clearer and easier to use, with better guidance, improved layouts, and support for creating partners during stakeholder reviews. Businesses can also archive outdated or duplicate metrics instead of deleting them, helping preserve history while keeping current workspaces tidy.
Original PR description
This commit improves the ESG metrics wizards and views by making the following changes: - Added help text to the `revenues_value` and `assets_value` fields in the `metrics_ai_generation_wizard` - Updated the score gap warning messages in the esg_metric model to provide clearer guidance to users. - Improved the layout and organization of the metric views. - Allow the creation of partners from the stakeholder review wizard. task-6333207
Original PR description
In this [PR](https://github.com/odoo/odoo/pull/223685), the Buy, Manufacture and Resupply Subcontractor on Order routes were made warehouse routes to simplify product configuration. Adding a vendor…
In this [PR](https://github.com/odoo/odoo/pull/223685), the Buy, Manufacture and Resupply Subcontractor on Order routes were made warehouse routes to simplify product configuration. Adding a vendor or a BoM is enough to make a product ready to buy or manufacture, without manually selecting the corresponding route on the product. Later, this [PR](https://github.com/odoo/odoo/pull/274672) made the ORM check the comodel domain when linking records to x2many fields and set `product_selectable` to [True](https://github.com/odoo/odoo/pull/274672/changes/c758a2dcd9ecf464ca8b9aa8f19dfadf30bf4755#diff-e018fe59e11c4e0078e9bc19879f9e98c731bb84c71766ef360ccc482c59d2d8), making these routes available for selection on the product form again. This commit makes routes as warehouse routes [again](https://github.com/odoo/odoo/pull/280682/changes#diff-e018fe59e11c4e0078e9bc19879f9e98c731bb84c71766ef360ccc482c59d2d8L393) to simplify product configuration and updates the affected tests to explicitly enable `product_selectable` when they need to assign a route to a product. Enterprise PR:- https://github.com/odoo/enterprise/pull/126863 TaskId:- 6442488