Widget là một tính năng mở rộng trong Odoo, cho phép người phát triển có thể thực hiện một số tiện ích mở rộng hoặc làm sinh động hơn cho hệ thống quản lí.
Hiện nay widget đã và đang được sử dụng rộng rãi trong cộng động Odoo và ngày càng được nhà phát triển cập nhật thêm qua mỗi bản cập nhật. Cùng OneIT điểm qua một số Widget thường sử dụng phổ biến trong Odoo nhé.
2. Một Số Widget Thường Sử Dụng
2.1. Widget Monetary
Widget cho phép hiển thị trường thông tin với định dạng tiền tệ. Theo đó, các trường thông tin với kiểu dữ liệu là Float (thông thường) sẽ được hiển thị với dạng tiền tệ, bao gồm kí hiệu tiền tệ và phân cách các chữ số (thập phân, nghìn).
Widget Monetary.
Để sử dụng được Widget Monetary việc khai báo và thực hiện như sau:
Python:
total = fields.Float(string = “Total”)
XML:
<field name="total" widget="monetary "/>
2.2. Widget Status Bar
Widget cho phép hiển thị trường trạng thái của đối tượng theo dạng tiến trình, giai đoạn. Người sử dụng có thể theo dõi được tiến trình trạng thái của object.
Widget Status Bar
Để sử dụng được Widget Status Bar việc khai báo và thực hiện như sau:
Python:
state = fields.Selection([('draft', 'Draft'), ('active', 'Active'), ('absent', 'Absent')], string="State", default='draft')
XML:
<field name="state" widget="statusbar"/>
2.3. Widget Signature
Đây là widget được cập nhật trong phiên bản Odoo13 trở lên, widget này cho phép việc người dùng kí nhận trực tiếp trên giao diện, rất dễ dàng và tiện lợi. Phù hợp với các doanh nghiệp sử dụng kí nhận điện tử.
Ngoài ra, widget này còn cho phép người dùng upload mẫu chữ kí có sẵn để chèn vào các báo cáo, kí nhận thay vì kí trực tiếp.
Python:
signature = fields.Binary(string='Signature')
XML:
<field name="signature" widget=" signature"/>
Widget Signature
2.4. Widget Tags (Many2Many)
Widget này thường sử dụng cho các công việc ghi chú, phân loại khách hàng cho nhiều mục đích khác nhau. Widget Tags này từ phiên bản Odoo13 trở lên, sẽ được cập nhật thêm 1 loại Widget Tags mới đó là Widget Tags Avarta, cho phép chèn 1 hình hình nào đó trước Tags hiển thị.
2.4.1. Widget Tags
Python:
category_ids = fields.Many2many(res.partner.category','display_name', string=Tags)
XML:
<field name="category_id" widget="many2many_tags">
Widget Many2many Tags
2.4.2. Widget Tags Avarta
Python:
partner_ids = fields.Many2many('res.partner', 'calendar_event_res_partner_rel', string='Attendees')
XML:
<field name="partner_ids" widget="many2many_tags_avatar" write_model="calendar.contacts" write_field="partner_id" avatar_field="image_128"/>
Widget Many2many Tags Avarta
2.5. Widget Rating
Widget này thường được sử dụng cho mục đích đáng giá hoặc sắp xếp độ ưu tiên. Mức độ được qui định dựa theo số sao mà người dùng đánh giá.
Python:
rating_avg = fields.Float("Rating Average", compute='_compute_rating_stats')
XML:
<field string="Rating" name="rating_avg" widget="field_float_rating"/>