Daily updates from Odoo
Saturday, July 12, 2025
5 changes · master
Enhancements to existing features
Expense receipt scanning now identifies more useful descriptions, such as merchant or venue names, instead of broad categories like food or parking. This makes expense records clearer for employees and reviewers, reducing manual corrections and improving reporting quality.
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#89898
Forward-Port-Of: odoo/enterprise#89448This update adapts enterprise spreadsheet documents and timesheet analysis reporting to work with the latest pivot table foundation. It helps keep reporting screens compatible and reliable after the underlying reporting technology changes.
Original PR description
See the community commit. https://github.com/odoo/odoo/pull/194413
Tests were updated to match the latest chart side panel behavior in Documents Spreadsheet. This helps ensure users keep their place while scrolling, switching tabs, and opening or closing sections, making chart editing feel more consistent.
Original PR description
… behavior Update test cases to reflect recent UI changes in the chart side panel: - Tabs are now sticky while scrolling - Scroll position is preserved when switching tabs - Expanded/collapsed section state is retained Task: 4752564
IoT communications now include a unique reference for each request and response. This helps ensure the system matches each device reply to the correct request when multiple actions happen at the same time, reducing the chance of incorrect callbacks.
Original PR description
We now generate a unique identifier we provide both longpolling and websocket requests and responses to ensure we don't callback for the wrong response if two requests are made simultaneously. Forward-Port-Of: odoo/enterprise#89950
Profit and loss reports that group by analytic accounts now avoid processing unnecessary empty analytic-plan rows. This reduces report loading times significantly on large accounting datasets, with benchmarked improvements of about twice as fast.
Original PR description
Description ----------- For the P&L report, a view of the `account_analytic_line` is created to mascarade as `account_move_line` for the reporting engine. The `analytic_distribution` is takens from…
Description ----------- For the P&L report, a view of the `account_analytic_line` is created to mascarade as `account_move_line` for the reporting engine. The `analytic_distribution` is takens from the plans of the analytic lines. This is done by collecting all potential plans a line can be associated with and *unnesting* them into the main table. Unnesting creates a duplicate of the row for each possible value of the analytic plans. This can quickly balloon the row count of the view, depending on how many plans are present. This also creates a duplicate row when the line isn't associated with a specific plan, adding the value `NULL` for the `analytic_distribution`. This commits filters out the `NULL` values of the array of plans before unnesting into the main table. Since on average an analytic line is associated with a few plans, this prevents the significant growth of the view, leading to more reasonable performance. Benchmark --------- On a database with ~700k AAL and ~600k AML for 2025, opening the P&L report with a grouping by analytic accounts, took: | Accounts count | Before | After | |----------------|----------|----------| | 1 | 10.3 sec | 4.76 sec | | 5 | 51 sec | 20.8 sec | | 10 | 96 sec | 41.7 sec | | 15 | 2:26 min | 1:04 min | | 20 | 3:15 min | 1:25 min | So roughly a ~2x improvement on average. Reference --------- opw-4845164 Forward-Port-Of: odoo/enterprise#89630