Bài này sẽ hướng dẫn cách tùy biến hóa đơn trong odoo để sở hữu bản in như ý bằng cách thêm một nút tính năng mới mà hoàn toàn không làm ảnh hưởng tới công dụng in hóa đơn Lúc Này.

Để thêm 1 sự chọn lựa khác trong trình đơn thả xuống tất cả chúng ta sẽ kế thừa module kế toán: account.account (chúng ta cũng đều có thể làm điều tương tự với bản in khác như bán sản phẩm hoặc đơn đặt hàng)

Bước 1: Định nghĩa __init__.py và __openerp__.py trong một module mới, đặt vào report_customisation.

Bước 2: Tạo file invoice_report_extension.py & invoice_report_extension.xml. Thêm vào Các dòng code sau:

đọc thêm odoo tieng viet

from openerp import models,api,fields

from openerp.tools import amount_to_text_en

class res_company(models.Model):

_inherit=‘res.company’

logo_report= fields.Binary(“Header Image”,

help=“This field holds the image used for the logo on the prints, limited to 1024x1024px”)

class account_invoive_extension(models.Model):

_inherit=‘account.invoice’

report.customisation.company.form

res.company

Giải thích: vấn đề này được thừa kế trong hai module: nó mở rộng Thông tin Doanh Nghiệp bằng việc thêm 1 logo ở chỗ header và nó lan rộng ra hóa đơn để đổi thay việc hiển thị & lấy tài liệu để tạo văn bản báo cáo. File XML chỉ thêm 1 chọn lựa để sửa đổi cách hiển thị với việc được cho phép upload logo.

Bước 3: Tạo một nút lệnh trong menu in và xác lập yếu tố báo cáo. tất cả chúng ta sẽ gây nên một file xml mới tên report_sales_invoice.xml có nội dung như sau:

id=“report_sales_invoices”

model=“account.invoice”

string=“Sales Invoice Report”

report_type=“qweb-pdf”

name=“report_customisation.report_sales_invoice_template”

file=“report_customisation.report_sales_invoice_template”

attachment_use=“True”

attachment=“(object.state in (‘open’,’paid’)) and (‘INV’+(object.number or ”).replace(‘/’,”)+’.pdf’)”

/>

Những nhân tố văn bản báo cáo xác định đặc thù của nút: văn bản báo cáo nào sẽ được tạo và kiểu cách của nó. bạn có thể thấy tên của chính nó là “Sale Invoice Report” & REPORT_TYPE là “qweb-pdf”. Mã Sản Phẩm này là account.invoice, nút sẽ có mặt trong View của Mã Sản Phẩm này.

Các mẫu là cầu nối quan trọng giữa giao diện web & xúc tích và ngắn gọn căn bản. Dự kiến, sẽ chỉ bao gồm dòng này:
giờ đây cài đặt module (đừng quên để thêm Các file xml trong __openerp__.py ) và chúng ta sẽ có thể thấy nút có mặt trong menu giống như sau:


 

  • Nhưng lúc này nếu in nó sẽ chỉ cho 1 trang trống, cũng chính vì tất cả chúng ta chưa code mẫu chính! giờ đây chúng ta hãy đổi thay vấn đề đó từng bước một. đầu tiên, gồm có Các dòng code sau trong mẫu chúng ta để trống ở trên:

vấn đề đó về căn bản xác minh rằng hóa đơn của chúng ta sống sót và company_id của chính nó sống sót. tiếp sau đó, nếu ngày không có trong hóa đơn đó sẽ gây ra một biến “pDate ‘ để lưu trữ ngày Bây Giờ. xem xét rằng nó sử dụng o như một hình thức ngắn cho đối tượng người tiêu dùng (doc_id trong phần trước), được chấp nhận bởi Qweb. từ bây giờ chúng ta có thể sử dụng dữ liệu trong hóa đơn bằng phương pháp tìm hiểu thêm Những đối tượng người sử dụng o.

bây giờ chúng ta cần phải xác định Các tiêu đề. bạn cũng có thể viết nó bên trong mẫu chính, hoặc một mẫu mới và gọi nó từ mẫu chính sử dụng t-call. tất cả chúng ta triển khai kế hoạch sau vì tiêu đề rất có khả năng được san sẻ với những tài liệu khác!

bài viết liên quan odoo cho doanh nghiệp tại việt nam
t-att-src=“‘data:image/png;base64,%s’ % “company.logo_report”

style=“max-height: 140px;” />
 Phone:
Fax:
Email:


Các Qweb đã bổ sung thêm nhiều classes và styles được dùng giống hệt như bất kỳ phần tử html khác. tại đây tôi sẽ giải thích dễ dàng nắm bắt nhất để chúng ta cũng có thể giải thuật Các dòng lệnh:

Col-xs-## với # là viết tắt của một số từ một đến 12. Qweb chia chiều rộng trang thành 12 cột và col-xs-## xác lập có bao nhiêu cột. để ý rằng Các Tấm hình trước đây đã tiến hành 6 cột, vì vậy chỉ từ 6 cột sẵn sàng được san sẻ trong các phần tử div. (Bên ngoài div bạn có thể tái sử dụng Các thủ pháp tương đương để sắp đặt Những layour)

ngoài những còn tồn tại col-xs-offset-## xác định khoảng cách nhất định giữa Các nhân tố, sau đó rất có khả năng kéo bên trái & kéo bên phải nếu bạn muốn đưa tài liệu trong 1 cột trên cùng cực trái hoặc phải.

đó là một trường tham chiếu trực tiếp trong đối tượng người sử dụng. Lưu bí danh được xác lập trên? tại chỗ này chúng ta ghi tên của chính nó. Nếu Công Ty của bạn được gọi bằng Goodyear, nó sẽ có mặt như Goodyear trong dữ liệu hoá đơn. nếu như bạn thay đổi Doanh Nghiệp hoặc tên Doanh Nghiệp, nó sẽ tiến hành tự động hóa update tại chỗ này.

sau khi định nghĩa tiêu đề, bạn cũng có thể đơn giản bao gồm nó trong mẫu chính bằng phương pháp sử dụng một t-call:

After defining the header, we can simply include it in the main template by using a t-call:

giờ đây nếu bạn in hóa đơn của bạn, bạn có thể nhìn thấy trên đỉnh tài liệu chẳng hạn như thế này:

tất nhiên bạn cần phải nhập tin tức cụ thể của Doanh Nghiệp bạn bao gồm bạn logo, hoặc còn nếu như không bạn sẽ không có nhiều tin tức. lúc bấy giờ một bài tập nhỏ: trong tiêu đề ở trên có không ít khoảng không giữa logo & Thông tin Công Ty. làm thế nào để bạn thay thế nó bằng phương pháp đổi thay cách bố trí?