Odoo 17/09/2026 4 phút

Khi list, kanban, form đều không vẽ nổi cái màn hình bạn muốn — viết một Component OWL rồi cắm vào Odoo bằng client action

Client action (ir.actions.client) là màn hình do JavaScript OWL tự vẽ ở trình duyệt, dùng khi các view có sẵn không đủ. Đăng ký Component vào registry actions, tag khớp action record. Dựng một dashboard OWL lấy dữ liệu thật trên Odoo 19.

Odoo 17/09/2026 4 phút

Từ một bản ghi thẻ thành viên tới tờ PDF có logo, địa chỉ công ty và chân trang — tất cả nhờ report action trỏ vào một template QWeb

Report action (ir.actions.report) biến bản ghi thành tài liệu in được: trỏ tới một template QWeb, Odoo render HTML rồi xuất PDF. Hiểu docs, external_layout, t-field, report_name. Xem một thẻ thành viên in ra thật trên Odoo 19.

Odoo 17/09/2026 4 phút

Hộp thoại 'cộng điểm hàng loạt' cần một model để chứa dữ liệu người dùng gõ — nhưng lưu vĩnh viễn thì phí, nên Odoo có TransientModel

Wizard trong Odoo là một TransientModel: bản ghi tạm cho hộp thoại nhập liệu, tự dọn định kỳ, không để rác trong CSDL. Hiểu default_get lấy bản ghi được chọn và method đóng dialog. Xem một wizard cộng điểm chạy thật trên Odoo 19.

Odoo 17/09/2026 4 phút

Wizard 'chọn rồi xác nhận' hai màn hình mà vẫn là một hộp thoại: bí quyết là một field state và cái mẹo cho method mở lại chính nó

Wizard nhiều bước trong Odoo dùng một field state để ẩn/hiện từng nhóm và đổi nút; method đổi state rồi trả về action mở lại chính wizard (cùng res_id) nên dữ liệu vẫn còn. Xem hai bước Chọn và Xác nhận chạy thật trên Odoo 19.

Odoo 17/09/2026 4 phút

Wizard chạy xong đừng chỉ đóng lại bỏ mặc người dùng — cho method trả về một action để đưa họ thẳng tới danh sách kết quả

Method của wizard trả được bất kỳ action nào, không chỉ act_window_close. Trả act_window để mở danh sách bản ghi vừa xử lý, một form, hay act_url/report. Xem wizard cộng điểm dẫn thẳng tới danh sách thẻ vừa cập nhật trên Odoo 19.