Gửi các bro,
Em muốn sửa các form mẫu report trong Odoo 12 thì làm thế nào ạ, ví dụ như sửa form hóa đơn
Gửi các bro,
Em muốn sửa các form mẫu report trong Odoo 12 thì làm thế nào ạ, ví dụ như sửa form hóa đơn
Bro bật chế độ debug lên (thêm ?debug vào url), sau đó vào phần Technical Settings, sẽ thấy mục report nhé, vào đó mà sửa form (dạng html hoặc xml)
Nhưng sửa trực tiếp chỉ sửa đơn giản được thôi, còn phức tạp phải dùng Aero Report
Cài Aero Report có dễ không các bác ơi, em cài trên Ubuntu 16.04 thấy trục trặc quá !
Các báo cáo mặc định trong Odoo được viết theo kiểu QWeb, sử dụng XML để gói mã HTML bên trong. Khi cài đặt module thì các báo cáo này được đọc từ file XML vào lưu trong db của Odoo.
Để sửa các báo cáo Qweb thì bật chế độ debug của Odoo, vào phần Technical settings --> Report --> tìm đúng tên report và sửa mã XML sau đó save lại.
Aeroo Reports là report engine có thể chạy được trên Odoo, giúp cho việc thiết kế và tạo, in báo cáo đơn giản hơn rất nhiều so với Qweb. Về mặt quy cách làm báo cáo thì các báo cáo Aeroo Reports không liên quan gì với Qweb, nếu báo cáo của bác làm trên Aeroo Reports thì bác phải sửa trong file template của báo cáo. Chi tiết các bác tìm hiểu thêm về Aeroo Reports nhé.
Bro nào hướng dẫn ngắn gọn cho em cách tạo 1 aeroo_report với, em search và đọc nhiều trang rồi nhưng vẫn thấy mông lung quá !
@new_odoo: mình chia sẻ cách mình hay làm nhé
Bước 1: cài đặt các module cần cho aero_report (tự search nhé!)
Bước 2: Coding phần chuẩn bị data
- Khai báo 1 model với cấu trúc gồm toàn bộ data cần để xuất report
(mục tiêu tạo model là để Odoo tự tạo bảng tạm với cấu trúc mình cần)
Model này nên tạo là 1 TransientModel
- Viết 01 function đổ data ra bảng tạm, tên bảng tạm chính là tên model vừa khai báo ở trên
- Viết 01 function để select data từ bảng tạm, hãy dùng order by, group by, where... theo nhu cầu
Bước 3: Tạo 1 record bằng định dạng xml để khai báo report:
<record id="report1" model="ir.actions.report.xml">
<field name="name">report 1</field>
<field name="type">ir.actions.report.xml</field>
<field name="model">model1</field>
<field name="report_name">report1</field>
<field name="report_type">aeroo</field>
<field name="in_format">oo-ods</field>
<field name="out_format" model="report.mimetypes" search="[('code','=','oo-xls'), ('compatible_types','=','oo-ods')]" />>oo-ods</field>
<field name="parser_state">loc</field>
<field name="tml_source">file</field>
<field name="attachment_use" eval="0" />
</record>
<report
auto="False"
menu="False"
id="report1"
model="model1"
name="report 1"
string="Bao cao so 1"
rml="report1.ods" />
Trong đó report1 là tên báo cáo, model1 là tên model, report1.ods là file thiết kế báo cáo, bro có thể thay bằng tên tùy ý
Bước 4: Viết hàm gọi report, hàm này có thể dùng để gọi từ menu hoặc button:
def print_report(self):
self.update_data()
return {'type': 'ir.actions.report.xml','report_name', 'report1'}
update_data là function để đẩy data vào bảng tạm, cái này bro tự viết theo nhu cầu
Bước 5: Mở file report1.ods ra và soạn báo cáo. Lưu ý nếu dùng LibreOffice để soạn, thì những chỗ cần insert field bro chọn insert hyperlink. Về file ods nếu viết cũng rất dài, bro tự tìm hiểu thêm nhé !