iT邦幫忙

2025 iThome 鐵人賽

DAY 16
1
Odoo

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

《祕書阿哲被問爆!用 Odoo Calendar 擋下全公司的追問》|Day 16

  • 分享至 

  • xImage
  •  

🏁 開場:被問爆的阿哲

https://ithelp.ithome.com.tw/upload/images/20250915/20178346US7lrrRfHM.png

前次的 KPI 會議剛結束,財務小王、採購阿美、業務德華總算鬆了一口氣。

數字跑出來了,沉如蘭雖然臉色嚴肅,但至少沒有再追問更多。

大家暫時解除危機。

但問題並沒有結束。數字剛安穩下來,大家的焦點馬上轉向了: 老闆在哪裡?

祕書阿哲的桌前,瞬間變成臨時成立的客服中心。

  • 「老闆下週要不要來工廠?」
  • 「會不會出席供應商的會議?」
  • 「月底是不是要再多準備財務數字?」

問題排隊到爆,阿哲快要頭昏眼花。

阿哲曾在國合會派駐南美邦交國服替代役,最懂「長官思維」──察言觀色、提前準備。

但現在,他感覺自己不是祕書,而是全公司的「包打聽」。


🔑 阿哲的抱怨

阿哲試過各種工具:

  • Excel:版本混亂,工廠主管拿到過期的。
  • Google Calendar:不是人人能看,結果沒人理。
  • LINE 群提醒:五分鐘就被貼圖洗掉。

最後,大家還是跑來問他。

被問到受不了的阿哲,終於硬著頭皮去找沉如蘭,低聲抱怨:

「老闆,大家都來問我您的行程,我快招架不住了。」

沉如蘭抬起頭,冷冷地回:

「這很好啊!我要的就是大家提前知道我要去哪裡。

誰沒準備好,就等著挨罵!」


💡 Odoo Calendar:讓行程透明化

既然公司已經導入 Odoo,阿哲靈機一動: 把老闆行程搬進 Odoo Calendar,並加上自動化。

1. 自動分派準備任務

這段程式碼可以放在 Odoo → 設定 → 技術 → 自動化動作 (Automated Actions),觸發條件設定為「calendar.event 建立時」。

for attendee in record.attendee_ids:  # Many2many 到 calendar.attendee
    partner = attendee.partner_id     # 與 res.partner 關聯
    if partner.user_ids:
        env['project.task'].create({
            'name': f"會議準備:{record.name}",
            'user_id': partner.user_ids[0].id,
            'date_deadline': record.start_datetime,
            'calendar_event_id': record.id
        })

👉 attendee_ids 是 Many2many 欄位:一個會議可有多個與會者,一個人也能參加多個會議。

👉 calendar.attendee → res.partner → res.users,才能找到真正的員工來分派任務。

👉 在 Project Task 模型中需先新增:

calendar_event_id = fields.Many2one('calendar.event', string="會議")


2. 權限控管

在 Odoo 後台 → 設定 → 使用者與公司 → 群組 (Groups),調整 Calendar 模組的讀取權限:

  • 一般員工 → 只看到「忙碌」,避免洩漏細節。
  • 部門主管 → 看得到會議標題,提早準備簡報或數據。
  • 祕書 → Calendar Manager 權限,可編輯與分派。

3. 自動提醒

同樣在 Automated Actions 裡,可以新增一個「時間條件」:會議開始前 24 小時 自動發通知。

from datetime import timedelta

for event in records:  # records = calendar.event
    reminder_time = event.start_datetime - timedelta(hours=24)

    env['mail.activity'].create({
        'res_model': 'calendar.event',
        'res_id': event.id,
        'activity_type_id': env.ref('mail.mail_activity_data_todo').id,
        'summary': f"提醒:{event.name}",
        'note': f"即將開始的會議:{event.name},請提前準備資料。",
        'date_deadline': reminder_time.date(),
        'user_id': event.user_id.id or self.env.user.id,
    })

👉 若要精確到小時,建議直接用 reminder_time,避免只保留日期。

👉 mail.mail_activity_data_todo 的 XML ID 需依版本確認(可在開發者模式下檢查)。


📊 成效:阿哲從「包打聽」解脫

  • 過去:每天被問超過 50 次,耗掉 2 小時。
  • 現在:每天不到 5 次,大部分答案都能直接在 Odoo 裡找到。
  • KPI、供應商會議、財務數據 → 全部分派妥當。

⚙️Calendar 的關聯結構

calendar.event  →  calendar.attendee  →  res.partner  →  res.users
    (會議)           (與會者)             (聯絡人)         (登入使用者)


🔄 自動化流程圖

老闆口頭交代
    ↓
祕書阿哲建立 Odoo Calendar event
    ↓
Automated Action 觸發
    ├── 工廠拜訪 → 生產部門任務:準備良率報告
    ├── 供應商會議 → 採購任務:更新比價單
    └── 財務檢查 → 財務任務:上傳最新數字
    ↓
提醒
    ├── 事件前 24 小時 → Odoo 發通知
    └── 當天早上 → 任務板紅色標記


🎯 結語:透明是效率,還是焦慮?

透明讓大家提前準備,效率的確提升。

但也代表「老闆行程完全攤開」,每個部門都繃緊神經,生怕自己掉了鏈子。

最終,Odoo Calendar 有沒有真的讓大家減輕焦慮?見仁見智。

👉 下一回合,當流程愈來愈快,一個更棘手的問題浮現: 人才,跟得上嗎?。


上一篇
《老闆要看什麼?Odoo KPI 儀表板的必備與進階》Day 15|
下一篇
《沈如蘭的人才焦慮:用 Odoo eLearning 把知識留下來》|Day 17
系列文
一起認識 Odoo:開源 ERP 的另一種選擇20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言