我有一个在自定义模板中创建的日期字段(用于签订入学合同)。此字段未计算出来,但我想对该字段进行操作,以便:
->当用户选择一个日期时,我想检索该日期以供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中放一些东西,但是我找不到一个例子。
皮质
答案 0 :(得分:1)
例如,您需要一个方法。 ecole.partner.school
正在执行“关闭合同”部分。然后,您可以创建一个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>