我在Odoo 12中有一个自定义模块,我需要每天为模型记录创建序列,因此,我需要每天在00:00 pm对其进行重置。我尝试使用调度程序,但是找不到覆盖或重置所需序列的字段。当我查看数据库中的ir_sequence表结构时,该表字段的值未存储在数据库中,那么如何重置此序列?

这是我用作调度程序的代码:

<odoo>
    <data noupdate="1">
        <record id="ir_cron_token_no_sequence_daily_restart_scheduler" model="ir.cron">
            <field name="name">Token Nummber Sequence Daily Restart Scheduler</field>
            <field name="user_id" ref="base.user_root"/>
            <field name="model_id" ref="acs_hms.model_hms_appointment"/>
            <field name="interval_number">1</field>
            <field name="interval_type">days</field>
            <field name="numbercall">-1</field>
            <field name="doall" eval="False"/>
            <field name="code">model._reset_token_number_sequences()</field>
            <field name="state">code</field>
        </record>
    </data>
</odoo>


这是我的_reset_token_number_sequences()方法:

def _reset_token_number_sequences(self):
        sequences = self.env['ir.sequence'].search([('name', '=like', '%nl_department_%')])
        for sequence in sequences:
            print('Sequence#######################', sequence)
            sequence.write({
                'number_next' : 1,
            })


但这在我的情况下不起作用,请帮助我在此处代替number_next覆盖哪个字段。

最佳答案

在odoo v12中保存下一个数字值的字段是number_next_actual。因此,您将必须通过cron更新number_next_actual字段值。您的python代码应如下所示:

    def _reset_token_number_sequences(self):
        # just use write directly on the result this will execute one update query
        sequences = self.env['ir.sequence'].search([('name', '=like', '%nl_department_%')])
        sequences.write({'number_next_actual': 1})


希望这段代码对您有所帮助。

关于python - 如何每天重置Odoo 12中的序列(ir.sequence对象)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57841576/

10-16 18:10