我在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/