Создайте автоматическое действие по дате - Odoo 10 - PullRequest
1 голос
/ 15 мая 2019

У меня есть поле даты (для закрытого контракта на регистрацию), которое я создал в пользовательском шаблоне. Это поле не рассчитано, но я хотел бы действовать в этом поле так:

-> Когда пользователь выбирает дату, я хотел бы получить эту дату, чтобы кормить CRON Odoo. Этот 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, но я не могу найти пример.

1012 * приветливо *

1 Ответ

1 голос
/ 15 мая 2019

Вам нужен метод, например.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>
...