Báo cáo PDF

Với Studio, bạn có thể chỉnh sửa các báo cáo PDF hiện có (ví dụ: hóa đơn, báo giá, v.v.) hoặc tạo mới chúng.

Bố cục mặc định

Bố cục mặc định của báo cáo được quản lý bên ngoài Studio. Đi tới Cài đặt, sau đó, trong phần Công ty của trang chính, nhấp vào Cấu hình Bố cục Tài liệu. Cài đặt bố cục là riêng cho từng công ty nhưng áp dụng cho tất cả báo cáo.

Mẹo

Bạn có thể thấy cách các cài đặt khác nhau ảnh hưởng đến bố cục báo cáo trong phần xem trước báo cáo ở phía bên phải của cửa sổ Cấu hình bố cục tài liệu. Khi tạo hoặc chỉnh sửa báo cáo, bạn có thể xem trước báo cáo bằng cách nhấn vào Xem trước khi in ở phía bên trái của màn hình.

Vui lòng cung cấp các chuỗi cần dịch.

  • Layout: Bảy bố cục có sẵn:

    Mẫu bố cục báo cáo nhẹ
  • Nền: Các nền sau có sẵn:

    • Trống: Không có gì được hiển thị.

    • Demo logo: Một logo demo được hiển thị trong nền.

    • Tùy chỉnh: Tải lên một hình nền tuỳ chỉnh.

  • Text: Có tám phông chữ có sẵn: Lato, Roboto, Open Sans, Montserrat, Oswald, Raleway, Tajawal (hỗ trợ các bảng chữ cái Ả Rập và La-tinh), và Fira Mono. Truy cập Google Fonts website để xem trước.

  • Màu sắc: Thay đổi màu chính và màu phụ được sử dụng để cấu trúc báo cáo. Các màu mặc định được tự động tạo dựa trên màu của logo.

  • Address: Tên công ty và địa chỉ được hiển thị trong phần đầu của external reports. Bạn có thể thêm nhiều dòng văn bản.

  • Slogan: Được hiển thị trong phần tiêu đề của external reports sử dụng các bố cục Light, Striped, Bubble, Wave và Folder và trong phần chân trang của các báo cáo bên ngoài sử dụng các bố cục Boxed và Bold. Bạn có thể thêm nhiều dòng văn bản.

  • Định dạng giấy: Điều này xác định kích thước giấy mặc định của báo cáo. Bạn có thể chọn A4 (21 cm x 29.7 cm) và US Letter (21.59 cm x 27.54 cm). Điều này cũng có thể được định nghĩa cho các báo cáo cá nhân trong trường Định dạng giấy trong Studio.

    Ghi chú

    Các định dạng giấy khác có thể có sẵn tùy thuộc vào các ứng dụng hoặc mô-đun bạn đã cài đặt, chẳng hạn như tờ nhãn cho Inventory app hoặc thẻ sự kiện cho Events app.

Tạo báo cáo PDF mới

Để tạo một báo cáo mới cho một model, (ví dụ, đơn bán) truy cập mô hình, nhấp vào biểu tượng (Chuyển đổi Studio) và sau đó nhấn Báo cáo. Nhấn Mới và, trong cửa sổ pop‑up mở ra, chọn loại báo cáo. Điều này chỉ được dùng để xác định những gì sẽ hiển thị trong tiêu đề và chân trang:

Sau khi bạn đã tạo báo cáo, bạn có thể bắt đầu editing it.

Chỉnh sửa báo cáo PDF

Để truy cập các báo cáo có sẵn cho một mô hình, truy cập mô hình, nhấp vào nút (Toggle Studio), sau đó nhấp vào Reports. Chọn một báo cáo hiện có để mở nó.

Ngoài ra, bạn cũng có thể mở Studio, nhấp vào Báo cáo, và tìm kiếm một báo cáo hoặc mô hình cụ thể.

Quan trọng

Bạn nên sao chép báo cáo tiêu chuẩn và thực hiện các thay đổi trên phiên bản đã sao chép. Để sao chép một báo cáo, di chuột lên góc trên bên phải của báo cáo, nhấp vào biểu tượng (vertical ellipsis) và sau đó chọn Sao chép.

Sao chép báo cáo PDF

Tùy chọn

