Вам нужен метод, например.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
Крон почти правильный.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>