iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
Odoo

一起認識 Odoo:開源 ERP 的另一種選擇系列 第 15

《老闆要看什麼?Odoo KPI 儀表板的必備與進階》Day 15|

  • 分享至 

  • xImage
  •  

🏁 開場:沈如蘭的一句話

https://ithelp.ithome.com.tw/upload/images/20250914/201783463Y0xEFVQuZ.jpg

週一的經營會議,老闆 沈如蘭 緩緩開口:

「名單有了,成交也有了。但我們公司,到底賺多少?」

會議室瞬間安靜。

  • 財務主管小王 低聲回:「月底帳結完才知道。」
  • 倉庫主管小李 皺著眉:「庫存快滿了,但我沒有週轉天數。」
  • 業務主管德華 拍胸脯:「這個月單子很多!」卻說不出口毛利率下滑。
  • 製造部老張 嘆氣:「機台常卡單,但我沒數據證明瓶頸在哪。」
  • 採購阿美 補了一句:「供應商延遲,我也沒有交期履約率的數字。」

沈如蘭掃視一圈,淡淡地說:

「我不需要感覺,我要數字。」


🔑 為什麼傳統 KPI 報表在 SME 失靈?

  1. 數據延遲 —— 報表等月底才出,等老闆看到,最佳決策時機早就過了。
  2. 口徑不一致 —— 每個部門一張 Excel,財務說賺、倉庫說虧,誰也說服不了誰。
  3. 沒有即時可視化 —— SME 老闆要的不是「歷史回顧」,而是「即時判斷」。

🔑 Odoo KPI 儀表板:五必備 + 五進階

五必備(活下去的數字)

  1. 營收總覽 —— 每日累計銷售金額。
  2. 毛利率 —— 避免「賣越多虧越多」。
  3. 應收帳款 / 逾期帳款 —— 確保現金回流。
  4. 庫存週轉天數 —— 資金是否卡死在倉庫。
  5. 訂單履約率 —— 客戶能不能準時收貨。

五進階(成長的數字)

  1. 銷售漏斗轉化率 —— 潛在客戶能轉多少成交。
  2. 平均訂單金額 —— 客戶單筆價值。
  3. 客戶取得成本(CAC) —— 行銷投資效率。
  4. 客戶終身價值(LTV) —— 長期回報是否能覆蓋 CAC。
  5. 員工流失率 / 績效 —— 人才是最真實的成長引擎。

🔧 技術補強:如何搭出儀表板

模組對應

  • 營收 / 毛利率 → account.move
  • 應收帳款 → account.move.line
  • 庫存週轉 → stock.valuation
  • 履約率 → stock.picking
  • 銷售漏斗 → crm.lead
  • CAC / LTV → crm + marketing.campaign
  • 員工流失率 → hr.employee

數據邏輯公式

  • 毛利率 = (營收 – 銷售成本) ÷ 營收 × 100%
  • 庫存週轉天數 = 存貨價值 ÷ (銷售成本 ÷ 365)
  • CAC = 行銷支出 ÷ 新增客戶數
  • LTV = 平均客單價 × 購買頻率 × 客戶平均生命周期

Dashboard 配置清單

Dashboard:公司總覽
 ├── 財務健康
 │    ├─ Tile:本月營收累計
 │    ├─ Graph:毛利率走勢
 │    └─ Tile:逾期帳款金額
 │
 ├── 營運效率
 │    ├─ Pivot:庫存週轉天數
 │    ├─ Tile:訂單履約率
 │    └─ Graph:瓶頸工序利用率
 │
 └── 成長引擎
      ├─ Funnel:銷售漏斗轉化率
      ├─ Tile:平均訂單金額
      ├─ Tile:CAC vs LTV
      └─ Graph:員工流失率

這些磚塊來自 Odoo 原生的 Dashboard 模組(社群版與企業版皆可使用),不需要額外開發就能配置。


⚠️ 常見實作陷阱

  • 幣別問題:多國公司常遇到匯率差異,導致營收數字不準,需在 res.currency 設定每日匯率更新。
  • 時區問題:銷售與庫存日期差一天,通常是伺服器 UTC 與台灣時區未調整。
  • 權限問題:建議用群組權限限制 Dashboard 的可見範圍,避免敏感財務數據外洩。

🧑‍💻 程式碼範例:自動計算毛利率

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    gross_margin = fields.Float(
        string="毛利率 (%)",
        compute="_compute_gross_margin",
        store=True
    )

    @api.depends('amount_total', 'order_line.purchase_price')
    def _compute_gross_margin(self):
        for order in self:
            cost = sum(l.product_id.standard_price * l.product_uom_qty for l in order.order_line)
            order.gross_margin = (order.amount_total - cost) / order.amount_total * 100 if order.amount_total else 0

📌 這樣老闆打開 Dashboard 就能即時看到毛利率,而不是等月底人工算。


🎯 結語:數字才是決策的基礎

CRM 幫業務追客戶,自動化幫德華清收件匣,但沈如蘭要的,是能在週會上支撐決策的數字。

Odoo KPI 儀表板,把財務、營運、成長三大領域放在一個首頁,讓 SME 也能像大企業一樣「數據即時」。

「很好,」沈如蘭收起電腦,「接下來,任何會議我都要即時數字。」

👉 話音剛落,祕書阿哲暗暗心驚。因為他知道,這只是麻煩的開始。


上一篇
《把 Gmail 變業務助理:Odoo × Make 的無代碼自動化》|Day 14
系列文
一起認識 Odoo:開源 ERP 的另一種選擇15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言