Sau khi bạn đã chọn hoặc tạo một báo cáo, bạn có thể sử dụng các tùy chọn ở phần bên trái của màn hình để:

  • Thay đổi Report name: Tên mới được áp dụng ở mọi nơi (trong Studio, trong menu Print dưới biểu tượng (gear) trong chế độ xem biểu mẫu, và trong tên tệp PDF).

  • Chỉnh sửa Định dạng giấy: Nếu không có giá trị nào được chọn, định dạng được định nghĩa trong bố cục mặc định sẽ được sử dụng.

  • Show in print menu: để thêm báo cáo vào menu Print trong chế độ xem mẫu.

  • Reload from attachment: để lưu báo cáo dưới dạng tệp đính kèm trên bản ghi lần đầu tiên nó được tạo và tải lại phiên bản gốc của báo cáo trong các lần sau. Điều này là yêu cầu pháp lý đối với hoá đơn và chủ yếu được sử dụng trong trường hợp này.

  • Giới hạn hiển thị cho các nhóm: để giới hạn việc truy cập báo cáo PDF cho các nhóm người dùng cụ thể.

  • Chỉnh sửa nguồn: to modify the report directly in the XML file.

  • Reset report: để hủy bỏ tất cả các thay đổi đã thực hiện trên báo cáo và đặt lại nó về phiên bản tiêu chuẩn.

  • Xem trước khi in: để tạo và tải xuống bản xem trước báo cáo.

Trình chỉnh sửa báo cáo

Trình chỉnh sửa báo cáo cho phép bạn sửa đổi nội dung và định dạng của báo cáo.

Mẹo

  • Bạn có thể Undo hoặc Redo các thay đổi bằng các nút liên quan hoặc phím tắt CTRL + ZCTRL + Y.

  • Các thay đổi được lưu tự động khi bạn rời báo cáo hoặc lưu thủ công bằng nút Save.

  • Bạn có thể đặt lại báo cáo về phiên bản tiêu chuẩn bằng cách nhấn nút Đặt lại báo cáo ở phía bên trái của màn hình.

Quan trọng

Việc chỉnh sửa phần đầu và chân trang của một báo cáo sẽ ảnh hưởng đến tất cả các báo cáo tiêu chuẩn và tùy chỉnh.

Khối điều kiện

Những hình chữ nhật đứt nét đại diện cho khối điều kiện (các câu lệnh if/else). Chúng được sử dụng để hiển thị/ẩn nội dung dựa trên các điều kiện cụ thể. Nhấp vào khối để xem các điều kiện.

Xem các điều kiện đã áp dụng cho khối.

Chọn một giá trị để xem trước đầu ra tương ứng và chỉnh sửa nếu cần.

Xem trước kết quả của điều kiện khác.

Ghi chú

Các điều kiện chỉ có thể được chỉnh sửa trong XML

Nội dung khác

Có hai loại nội dung văn bản trong báo cáo:

  • Văn bản tĩnh, tức là văn bản không được tô màu xanh, có thể chỉnh sửa trực tiếp trong trình chỉnh sửa.

  • Văn bản động, tức là văn bản được tô màu xanh, sẽ được thay thế bằng các giá trị của field khi báo cáo được tạo, ví dụ: số đơn bán hàng hoặc ngày báo giá.

Bạn có thể thêm nội dung (ví dụ: trường, danh sách, bảng, hình ảnh, biểu ngữ, v.v.) vào báo cáo bằng cách sử dụng các lệnh. Gõ / để mở powerbox, sau đó gõ tên lệnh hoặc chọn nó từ danh sách.

Để thêm văn bản tĩnh vào báo cáo, hãy nhập văn bản vào vị trí mong muốn.

Đối với các thay đổi nâng cao hơn, bạn có thể edit the report in the XML directly.

Thêm trường

Để thêm một trường, nhập / và chọn lệnh Trường. Trong danh sách hiện ra, chọn hoặc tìm kiếm trường cần thêm; nhấp mũi tên phải cạnh tên trường để truy cập danh sách các trường liên quan nếu cần. Sau đó, chỉ định giá trị mặc định sẽ hiển thị nếu trường không được điền trong bản ghi và nhấn Enter.

Chọn một trường liên quan.
Thêm hoặc sửa bảng

