Daily updates from Odoo
Wednesday, August 19, 2026
33 changes · master
Enhancements to existing features
Belgian payroll now lets companies calculate meal vouchers based on eligible hours worked instead of only eligible days. The existing day-based method remains the default, while voucher amounts and employee contributions are shown per voucher for clearer payroll setup.
Original PR description
Before this commit: - Meal vouchers were only computed from eligible worked days. - The configured amounts were displayed per worked day. After this commit: - A Calculation Method allows choosing between Days and Hours. - Days remains the default and keeps the existing behavior. - Hours divides eligible worked hours by the daily hours of the employee's Working Hours Reference and rounds the resulting quantity. - Voucher values and employee contributions are displayed per voucher. - Fixed meal vouchers for company executives remain unchanged. Task-6427957
This update refreshes icons across manufacturing lifecycle, work order, quality, and barcode screens with a newer, cleaner visual style. The change improves visual clarity and consistency without altering business processes or functionality.
Original PR description
Icons were updated with the newer, more clean ones. task-6443360
Belgian payroll now warns HR teams when DIMONA declarations do not match employee contract version dates, categories, or joint committees. This helps catch payroll compliance issues earlier and reduces the risk of incorrect employment declarations.
Original PR description
add warning when DIMONA declarations don't cover the same date ranges as contract versions or when dimona category doesn't match between periods and versions. Task Id: 5951989
Employees with referral-only access can now view their own referral links in a read-only format, helping them understand how their shared links are performing. The Points menu is also available to these users, making referral progress easier to follow without granting extra editing permissions.
Original PR description
Before: - User having group: `User: Referral only` was only able to create a referral link but not able to track how there referral link is performing. After: - User will have read-only view for their referral links. - Points sub-menu will be visible to `User: Referral Only`. task: 6402714
The Belgian payroll configuration now includes the required reporting details for recoverable 0% overtime. This helps ensure overtime is classified correctly for social security, withholding tax, and official Belgian payroll declarations.
Original PR description
- Extended the OVERTIME26 work entry type with essential Belgian reporting metadata: category_ids (Remuneration, ONSS, Withholding tax bases), dmfa_code=1, and l10n_be_egov3_code=1102001. Task: 6358853
Customers booking appointments with related accessory products are now sent to the cart first, making it easier to add complementary items before checkout. If an appointment slot becomes unavailable while in the cart, it is removed automatically and the customer is clearly notified, helping avoid payment errors while preserving other valid bookings.
Original PR description
This PR improves the website appointment flow by adapting the checkout redirection when accessory products are present and ensuring proper cart validation for unavailable bookings. When an appointment type includes accessory products, users are now redirected to the cart page to look for complementary items before proceeding, with the button label updating dynamically. Additionally, any booking slots that become unavailable while in the cart are automatically removed during checkout validation, preserving other valid bookings and displaying a clear notification to the user. task-5975874
WhatsApp business accounts can now block repeat spam senders per account, helping teams reduce unwanted incoming messages. Staff can add numbers to a blocklist and manually block or unblock them from the form view, with Odoo syncing the action to WhatsApp automatically.
Original PR description
Purpose: Prevent incoming spam by blocking WhatsApp numbers that repeatedly send unwanted messages to the WhatsApp business account. Specifications: - Allow blocklisting WhatsApp numbers per WhatsApp account. - Creating a blocklist entry automatically triggers an API call to block the number on WhatsApp. - Allow manually blocking or unblocking numbers from the form view. Documentation: https://developers.facebook.com/documentation/business-messaging/whatsapp/block-users Task-5236975
Obsolete internal duplication logic was removed from Sales Subscription and Sales Renting to match the updated core product behavior. This reduces maintenance overhead and helps keep sales-related product handling consistent across Odoo.
Original PR description
Remove obsolete _duplicate_pricelist_rules_on_copy overrides from enterprise modules (sale_subscription, sale_renting) following its removal from the product module. This avoids dead code and ensures consistency with the updated core duplication behavior. task-5470688
The accounting reconciliation interface was updated to work with the newer OWL framework used by Odoo. This helps keep bank reconciliation and related accountant workflows maintainable and compatible without introducing major functional changes for users.
Original PR description
This pr will do some changes to be compliant with owl3. What has been done: - Change of some props to the new system - Remove use of useSubEnv - Remove use of onWillRender Also apply the EsLint on all files. task-6353237
Turkish companies can now generate reconciliation letters in Odoo using a format aligned with local legal expectations. The update adds bilingual letter content, address sections, closing text, and signature areas to reduce manual work and support audit readiness.
Original PR description
SPEC: - TR companies are legally required to exchange reconciliation letters (Mutabakat Mektubu) per TTK Article 94 to confirm outstanding balances with partners. - No standardized reconciliation letter exists in Odoo for Turkish localization, forcing manual off-system processes with reduced traceability. IMP: - Adjust customer statement report to comply with TR reconciliation letter format: title, address blocks, intro/closing messages (EN + TR), and signature blocks. - Provide Turkish translations for all letter content per legal requirement. Impact: - Turkish companies can generate and send legally compliant reconciliation letters directly from Odoo, eliminating manual workarounds and improving audit readiness. taskID-6121545
Cash-basis tax entries created from bank reconciliation can now be removed when payments are unreconciled, as long as accounting locks allow it. If removal is not allowed, the system keeps the safer reversal behavior and adds checks to warn users about sequence gaps that could affect tax return audits.
Original PR description
Problem --------- Currently, once a CABA move is created through the bank reco widget, it is impossible to draft/unlink it, the move can only be reverted. This leads to noisy journal when users unreco - reco their CABA payment. Do this a few times and it gets impossible to audit. Objective --------- The objectives of this change are as followed: 1. Allow for CABA moves to be unlinked once the payment is unreconciled. This is only allowed when the move is not locked behind HARD locks and tax lock. 2. In the case the CABA move is locked behind mentioned locks, revert it as it currently work. 3. Since the deletion/creation of moves can create holes in the CABA journal sequence (which is not really allowed in audits), it adds a Tax Return default check to warns the user in case of a hole sequence in the moves included in the Tax Return/End of the Year Statement. task-6226555
This update makes a small internal change in Web Studio’s report template handling to support future improvements. It does not introduce visible changes for users today, but helps keep reporting customization capabilities ready for upcoming enhancements.
Original PR description
Pass compile_context in parameters of `_compile_expr` to prepare future improvements in QWEB according to expressions. Task-6466187
Project budget information is now more accessible from project tasks and dashboards through a new Budgets tab. The project settings page is also cleaner because the Budget shortcut is hidden when no budgets exist.
Original PR description
- Add Budgets top-bar tab to project tasks and dashboards. - Hide the Budget stat button on the project settings page if zero budgets exist. task-5969230
Austrian small entrepreneurs can now use their domestic tax number when a VAT number is not available, allowing required Fiskaly registration and POS workflows to proceed. The update also improves an internal library patching mechanism to avoid issues when patched libraries need to read bundled data files.
Original PR description
Austrian Kleinunternehmer (small entrepreneurs) aren't issued a VAT number, only a domestic Steuernummer, but Fiskaly registration requires "vat" to be set. Add `l10n_at_stnr` on `res.company` and fall back to it wherever `l10n_at_pos` required "vat" like Fiskaly registration or else. Also fix patching a library's loader after import replaced it with a stand-in missing `get_resource_reader()`, breaking `importlib.resources` for any patched lib reading bundled data files. `exec_module` is now overridden on the loader instance instead. --- Task: https://www.odoo.com/odoo/project/1737/tasks/5993536
Spreadsheet list side panels now use the same drag-and-drop behavior and visual feedback as other spreadsheet areas. This makes reordering dimensions and sorting rules feel more consistent and easier to understand for users.
Original PR description
Current behavior before PR: - Dragging list dimensions and sorting rules felt visually different from pivot dimensions and global filters in the side panel. - The list side panel used a separate drag-and-drop utility that did not match the consistent UX of other spreadsheet components. Desired behavior after PR is merged: - List dimensions and sorting rules now share the same drag-and-drop behavior and visual feedback as pivot dimensions and global filters. - All reorderable items in the side panel now look and feel the same, providing a consistent user experience across the spreadsheet. - Use the `Section` component wherever applicable to keep the UI consistent. Task: [6219600](https://www.odoo.com/odoo/project/2328/tasks/6219600)
Employee document folders are now created directly in bulk instead of being recreated unnecessarily or processed one by one. This improves setup and payroll document organization performance, especially for companies with many employees.
Original PR description
* Employee folders could be unnecessarily recreated * Payroll folders were created one by one Temporary PR related to #127973 Task-6344800
Spreadsheet-related automated tests were updated to align with the move to Material Symbols icons in the spreadsheet library. This helps keep quality checks reliable after the visual icon system change, with no expected direct impact on daily users.
Original PR description
this commit adapts the tests to the switch to Material Symbols icons in the external library o-spreadsheet. Task: 6276321
Users can now use a middle click on the expand button in signing-related form dialogs to open the form in a new browser tab. This makes it easier to keep the current workflow in place while reviewing or editing a related form separately.
Original PR description
This commit adds the ability to detect a middle click on the Expand button to the Dialog API. This is achieved through the `t-custom-click` directive. The expand callback function that is given to the Dialog API, will now receive two parameters: the event and whether it's a middle click. Note that, the custom directives and the global values used for the `t-custom-click` are mandatory for each Owl app. This commit also uses the new API to allow the FormViewDialog and x2ManyFieldDialog form dialogs to expand to a new tab. task-id: 5429014
Online bank synchronization can now automatically reconnect when a connection breaks. This reduces manual follow-up for users and helps keep financial data imports running more reliably.
The signing activity is renamed from "Request Signature" to "Signature Request" so users see wording that matches the rest of the app. The activity icon is also muted to better align visually with other activity icons, creating a more consistent experience.
Original PR description
Renaming activity from "Request Signature" to "Signature Request" to better align with the wording used in other places. Change the template icon to muted to better match the other activities icons. Task-6317051
The Point of Sale navigation menu now displays icons and labels with consistent alignment and spacing. This makes the burger menu and LNA button easier to read and improves the overall visual clarity for users.
Original PR description
In this commit - ------------------------------- icon and label in the burger menu and LNA button are now properly aligned with consistent spacing for better visibility. Task-6391440 Related PR-https://github.com/odoo/odoo/pull/280203
Kitchen staff can now see the course sequence for self-order and kiosk orders in the preparation display. This makes those orders consistent with restaurant point-of-sale orders and helps kitchens prepare items in the intended order.
Original PR description
Following this commit: ==== - Course sequence would also be visible in kitchen display for self-order/kiosk same as pos_restaurant. task-6255005 Related PR : https://github.com/odoo/odoo/pull/269216
Time off that falls in a period already covered by a payslip is now handled automatically instead of requiring manual deferral by HR. This reduces payroll corrections, avoids complex conflicts between overlapping absences, and adds extra approval safeguards for past leave that can affect validated payroll.
Original PR description
Currently when a time off is created for a period already covered by a payslips, a time off officer needs to differ it manually but if there is a conflict with another time off it's too complex to be deferred. In that case the initial payslips should be reverted and then a new one should be created.
The Frontdesk Partnership homepage has been redesigned to better match the existing Frontdesk card-based experience. Visitors can now enter barcodes directly from the card or start camera scanning immediately, making check-in smoother and more intuitive.
Original PR description
In this PR, we have improved the homepage design to provide a more consistent and intuitive user experience: * Kept the card-based design consistent with the Frontdesk app and added an option to manually enter the barcode directly within the card. * When tapping the barcode option, the camera now opens directly for barcode scanning, removing the need for manual barcode entry from the scanning flow. Task-6364852
The signing process now handles PDF updates more carefully, allowing multiple signatures on the same document while keeping the original file structure intact. This improves reliability and supports more complex signing workflows without unnecessarily changing untouched pages.
Original PR description
Refactor PDF signing to use the incremental merge workflow, allowing multiple signatures per document while preserving the original PDF structure. Overlays are now merged incrementally, and only edited pages are updated. This improves consistency in the signing pipeline and supports more complex signing scenarios. task-5426461
The accounting dashboard now avoids repeated bank institution lookups when several unconfigured bank journals are shown. This makes the dashboard become usable faster and reduces stalls when the bank synchronization service is slow.
Original PR description
An accounting dashboard with a dozen unconfigured bank journals took seconds to become usable, and stalled entirely whenever the synchronization proxy was slow to answer. The server resolves the journal to its company and keys the proxy request on that company's fiscal country, and the widget is only rendered for journals of the active company, so the journal argument selected a company that was already known. The hook now sends one request per active company and hands the resulting promise to every widget that asks for it, dropping the journal argument along the way. The fetch also moved from the widget's start to its mount. The shared promise resolves immediately for every widget but the first, and the grid sizes itself from the width of a container that is only laid out once the card is in the DOM.
Payroll run reporting for UAE companies now uses metrics tailored to local payroll needs rather than a generic view. Salary rule and category updates also help payroll teams review UAE pay runs with information that better matches their business requirements.
Original PR description
The payrun metric for AE companies has been modified in order to adapt the payrun to the localization requirement instead of a generic view to cater for the business and payroll officers needs. Moreover few changes have been introduced to salary rules and categories. Task: 6326637
The Ecuador ATS reporting tests were updated to match a platform-level change in how certain grouped results are ordered. This keeps automated checks aligned with the intended behavior and helps prevent false test failures without changing business functionality.
Original PR description
Following changes to the ORM methods _read_group_orderby and _order_field_to_sql, query results are now ordered according to the sequential definition of selection fields (if ordered by a selection field ofc). Adapt the tests to take this new ordering into account. Related: odoo/odoo#280940 Task: 6425647
Payroll teams can now set dashboard warnings relative to today, making urgent warnings appear at the top as time moves forward. Email alerts skip these rolling Today-based warnings to avoid sending the same notification every day.
Original PR description
Dashboard warnings are grouped and sorted by their warning date, and every existing Closing On option anchors to a payrun, a contract, or a calendar boundary. Today is added as the first choice so a warning can sit at the top of the dashboard. The offset applies as usual, so the row reads "N days After Today". The reference moves with the clock, so the distance is constant. _cron_payroll_warning_email_alert skips Today warnings: its (today - warning_date).days == email_alert_days check is constant for them and would otherwise re-send the alert daily. task-6456127
Desktop users can now add call flow nodes by simply clicking an item in the palette, matching the easier mobile behavior. Drag and drop remains available, but it now starts only after the pointer moves far enough, reducing accidental drags and making flow editing smoother.
Original PR description
In the call flow editor, nodes can currently be added by dragging them from the desktop palette onto the canvas. On mobile, selecting a node from the dropdown adds it directly to the center of the canvas. Allow desktop users to get the same behavior by clicking a palette item. Keep drag and drop available by starting it only after the pointer has moved beyond a small threshold. task-6472451
The Colombian electronic invoicing app now has updated demo data and a clearer contact view for DIAN-related information. Demo mode is enabled by default for the demo company, making it easier for users to test and demonstrate the workflow safely.
Original PR description
Updating some demo data and adjusting DIAN partner view. DIAN demo mode is now default for the demo company. task-6454347
The attendance Gantt view now shows the same information bar already available in the calendar view. Managers can quickly see total worked hours, extra hours, and remaining hours in one place when reviewing attendance schedules.
Original PR description
The information bar which was being displayed in the Calendar view will now also be shown in the Gantt view with: - Total Worked Hours - Extra Hours - Left Hours (from hr_holidays_attendance) **task-6259363**
The Belgian payroll employee type previously labeled "PFI/Activa" has been renamed to "PFI/IBO". This makes the label more accurate for regional training contracts in Wallonia and Flanders and avoids confusion with the unrelated Activa scheme.
Original PR description
The employee type "PFI/Activa" is incorrect because Activa is not related to Dimona Category IVT. Renamed "PFI/Activa" to "PFI/IBO" to properly reflect the Belgian regional training contracts (PFI in Wallonia, IBO in Flanders). Task: 6478957