iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
Odoo

用 Odoo 打造數位轉型引擎:從基礎建置到跨領域應用系列 第 13

Day 13:客製化範例:擴充 CRM 模組功能

  • 分享至 

  • xImage
  •  

在前面我們學習了如何建立新的模組與定義 Model、View、Controller。實際專案中,企業往往不會從零開始,而是需要 在現有模組上進行擴充。今天我們將以 CRM 模組 為例,示範如何透過繼承與擴充,來增加新功能。


1. 專案需求

假設我們的銷售團隊希望在 CRM 中的「商機 (Opportunity)」紀錄上,額外記錄一個 競爭對手 (Competitor) 欄位,並能在報表中查看。這就是典型的「客製化需求」。


2. 建立客製化模組

addons 下建立一個新模組 crm_extension


crm\_extension/
│── **init**.py
│── **manifest**.py
│── models/
│    └── **init**.py
│    └── crm\_lead\_inherit.py
│── views/
└── crm\_lead\_view\.xml


3. 定義模組資訊(manifest.py)

{
    'name': 'CRM Extension',
    'version': '1.0',
    'summary': 'Extend CRM with competitor field',
    'author': 'Your Name',
    'depends': ['crm'],
    'data': [
        'views/crm_lead_view.xml',
    ],
    'installable': True,
    'application': False,
}

4. 繼承 CRM Model

Odoo 提供 繼承 (inheritance) 機制,可在不修改核心程式碼的情況下擴充功能。

models/crm_lead_inherit.py

from odoo import models, fields

class CRMLeadInherit(models.Model):
    _inherit = 'crm.lead'

    competitor = fields.Char('Competitor')

這樣就能在 crm.lead 模型(商機)中新增一個 competitor 欄位。


5. 修改 View 以顯示欄位

views/crm_lead_view.xml 中加入新的欄位:

<odoo>
  <record id="view_crm_lead_form_inherit" model="ir.ui.view">
    <field name="name">crm.lead.form.inherit</field>
    <field name="model">crm.lead</field>
    <field name="inherit_id" ref="crm.crm_lead_view_form"/>
    <field name="arch" type="xml">
      <xpath expr="//sheet/group/group" position="inside">
        <field name="competitor"/>
      </xpath>
    </field>
  </record>
</odoo>

這段 XML 會在商機表單的既有區塊中插入「競爭對手」欄位。


6. 測試功能

  1. 重新啟動 Odoo,並在 Apps 中安裝 CRM Extension 模組。
  2. 進入 CRM → 商機 (Opportunities),打開一筆紀錄。
  3. 你會看到新增的「競爭對手」欄位,並可以填寫資料。

這個欄位也能被加入到報表或 Pivot 視圖中,方便銷售團隊分析。


小結

這個範例展示了 Odoo 客製化的常見流程:

  1. 建立新模組並設定依賴。
  2. 使用 _inherit 擴充既有 Model。
  3. 透過 XML 修改既有 View。

這種方式保證核心模組不被修改,方便升級與維護。在下一篇文章中,我將帶你認識 Odoo 權限控制與使用者角色管理,確保系統功能在安全的前提下被正確使用。


上一篇
Day 12:Odoo Controllers 與 REST API 實作
下一篇
Day 14:Odoo 權限控制與使用者角色管理
系列文
用 Odoo 打造數位轉型引擎:從基礎建置到跨領域應用16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言