单击取消按钮时 odoo-10 序列增量

odoo-10 sequence increment when click on Cancel button

我开发了一个 Odoo 模块,用于向员工添加序列,工作完美。

我确实点击了创建按钮并显示了这些员工的序列,但 id 还是取消了创建序列增量

class nhr(models.Model):
    _inherit = 'hr.employee'
    nhr = fields.Char(string='Nº de contacto', index=True, readonly=True, required=True,
        default=lambda self: self.env['ir.sequence'].next_by_code('nhr.seq'))

它增加了序列号,因为您在字段声明中将逻辑设置为默认值。

为避免此类问题,我们需要在 create() 方法中设置逻辑。

尝试使用以下代码:

nhr = fields.Char(string='Nº de contacto', index=True, readonly=True)

@api.model
def create(self, vals):

    vals['nhr'] = self.env['ir.sequence'].next_by_code('nhr.seq')

    return super(nhr, self).create(vals)

注意:

重新启动 Odoo 服务器并升级您的自定义模块。

当回滚创建 nhr 记录的事务时,@Odedra 的解决方案有时会失效。在这种情况下,底层序列实现仍将递增。

您可以使用序列的 'gapless' 实现(它是 ir.sequence 模型上的一个字段)来确保所有数字都是连续的。然而,这会带来巨大的成本,因为该实现使用全局锁来序列化您的记录创建。