Có hai loại bảng trong báo cáo:

  • Static tables, được sử dụng để hiển thị văn bản tĩnh hoặc trường. Đối với loại bảng này, bạn xác định số cột và hàng khi thêm bảng.

  • Bảng động, được sử dụng để hiển thị dữ liệu từ trường quan hệ. Với loại bảng này, bạn chỉ cần xác định số lượng cột khi thêm bảng. Số lượng dòng trong báo cáo được tạo sẽ phụ thuộc vào số lượng bản ghi trong mô hình liên quan được liên kết với mô hình hiện tại.

    Example

    Trong báo cáo đơn bán hàng, một bảng động được sử dụng để hiển thị các dòng đơn hàng liên quan tới đơn bán hàng. Nếu đơn bán hàng chứa 10 dòng đơn hàng, bảng trong báo cáo được tạo sẽ có 10 hàng; nếu nó chứa hai dòng đơn hàng, bảng sẽ có hai hàng.

Thêm hoặc chỉnh sửa bảng tĩnh

Để thêm một bảng tĩnh, nhập / và chọn lệnh Table. Xác định số cột và hàng cho bảng. Khi bảng đã được thêm, bạn có thể bắt đầu chỉnh sửa nó.

Bạn có thể chèn, di chuyển và xóa cột và hàng bằng công cụ bảng. Đặt con trỏ lên trên cột hoặc bên trái của hàng, sau đó nhấp vào hình chữ nhật màu tím và chọn một tùy chọn.

Danh sách các tùy chọn có sẵn để chỉnh sửa cấu trúc bảng.

Để thay đổi kích thước cột, kéo viền cột đến vị trí mong muốn; đặt lại kích thước tiêu chuẩn cho tất cả các cột bằng cách chọn Reset Size từ công cụ bảng.

Thêm field of your choice vào một ô hoặc thêm văn bản tĩnh bằng cách gõ.

Mẹo

Để thêm văn bản một cách có cấu trúc mà không dùng bảng, bạn có thể sử dụng cột. Thêm cột bằng cách gõ / và chọn lệnh phù hợp: 2 cột, 3 cột hoặc 4 cột.

Thêm hoặc chỉnh sửa bảng động

Ghi chú

  • Chỉ các quan hệ kiểu one2many hoặc many2many mới có thể hiển thị dưới dạng bảng động.

  • Bảng động hiện có trong một báo cáo tiêu chuẩn có cấu trúc phức tạp hơn so với bảng động mà bạn tự thêm. Đối với các bảng như vậy, có thể chèn hoặc xóa cột; không thể di chuyển cột hoặc chèn, di chuyển hoặc xóa hàng.

Để thêm một bảng động, gõ / và chọn lệnh Dynamic Table. Trong danh sách mở ra, chọn hoặc tìm kiếm quan hệ mà bảng sẽ dựa trên và nhấn Enter. Khi bảng đã được thêm, bạn có thể bắt đầu chỉnh sửa nó.

Bạn có thể chèn, di chuyển và xóa cột bằng công cụ bảng, như với một static table. Bạn cũng có thể chèn các hàng tĩnh sẽ xuất hiện phía trên hoặc phía dưới các hàng được tạo.

Để thêm một trường vào ô, xóa bất kỳ văn bản đặt chỗ nào rồi thêm field of your choice. Hộp thoại mở ra sẽ hiển thị đối tượng nguồn cho trường (ví dụ, mô hình Order Lines) và danh sách các trường khả dụng.

Danh sách các trường có sẵn cho mô hình dòng đơn bán hàng.

Thay thế nhãn Column name bằng nhãn bạn muốn.

Ghi chú

Hàng mặc định tự động lặp qua nội dung của trường, tạo một hàng trên báo cáo cho mỗi giá trị của trường (ví dụ, một hàng cho mỗi dòng đơn hàng).

Định dạng

Để định dạng văn bản trong báo cáo, chọn nó, sau đó định dạng bằng cách sử dụng các tùy chọn trong text editor.

Định dạng văn bản bằng trình soạn thảo văn bản.

Chỉnh sửa XML của báo cáo

Cảnh báo

