Thursday, July 10, 2025
2 changes · saas-18.1
Enhancements to existing features
Account merges now avoid a heavy recalculation step that could overload systems with many journal entries. This improves reliability and reduces the risk of memory errors when consolidating accounts in large accounting databases.
Original PR description
### Issue --> The final step of the `_action_merge` method updates the `code` field of the account onto which the other accounts are merged. During the write call on `code`, a dependent field…
### Issue --> The final step of the `_action_merge` method updates the `code` field of the account onto which the other accounts are merged. During the write call on `code`, a dependent field `always_tax_exigible` on `account.move` gets added to the compute chain. This causes a fetch of all `account.move` records related to journal items related to the account that is getting updated. This can lead to a MemoryError on databases with large `account.move` tables. ### Solution --> We delegate the write of the `code` field to SQL. In the account merge wizard, accounts that can be grouped are grouped by the keys --> `'account_type', 'non_trade', 'currency_id', 'reconcile', 'deprecated','name'`. Therefore, the `account_type` does not change after the merge. We can safely assume that any fields dependent on `account_type` do not need recomputation and hence, bypass the ORM for this update. ### Benchmark --> For an account with ~1.17M related `account_move_lines` and ~570k `account_moves`, | Before Fix | After Fix | |--------|--------| | TO/Memory error past TO | ~24s | #### Additional change --> Disable the prefetcher in the write call in `account.account` to optimize memory usage on databases with a large number of journal items/journal entries when writing on `code` or `account_type` in general. opw-4839985 Forward-Port-Of: odoo/odoo#216768
Expense receipt scanning now captures meaningful descriptions such as restaurant or fuel station names instead of generic expense categories. This makes automatically created expense reports clearer and easier for employees and approvers to review.
Original PR description
The detection of the description has been improved in the latest version of the expense OCR API. It now actually detects a description (restaurant name, fuel station name, etc) instead of predicting a category ('food', 'parking', 'gasoline', etc).
Task [link](https://www.odoo.com/odoo/project/2068/tasks/4623180)
task-4623180
Forward-Port-Of: odoo/enterprise#89448