[Odoo]透過系統排程進行自動化管理

透過Scheduled Actions 搭配 Line Notify進行訊息推播提醒

Posted by 許仕杰 on Thursday, June 10, 2021

TOC

前提

odoo的出勤(Attendances)模組非常便利,它不僅提供公司線上打卡功能,還能搜集同仁出勤時間,但該模式有別與以往的上班實體打卡,因此自己經常會忘記登入系統操作。

因此突然有個大膽的想法…

要是有人能每天提醒我打卡,那不知道有多好! 這裡馬上想到,透過這兩種工具的搭配,應該就可以達到想要的效果!🎉

  • Odoo Scheduled Actions
  • LINE Notify

Scheduled Actions介紹

由於LINE Notify目前在網路上有很多Python實作案例,這裡主要介紹『Scheduled Actions』的相關設定。

Scheduled Actions設定畫面

設定說明

  • Name(動作名稱):即為該作業的說明
  • Model(模型):預計要執行的程式模組
  • Scheduler User(調度程序使用者):定時執行作業時的帳號,會因為帳號而擁有不同權限,因此這裡建議使用最高權限『OdooBot(base.user_root)』進行
  • Execute Every(次數+間格單位):多久執行本作業一次,單位:minutes, hours, days, weeks。例如:設定『2 days』時,則會每2天執行一次。
  • Active(啟用):是否啟用該設定。
  • Next Execution Date(下一執行日期):此排程下次計劃執行的時間,當執行完畢後,會搭配『Execute Every(定時執行)』設定下一次的時間。
  • Number of Calls(調用次數):執行本作業的”可剩餘“次數,例如給3,代表執行3次就結束執行,如果給「-1」代表一直執行。
  • Priority(優先級):作業的優先程度,0代表高優先度、10表示低優先度。
  • Repeat Missed(重做錯過的):指定在服務器重新啟動時是否應執行錯過的事件。

這時,我們搭配上述的說明,撰寫出程式碼 addon/data/cron.xml

<odoo>
    <data>
        <record id="ir_cron_attendance_autocomplete1" model="ir.cron">
            <field name="name">Attendance Autocomplete : Remind employees of attendance(begin)</field>
            <field name="model_id" ref="model_hr_attendance_autocomplete_sync"/>
            <field name="state">code</field>
            <field name="code">model.send_message()</field>
            <field name="interval_number">1</field>
            <field name="interval_type">days</field>
            <field name="numbercall">-1</field>
        </record>
    </data>
</odoo>

設定完畢之後,但這裡要怎麼知道這次的作業會執行哪一段Python功能呢?

這部分還是要透過上面XML進行指定下面這一段,並在安裝addons後就會在剛剛『Scheduled Actions設定畫面』中『Python Code』顯示!

<field name="code">model.send_message()</field>

並且在send_message()中,加上LINE Notify的Python實作就完成了!


執行成效

最後在Scheduled Actions中設定兩組排程,規劃在上午8:30、下午18:00進行推播提醒,沒想到最後的整體效果,還蠻出乎意料之外!

如果這裡另外搭配節日的判斷,就能在避開國定假日時段的提醒囉!

LINE執行結果


Reference