Việc sửa đổi XML trực tiếp có thể gây ra các lỗi báo cáo trong quá trình . Nếu xảy ra, chỉ cần sao chép các thay đổi của bạn từ cơ sở dữ liệu cũ sang cơ sở dữ liệu đã nâng cấp.

Để chỉnh sửa XML của báo cáo, nhấp vào Chỉnh sửa nguồn trong khung bên trái.

Ví dụ

Để thay đổi cách dữ liệu được hiển thị trong báo cáo của bạn, bạn có thể chỉnh sửa thủ công giá trị mặc định của trường widget. Trong ví dụ dưới đây, ngày đặt hàng mặc định hiển thị ngày và giờ, trong khi đơn giá mặc định có độ chính xác tới hai chữ số thập phân.

<div class="oe_structure">
 <span t-field="doc.date_order"/>
 <span t-field="doc.price_unit"/>
</div>

Bằng cách sử dụng t-options, trong trường hợp này là tùy chọn widget, các trường này có thể được chỉnh sửa để chỉ hiển thị ngày và độ chính xác bốn chữ số thập phân, tương ứng:

<div class="oe_structure">
 <span t-field="doc.date_order" t-options="{'widget': 'date'}"/>
 <span t-field="doc.price_unit" t-options="{'widget': 'float', 'precision': 4}"/>
</div>

Nếu bạn muốn hiển thị/ẩn nội dung dựa trên các điều kiện cụ thể, bạn có thể thêm thủ công các câu lệnh điều khiển if/else trong XML báo cáo.

Ví dụ, nếu bạn muốn ẩn một bảng dữ liệu tùy chỉnh khi không có thẻ, bạn có thể sử dụng thuộc tính t-if để định nghĩa điều kiện, sau đó nó sẽ được đánh giá là True hoặc False. Bảng sẽ không được hiển thị nếu không có thẻ trong báo giá.

<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
    <!-- thead = table header, the row with column titles -->
    <thead>
        <!-- table row element -->
        <tr>
            <!-- table header element -->
            <th>ID</th>
            <th>Name</th>
        </tr>
    </thead>
    <!-- table body, the main content -->
    <tbody>
        <!-- we create a row for each subrecord with t-foreach -->
        <tr t-foreach="doc.tag_ids" t-as="tag">
            <!-- for each line, we output the name and price as table cells -->
            <td t-out="tag.id"/>
            <td t-out="tag.name"/>
        </tr>
    </tbody>
</table>

Nếu bạn muốn hiển thị khối khác khi câu lệnh t-if được đánh giá là Sai, bạn có thể chỉ định nó bằng câu lệnh t-else. Khối t-else phải theo ngay sau khối t-if trong cấu trúc tài liệu. Không cần chỉ định bất kỳ điều kiện nào trong thuộc tính t-else. Ví dụ, hãy hiển thị thông báo nhanh giải thích rằng không có thẻ nào trên báo giá:

<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
    <!-- thead = table header, the row with column titles -->
    <thead>
        <!-- table row element -->
        <tr>
            <!-- table header element -->
            <th>ID</th>
            <th>Name</th>
        </tr>
    </thead>
    <!-- table body, the main content -->
    <tbody>
        <!-- we create a row for each subrecord with t-foreach -->
        <tr t-foreach="doc.tag_ids" t-as="tag">
            <!-- for each line, we output the name and price as table cells -->
            <td t-out="tag.id"/>
            <td t-out="tag.name"/>
        </tr>
    </tbody>
</table>
<div class="text-muted" t-else="">No tag present on this document.</div>

Bằng cách sử dụng ký hiệu t-if/t-else, trình chỉnh sửa báo cáo nhận ra rằng các phần này không đồng thời và nên được hiển thị dưới dạng các khối có điều kiện:

Xem trước đầu ra nếu có thẻ.

Bạn có thể chuyển đổi các điều kiện bằng cách sử dụng trình chỉnh sửa để xem trước kết quả của chúng:

Xem trước đầu ra nếu không có thẻ.

Nếu bạn muốn có nhiều tùy chọn, bạn cũng có thể sử dụng các chỉ thị t-elif để thêm các điều kiện trung gian. Ví dụ, đây là cách tiêu đề của các báo cáo Đơn bán hàng thay đổi dựa trên trạng thái của tài liệu gốc.

