Friday, August 7, 2026
17 changes · master
Enhancements to existing features
Belgian payroll now shows a warning when an employee has both private car kilometers and bike kilometers set for the same daily reimbursement context. This helps payroll teams spot combinations that cannot legally be reimbursed together without blocking their workflow.
Original PR description
Problem: Legally, the daily reimbursement of bike travel and private car travel cannot be cumulated. We don't want to prevent the user from doing so, but we still want to warn them. Solution: We added an explicit warning on the employee form using the `hr.payroll.warning` model. Task-6389211
Accounting-related automated tests were updated to match a platform change in how journal entry line descriptions are stored. This helps keep quality checks aligned with the latest accounting data model without changing business workflows.
Original PR description
This commit updates the HOOT tests to reflect the community change where the `account.move.line` `name` field has been converted from `Char` to `Text`. See the corresponding community commit for additional details. See Also: - https://github.com/odoo/odoo/pull/278081 - https://github.com/odoo/upgrade/pull/10909
The Mexico electronic invoicing payment method settings are now placed under the main Accounting menu. This aligns the enterprise menu with recent community changes, making the option easier to find in its expected location.
Original PR description
Move to the accounting root menu where it belongs. See also: - https://github.com/odoo/odoo/pull/280715
The signing app had an unused internal messaging setup removed. This cleanup reduces maintenance overhead without changing how users create or manage signature requests.
Original PR description
This commit removes a `useSubEnv` which defined a bus and is not used anymore.
This update adds automated checks for the POS IoT payment connection logic. It helps reduce the risk of payment terminal issues reaching customers by catching problems earlier during development.
Original PR description
We add tests for the `PaymentInterfaceIot` class.
The map view now uses the clicked item’s intended opening mode instead of guessing whether to open records in the current view, a new window, or a dialog. This makes interactions more consistent, reuses configured list and form views, and supports opening multiple records in a dialog when needed.
Original PR description
This is a follow-up of 75cac501edd, the controller no longer infers by itself whether a record should open in a dialog: the caller now passes an explicit target ('current', 'new_window' or 'dialog'), matching what the template already knows when a click comes from the unlocated records list.
Also reuse the list/form view ids defined on the action (same approach as the pivot view) instead of hardcoding false, and extend the dialog target to support opening several records at once.
task-6378012This update improves the reliability of automated tests by using a shared time-mocking helper across several Odoo Enterprise modules. It helps ensure date- and time-dependent test scenarios behave consistently, reducing false failures and supporting smoother quality checks.
Original PR description
Use the new function so that everything gets patched correctly. https://github.com/odoo/odoo/pull/280810
This update adds a sandbox mode for Belgian DMFA payroll declarations, allowing tests to simulate official reporting flows without affecting real submissions. It helps teams validate payroll accounting behavior more safely and reliably before production use.
Recruiters can now use the AI email composer when refusing an individual applicant, not just when handling multiple applicants. This makes it easier to draft and edit consistent, professional refusal messages in the single-applicant workflow.
Original PR description
…se wizard Refusing a single applicant now opens a dedicated wizard where the email body is rendered and editable. The mail_composer_chatgpt widget was only set up on the multi-applicant wizard, so it was missing there. Inherit the new applicant.refuse.single form to add the widget, mirroring what is already done for applicant.get.refuse.reason. task-6361850
This update adjusts Belgian payroll work entry settings so the right working schedules remain available when new schedule-selection data is used. It also removes a recently added restriction that could unnecessarily limit schedule choices for payroll users.
Original PR description
related PR adds a new field resource_calendar_selectable in the module hr_work_entry this PR updates/sets the value of this filed for some work entry types and reverts Task#6333928 that added a restrictive domain on working schedules. Task#6364149
The subscription portal now hides sections that do not contain any billable lines. This makes customer-facing pages clearer and avoids confusion from empty optional sections that looked like errors.
Original PR description
In portal, a section was always displayed even when it had no billed line. Empty sections (especially optional ones) gave the impression the page was bugged. Only show a section when it contains at least one line to bill. task-6280705
The salary contract update process was adjusted to use a cleaner data format when handling contract changes. This should make the flow more reliable and easier to maintain, including for Belgian payroll-specific handling.
The Belgian payroll rules now include the 2026 night work premium hourly rate for CP 200 employees. This helps payroll calculations stay aligned with the latest required rate for the upcoming year.
Original PR description
. Add cp_200_premium_pay_night_hourly_rate value for 2026 task-6443017
Belgian payroll now includes additional official reasons for ending an employee collaboration. This helps HR teams select the correct standardized reason when processing departures and improves alignment with Belgian reporting requirements.
Original PR description
Before ending the collaboration with employee in Belgium. We should put the reason behind the end of collaboration. There is given official list of end reason that can be used to explain it. Currently, In belgium localization, there are few missing reason. In this PR expected to add the missing reason from the offical form: - (1) end of contract due to notice given by the employer - (2) end of contract due to termination by the employer - (5) Force majeure because of the employee's permanent incapacity for work - (7) End of contract for fix-term employmen - (8) End of contract for specific work task-6396239
This update strengthens the automated checks around scheduled marketing campaign activity processing. It helps ensure background marketing actions run with the right settings and reduces the risk of future regressions as the feature is expanded.
Original PR description
Just quickly cover cron usage when executing activities, aka the other main marketing automation cron. Improve other tests about cron usage. Prepares Task-6425785 [marketing_automation] Incremental sync Prepares Task-3866422 [marketing_automation] Overhaul application
The Indian payroll module now uses clearer tooltip text for ESIC employee and employer contributions. The updated wording explicitly states the wage limits for regular employees and Persons with Disabilities, helping payroll users apply the rules with more confidence.
Original PR description
Clarify the ESIC employee and employer contribution tooltips by using clearer wording and explicitly mentioning the wage limits for regular employees and Persons with Disabilities (PwD). Task-6451829
Appointment pages now provide clearer placement information for floating content snippets. This helps ensure page elements are positioned more appropriately when editing appointment pages, improving consistency for website editors.
Original PR description
Community commit introduces a new plugin responsible for relocating floating snippets. In this commit we provide a scope that adds info of where the snippet can be on an appointment page. Community pr: https://github.com/odoo/odoo/pull/268301 task-6034130, task-5447310