在企業日常營運中,報表(Reports)是不可或缺的一部分,例如:發票、訂單、出貨單、財務報表等。Odoo 透過 QWeb 模板系統,提供了強大且彈性的 PDF 報表輸出功能。今天我們將介紹 Odoo 報表的架構,並實作一個簡單的 PDF 報表。
Odoo 的報表主要由三個部分組成:
在模組中新增 report.xml
,定義報表名稱與對應模型。
<odoo>
<report
id="report_library_book"
model="library.book"
string="Library Book Report"
report_type="qweb-pdf"
name="library.report_library_book_template"
file="library.report_library_book_template"
/>
</odoo>
model
:指定報表對應的模型。report_type="qweb-pdf"
:輸出格式為 PDF。name
與 file
:對應到 QWeb 模板的 ID。在 views/report_library_book.xml
中定義模板:
<odoo>
<template id="report_library_book_template">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="book">
<div class="page">
<h2>書籍報表</h2>
<p><strong>書名:</strong> <span t-field="book.name"/></p>
<p><strong>作者:</strong> <span t-field="book.author"/></p>
<p><strong>出版日期:</strong> <span t-field="book.published_date"/></p>
</div>
</t>
</t>
</template>
</odoo>
docs
:代表報表所綁定的紀錄集合。t-field
:直接渲染模型的欄位值。div.page
:表示每一筆紀錄都會輸出在一頁 PDF 中。完成設定後,進入 Library → Books,選擇一本書,點選「列印 → Library Book Report」,即可下載 PDF 報表。
輸出的 PDF 檔案會自動套用模板格式,並由 wkhtmltopdf 工具渲染成正式文件。
res.company
自動帶入公司 Logo 與聯絡資訊。Odoo 的 QWeb 報表提供了完整的 PDF 輸出功能,適用於各種商業文件:
在下一篇文章中,我將介紹 Odoo 工作流自動化(Workflow 與 Business Process Management),讓流程能更智慧地流轉。