Odoo запускает функцию

У меня есть модуль, который блокирует ордер на продажу. Я хочу, чтобы эта функция запускалась автоматически, когда поле в настройках имеет значение True.

Потому что в этот момент он вызывает функцию только тогда, когда я нажимаю кнопку.

Вот как я проверяю, установлено ли значение поля:

@api.multi
def auto_order_finishing(self):
    field_value = self.env['ir.config_parameter'].sudo().get_param('sale.activate_automate_so_locking')
    if field_value:
        self.confirm_finish_order()
return True

person KushiNii    schedule 02.03.2018    source источник
comment
Почему бы просто не унаследовать функцию (если поле в настройках имеет значение True)?   -  person Kenly    schedule 04.03.2018


Ответы (2)


Пожалуйста, проверьте действие сервера, вы можете достичь своей функции с этим. Вам нужно добавить код Python и событие, к которому будет применяться этот код.

person Ajay Chauhan    schedule 04.03.2018

Вы можете создать запланированное действие для некоторой функции, которая вызывает auto_order_finishing для всех соответствующих заказов на продажу с определенным интервалом.

Вы можете найти их примеры, выполнив поиск по запросу model = "ir.cron"

Я вставил пример ниже

<record forcecreate="True" id="ir_cron_mail_scheduler_action" model="ir.cron">
    <field name="name">Mail: Email Queue Manager</field>
    <field name="model_id" ref="model_mail_mail"/>
    <field name="state">code</field>
    <field name="code">model.process_email_queue()</field>
    <field name="user_id" ref="base.user_root"/>
    <field name="interval_number">1</field>
    <field name="interval_type">hours</field>
    <field name="numbercall">-1</field>
    <field eval="False" name="doall"/>
</record>
person Matt    schedule 02.03.2018
comment
Большое спасибо за ответ, но я думаю, это должно быть лучше - person KushiNii; 02.03.2018
comment
и еще одна проблема, этот планировщик имеет значение interval_type только минут. Даже мне нужно запускать функцию все время, когда поле истинно. Потому что модуль проверяет, что все поставки и счета закрыты, и если да, только тогда он автоматически блокирует Заказ на продажу. - person KushiNii; 02.03.2018
comment
Я изо всех сил пытаюсь понять, что именно вы пытаетесь сделать. Если это нужно сделать немедленно, вы можете сделать две вещи для этого. @ api.depends может запускать функцию, когда установлено определенное значение, если вам нужно вызвать функцию для любых исторических заказов на продажу. В дополнение к этому вы, возможно, переопределите функцию подтверждения заказа на продажу и затем вызовете свою функцию при условии, что ваше значение установлено на True. - person Matt; 05.03.2018