Chương 1 - Odoo Là Một Ứng Dụng Đa Lớp
Odoo được thiết kế theo kiểu kiến trúc nhiều lớp tách biệt với nhau, bao gồm các lớp ngoài, lớp logic và lợp lưu trữ dữ liệu. Một cách cụ thể thì, nó sử dụng 3 lớp kiến trúc.
Lớp ngoài (Presentation tier) là sự kết hợp của HTML5, Javascript và CSS.
Lớp logic (Logic tier) được viết toàn bộ bằng Python
Lớp dữ liệu (Data tier) hỗ trợ PostgreSQL và RDBMS.
Tuỳ thuộc vào quy mô của mô đun mà bạn đang phát triển, việc phát triển Odoo có thể được tiến hành trên bất kỳ lớp nào. Do đó, trước khi đi xa hơn, nếu bạn không hiểu hết các nội dung này thì nên làm mới kiến thức của bạn với HTML và Python trình độ trung cấp. Những nội dung cao cấp đòi hỏi kiến thức nhiều hơn từ các môn khác. Có rất nhiều hướng dẫn miễn phí, tuỳ thuộc vào kiến thước nền của bạn mà chọn cho mình một hướng dẫn phù hợp.
Odoo Mô đun
Một odoo mô đun sẽ bao gồm Server và client extensions:
Server: Data và CSLD
Trong khi Client extensions là phần mở rộng thì Server và client extension được đóng gói là các modules, có tùy chọn để tải ngay ở CSDL. Mô đun là tổng hợp các hàm và dữ liệu hướng tới mục tiêu duy nhất.
Odoo modules có thể là một logic hoàn toàn mới trong Odoo, và sửa đổi (chỉnh sửa) hay mở rộng logic sẵn có.
Ví dụ một mô đun có thể được tạo và thêm để thêm nguyên tắc tài khoản ở Việt Nam vào tài khoản chung, trong khi một mô đun khác có thể thêm hỗ trợ và trực quan hoá đội xe bus.
Tất cả mọi thứ trong Odoo bắt đầu và kết thúc với mô đun.
Tính chuyên ngành (Terminology) Dev có thể nhóm các tính năng kinh doanh vào các mô đun. Mô đun chính xuất hiện trước người dùng đánh dấu và hiện ra là Apps.
Nhưng phần lớn các mô đun không phải là apps.
Mô đun có thể là Addons, và là directories mà Odoo server tìm chúng từ addons_path.
Các Thành Phần Của Một Mô đun
Một mô đun có thể bao gồm nhiều thành phần. Trong đó có đối tượng kinh doanh, object views, file dữ liệu và web controllers.
Đối tượng kinh doanh (Business objects)
Sales order, PO, invoice là các business object được công bố là lớp Python. Các field định nghĩa trong class sẽ được tự động mapped vào cột CSDL nhờ vào lớp ORM. ORM là viết tắt của Object–relational mapping, sẽ được giải thích chi tiết ở các bài sau.
Để hiển thị nội dung cho người dùng
Các file XML hay CSV công bố trong models.
configuration data (modules parametrization, security rules),
demonstration data
and more
Xử lý yêu cầu từ web - url > hiển thị nội dung
Dữ liệu web tĩnh.
Các hình ảnh, CSS, JavaScript files sử dụng bởi web. Không một cái nào là yêu cầu bắt buộc. Vài mô đun chỉ thêm file dữ liệu, trong khi các mô đun khác có thể chỉ thêm đối tượng business.
Trong bài này bạn sẽ tạo business object, object views và data files.
Cấu Trúc Mô Đun
Mỗi mô đun là một directory trong một module directory. Mô đun directories được chỉ ra bằng cách sử dụng lựa chọn --addons-path. Như vậy mỗi mô đun là một thư mục trong thư mục mô đun. --addons-path sẽ chỉ ra thư mục môn đun.
Một Odoo mô đun được công bố trong manifest.
Khi một mô đun bao gồm business objects, chúng được sắp xếp như là một gói Python với files __init__.py file. File này có chỉ dẫn cho việc nhập nhiều file python trong mô đun.
Đây là cấu trúc cơ bản của một mô đun directory.
module
├── models
│ ├── *.py
│ └── __init__.py
├── data
│ └── *.xml
├── __init__.py
└── __manifest__.py
Phân tích cấu trúc thì bạn thấy có các file cơ bản __init__.py và __manifest__.py, thư mục data và models. Trong models có ── *.py và ── __init__.py. Trong data có ── *.xml