В моем случае +1 порядковый номер отображается, когда я открываю форму. Но когда я сохраняю запись, она снова увеличивается на 1. Это означает, что мои порядковые номера теперь выглядят так:

  • EMP0010
  • EMP0012
  • EMP0014

Это проблема с openerp или мне что-то не хватает в моем коде?

'register_no': fields.char('Register No', size=32, help='Register No', readonly=True),  # employer wise ,estate wise
        'employer_no': fields.char('Employer No', type='char', readonly=True),

_defaults = {
 'register_no': lambda obj, cr, uid, context: '/',
 'employer_no': lambda obj, cr, uid, context: '/',
 }

Вы можете посмотреть мой код здесь

Я прокомментировал

    def create(self, cr, uid, values, context=None):
        values['register_no'] = self.pool.get('ir.sequence').get(cr, uid, 'bpl.worker')
        values['employer_no'] = self.pool.get('ir.sequence').get(cr, uid, 'bpl.employer')
        return super(bpl_worker_registration, self).create(cr, uid, values, context=context)
0
Anne Mary 26 Мар 2013 в 11:22
Если вы получили ответ, закройте вопрос, нажав на правый символ внизу.
 – 
user1529289
29 Мар 2013 в 16:53

1 ответ

Лучший ответ

Вы дважды вызывали метод ir.sequence, один раз из create

def create (self, cr, uid, values, context = None):

values['register_no'] = self.pool.get('ir.sequence').get(cr, uid, 'bpl.worker')
values['employer_no'] = self.pool.get('ir.sequence').get(cr, uid, 'bpl.employer')
return super(bpl_worker_registration, self).create(cr, uid, values, context=context)

И второй по умолчанию

_defaults = {

 'register_no': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'bpl.worker'),
 'employer_no': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'bpl.employer'),

 }

Два раза звонить не имеет смысла. делать вызов только из _default или из метода create

1
Community 20 Июн 2020 в 12:12
Удалил функцию. но все же проблема друга.
 – 
Anne Mary
26 Мар 2013 в 12:36
1
Значит удаленные функции удалены из метода создания ??? не могли бы вы проверить после перезапуска сервера
 – 
user1576199
26 Мар 2013 в 12:38
Посмотри мой пост сейчас друг
 – 
Anne Mary
26 Мар 2013 в 12:43
1
Да, когда вы помещаете свой код в defualt, он вызывает его два раза. У меня есть один трюк, закомментируйте код по умолчанию и сделайте некоторые из них, например: 'resgiser_no': lambda obj, cr, uid, context: '/' и раскомментируйте код из метода create
 – 
user1576199
26 Мар 2013 в 13:12