Lập trình Odoo/OpenERP Phần 2: xây dựng view (giao diện người dùng) trong Odoo OpenERP Tiếp tục nội dung phần 1 (Xây dựng đối tượng model) phần 2 sẽ hướng dẫn xây dựng giao diện trong Odoo (view) Đây là các loại giao diện chính ngoài ra còn có nhiều loại view và action khác sẽ được trình bày ở các phần tiếp theo
Trang 1LAB_2 XÂY DỰNG GIAO DIỆN
MÃ NGUỒN MỞ
TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH
KHOA CÔNG NGHỆ THÔNG TIN
Hướng dẫn: Nguyễn Yên Bảo Điện thoại:
Trang 2NỘI DUNG
2
1. Giới thiệu giao diện người dùng trong Odoo
2. Cấu trúc giao diện
4. Xây dựng view
a) Cấu trúc chung của view
b) Xây dựng Tree view
c) Xây dựng Form view
d) Xây dựng Search view
5. Window Action
Trang 3a) Cấu trúc chung của view
b) Xây dựng Tree view
c) Xây dựng Form view
d) Xây dựng Search view
5. Window Action
Trang 41 GIỚI THIỆU GIAO DIỆN NGƯỜI DÙNG ODOO
4
dựng giao diện; một số thành phần cơ bản của giao
access rights (quyền truy cập) …
Trang 51 GIỚI THIỆU
5
Trang 61 GIỚI THIỆU GIAO DIỆN NGƯỜI DÙNG ODOO
6
người dùng có cái nhìn trực quan và dễ dàng tương
Trang 7NỘI DUNG
7
1. Giới thiệu giao diện người dùng trong Odoo
4. Xây dựng view
a) Cấu trúc chung của view
b) Xây dựng Tree view
c) Xây dựng Form view
d) Xây dựng Search view
5. Window Action
Trang 82 CẤU TRÚC GIAO DIỆN TRONG ODOO
Trang 10NỘI DUNG
10
1. Giới thiệu giao diện người dùng trong Odoo
2. Cấu trúc giao diện
4. Xây dựng view
a) Cấu trúc chung của view
b) Xây dựng Tree view
c) Xây dựng Form view
d) Xây dựng Search view
5. Window Action
Trang 11 Menu sẽ gồm 1 số thuộc tính sau:
o Parent : id của menu cha trong hệ thống phân cấp
o Name : Nhãn của menu (mặc định hệ thống sẽ lấy name của action)
o Action : id của action mà menu này liên kết tới (nếu có)Tạo Action
o Icon : biểu tượng của menu (có thể có hoặc không)
o Groups : danh sách các nhóm người dùng có thể thấy menu này
o Sequence : con số để sắp thứ tự của các menu; menu nào có số thứ
tự nhỏ hơn sẽ được sắp trước.
Trang 12NỘI DUNG
12
1. Giới thiệu giao diện người dùng trong Odoo
2. Cấu trúc giao diện
b) Xây dựng Tree view
c) Xây dựng Form view
d) Xây dựng Search view
Trang 134 XÂY DỰNG VIEW
13
Giao diện người dùng trong OpenERP được chia ra làm 3 loại view chính bao gồm
o Biểu mẫu (form view)
o Danh sách (tree view)
o Tìm kiếm (search view)
Tất cả đều được viết bằng ngôn ngữ XML
Ngoài ra còn có một số loại view khác như: calendar, gantt, graph…
Tùy thuộc vào dạng của view mà ta
sẽ khai báo tương ứng
Cấu trúc chuẩn để khai báo 1 view
Trang 144 XÂY DỰNG VIEW
14
< record model ="ir.ui.view" id = "ntt_news_wk_tree_view_dlich">
< field name ="name"> Tên của view </ field >
< field name ="model"> tên đối tượng </ field >
< field name =“type"> form </ field > #tree, search, graph…
< field name ="arch" type = "xml">
Nội dung của view (tùy thuộc vào type) sẽ là 1 trong 3 dạng sau
Trang 154 XÂY DỰNG VIEW
15
<record model="ir.ui.view" id=“id_cua_view">
< field name ="name"> Tên của view </ field >
< field name ="model"> Tên đối tượng </ field >
< field name =“type"> form </ field > #tree, search, graph…
< field name ="arch" type = "xml">
Nội dung của view (tùy thuộc vào type) sẽ là 1 trong 3 dạng sau
hệ thống
Trang 164 XÂY DỰNG VIEW
16
< record model ="ir.ui.view" id = "ntt_news_wk_tree_view_dlich">
<field name="name">Tên của view </field>
< field name ="model"> Tên đối tượng </ field >
< field name =“type"> form </ field > #tree, search, graph…
< field name ="arch" type = "xml">
Nội dung của view (tùy thuộc vào type) sẽ là 1 trong 3 dạng sau
Trang 174 XÂY DỰNG VIEW
17
< record model ="ir.ui.view" id = "ntt_news_wk_tree_view_dlich">
< field name ="name"> Tên của view </ field >
<field name="model">Tên đối tượng</field>
< field name =“type"> form </ field > #tree, search, graph…
< field name ="arch" type = "xml">
Nội dung của view (tùy thuộc vào type) sẽ là 1 trong 3 dạng sau
Trang 184 XÂY DỰNG VIEW
18
< record model ="ir.ui.view" id = "ntt_news_wk_tree_view_dlich">
< field name ="name"> Tên của view </ field >
< field name ="model"> Tên đối tượng </ field >
<field name=“type">form</field> #tree, search, graph…
< field name ="arch" type = "xml">
Nội dung của view (tùy thuộc vào type) sẽ là 1 trong 3 dạng sau
Trang 194 XÂY DỰNG VIEW
19
< record model ="ir.ui.view" id = "ntt_news_wk_tree_view_dlich">
< field name ="name"> Tên của view </ field >
< field name ="model"> Tên đối tượng </ field >
< field name =“type"> form </ field > #tree, search, graph…
<field name="arch" type="xml">
Nội dung của view (tùy thuộc vào type) sẽ là 1 trong 3 dạng sau
view mà nội dung sẽ là 1 trong 3 dạng
Trang 20NỘI DUNG
20
1. Giới thiệu giao diện người dùng trong Odoo
2. Cấu trúc giao diện
a) Cấu trúc chung của view
c) Xây dựng Form view
d) Xây dựng Search view
Trang 214 XÂY DỰNG VIEW
21
hoạt khi chúng ta bấm vào 1 menu đã được gán mộtaction
Các nút bấm (thêm/xóa/sửa)
Danh sách các trường
dữ liệu mà ta muốn
hiển thị
Dữ liệu tương ứng
Trang 224 XÂY DỰNG VIEW
22
tượng
o Tương tự như 1 file excel: hiện thị tất cả các dòng dữ liệu
cột này chính là các thuộc tính của đối tượng
Trang 234 XÂY DỰNG VIEW
23
<tree string="tên view" colors="red:gioitinh==male" editable="1">
< field name ="name" string ="Tên sinh viên" />
< field name ="gioitinh" string ="Giới tính" />
</tree>
Tree view bao gồm một số thuộc tính sau:
String: tên của tree
Colors: màu sắc của các dòng dữ liệu bên dưới, khi 1 dòng dữ
liệu thỏa mãn điều kiện thì màu sắc sẽ thay đổi tương ứng
nam sẽ hiện màu đỏ
Editable: có giá trị 1/0 (mặc định là 0): cho phép chỉnh sửa dữ
liệu trực tiếp trên tree mà không cần vào form
Trang 244 XÂY DỰNG VIEW
24
< tree string ="tên view" colors ="red:gioitinh==male" editable ="1" >
<field name="name" string="Tên sinh viên"/>
<field name="gioitinh" string="Giới tính"/>
</ tree>
Các trường dữ liệu mà chúng ta muốn hiện ra
Các trường này phải nằm trong thẻ <tree>…</tree>
Bao gồm 1 số thuộc tính:
o Name: tên của trường muốn hiển thị thông tin Phải tương
ứng với tên thuộc của đối tượng
o String: Nhãn của field (Có thể có hoặc không)
o Ngoài ra còn có các thuộc tính khác (Tham khảo thêm ở
phần Form view)
Trang 25NỘI DUNG
25
1. Giới thiệu giao diện người dùng trong Odoo
2. Cấu trúc giao diện
4. Xây dựng view
a) Cấu trúc chung của view
b) Xây dựng Tree view
d) Xây dựng Search view
5. Window Action
Trang 264 XÂY DỰNG VIEW
26
Trong OpenERP, form view là nơi hiển thị cụ thể từng dòng dữ liệu của một đối tượng.
form view bao gồm một số thành phần quan trọng như: trường dữ liệu (field), nút bấm (button), các thanh trạng thái (status bar)
Phần trạng thái
Phần dữ
liệu
Bình luận và
Trang 274 XÂY DỰNG VIEW
27
nghĩa sẳn
< form versiton =“7“ string =“tên của form">
< header> ……… Nội dung phần trạng thái………… </header>
< sheet> ……… Nội dung phần dữ liệu………… </sheet>
……… Nội dung phần bình luận và lịch sử…………
</div>
</ record >
Trang 284 XÂY DỰNG VIEW
28
< form string ="Thông tin" version = "7.0" >
< header >
< button name ="act_choduyet" string = "Chờ hiệu đính"
type = "object" icon = "gtk-find-and-replace" colspan = "2" />
< button name ="act_huyn" string = "Hủy"
type = "object" icon = "gtk-cancel" colspan = "2" />
< field name ="state" widget = "statusbar" nolabel = "1" />
</ header >
< group col ="4" colspan = "4" >
< field name ="name" />
< field name ="duan" required = "1" />
</ group >
< group col ="6" colspan = "4" >
< field name ="is_write" invisible = "1" />
< field name ="hieudinh" attrs = "{'readonly': [('is_write','=',False)]}" />
< field name ="nguoidich" string = "Người biên soạn" />
</ group >
< group col ="6" colspan = "4" >
< field name ="loai_baiviet" />
< field name ="sequence" attrs = "{'readonly': [('is_write','=',False)]}" />
< field name ="soluongxem" readonly = "1" />
Trang 294 XÂY DỰNG VIEW
29
< form string ="Thông tin" version = "7.0" >
<header>
<button name="act_choduyet" string="Chờ hiệu đính"
type="object" icon="gtk-find-and-replace" colspan="2"/>
<button name="act_huyn" string="Hủy"
type="object" icon="gtk-cancel" colspan="2"/>
<field name="state" widget="statusbar" nolabel="1"/>
</header>
Trang 304 XÂY DỰNG VIEW
30
< form string ="Thông tin" version = "7.0" >
< header >
< button name ="act_choduyet" string = "Chờ hiệu đính"
type = "object" icon = "gtk-find-and-replace" colspan = "2" />
< button name ="act_huyn" string = "Hủy"
type = "object" icon = "gtk-cancel" colspan = "2" />
< field name ="state" widget = "statusbar" nolabel = "1" />
Trang 31< button name ="act_choduyet" string = "Chờ hiệu đính"
type = "object" icon = "gtk-find-and-replace" colspan = "2" />
< button name ="act_huyn" string = "Hủy"
type = "object" icon = "gtk-cancel" colspan = "2" />
< field name ="state" widget = "statusbar" nolabel = "1" />
</ header >
< group col ="4" colspan = "4" >
< field name ="name" />
< field name ="duan" required = "1" />
</ group >
<group col="6" colspan="4">
<field name="is_write" invisible="1"/>
<field name="hieudinh" attrs="{'readonly': [('is_write','=',False)]}"/>
<field name="nguoidich" string="Người biên soạn"/>
</group>
< group col ="6" colspan = "4" >
< field name ="loai_baiviet" />
< field name ="sequence" attrs = "{'readonly': [('is_write','=',False)]}" />
< field name ="soluongxem" readonly = "1" />
</ group >
</ form >
Trang 324 XÂY DỰNG VIEW
32
< form string ="Thông tin" version = "7.0" >
< header >
< button name ="act_choduyet" string = "Chờ hiệu đính"
type = "object" icon = "gtk-find-and-replace" colspan = "2" />
< button name ="act_huyn" string = "Hủy"
type = "object" icon = "gtk-cancel" colspan = "2" />
< field name ="state" widget = "statusbar" nolabel = "1" />
</ header >
< group col ="4" colspan = "4" >
< field name ="name" />
< field name ="duan" required = "1" />
</ group >
< group col ="6" colspan = "4" >
< field name ="is_write" invisible = "1" />
< field name ="hieudinh" attrs = "{'readonly': [('is_write','=',False)]}" />
< field name ="nguoidich" string = "Người biên soạn" />
</ group >
<group col="6" colspan="4">
<field name="loai_baiviet"/>
<field name="sequence" attrs="{'readonly': [('is_write','=',False)]}"/>
<field name="soluongxem" readonly="1"/>
Trang 334 XÂY DỰNG VIEW
33
Một số thẻ thường dùng để xây dựng form view
notebook Định nghĩa các tab trong giao diện - String: tên của thẻ
- Attrs: các thuộc tính phụ thuộc
group Xác định vị trí các cột trong khung dữ liệu
newline Kết thúc 1 dòng Các fied sau thẻ này sẽ được
đưa xuống dòng tiếp theo
separator Tạo khoảng cách giữa các vùng theo chiều
ngang
- string: tên của vùng.
Trang 344 XÂY DỰNG VIEW
34
Một số thẻ thường dùng để xây dựng form view
Button Tạo ra một nút bấm Thông
qua nút bấm có thể kết nối trực tiếp với hệ thống để xử
lý dữ liệu
- icon: hình ảnh hiển thị của nút bấm
- string: tên được hiển thị của nút bấm
- type: kiểu của nút bấm Gồm 3 dạng: workflow,
object, action
- name: tùy thuộc vào kiểu của nút bấm mà giá trị
của name có thể là: dấu hiệu nhận biết trạng thái, tên 1 phương thức hoặc id của một action
- attrs: các thuộc tính phụ thuộc
- context: truyền các bối cảnh cụ thể để, hệ thống
xử lý (khi cần)
Trang 354 XÂY DỰNG VIEW
35
Một số thẻ thường dùng để xây dựng form view
Field Xác định 1 cột, là
nơi hiển thị giá trị thuộc tính của đối tượng nghiệp vụ Có thể thông qua field
để thêm/cập nhật dữ liệu tương ứng của
hệ thống
- name: tên của trường dữ liệu Tương ứng với tên thuộc tính
của đối tượng nghiệp vụ trong hệ thống.
- string: tiêu đề của trường dữ liệu hiển thị trên biểu mẫu.
- invisible: ẩn/hiện trường dữ liệu trên biểu mẫu Thông tin
vẫn sẽ được lấy về nhưng sẽ ẩn đi.
- widget: thay đổi cách hiển thị mặc định của trường dữ liệu
- attrs: các thuộc tính phụ thuộc
- on_change: sẽ gọi các phương thức đặc biệt khi giá trị của
trường dữ liệu bị thay đổi (có thể thay đổi các trường dữ liệu khác hoặc hiện các thông báo đến người sử dụng)
- domain: lọc dữ liệu theo các các tiêu chí đã được định sẵn.
Trang 364 XÂY DỰNG VIEW
36
Một số thẻ thường dùng để xây dựng form view
Field Xác định 1 cột, là
nơi hiển thị giá trị thuộc tính của đối tượng nghiệp vụ
Có thể thông qua field để thêm/cập nhật dữ liệu tương ứng của hệ thống
- readonly: quy định trường dữ liệu chỉ được phép xem mà
không được phép chỉnh sửa.
- required: quy dịnh trường dữ liệu này là bắt buộc phải nhập.
- nolabel: không tự động hiển thị tiêu đề của trường dữ liệu
(Khi không sử dụng thuộc tính string)
- filename: được dành cho các trường dữ liệu thuộc kiểu dữ liệu
nhị phân (binary) Giá trị của trường sẽ là tên của tập tin được đính kèm vào.
- password: để xác định đây là trường dữ liệu mật khẩu, giá trị
của trường sẽ được che giấu.
Trang 37NỘI DUNG
37
1. Giới thiệu giao diện người dùng trong Odoo
2. Cấu trúc giao diện
4. Xây dựng view
a) Cấu trúc chung của view
b) Xây dựng Tree view
c) Xây dựng Form view
5. Window Action
Trang 384 XÂY DỰNG VIEW
38
Search View được dùng để tùy chỉnh các bảng điều
khiển tìm kiếm ở trên đầu trang của màn hình Tree View
dung mặc dù được truy vấn tới một đối tượng cụ thể
Search View được khai báo có kiểu là search, có phần
tử gốc là <search>
Trang 394 XÂY DỰNG VIEW
39
Search view trên OpenERP (v6)
Trang 404 XÂY DỰNG VIEW
40
Trang 414 XÂY DỰNG VIEW
41
< record id ="sinhvien_search_view" model ="ir.ui.view" >
< field name ="name" > Tìm sinh viên </field>
< field name ="model" > x_sinhvien </field>
< field name ="type" > search </field>
< field name ="arch" type ="xml" >
< search string ="Tìm sinh viên" >
/*Nội dung search view*/
</ search >
</ field >
</ record >