在ERP实施过程中,定时自动执行一些数据处理任务是非常有必要的,比如每月初将上月某些数据设置为过期,可以大量减少人工工作量。
在Odoo中提供了非常简洁的定时任务实现方式,不过每一代的Odoo版本中代码略有不同,此处以odoo12为例:
1. 定义定时任务属性
自动提交资金计划
code
model.submit_amount_plan()
1
days
-1
上文便定义了一个简单的每天执行的定时任务。其中主要参数说明如下:
name:
定时任务名称
user_id:
执行定时任务的用户,不同的用户是有不同权限的,为了保证能有足够权限执行定时任务,一般这里就是base.user_root
interval_number:
任务执行的频次,和interval_type字段一起决定了任务执行的间隔时间,比如这里为interval_number为2,interval_type为minutes,就是任务每2分钟执行一次。
interval_type:
任务执行频次的单位,可选项有: minutes,hours,days,work_days,weeks,months,意思很好理解,work_days是星期几执行。
numbercall:
循环运行的次数,比如你填10,那么任务执行10次后将不再执行,这里-1代表一直执行下去。
doall:
如果在服务器重启期间错过了执行时机,是否再次补充执行。
model_id:
任务方法所在模型,"model_"加上模型名
code:
任务方法,与mode_id一起决定了任务时机到来时,调用哪个方法执行。
2. 在python中定义要定时执行的python代码
在相应模型的代码中定义相应的python方法,如下:
def submit_amount_plan(self):
lines = self.env['amount_plan'].search([])
for r in lines:
r.write({'state':'20'})
这个任务主要作用是定时将指定模型中的数据全部查找出来,并对其中字段值进行修改。