Tuesday, April 14, 2020
6 changes · master
Enhancements to existing features
Guided tour tips now behave more reliably when users move around page elements, edit text areas, or need to scroll to continue. This improves onboarding and in-app guidance by reducing confusing tip flicker, missed updates, and unclear next steps.
The Purchase app now includes an onboarding walkthrough that helps new users create their first purchase order. When Inventory is installed, the guidance also continues through the first receipt process, helping users get started faster with fewer setup questions.
Original PR description
Improve onboarding and guide first clicks of users in the purchase application, to create a purchase order. In case Stock module is installed, it will also guide the users through the receipt first clicks process. Task ID 2219988 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo now includes a reusable popover component for the web interface, making it easier to add contextual pop-up content consistently. This reduces development friction and helps teams build interactive interface elements with tested, shared behavior.
Original PR description
Using bootstrap popover with owl is possible, but with a lot of friction. This commit adds a Popover element to ease developments that require a popover. This component takes 3 props: - position='bottom' (optional): 'top', 'bottom', 'left', 'right' - title (optional) - target: HTMLElement towards which the popover points Adapted from [this gist](https://gist.github.com/elclanrs/bb719c17504e5d9b3ec985def050a041). ### TODO for this PR (in order): 1. [x] validate interface with framework team 2. [x] check if @kebeclibre's use-case can leverage this component as-is or if modifications are necessary 3. [x] add tests once the interface is well defined
Studio now temporarily blocks the screen while a new field is being created, preventing users from making conflicting edits during the wait. This reduces the chance of broken or unintended customizations when field creation takes several seconds.
Original PR description
PURPOSE Studio takes too much time to create fields. It took ~6sec on the runbot to add a text field to the res.partner formview! During this time, the UI is still available. Making it way too easy for the user to mess up his customization. The purpose of this task is to prevent that by 'blocking' the UI while the system is working. This is already happening when renaming a field, let's do the same for field creation. SPEC Block the UI during field creation with Studio. In the same way it is blocked when renaming a field. TASK 2221093
Opening bank statement lines in the reconciliation widget is faster because the system now avoids slow database lookups with very large account lists. This reduces waiting time for accounting users when matching bank transactions, especially on large databases.
Original PR description
The method `get_move_lines_for_bank_statement_line` was taking too much time to be executed. After analysis, the following query was executed in 1,162s on our production ```sql SELECT…
The method `get_move_lines_for_bank_statement_line` was taking too much time to be executed.
After analysis, the following query was executed in 1,162s on our production
```sql
SELECT "account_move_line".id FROM "account_move" as "account_move_line__move_id","account_move_line"
WHERE ("account_move_line"."move_id"="account_move_line__move_id"."id") AND (((((((("account_move_line"."statement_line_id" IS NULL AND ("account_move_line"."account_id" in ({2 ids}))) AND "account_move_line"."payment_id" IS NOT NULL) AND ("account_move_line"."balance" != 0.0)) OR ((("account_move_line"."reconciled" IS NULL or "account_move_line"."reconciled" = false ) AND ("account_move_line"."account_id" in ({278 ids}))) AND ("account_move_line"."balance" != 0.0))) AND ("account_move_line"."account_id" in ({2455 ids}))) AND ("account_move_line"."company_id" = 3)) AND ((("account_move_line__move_id"."state" = 'draft') AND FALSE) OR (("account_move_line__move_id"."state" not in ('draft','cancel')) OR "account_move_line__move_id"."state" IS NULL))) AND ("account_move_line"."date" >= '2020-01-01'))
ORDER BY ("account_move_line".debit - "account_move_line".credit) = -97061.67 DESC,
"account_move_line".date_maturity ASC,
"account_move_line".id ASC
LIMIT 15
```
This query is run twice every time we open a new bank statement line in the bank reconciliation widget.
While this query looks simple enough, there are 2 `IN` filters that take a long time to compute with long lists of ids. This is because the query is built with `Model._where_calc(domain)`.
A solution to speedup this query is to make the query by hand to avoid the id lists made by the ORM.
I my tests (not on the prod), the changes made here made the time go from 2.45s to 0.3s for the same query.Resolved issues and error corrections
This update fixes several issues in the data cleaning process and adds dedicated tests to help prevent future regressions. Businesses benefit from more consistent cleaning suggestions, better handling of formatted content, and improved reliability when company or country details affect displayed values.
Original PR description
Add tests for data_cleaning