Wednesday, June 17, 2026
18 changes · saas-19.1
New functionality added to Odoo
This update adds a button to the employee version list view, allowing users to directly access the detailed form view for each version. Currently, customers can't view attachments related to employee versions because the form view isn't accessible. This functionality is available starting with version 19.2.
Original PR description
In the version list view, there is currently no way to access the form view of an employee version. Add a button in the list view to open the corresponding version form view. The customer has a query regarding employee version attachments, but since we do not currently have access to the form view, there is no way to access the attachments. This functionality is available from version 19.2, but not in version 19. [here]: https://github.com/odoo/odoo/pull/223518/changes opw-6128590 upg-3839420 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#265819
Resolved issues and error corrections
This update corrects a technical issue in the Swiss reporting module (l10n_ch_reports) that was causing errors due to outdated subformula values. The fix resets these values to 'False', ensuring accurate record processing and preventing disruptions to financial reports. This resolves a potential data inconsistency.
Original PR description
The subformula was [removed](https://github.com/odoo/enterprise/pull/117601) without resetting its value to False, leaving existing values in the database. This causes errors when processing records that still contain a subformula value. ```.py Invalid subformula in expression "balance" of line "Treasury shares": -sum ``` To prevent these errors, existing subformula values are reset to False opw-6297901 Forward-Port-Of: odoo/enterprise#120663
Code cleanup and technical improvements
This update streamlines the account module's code by creating reusable JavaScript classes and removing unnecessary conditional statements. These changes enhance the system's efficiency and stability, preventing potential issues caused by bypassing intended behavior within the account and bank statement modules.
Original PR description
Made some generic JS classes that can be used between account move and account bank statement and removed some if statements that are no longer needed from account_tree controller because they were used to bypass default behavior if used by a model other than the intended one. This issue was fixed in: https://github.com/odoo/enterprise/pull/117476 task-5892419 Forward-Port-Of: odoo/odoo#264775
This update fixes an error in the VAT balance calculation within the l10n_uy module for Uruguay. The previous formula was inaccurate, leading to incorrect reporting. This change ensures accurate VAT reporting, aligning with local tax regulations and improving financial data reliability.
Original PR description
### Steps to reproduce the issue: 1. Download Accounting and l10n_uy 2. Go to tax report and see the formula of the VAT balance that is incorrect ### Reason to introduce the fix: Correct the formula to display the right amount. opw-6261211 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#269376 Forward-Port-Of: odoo/odoo#268478
This update resolves an issue where creating payment sequences in the Accounting module would trigger a technical error. The fix ensures that the system correctly handles date-only values when generating sequence numbers, preventing a traceback and ensuring smooth payment processing. This improves stability and usability for users creating payment sequences.
Original PR description
## Issue When trying to call `dt.replace` on a `datetime.time`, a TypeError is raised ``` File "/home/odoo/Documents/src/odoo/190/odoo/addons/base/models/ir_sequence.py", line 270, in _next return…
## Issue
When trying to call `dt.replace` on a `datetime.time`, a TypeError is raised
```
File "/home/odoo/Documents/src/odoo/190/odoo/addons/base/models/ir_sequence.py", line 270, in _next
return seq_date.with_context(ir_sequence_date_range=seq_date.date_from, ir_sequence_date=dt.replace(tzinfo=None))._next()
^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'tzinfo' is an invalid keyword argument for replace()
```
## Steps to reproduce
1. Install *Accounting* (`accountant`)
2. Update the `account.payment` sequence:
- Toggle *Use subsequences per date_range* and create a range
3. In Accounting > Customers > Payments, create a payment:
- Payment Type: Receive
- Customer: Any
- Amount: Any
4. **A traceback appears**
## Cause
This error was introduced by https://github.com/odoo/odoo/commit/4b9dd7893f96.
The `AccountPayment._compute_name` method calls `_next_by_code` and passes a date as the `sequence_date`.
https://github.com/odoo/odoo/blob/337efb069f6cf2cb9478a970f075fd139c1e8e0a/addons/account/models/account_payment.py#L420-L422
In the `_next` method, the `dt` variable is set to that date (`datetime.date`), and calling the `.replace` method on that variable raises an error, as there's no tzinfo for `datetime.date`s.
opw-6303885
Forward-Port-Of: odoo/odoo#270283This update fixes an issue where tags in the Select Menu were overlapping with the input field, especially when multiple selections were made. Now, tags and the input field are consistently displayed on separate lines, providing a cleaner and more usable experience for users. This improves the overall visual clarity of the Select Menu.
Original PR description
Before: With multiSelect enabled, tags appear on the same line as the input, shrinking it. After multiple selections, the input wraps to the next line inconsistently. After: Tags and the input are always on separate lines. task-5226503 Forward-Port-Of: odoo/odoo#269497
This update corrects a bug where selection fields within the Odoo Studio were incorrectly marked as required. The fix ensures that selection fields are only required when explicitly defined as such, preventing unexpected behavior and improving the usability of the Studio for users. This resolves an issue that could have caused data entry errors.
Original PR description
Before: any studio property using a SelectMenu (selection) component, without a `required: false` in the childProps, was implicitly required because the check used `required !== false`, which evaluates `undefined` as truthy. After: `required` is only applied when explicitly set to `true`. task-5226503 Forward-Port-Of: odoo/enterprise#120037
This update resolves an issue that caused a traceback when users deleted the last column from a table within the Odoo Report Editor. The fix prevents a technical error by ensuring the editor handles the scenario where a table has no remaining columns gracefully. This improves the overall stability and usability of the report design tool.
Original PR description
Problem: When deleting the last column in a table in studio we get a traceback. Cause: `firstCell` will be null if we delete the last cell in the table. Fix: Added a null check on `firstCell` before calling `setCursorEnd`, so the cursor is only repositioned when the table still has remaining cells. Steps to reproduce: - Edit a report with a table. - Remove all columns. - Traceback will occur when deleting the last one. opw-6263696 Forward-Port-Of: odoo/enterprise#119502
This update fixes an issue where Odoo's cron workers weren't efficiently managing memory usage. By introducing a new configuration option, we can now set a lower memory limit specifically for cron jobs, preventing them from cycling through all databases and optimizing overall system performance. This ensures smoother operation for background tasks.
Original PR description
The configuration option `registry_lru_size` does not exist and does not work at all in recent versions. Defining odoo-specific environment variables to handle: - ODOO_REGISTRY_LRU_SIZE: the default registries size - ODOO_REGISTRY_LRU_SIZE_CRON: overwrite for cron workers Cron workers have often a different workload than HTTP workers and we may set a different limit there. If the limit is lower than the number of databases, a cron job will not reuse registries because it cycles through all known ones - in such cases, we can set a lower limit to keep the memory lower. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#270069 Forward-Port-Of: odoo/odoo#268587
This update corrects a minor issue in how overtime hours are recorded, ensuring more accurate calculations for payroll and payments. Previously, rounding errors led to slight inaccuracies in duration measurements. The fix maintains precise sub-second precision for overtime duration, which is crucial for correct financial reporting.
Original PR description
Overtime duration computed as fractional hours was rounded to 3 decimal places before being stored on the overtime line. Since 1 decimal hour = 3600 seconds, this gives only 3.6 seconds of precision and the rounding can go in the wrong direction due to floating-point representation. The fix consists in replacing the duration rounding to 4 decimals when building overtime work entries so stored durations keep sub-second precision needed for money computation. task-6212231 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#268889
This update resolves an issue where multiple Oboxes connected to a database wouldn't consistently display a green Websocket status in the Kanban view. Now, all connected Oboxes show the correct green status, ensuring accurate monitoring of Obox connectivity.
Original PR description
Before this commit, if you had multiple Oboxes connected to a DB, and you looked at them in the Kanban view, only 1 Obox would show a green status for Websocket, despite all of them being connected. After this commit, the Websocket status for each Obox is green as expected.
This update resolves a crash that occurred when adding reactions to messages on smaller screens. The fix ensures the correct action object is passed, preventing errors and improving the user experience across different device sizes. This enhances the usability of the messaging feature for all users.
Original PR description
Before this commit, when browser window is small while not on a mobile device, clicking on the message action "Add a reaction" would lead to the following crash: ``` Cannot destructure property…
Before this commit, when browser window is small while not on a mobile device, clicking on the message action "Add a reaction" would lead to the following crash:
```
Cannot destructure property 'owner' of 'undefined' as it is undefined.
at Proxy.onSelected
```
This happens because cliking on this button on small screen would immediately trigger the complete showing of the emoji picker rather than just the quick menu. While this calls `action.onSelected()` and is expected to work [1], the problem is that this was passing the action definition rather than the action object as prop. As a result, `onSelected()` was using the definition and didn't pass the expected params that are destructed in the definition.
This commit fixes the issue by passing the `action` object to `QuickReactionMenu` component, so that the `action.onSelected()` is properly passing the `action.params`.
[1]: https://github.com/odoo/odoo/blob/19.0/addons/mail/static/src/core/common/quick_reaction_menu.js#L84
Forward-Port-Of: odoo/odoo#270158This update fixes an issue where capitalized email domains in aliases caused emails to fail to route correctly. The change prevents users from saving capitalized domain names, ensuring consistent email routing within the system. This resolves a technical problem that could have impacted email delivery.
Original PR description
[FIX] mail_alias_domain: prevent capitalization in domain names to avoid email routing issues Currently, we allow capitalization in the name / display_name field for Email Domains…
[FIX] mail_alias_domain: prevent capitalization in domain names to avoid email routing issues
Currently, we allow capitalization in the name / display_name field for Email Domains (mail.alias.domain), which allows for capitalized domains in email aliases. When the system receives incoming emails via mail_thread.py's message_route,
the reply_to email addresses are sanitized (all lowercase). We then use the case-sensitive 'in' to identify
message routes, which will always fail for capitalized email domains.
This PR applies sanitizing to the name field so that users cannot save capitalized email domains.
Other options are not viable because:
1. we don't have a case-insensitive equivalent of the 'in' operator
2. altering the current logic to be case-insensitive would decrease performance
3. altering the current logic would change the structure of message_route
Fixes #opw-5401633
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#257792This update resolves a technical problem preventing the Odoo upgrade command from functioning correctly when running Odoo in standalone mode. The fix addresses issues with argument persistence, redundant list splitting, and temporary path conflicts, ensuring the upgrade process works reliably.
Original PR description
The command no longer works in standalone mode due to the following issues: - Each access to `self.parser` creates a new parser, so previously added arguments are lost. - The parsed `addons_path` value is already a list, but the command attempts to split it again. - The temporary Odoo paths remain in `sys.path`, causing Odoo modules to shadow standard library modules when running upgrade scripts. This commit addresses all the above issues. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#269931
This update fixes several issues within the Odoo spreadsheet component, improving its functionality and appearance. It includes enhancements to the autofill feature, pivot table display, and overall stability, ensuring a smoother user experience. These changes were made by a team of developers to maintain the quality and performance of the spreadsheet tool.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/53aa85b47b [REL] 19.1.23 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/53aa85b47b [REL] 19.1.23 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/d1870b5369 [FIX] Find and replace : selection after an UPDATE_CELL [Task: 4818132](https://www.odoo.com/odoo/2328/tasks/4818132) https://github.com/odoo/o-spreadsheet/commit/53779bdaf5 [FIX] autofill: make tooltip readable in dark mode [Task: 6289977](https://www.odoo.com/odoo/2328/tasks/6289977) https://github.com/odoo/o-spreadsheet/commit/96278234b6 [FIX] pivot: hide collapse icon when displaying formulas [Task: 6218524](https://www.odoo.com/odoo/2328/tasks/6218524) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
A recent update to our Weblate translation system unexpectedly reverted some code changes. This pull request has restored the original code, ensuring that updates to Weblate don't disrupt ongoing development. This is a minor issue being addressed to maintain stability.
Original PR description
The regular Weblate translation update reverted some code changes. This should normally not happen. We're reverting it back to the previous state. This partially reverts commit ec0cc1bfa31104d5880084c4e2db6e7822cd024a.
This update fixes a scheduling issue with semi-monthly payrolls in the second half of the month. Previously, payslips started on the 15th, coinciding with the end of the first half. Now, payslips begin on the 16th, ensuring accurate payroll calculations for employees on this schedule. This ensures consistent and correct payroll processing.
Original PR description
Issue: ---------------------------------------- The start date of semi-monthly payslips on second half of the month is the 15 which is also the end date of the first half of the month. Steps to reproduce: ---------------------------------------- - Have an employee with a semi-monthly payroll - When in the first half of the month, create a payslip for this employee - The payslip is from 1st to 15th - Do the same when in the second half of the month - The payslip is from 15th to end of the month Cause: ---------------------------------------- In `_schedule_period_start()` we set the start date to th 15th for semi-monthly payslips. Solution: ---------------------------------------- Set it to the 16th. opw-6281556 Forward-Port-Of: odoo/enterprise#120172
This update streamlines the bank statement import process by replacing a duplicated controller with a more efficient, generic version. Removing unnecessary code from the import module ensures accurate data processing and avoids potential conflicts with other Odoo modules, enhancing stability.
Original PR description
account_bank_statement_import_view was using the same controller used in account.move which caused some wrong behavior when some logic isn't shared between both modules, now account_bank_statement_import uses a generic controller that doesn't add unneeded behavior. As well as removing all of the account move classes from bank statement import and using generic ones or ones specific to account bank statement import. task-5892419 Forward-Port-Of: odoo/enterprise#117476