<h2 class="mt-4">
    <span t-if="env.context.get('proforma', False) or is_pro_forma">Pro-Forma Invoice # </span>
    <span t-elif="doc.state in ['draft','sent']">Quotation # </span>
    <span t-else="">Order # </span>
    <span t-field="doc.name">SO0000</span>
</h2>

Tiêu đề Pro-Forma Invoice được sử dụng tùy thuộc vào một số điều kiện ngữ cảnh. Nếu các điều kiện này không được đáp ứng và trạng thái của tài liệu là draft hoặc sent, thì sẽ sử dụng Quotation. Nếu không có điều kiện nào trong số này được đáp ứng, tiêu đề của báo cáo sẽ là Order.

Khi làm việc với hình ảnh trong báo cáo có thể gặp khó khăn do không phải lúc nào cũng dễ dàng kiểm soát chính xác kích thước và hành vi của hình ảnh. Bạn có thể chèn các trường hình ảnh bằng trình chỉnh sửa báo cáo (sử dụng Lệnh Trường), nhưng việc chèn chúng trong XML bằng chỉ thị t-field cùng các thuộc tính t-options đi kèm sẽ mang lại khả năng kiểm soát kích thước và vị trí tốt hơn.

Ví dụ, đoạn mã sau sẽ xuất trường image_128 của sản phẩm trong dòng dưới dạng hình ảnh có chiều rộng 64px (với chiều cao tự động dựa trên tỷ lệ khung hình của hình ảnh).

<span t-field="line.product_id.image_128" t-options-widget="image" t-options-width="64px"/>

Các tùy chọn sau có sẵn cho widget hình ảnh:

  • width: chiều rộng của hình ảnh, thường tính bằng pixel hoặc đơn vị độ dài CSS (ví dụ: rem) (để trống cho chiều rộng tự động).

  • height: chiều cao của hình ảnh, thường tính bằng pixel hoặc đơn vị độ dài CSS (ví dụ, rem) (để trống để tự động tính chiều cao).

  • class: Các lớp CSS được áp dụng trên thẻ img; Bootstrap classes có sẵn.

  • alt: văn bản thay thế cho hình ảnh

  • style: thuộc tính style; nó cho phép bạn ghi đè các kiểu dáng một cách tự do hơn so với Bootstrap classes

Các thuộc tính này phải chứa chuỗi, tức là văn bản được bao trong dấu nháy bên trong dấu nháy, ví dụ t-options-width="'64px'" (hoặc, thay thế, một biểu thức Python hợp lệ).

Ghi chú

Không thể sử dụng widget hình ảnh trên thẻ img. Thay vào đó, đặt chỉ thị t-field trên nút span (cho nội dung nội tuyến) hoặc div (cho nội dung khối) node.

Ví dụ, hãy thêm một cột hiển thị hình ảnh sản phẩm trong bảng báo giá:

<table class="table table-sm o_main_table table-borderless mt-4">
    <thead style="display: table-row-group">
        <tr>
            <th>Image</th>
            <th name="th_description" class="text-start">Description</th>
            <th>Product Category</th>
            <th name="th_quantity" class="text-end">Quantity</th>
            <th name="th_priceunit" class="text-end">Unit Price</th>
[...]
        <t t-foreach="lines_to_report" t-as="line">
            <t t-set="current_subtotal" t-value="current_subtotal + line.price_subtotal"/>
            <tr t-att-class="'bg-200 fw-bold o_line_section' if line.display_type == 'line_section' else 'fst-italic o_line_note' if line.display_type == 'line_note' else ''">
                <t t-if="not line.display_type">
                   <td>
                       <span t-field="line.product_template_id.image_128"
                             t-options-widget="'image'"
                             t-options-width="'64px'"
                             t-options-class="'rounded-3 shadow img-thumbnail'"
                           />
                   </td>
                    <td name="td_name"><span t-field="line.name">Bacon Burger</span></td>
                    <td t-out="line.product_id.categ_id.display_name"/>

Thuộc tính t-options-width giới hạn độ rộng của ảnh ở 64 pixel, và các lớp Bootstrap được sử dụng trong t-options-class tạo ra viền dạng thumbnail với các góc bo tròn và bóng đổ.

Thêm một cột có hình ảnh sản phẩm vào bảng báo giá.