Tùy biến bản in hóa đơn trong odoo

Bài này sẽ chỉ dẫn cách tùy thay đổi đơn trong odoo để có bản giống như ý bằng cách thêm một nút tác dụng mới mà không làm tác động ảnh hưởng tới công dụng in hóa đơn Bây Giờ.

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

Bước 1: Định nghĩa __init__.py và __openerp__.py trong 1 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 Những dòng code sau:

xem thêm besco

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: điều đó được thừa kế trong hai module: nó mở rộng tin tức Công Ty bằng việc thêm 1 logo ở phần header và nó mở rộng hóa đơn để thay đổi việc hiển thị và lấy dữ liệu để khởi tạo văn bản báo cáo. File XML chỉ thêm một chọn lựa để sửa đổi cách hiển thị với việc được chấp nhận upload logo.

Bước 3: Tạo một nút lệnh trong menu in & xác định yếu tố văn bản báo cáo. tất cả chúng ta sẽ tạo ra 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 lập đặc điểm của nút: báo cáo nào sẽ được tạo & kiểu cách của nó. chúng ta cũng có thể thấy tên của chính nó là “Sale Invoice Report” & REPORT_TYPE là “qweb-pdf”. model này là account.invoice, nút sẽ xuất hiện trong View của model này.

Các mẫu là cầu nối quan trọng giữa giao diện web và lô ghích cơ bản. Dự kiến, sẽ chỉ bao gồm dòng này:
hiện nay thiết lập module (đừng quên để thêm Những file xml trong __openerp__.py ) và chúng ta sẽ có thể thấy nút xuất hiện trong menu in như sau:


 

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

điều đó về cơ bản khẳng định rằng hóa đơn của chúng ta tồn tại và company_id của nó tồn tại. tiếp sau đó, nếu ngày không tồn tại trong hóa đơn đó sẽ gây nên một biến “pDate ‘ để lưu trữ ngày Lúc Này. lưu ý rằng nó sử dụng o như một hình thức ngắn cho đối tượng người dùng (doc_id trong phần trước), cho phép bởi Qweb. từ nay bạn có thể sử dụng tài liệu trong hóa đơn bằng cách xem thêm Các đối tượng người dùng o.

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

đọc thêm odoo viet 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 sử dụng y hệt như bất cứ phần tử html khác. tại chỗ này tôi sẽ lý giải dễ dàng nắm bắt nhất để bạn cũng có thể giải mã Những dòng lệnh:

Col-xs-## với # là viết tắt của một số từ 1 đế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. xem xét rằng Những Tấm hình trước đó đã triển khai 6 cột, vì vậy chỉ còn 6 cột chuẩn bị được sẻ chia trong các thành phần div. (Bên ngoài div chúng ta cũng có thể tái sử dụng Các thủ thuật tương đương để sắp xếp Những layour)

ngoài các còn tồn tại col-xs-offset-## xác lập khoảng cách nhất định giữa Các nhân tố, tiếp sau đó rất có khả năng kéo bên trái và kéo bên phải nếu bạn thích đưa tài liệu trong một 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. Lưu bí danh được xác lập trên? ở đây tất cả chúng ta ghi tên của chính nó. Nếu Doanh Nghiệp của bạn được gọi bằng Goodyear, nó sẽ có mặt như Goodyear trong tài liệu hoá đơn. nếu như bạn thay đổi Doanh Nghiệp hoặc tên Công Ty, nó sẽ tiến hành tự động cập nhật ở chỗ này.

sau khi định nghĩa tiêu đề, chúng ta 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:

lúc này nếu như khách hàng in hóa đơn của bạn, chúng ta có thể nhìn thấy trên đỉnh dữ liệu chẳng hạn như thế này:

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