如何每天重置 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})
希望这段代码对您有所帮助。
我在 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})
希望这段代码对您有所帮助。