Wednesday, December 24, 2025
15 changes · 19.0
Enhancements to existing features
This update clarifies the 'Overdue Customer Invoices' filter within the account follow-up reporting feature. This change ensures users can more accurately identify and manage overdue invoices, leading to better cash flow tracking and improved customer relationships. The update was implemented as an improvement to existing reporting functionality.
Original PR description
opw-5232434 Forward-Port-Of: odoo/enterprise#100595
This update adjusts the minimum daily wage calculation in Odoo's Mexico payroll module to comply with the latest regulations from CONASAMI. Effective January 1, 2026, the minimum wage has increased to 315.04 MXN. This ensures accurate payroll calculations for Mexican businesses using this module.
Original PR description
According to CONASAMI: https://www.gob.mx/conasami/articulos/incremento-a-los-salarios-minimos-para-2026?idiom=es the minimum wage will increase effective January 1, 2026. It is necessary to update the “Mexico: Daily Minimum Wage” parameter to reflect the new value: 315.04 target: 19.0 task-5412717
Resolved issues and error corrections
Converted todos no longer show the option to convert them into tasks again once a project is already assigned. This prevents users from accidentally reconverting the same item and changing its project details unexpectedly.
Original PR description
Steps to reproduce: - Create a Todo and convert into task using cog Menu option. - Todo is converted to task and is displayed. - Through breadcrumb go back to Todo - Try to convert it again Issue: - The converted todo is again converted (change of project etc) Fix: - Hiding the convert cog menu when a project is set. task-5075327 Forward-Port-Of: odoo/odoo#240821 Forward-Port-Of: odoo/odoo#230031
Miscellaneous changes
This pull request contains temporary changes to the Odoo Enterprise payroll module. These updates primarily involve adjustments to the HR payroll calculations and related views. The changes are awaiting further review and refinement before being fully implemented.
Users returning to a spreadsheet dashboard through breadcrumbs now see the dashboard they were last viewing instead of being reset to the first one. This avoids confusion and keeps navigation consistent for people using multiple dashboards.
Original PR description
### Description After [PR#223171](https://github.com/odoo/odoo/pull/223171/), `useSetupAction` `getLocalState` exports the active dashboard through the loader state (`dashboardLoader.activeDashboardId`). The restore path still read `state.activeDashboardId`, so returning via the breadcrumb reset to the first dashboard. Read the saved loader state to keep the last selected dashboard. Task: [5391349](https://www.odoo.com/odoo/project/2328/tasks/5391349) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Clicking Jump to Present in mail discussions now returns focus to the message composer on desktop. This removes an extra click for users so they can continue typing immediately after navigating to the latest messages.
Original PR description
**Current behavior before PR:** clicking "Jump to Present" caused the composer to lose focus, forcing users to manually focus the input before typing. **Desired behavior after PR is merged:** The composer automatically regains focus on desktop after clicking "Jump to Present". task-[5035977](https://www.odoo.com/odoo/project/1519/tasks/5035977) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241113 Forward-Port-Of: odoo/odoo#227781
This fix ensures Odoo's automated click testing continues to target the selected application even if the page reloads. It prevents broader, unintended testing runs, making internal test results more reliable and reducing false build errors.
Original PR description
The clickEverywhere function can be executed with one app. To accomplish this, the xmlID should be passed as a parameter to the function. Before this commit, the xmlID of the requested application was not stored in the status of the current execution saved in localStorage. If a reload occurs while the clickEverywhere function is executing, it will lose this information and continue testing all applications instead of only the requested one. runbot.build.error: 234747 Forward-Port-Of: odoo/odoo#240943
The Point of Sale combo product configurator now respects the existing setting for hiding product images. This keeps the checkout experience consistent for staff and avoids showing images where the business has chosen not to display them.
Original PR description
Before this commit: ==================== In POS, when product images were configured to be hidden, the setting was correctly applied to normal products. However, in the combo product configurator, product images were still displayed, causing inconsistency with the configured behavior. After this commit: ====================== The combo product configurator now respects the product image visibility configuration, ensuring consistent behavior across all product types in the POS interface. Task-5163955 Forward-Port-Of: odoo/odoo#241114 Forward-Port-Of: odoo/odoo#231366
Closing a Point of Sale session now keeps receipt/order references continuous even when empty draft orders are discarded. This helps avoid confusing gaps in POS numbering and supports cleaner store records.
Original PR description
Before this commit, when closing the POS session, if there were draft orders without any lines or payments, they were removed and caused gaps in the pos_reference sequence. opw-5216954 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A rare error has been fixed that could appear when users opened a parent channel from a discussion thread that had already been deleted. This improves reliability in the Discuss/Mail area and helps avoid interruptions for affected users.
Original PR description
This commit fixes a rare traceback that could occur when opening a parent channel from a thread that has been deleted. task-5355205
Invoice validation no longer crashes when a journal item has no label. The system now safely treats missing labels as blank text, helping users complete invoices without unexpected errors.
Original PR description
Creating an invoice containing journal items without a label triggers a traceback because the code unconditionally slices the 'name' field (line.name[:64]) without ensuring it is not False. Since 'name' is not a required field on account.move.line, it must be safely handled.
This commit ensures that the label is always a string by falling back to an empty string when the value is missing.
Steps to reproduce the bug:
- Create a storable product
- Create an invoice:
- Add the product to the invoice
- Set any customer
- Go to the journal items tab
- Remove the label of the journal item corresponding to the product
- Try to validate the invoice
- A traceback is raised
opw-5360602
Forward-Port-Of: odoo/odoo#239664
Forward-Port-Of: odoo/odoo#239188Changing the currency on a bank journal could fail when multiple payment options used the same method but different payment accounts. This fix prevents that error, allowing accounting users to update journal currencies without interruption.
Original PR description
036530a8983e485ac1ad0b9444a6aba01caabc07 introduced a bug, because it can happen to have 2 (or more) payment method lines from the same payment method. If these PML have differents payment accounts, we get a singleton error. Steps: - On Bank journal, add a new outbound payment method line, which use the same payment method as the first default one (it should be 'Manual') - Set two different payment account for each line - Then change the currency of the journal -> Traceback (singleton error) opw-5384042 Forward-Port-Of: odoo/odoo#239521
This update fixes an inaccuracy in the documentation for our phone number handling features. The previous documentation incorrectly referenced a method that didn't exist, and has now been updated to accurately reflect the correct method used in the code. This ensures clarity for developers and improves the overall quality of our documentation.
Original PR description
A mention to `_voip_get_phone_field` appeared in [1] but this seems to never have existed. In any case, `_phone_get_number_fields` was used by the codebase in the end and should thus be the one mentioned. [1]: https://github.com/odoo/enterprise/commit/52b3065993c41c6b7c65dda586a66fdd865b3afd Forward-Port-Of: odoo/enterprise#102804
This update resolves a recurring issue in the MRP barcode tour that was failing intermittently. The fix adds a check to ensure all necessary data is loaded before proceeding, preventing errors caused by timing conflicts. The tour has also been simplified with additional steps to ensure consistent functionality.
Original PR description
Test `test_no_split_uncompleted_done_move` is failing non-deterministically after https://github.com/odoo/enterprise/pull/98184 Because it was going too fast and sometimes the lines wouldn't have been loaded by the time its the step's turn. A check was added in order to make sure the lines are loaded before moving onto the next steps This commit also simplifies the tour and adds extra steps to avoid failure. Runbot: 234351
This update expands the functionality of the 'sign' module to align with the official ItsMe service's coverage. Previously, the system only supported itsme in Belgium and the Netherlands. This change ensures compatibility with a wider range of users and streamlines the sign-up process for those countries.
Original PR description
Extend itsme availability beyond BE and NL to match the official itsme coverage: https://www.itsme-id.com/en-BE/business/coverage task-5424818 Forward-Port-Of: odoo/enterprise#102423