Monday, May 18, 2020
8 changes · master
Enhancements to existing features
List views across several Odoo apps now use clearer visual widgets such as status badges, employee/user avatars, activity indicators, and remaining-days displays. This makes records easier to scan and helps users quickly spot priorities, statuses, stock availability, and upcoming actions.
Original PR description
Purpose ======= The following task implemented new widgets/features in the listview for better UI. https://www.odoo.com/web#id=2195254&action=327&model=project.task&view_type=form&cids=1&menu_id=4720…
Purpose
=======
The following task implemented new widgets/features in the listview for better UI.
https://www.odoo.com/web#id=2195254&action=327&model=project.task&view_type=form&cids=1&menu_id=4720
The goal of the current task is to use those to upgrade our listviews
Specification
=============
Below are change requests on various listviews.
Remove decoration-bf="message_needaction==True" from every listview in every module.
PRODUCT - stock.view_stock_product_template_tree (product template)
remove all decorations from <tree>
set the following decorations on 'virtual_available' and 'qty_available'
decoration-danger="virtual_available<0"
decoration-warning="virtual_available==0"
also set decoration-bf on 'virtual_available'
apply the same modifications on stock.view_stock_product_tree for product variants
SUBSCRIPTION - sale_subscription.sale_subscription_view_list
remove all decorations from <tree>
'stage_id' field
set <field name="stage_id" widget="badge" decoration-info="stage_category == 'draft'" decoration-success="stage_category == 'progress'"/>
'recurring_next_date' field
set <field name="recurring_next_date" string="Next Invoice" widget="remaining_days" attrs="{'invisible': [('stage_category', '!=', 'progress')]}"/>
set decoration-bf on 'code' and 'recurring_total_incl'
move 'percentage_satisfaction' before 'recurring_total_incl'
set widget="many2one_avatar_user" on 'user_id'
add <field name="activity_ids" widget="list_activity"/> after 'user_id'
ELEARNING - website_slides.slide_channel_view_tree
set widget="many2one_avatar_user" on 'user_id'
'enroll' field
set <field name="enroll" widget="badge" decoration-success="enroll == 'public'" decoration-info="enroll == 'invite'" decoration-warning="enroll == 'payment'"/>
POS - point_of_sale.view_pos_order_tree
remove all decorations from <tree>
'state' field
make visible and move it at the end of the view
set <field name="state" widget="badge" decoration-info="state == 'draft'" decoration-success="state not in ('draft','cancel')"/>
set decoration-bf on 'name'
APPRAISAL - hr_appraisal.view_hr_appraisal_tree
'state' field
set <field name="state" widget="badge" decoration-info="state in ('new','pending')" decoration-success="state == 'done'"/>
'date_close' field
set <field name="date_close" widget="remaining_days" attrs="{'invisible': ['|',('state','=','done'),('state','=','cancel')]}"/>
PAYMENT - account.view_account_payment_tree
remove all decorations from <tree>
'state' field
set <field name="state" widget="badge" decoration-info="state == 'draft'" decoration-success="state == 'posted'"/>
move 'company_id' before 'amount'
CONTRACT - hr_contract.hr_contract_view_tree
remove all decorations from <tree>
'state' field
set <field name="state" widget="badge" decoration-info="state == 'draft'" decoration-warning="state == 'close'" decoration-success="state == 'open'"/>
set widget="many2one_avatar_employee" on 'employee_id'
PAYSLIPS - hr_payroll.view_hr_payslip_tree
remove all decorations from <tree>
'state' field
set <field name="state" widget="badge" decoration-info="state == 'draft'" decoration-warning="state == 'verify'" decoration-success="state in ('done','paid')"/>
set decoration-bf on 'number' and 'net_wage'
move 'company_id' before 'basic_wage'
set widget="many2one_avatar_employee" on 'employee_id'
SURVEY - survey.survey_tree
'state' field
set <field name="state" widget="badge" decoration-info="state == 'draft'" decoration-success="state == 'open'"/>
APPLICATION - hr_recruitment.crm_case_tree_view_job
set widget="date' on 'create_date'
set widget="priority' on 'priority'
set widget="many2one_avatar_user" on 'user_id'
TIME OFF - hr_holidays.hr_leave_view_tree
remove all decorations from <tree>
'state' field
set <field name="state" widget="badge" decoration-info="state == 'draft'" decoration-warning="state in ('confirm','validate1')" decoration-success="state == 'validate'"/>
apply the same changes in hr_holidays.hr_leave_allocation_view_tree
TaskID: 2256589
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-prThis update standardizes how Kanban cards look and behave across many Odoo apps, making common elements such as avatars, activity indicators, dropdowns, titles, and metrics more predictable. It also improves dashboard-style Kanban views so users can distinguish between opening business records and configuring dashboard cards more easily.
Odoo now limits record objects to only the core information they need, preventing accidental extra data from being attached. This improves reliability for developers and reduces memory usage for records, helping large databases run more efficiently.
Original PR description
This update optimizes how Odoo manages records internally, which can help reduce memory usage and improve performance across affected business areas. The change is mostly behind the scenes, with tests updated across accounting, HR appraisal, and sales tax flows to ensure existing behavior remains stable.
Original PR description
Related to https://github.com/odoo/odoo/pull/51075.
This update standardizes the look and behavior of kanban cards across several Odoo apps, making dashboards and record cards feel more predictable for users. It also adds easier department access for employees and improves ordering in work entry lists.
Original PR description
Updated several Odoo list views to use clearer visual widgets such as status badges, activity indicators, avatars, and remaining-day displays. This makes records easier to scan and helps users quickly identify statuses, owners, deadlines, and priorities across business workflows.
Original PR description
Resolved issues and error corrections
Bank reconciliation rules now handle statement line amounts and currencies more reliably. This prevents transactions in different currencies from being incorrectly matched just because their numbers look similar, reducing accounting errors.
Original PR description
Following the changes made by https://github.com/odoo/odoo/commit/caeb782841fc5a7ad71a196e2c9ee67644ef9074
Code cleanup and technical improvements
Event ticket registrations are now created together at key points such as checkout, sales order confirmation, and registration editing. This makes the process more reliable and easier to extend for future CRM and event synchronization automation.
Original PR description
PURPOSE
Create event registrations in batch. It will allow to customize group-creation of
registrations, notably with automated rules for crm / event synchronization.
SPECIFICATIONS
Find where registrations are created, and
* either remove registration creation (cart update)
* either make it in batch (buying tickets in front-end, using the registration
editor)
LINKS
Task ID 2258685
Prepare Task ID 2166679 (create leads from registrations)
PR #51341Original PR description
PURPOSE The goal of this task is to set up some kind of guidelines to make kanban views consistent. It is fine having different kanban views, but if a UI element is shared among several kanban views,…
PURPOSE
The goal of this task is to set up some kind of guidelines to make kanban views consistent.
It is fine having different kanban views, but if a UI element is shared among several kanban views, it should behave/look the same so the user knows what to expect.
Kanban views can be split into two types:
- 'documents' kanbans, such as res.partner, crm.lead, etc.
- those records are created/edited often, numerous
- 'opening' the card means accessing the record
- 'dashboard' kanbans, such as stock.picking.type, account.journal, etc.
- those records are not created/edited often, there are much less numerous
- usually presented as dashboard, where 'opening' the card means accessing a set of related
- 'documents' (clicking on a account.journal to access account.move, or stock.picking.type to
access stock.picking)
- configuration of the 'card record' is done through a dropdown to access configuration
Here are some guidelines for consistency. Bear in mind that those are not rules, but guidelines for consistency that we'd like to keep in mind when designing.
- 'documents' kanbans
- the record is accessed through global click
- the user avatar is at the bottom right
- the activity widget is at the bottom left (in last position if there are other elements)
- 'dashboard' kanbans
- the record is accessed through a 'Configuration' option in the card dropdown
- there is no global click, and therefore no focus shadow
- the dropdown icon (o_kanban_manage_toggle_button) is always visible, with icon fa-ellipsis-v
- the listview counterpart should be presented as a dedicated configuration menu, and shouldn't
be in the 'dashboard action'
- links in the body of the card are structured as follows: link with <count>+label, then any
additional aggregated metrics (not link) to the right
- global guidelines
- the title font color is #212529, with 500 weight
- the subtitle font color is #666666, with 400 weight
- the font size is 1.083rem
- text overflow is handled through linebreak, not ellipsis
- numerical values are aligned to the right
- the kanban state widget is at the bottom right
SPECIFICATION
When there is no global click on the kanban card, prevent the 'focus shadow'.
Opening a dropdown should close any other dropdown.
LINKS:
PR: #50536
Task-Id: 2206372Goal: restrict the attributes of a `BaseModel` instance to `env`, `_ids` and `_prefetch_ids`. This way, one can only assign fields on a record; other assignments are programming errors. This also reduces the memory footprint of records from 168 to 64 bytes (-62%).
PURPOSE The goal of this task is to set up some kind of guidelines to make kanban views consistent. It is fine having different kanban views, but if a UI element is shared among several kanban views,…
PURPOSE The goal of this task is to set up some kind of guidelines to make kanban views consistent. It is fine having different kanban views, but if a UI element is shared among several kanban views, it should behave/look the same so the user knows what to expect. Kanban views can be split into two types: 'documents' kanbans, such as res.partner, crm.lead, etc. - those records are created/edited often, numerous - 'opening' the card means accessing the record 'dashboard' kanbans, such as stock.picking.type, account.journal, etc. - those records are not created/edited often, there are much less numerous - usually presented as dashboard, where 'opening' the card means accessing a set of related - 'documents' (clicking on a account.journal to access account.move, or stock.picking.type to access stock.picking) - configuration of the 'card record' is done through a dropdown to access configuration Here are some guidelines for consistency. Bear in mind that those are not rules, but guidelines for consistency that we'd like to keep in mind when designing. 'documents' kanbans - the record is accessed through global click - the user avatar is at the bottom right - the activity widget is at the bottom left (in last position if there are other elements) 'dashboard' kanbans - the record is accessed through a 'Configuration' option in the card dropdown - there is no global click, and therefore no focus shadow - the dropdown icon (o_kanban_manage_toggle_button) is always visible, with icon fa-ellipsis-v - the listview counterpart should be presented as a dedicated configuration menu, and shouldn't be in the 'dashboard action' - links in the body of the card are structured as follows: link with +label, then any additional aggregated metrics (not link) to the right global guidelines - the title font color is #212529, with 500 weight - the subtitle font color is #666666, with 400 weight - the font size is 1.083rem - text overflow is handled through linebreak, not ellipsis - numerical values are aligned to the right - the kanban state widget is at the bottom right SPECIFICATION When there is no global click on the kanban card, prevent the 'focus shadow'. Opening a dropdown should close any other dropdown. LINKS: PR: #10341 Task-Id: 2206372
Purpose ======= The following task implemented new widgets/features in the listview for better UI. https://www.odoo.com/web#id=2195254&action=327&model=project.task&view_type=form&cids=1&menu_id=4720…
Purpose
=======
The following task implemented new widgets/features in the listview for better UI.
https://www.odoo.com/web#id=2195254&action=327&model=project.task&view_type=form&cids=1&menu_id=4720
The goal of the current task is to use those to upgrade our listviews
Specification
=============
Below are change requests on various listviews.
Remove decoration-bf="message_needaction==True" from every listview in every module.
PRODUCT - stock.view_stock_product_template_tree (product template)
remove all decorations from <tree>
set the following decorations on 'virtual_available' and 'qty_available'
decoration-danger="virtual_available<0"
decoration-warning="virtual_available==0"
also set decoration-bf on 'virtual_available'
apply the same modifications on stock.view_stock_product_tree for product variants
SUBSCRIPTION - sale_subscription.sale_subscription_view_list
remove all decorations from <tree>
'stage_id' field
set <field name="stage_id" widget="badge" decoration-info="stage_category == 'draft'" decoration-success="stage_category == 'progress'"/>
'recurring_next_date' field
set <field name="recurring_next_date" string="Next Invoice" widget="remaining_days" attrs="{'invisible': [('stage_category', '!=', 'progress')]}"/>
set decoration-bf on 'code' and 'recurring_total_incl'
move 'percentage_satisfaction' before 'recurring_total_incl'
set widget="many2one_avatar_user" on 'user_id'
add <field name="activity_ids" widget="list_activity"/> after 'user_id'
ELEARNING - website_slides.slide_channel_view_tree
set widget="many2one_avatar_user" on 'user_id'
'enroll' field
set <field name="enroll" widget="badge" decoration-success="enroll == 'public'" decoration-info="enroll == 'invite'" decoration-warning="enroll == 'payment'"/>
POS - point_of_sale.view_pos_order_tree
remove all decorations from <tree>
'state' field
make visible and move it at the end of the view
set <field name="state" widget="badge" decoration-info="state == 'draft'" decoration-success="state not in ('draft','cancel')"/>
set decoration-bf on 'name'
APPRAISAL - hr_appraisal.view_hr_appraisal_tree
'state' field
set <field name="state" widget="badge" decoration-info="state in ('new','pending')" decoration-success="state == 'done'"/>
'date_close' field
set <field name="date_close" widget="remaining_days" attrs="{'invisible': ['|',('state','=','done'),('state','=','cancel')]}"/>
PAYMENT - account.view_account_payment_tree
remove all decorations from <tree>
'state' field
set <field name="state" widget="badge" decoration-info="state == 'draft'" decoration-success="state == 'posted'"/>
move 'company_id' before 'amount'
CONTRACT - hr_contract.hr_contract_view_tree
remove all decorations from <tree>
'state' field
set <field name="state" widget="badge" decoration-info="state == 'draft'" decoration-warning="state == 'close'" decoration-success="state == 'open'"/>
set widget="many2one_avatar_employee" on 'employee_id'
PAYSLIPS - hr_payroll.view_hr_payslip_tree
remove all decorations from <tree>
'state' field
set <field name="state" widget="badge" decoration-info="state == 'draft'" decoration-warning="state == 'verify'" decoration-success="state in ('done','paid')"/>
set decoration-bf on 'number' and 'net_wage'
move 'company_id' before 'basic_wage'
set widget="many2one_avatar_employee" on 'employee_id'
SURVEY - survey.survey_tree
'state' field
set <field name="state" widget="badge" decoration-info="state == 'draft'" decoration-success="state == 'open'"/>
APPLICATION - hr_recruitment.crm_case_tree_view_job
set widget="date' on 'create_date'
set widget="priority' on 'priority'
set widget="many2one_avatar_user" on 'user_id'
TIME OFF - hr_holidays.hr_leave_view_tree
remove all decorations from <tree>
'state' field
set <field name="state" widget="badge" decoration-info="state == 'draft'" decoration-warning="state in ('confirm','validate1')" decoration-success="state == 'validate'"/>
apply the same changes in hr_holidays.hr_leave_allocation_view_tree
TaskID: 2256589