Làm report PDF với Odoo enterprise dành cho developer

Hung Huynh Ngoc

Đối với các bạn developer việc tạo 1 report PDF có nhiều cách khác nhau: copy source code từ những dự án khác sau đó sửa lại cho phù hợp, xây dựng mới hoàn toàn từ kiến thức Qweb-Html-Css bạn có... Mỗi lần có một thay đổi bạn phải stop và upgrade lại để source code có thể chạy được, đối với những dự án nhỏ thì việc upgrade dễ dàng, nhưng đối với những dự án lớn thì việc upgrade khiến bạn phải "Take a minute to get a coffee, because it's loading...". Có 1 cách bạn kết hợp tất cả các yếu tố code, kéo thả như ngày xưa bạn học đó là kế hợp làm report với Odoo enterprise.

Các bước thực hiện:

- Truy cập Odoo enterprise

- Vào một màn hình bất kỳ, cụ thể ở đây là Journal Entries

 

(1) Bật chế độ debug mode

(2) Click vào màn hình của Odoo Studio


Tiếp theo, chọn Reports để vào thực hiện báo cáo


Nhấn Create để tiến hành tạo mới một báo cáo


Một màn hình popup cho phép chọn loại báo cáo:

  • External

  • Internal

  • Blank

Một báo cáo thường có tiêu đề và ngày tháng năm in báo cáo, để làm việc này, chúng ta cần add 2 block text


Tuy nhiên, tiêu đề của báo cáo thường canh giữa và in đậm, còn ngày tháng năm thì in nghiêng

 
Để thực hiện được việc này:
    (1) Chọn thẻ div ở trên phần text
    (2) Chọn In đậm (Text decoration)
    (3) Thực hiện canh giữa (Alignment)
    (4) Font style chọn loại heading phù hợp

 
Tương tự đối với ngày tháng năm, tuy nhiên Odoo chưa hỗ trợ việc kéo thả ngày hiện tại, nên chúng ta cần sử dụng code xml: 

<span t-esc="context_timestamp(datetime.datetime.now()).strftime('%Y-%m-%d %H:%M')"/>

 

Để sử dụng được code xml, click vào tab Report bên trái màn hình:
    (1) Report
    (2) Xml


Tiếp theo chọn phần Odoo Studio như hình, đây là phần chứa code tự động generate của Odoo

 
Nhìn vào đây, chắc hẳn là chúng ta không thể nào mà copy cho dự án phải không nào!!! :)) vì vậy, cần phải chỉnh sửa một chút để có thể copy được
Và đây là kết quả

Tip: để thực hiện đơn giản ở đây, odoo sẽ generate theo cách inherit từng thẻ (element), trong thực tế chúng ta nên gom những thẻ <div class="row">... todo something </div> lại gần nhau và như thế không cần phải inherit lằng nhằng nữa

Xong !!!! ta daa, như vậy chúng ta đã xong được header, quá dễ phải không nào

Tiếp theo đến nội dung chi tiết của report, chính là những dữ liệu


     (1) Chọn Data table để xuất dữ liệu theo bảng
     (2) Chọn trường dữ liệu doc > tên trường dữ liệu
Và đây là kết quả


Về cơ bản Odoo đã generate cho chúng ta được 1 table có 1 cột, để thêm nhiều cột vào table có 2 cách:
(1) Dùng kéo thả trên Odoo (dev không nên dùng cách này, cách này khiến bạn hối hận đó :)) )



(2) Dùng code (chỉ dành cho dev, vì các bạn đã biết rõ các thông tin mình cần, và sửa trực tiếp không cần phải kéo thả)



Và đây là các đoạn code làm theo cách kéo thả (1)

Wooo!!! Thật kinh khủng nếu sử dụng đoạn code này để sử dụng cho dự án


Tiếp tục phần tiếp theo, là tạo phần chữ ký



Trong hình trên là ví dụ về 3 chữ ký, nếu cần 2 chữ ký thì bạn có thể sử dụng Two Columns

Code XML được generate ra


Trong hình trên là ví dụ về 3 chữ ký, nếu cần 2 chữ ký thì bạn có thể sử dụng Two Columns

Tiếp theo, cũng có 2 cách để sửa tên "New Column" thành tên mong muốn:

  • Double click để sửa (nhưng đừng sử dụng cách này, bạn sẽ hối hận đó)

  • Copy đoạn <div class="row"> ... </div>


 

Xong, thế là xong bây giờ chúng ta có thể copy đoạn code xml của report để sử dụng cho dự án. Để làm đẹp hơn cho 1 report PDF còn tùy thuộc vào khả năng CSS của từng dev, Odoo Studio hỗ trợ cho chúng ta vừa code vừa preview nhanh report, giúp dev tiết kiệm thời gian để hoàn thành 1 report PDF