1

我开发了一个 Odoo 模块来为员工添加序列,完美地工作。

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

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'))
4

2 回答 2

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 服务器并升级您的自定义模块。

于 2016-11-15T17:51:07.467 回答
0

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

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

于 2016-11-16T07:41:11.160 回答