如何每天重置 Odoo 12 中的序列(ir.sequence 对象)?

How to daily reset a sequence (ir.sequence object) in Odoo 12?

我在 Odoo 12 中有一个自定义模块,我需要每天为模型记录创建序列,所以我需要每天在 00:00 下午重置它。我尝试使用调度程序,但找不到我应该覆盖或重置我想要的序列的字段。当我查看数据库中的 ir_sequence table 结构时,这个 table 字段的值没有存储在数据库中,那么我们如何重新设置这个序列?

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

<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 is : ', 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}) 

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