2016-11-15 9 views
1

Я разрабатываю модуль Odoo для добавления последовательности к сотруднику, отлично работаю.Приращение последовательности odoo-10 при нажатии кнопки Отмена

Я нажмите кнопку, чтобы создать и появлюсь последовательность для этого сотрудника, но идентификатор отменил создать приращение последовательности равно

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

ответ

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 и обновить пользовательский модуль.

0

Есть случай, когда решение @ Odedra не будет работать, когда произойдет откат транзакции, создающей запись nhr. В этом случае реализация базовой последовательности будет по-прежнему увеличиваться.

Вы можете использовать «бесцельную» реализацию последовательностей (это поле на модели ir.sequence), чтобы гарантировать, что все числа являются последовательными. Однако это требует огромных затрат, поскольку реализация работает с глобальной блокировкой, которая будет сериализовать создание ваших записей.

+0

(odoo 10) Для реализации бесщелевого: <имя поля = "осуществление"> no_gap Kandhan