按日期创建自动操作 - Odoo 10
Create an automated action by date - Odoo 10
我有一个在自定义模板中创建的日期字段(用于关闭注册合同)。该字段未计算,但我想对该字段执行操作,以便:
-> 当用户选择日期时,我想检索该日期以提供 CRON Odoo。由于用户先前选择的日期,此 CRON 将调用一个函数来完全关闭合约。
你有什么想法吗?
这是我的 CRON:
<record id="scheduler_synchronization_closed_contract_school_catering" model="ir.cron">
<field name="name">Scheduler synchronization closed contract school catering</field>
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">1</field>
<field name="args" eval=""/>
<field name="nextcall" eval="" />
<field name="doall" eval="False"/>
<field name="model" eval="'ecole.partner.school'"/>
<field name="function" eval="'closed_contract_school_catering'"/>
<field name="active" eval="True"/>
</record>
我想我必须在 args 和 nextcall 中添加一些东西,但我找不到示例。
亲切
您需要一个方法,例如。 ecole.partner.school
正在执行 "closing contract" 部分。然后你可以创建一个 CronJob,它每小时或每月调用一次这个方法。
在我的示例中,将有一个模型 school.catering.contract
,其字段 date_close
可以由客户端中的用户设置。
class SchoolCateringContract(models.Model):
# _name, fields, ...
@api.model
def run_close_old_contracts(self):
domain = [('date_close', '<=', fields.Date.today())]
for contract in self.search(domain):
# completely close contract whatever this means
cron 几乎是正确的。 nextcall
和 args
不是必须的。但是 numbercall
很重要。这意味着应该调用 cron 的号码。所以 1
意味着,它只会被调用一次,不会再被调用。如果您需要每天调用的 cron,则将其设置为 -1
.
<record id="scheduler_synchronization_closed_contract_school_catering" model="ir.cron">
<field name="name">Scheduler synchronization closed contract school catering</field>
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
<field name="model" eval="'school.catering.contract'"/>
<field name="function" eval="'run_close_old_contracts'"/>
<field name="active" eval="True"/>
</record>
我有一个在自定义模板中创建的日期字段(用于关闭注册合同)。该字段未计算,但我想对该字段执行操作,以便:
-> 当用户选择日期时,我想检索该日期以提供 CRON Odoo。由于用户先前选择的日期,此 CRON 将调用一个函数来完全关闭合约。
你有什么想法吗?
这是我的 CRON:
<record id="scheduler_synchronization_closed_contract_school_catering" model="ir.cron">
<field name="name">Scheduler synchronization closed contract school catering</field>
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">1</field>
<field name="args" eval=""/>
<field name="nextcall" eval="" />
<field name="doall" eval="False"/>
<field name="model" eval="'ecole.partner.school'"/>
<field name="function" eval="'closed_contract_school_catering'"/>
<field name="active" eval="True"/>
</record>
我想我必须在 args 和 nextcall 中添加一些东西,但我找不到示例。
亲切
您需要一个方法,例如。 ecole.partner.school
正在执行 "closing contract" 部分。然后你可以创建一个 CronJob,它每小时或每月调用一次这个方法。
在我的示例中,将有一个模型 school.catering.contract
,其字段 date_close
可以由客户端中的用户设置。
class SchoolCateringContract(models.Model):
# _name, fields, ...
@api.model
def run_close_old_contracts(self):
domain = [('date_close', '<=', fields.Date.today())]
for contract in self.search(domain):
# completely close contract whatever this means
cron 几乎是正确的。 nextcall
和 args
不是必须的。但是 numbercall
很重要。这意味着应该调用 cron 的号码。所以 1
意味着,它只会被调用一次,不会再被调用。如果您需要每天调用的 cron,则将其设置为 -1
.
<record id="scheduler_synchronization_closed_contract_school_catering" model="ir.cron">
<field name="name">Scheduler synchronization closed contract school catering</field>
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
<field name="model" eval="'school.catering.contract'"/>
<field name="function" eval="'run_close_old_contracts'"/>
<field name="active" eval="True"/>
</record>