iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
Odoo

利用【AI】工具,聰明進行 Odoo 程式開發系列 第 17

Day17:個案一:學校圖書管理(13)-統計表及報表

  • 分享至 

  • xImage
  •  

使用者故事

作為一名圖書管理員,我希望能生成各種統計報表,如借閱排行、讀者活躍度和館藏利用率,以便於決策和服務改進。

GPT重點回應

1. 修改圖書及借閱記錄

models/library_book.py
models/library_student.py

class LibraryBook(models.Model):
    _name = 'library.book'

    loan_count = fields.Integer(string='借閱次數', compute='_compute_loan_count', store=True)

    def _compute_loan_count(self):
        for book in self:
            book.loan_count = self.env['library.book.loan'].search_count([
                ('book_id', '=', book.id),
                ('state', '=', 'returned')
            ])
            
class LibraryStudent(models.Model):
    _name = 'library.student'

    loan_count = fields.Integer(string='借閱次數', compute='_compute_loan_count', store=True)

    def _compute_loan_count(self):
        for student in self:
            student.loan_count = self.env['library.book.loan'].search_count([
                ('student_id', '=', student.id),
                ('state', '=', 'returned')
            ])
     

2. 建立圖片及分析表

views/library_book_views.xml.xml
views/library_student_views.xml

3. 建立QWEB報表

我們需要建立控制器來處理頁面的請求和表單的提交。

reports/library_reports.xml

<odoo>
    <template id="report_library_book_loan">
        <t t-call="web.external_layout">
            <div class="page">
                <h2>借閱排行報表</h2>
                <table class="table table-sm">
                    <thead>
                        <tr>
                            <th>isbn</th>
                            <th>書名</th>
                            <th>借閱次數</th>
                        </tr>
                    </thead>
                    <tbody>
                        <t t-foreach="docs" t-as="book">
                            <tr>
                                <td><t t-esc="book.isbn"/></td>
                                <td><t t-esc="book.name"/></td>
                                <td><t t-esc="book.loan_count"/></td>
                            </tr>
                        </t>
                    </tbody>
                </table>
            </div>
        </t>
    </template>

    <record id="action_report_library_book_loan" model="ir.actions.report">
        <field name="name">借閱排行報表</field>
        <field name="model">library.book</field>
        <field name="report_type">qweb-pdf</field>
        <field name="report_name">library_management.report_library_book_loan</field>
        <field name="report_file">library_management.report_library_book_loan</field>
        <field name="print_report_name">'借閱排行報表 - %s' % (object.name)</field>
        <field name="binding_model_id" ref="model_library_book"/>
        <field name="binding_type">report</field>
    </record>


</odoo>

4. 測試及查看成果

圖書統計
https://ithelp.ithome.com.tw/upload/images/20241001/20102255auIw7XBqdz.jpg

借閱排行
https://ithelp.ithome.com.tw/upload/images/20241001/20102255qSXrxblZem.jpg

圖書分析表
https://ithelp.ithome.com.tw/upload/images/20241001/20102255OICouJ37Ac.jpg

本章小節

在這一章中,介紹了如何透過 Odoo 開發一個圖書管理系統的借閱統計報表功能,以下為關鍵步驟:

  1. 修改圖書及借閱記錄的模型

    • models/library_book.pymodels/library_student.py 中新增了 loan_count 欄位,並透過計算方法來統計每本書和每位讀者的借閱次數。
  2. 建立圖片及分析表

    • views/library_book_views.xmlviews/library_student_views.xml 中設計了用來顯示統計數據的視圖。
  3. 建立 QWeb 報表

    • reports/library_reports.xml 中建立了借閱排行的 QWeb 報表模板。這個報表會顯示書籍的 ISBN、名稱及其借閱次數。
  4. 測試及查看成果

    • 完成所有設定後,可以生成借閱統計報表,並通過分析圖表查看借閱排行、圖書統計及其他分析資料。

使用 Odoo 17 來開發圖表及分析報表具有以下幾個顯著的優勢與特點:

1. 即時數據分析與可視化

Odoo 17 提供強大的即時數據分析功能,讓管理者能夠即時查看各種數據。透過內建的圖表和報表功能,可快速開發類似,借閱排行、讀者活躍度、館藏利用率等資料,有助於做出快速且明智的決策。

2. 自動化數據更新

利用計算字段,如 loan_count,Odoo 17 可以自動更新借閱次數等數據,無需手動操作,減少了人工錯誤和繁瑣的操作步驟。此外,這些計算字段也可以用於生成即時的圖表和報表,確保數據的準確性。

3. 自訂儀表板與分析視圖

Odoo 17 允許用戶創建自訂儀表板,管理者可以根據需求將不同的報表和分析圖表整合到同一介面中,方便快速查看所有重要數據。

4. 即時可用的分析模板

Odoo 附帶一系列即時可用的分析模板和視覺化工具,這些模板可以根據不同的需求進行調整和擴展。可以快速利用這些預設的模板生成想要的分析報表,而無需從零開始設計。


上一篇
Day16:個案一:學校圖書管理(12)-網站圖書預約-新增網頁選單
下一篇
Day18:個案一:學校圖書管理(14)-總結
系列文
利用【AI】工具,聰明進行 Odoo 程式開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言