Thursday, October 9, 2025
19 changes · master
Enhancements to existing features
The US payroll demo data now includes a Developer USA employee record so demo payroll setup starts with the needed sample information. This helps demos run more reliably by ensuring salary structure defaults are applied after the demo record is available.
Original PR description
Added the Developer USA demo data record in the l10n_us_hr_payroll.xml file instead of leaving it empty for the sake of the demo data being added before triggering the _default_salary_structure function in hy_version.py Task ID: 5003603
The Hong Kong payroll employee form now places employee name fields under the private contact information section instead of location information. This makes the information easier to find in the most relevant area and improves form organization for HR users.
Original PR description
before: the names were under location information after: moved the names under private contact information task-5042649
Pay Run cards now show icons and clearer, capitalized information text, making payroll runs easier to scan. The Pay Runs action also has a cleaner navigation path, improving consistency when users access this area.
Original PR description
- added icons in Pay Run card and capitalized the info texts - added path to Pay Runs action (as `pay-runs`) task-5109059
Payslips that have been validated now show the status as "Done" instead of "Validated". This creates consistent wording between individual payslips and payroll runs, reducing confusion for payroll users.
Original PR description
If the payslip status is "validated", the display status for the payslip is "Validated". The display has been changed to "Done" to match with the payrun's status. Forward-Port-Of: odoo/enterprise#95182
Desktop users can now copy the text of AI chat messages directly from the message actions. This makes it easier to reuse AI-generated responses outside the conversation without manual selection.
Original PR description
This commits enables the copy text message action on desktop. task-3509874
This update changes how accounting-related demo and localization data is loaded, making setup more consistent across modules. It mainly supports smoother testing and onboarding environments without changing day-to-day business workflows.
Original PR description
More information in community PR
An unused field in the Appraisal Skills module was removed because it was no longer serving any purpose. This helps keep the module simpler to maintain without changing expected user behavior.
Original PR description
manager_ids is a computed field defined on hr.appraisal.skill model, but it's never used. task-5072467
Resolved issues and error corrections
WhatsApp message read indicators can now be shared consistently across message previews and chat bubbles. This reduces duplicated logic and helps ensure users see the same read-status cues in more places.
Original PR description
Before [this](https://github.com/odoo/odoo/pull/230075), the `showSeenIndicator` was part of the `Message` component, since that is the only place it was used, but with the intended change it will now be used by the `NotificationItems` and `Chatbubble` to show in the message previews. As the `showSeenIndicator` was part of the message component we had to redifine this getter every time we had to use it. This commit moves it from message component to message model so that it can be reused anywhere it is needed. Community PR: https://github.com/odoo/odoo/pull/230075 task-4825814
Features or functions removed from Odoo
The separate hourly cost module has been removed because its only employee field is now included directly in HR. This simplifies setup while keeping the field available only where it is needed, with minor impact on related planning and manufacturing workflows.
Original PR description
This removes the module hr_hourly_cost which was only adding 1 field to hr .employee. Now the field is already present in hr but invisible until needed. Task: 5076449
Miscellaneous changes
…ness" Unicity is not used in every day English
Original PR description
…ness" Unicity is not used in every day English
This update changes how AI tool functions are called so they are easier to customize and stay aligned with newer Odoo versions. It helps reduce compatibility issues for future overrides without changing the user-facing AI experience.
Original PR description
To ease the override and compatibility with what is done in 19.0, we call the function with kwargs instead of args. Forward-Port-Of: odoo/enterprise#96630 Forward-Port-Of: odoo/enterprise#96528
The Mexican electronic invoicing module now preserves valid accented characters, including ü, in legal names. This prevents compliant customer or company names from being incorrectly altered and helps avoid issues with SAT invoice validation.
Original PR description
Previous commit (#95207) removed accents for names including character ü which indeed is a recognized character for SAT opw-5125107 Forward-Port-Of: odoo/enterprise#96043
The Indian payroll demo contract now uses Mitchell Admin as the HR Responsible instead of OdooBot. This makes the sample offer signing flow better match a realistic logged-in user scenario for demos and testing.
Original PR description
Currently, OdooBot is set as the HR Responsible in the default contract template demo data. To make the offer signing process more realistic and aligned with the login user, OdooBot is replaced with Mitchell Admin. task-5095841 Forward-Port-Of: odoo/enterprise#95176
Payroll payment reports now handle employees who have multiple bank accounts, including accounts assigned a 0% salary split. This prevents report generation from failing and lets payroll teams produce the CSV reliably in split-payment setups.
Original PR description
-When generating a payment report CSV for user with multiple bank accounts that have a salary split of 100%/0%, a traceback occurs. -The logic has been adjusted so that bank account of 0% split percentage can be included in the payment report. Forward-Port-Of: odoo/enterprise#94468
The update moves HR-related scheduling tests into the HR-specific project module so builds no longer fail when the HR app is not installed. This keeps automated checks aligned with installed apps and improves reliability without changing user-facing behavior.
Original PR description
Steps to reproduce: - start test_auto_schedule_flex_resource when hr not installed. => `AttributeError: 'res.users' object has no attribute 'action_create_employee' Source: - action_create_employee comes from hr, but the test is in project_enterprise Fix: - tests related to hr moved to project_enterprise_hr Forward-Port-Of: odoo/enterprise#96365
Closing the AI chat window in Discuss is now covered by a test to ensure it does not cause a crash. This helps keep the messaging experience stable when users dismiss AI-assisted drafting.
Original PR description
https://github.com/odoo/odoo/pull/230609
fix an accidental change during a forward port from "Out of Contract" to "Out of version" task-5075058 Forward-Port-Of: odoo/enterprise#94144
Original PR description
fix an accidental change during a forward port from "Out of Contract" to "Out of version" task-5075058 Forward-Port-Of: odoo/enterprise#94144
The spreadsheet document tests now load the full chart support they need before running. This prevents later tests from failing unpredictably when they rely on specialized chart types such as treemap or geo charts.
Original PR description
Some tests were loading Chart.js using loadJS, without the corresponding bundle. That means that the test that comes after could fail if they required treemap/geo charts, as they weren't loaded in ChartJs. Task: [5003595](https://www.odoo.com/web#id=5003595&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#96697
The payroll settings now show the Accounting section for every country, making the Batch account move lines option accessible to all users. SEPA-specific payroll settings remain limited to SEPA countries, so businesses outside SEPA can use the accounting batching option without seeing irrelevant payment settings.
Original PR description
Made the "Accounting" block visible for all countries and placed the Batch account move lines option inside it, instead of inside Payroll SEPA. As a result, Payroll SEPA remains visible only for SEPA countries, while Batch account move lines is now available for all. task-5138344