TOC
前提
odoo的出勤(Attendances)模組非常便利,它不僅提供公司線上打卡功能,還能搜集同仁出勤時間,但該模式有別與以往的上班實體打卡,因此自己經常會忘記登入系統操作。
因此突然有個大膽的想法…
要是有人能每天提醒我打卡,那不知道有多好! 這裡馬上想到,透過這兩種工具的搭配,應該就可以達到想要的效果!🎉
- Odoo Scheduled Actions
- LINE Notify
Scheduled Actions介紹
由於LINE Notify目前在網路上有很多Python實作案例,這裡主要介紹『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進行推播提醒,沒想到最後的整體效果,還蠻出乎意料之外!
如果這裡另外搭配節日的判斷,就能在避開國定假日時段的提醒囉!