我开发了一个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'))
答案 0 :(得分:3)
它会增加序列号,因为您已在字段声明中将逻辑设置为默认值。
为避免此类问题,我们需要在 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服务器并升级自定义模块。
答案 1 :(得分:0)
有些情况下@ Odedra的解决方案在创建nhr记录的事务回滚时无法正常工作。在这种情况下,基础序列实现仍将增加。
你可以使用'无间隙'序列的实现(它是ir.sequence
模型上的字段)以确保所有数字都是连续的。然而,由于实现使用全局锁定来序列化记录的创建,因此这会产生巨大的成本。