Monday, May 18, 2020
13 changes · master
Enhancements to existing features
This update streamlines accounting company onboarding steps and removes an unused Colombian localization field from contact records. The changes reduce maintenance complexity and help keep the user interface focused on relevant information.
Original PR description
-- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The SMS form view has been cleaned up so it better matches the SMS composer experience. This makes reviewing SMS details and performing basic actions more consistent and easier for users.
Original PR description
Purpose ======= Clean up of the sms form view to match what is shown in the composer as well as allowing basic actions. Task-2244195
This update replaces remaining uses of the word “leave” with “time off” in HR-related warnings, labels, emails, and messages. It makes employee-facing wording clearer and more consistent across the Time Off and Presence areas without changing business processes.
Original PR description
Followup on a3daff6 Use `time off` word instead of 'leave'. 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
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.
This 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
Website filter labels have been renamed to make them easier for users to understand. This improves usability by helping website managers find and apply the right filters more quickly.
Original PR description
Usability Improvement 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
Users can now click anywhere inside a checkbox cell in list views to select or unselect a record, instead of needing to click precisely on the checkbox. This makes selecting multiple records faster and less frustrating.
Original PR description
**PURPOSE**: Currently, the hitbox(the clickable area which can check & uncheck the checkbox) for the checkbox in listview is limited upto the border of the checkbox. User have to specifically click within or on the border of the checkbox to change the status of the checkbox to checked & unchecked. It is quite cumbersome for the user to select multiple checkboxes quickly. So to improve user usability, the hitbox area of the checkbox is increased by making the cell clickable. So if user click outside the checkbox but within the cell will also change the status. **SPEC**: We have bind click event for the respected cell of that checkbox. and click on that will change the stauts of the checkbox of that particular cell. Task : 2247387
Kanban cards in CRM, Recruitment, Maintenance, and Project no longer show the unread message action counter. Users can still find records needing attention through existing notifications and filters, while day-to-day boards become simpler and less visually crowded.
Original PR description
PURPOSE After discussion, we concluded that we are better off removing the message_needaction_counter field from the kanbans for the following reasons: the user has access to unread messages on…
PURPOSE After discussion, we concluded that we are better off removing the message_needaction_counter field from the kanbans for the following reasons: the user has access to unread messages on records from the discuss item in the systray it is irrelevant for user handling notifications through their mail client it is only less UI item to worry about on the kanban views (as features increase, we need to be careful not to clutter the views) the user can still use the message_needaction filter to get records with unread messages SPECIFICATION Remove message_needaction_counter field from every kanban view https://drive.google.com/file/d/1IRT7ZQcIRKJ21Ggk5jpExTenaKzcMDM-/view?usp=sharing AFAIK the message_needaction_counter field is used in the following kanban views crm.crm_case_kanban_view_leads crm.view_crm_lead_kanban helpdesk.helpdesk_ticket_view_kanban hr_recruitment.hr_kanban_view_applicant maintenance.hr_equipment_request_view_kanban mrp_plm.mrp_eco_kanban project.view_task_kanban LINKS PR: #51299 TaskID: 2257624 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
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
Kanban cards in Helpdesk and PLM no longer show the unread message counter, reducing visual clutter in day-to-day views. Users can still find unread messages through Discuss, email notifications, or existing unread-message filters.
Original PR description
PURPOSE After discussion, we concluded that we are better off removing the message_needaction_counter field from the kanbans for the following reasons: the user has access to unread messages on…
PURPOSE After discussion, we concluded that we are better off removing the message_needaction_counter field from the kanbans for the following reasons: the user has access to unread messages on records from the discuss item in the systray it is irrelevant for user handling notifications through their mail client it is only less UI item to worry about on the kanban views (as features increase, we need to be careful not to clutter the views) the user can still use the message_needaction filter to get records with unread messages SPECIFICATION Remove message_needaction_counter field from every kanban view https://drive.google.com/file/d/1IRT7ZQcIRKJ21Ggk5jpExTenaKzcMDM-/view?usp=sharing AFAIK the message_needaction_counter field is used in the following kanban views crm.crm_case_kanban_view_leads crm.view_crm_lead_kanban helpdesk.helpdesk_ticket_view_kanban hr_recruitment.hr_kanban_view_applicant maintenance.hr_equipment_request_view_kanban mrp_plm.mrp_eco_kanban project.view_task_kanban > check if there are others LINKS PR: #10613 TaskID: 2257624 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
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
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-prOriginal 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