Создание более одной последовательности на объекте - Odoo v8

Я хотел бы создать разные последовательности для модели на основе поля Selection.

Прямо сейчас у меня есть только одна последовательность, подобная этой:

@api.model
def create(self, vals):
    if vals.get('name', 'New') == 'New':
        vals['name'] = self.env['ir.sequence'].next_by_code('mrp.worksheet.contract') or '/'
    return super(mrp_worksheet_contract, self).create(vals)

name = fields.Char('Reference', required=True, index=True, copy=False, readonly='True', default='New')

_defaults = {
    'name': lambda self, cr, uid, context: self.pool.get('ir.sequence').next_by_code(cr, uid, 'mrp.worksheet.contract') or '',
}

Но что произойдет, если я захочу создать более одной последовательности на основе такого поля:

type_prod = fields.Selection([
        ('budgeted','Budgeted'),
        ('nonbudgeted','Non Budgeted'),
        ('direct','Direct Order'),
    ], string='Type of Order', index=True,  
    track_visibility='onchange', copy=False,
    help=" ")

У меня есть последовательность, объявленная в моем xml:

<openerp>
<data noupdate="1">
    <!-- Sequences for contracts --> 
    <record id="seq_type_contract_code" model="ir.sequence.type">
        <field name="name">contract sequence</field>
        <field name="code">mrp.worksheet.contract</field>
    </record>
    <record id="seq_contract_code" model="ir.sequence">
        <field name="name">contract sequence</field>
        <field name="code">mrp.worksheet.contract</field>
        <field name="prefix">10G-</field>
        <field name="padding">5</field>
        <field name="company_id" eval="False"/>
    </record>
</data>
</openerp>

Я предполагаю, что в моем xml было бы более одной последовательности, но я не могу найти ни одного примера того, как использовать более одной зависимости от поля Selection.

Любые идеи?

ИЗМЕНИТЬ

У меня есть эта модель, которая имеет поле последовательности name, что я хочу, зависит от того, какой вариант вы выбираете в этом поле

type_prod = fields.Selection([
    ('budgeted','Budgeted'),
    ('nonbudgeted','Non Budgeted'),
    ('direct','Direct Order'),
], string='Type of Order', index=True,  
track_visibility='onchange', copy=False,
help=" ")

Чтобы создать ту же запись, но с другой последовательностью, например, если пользователь выбирает budgeted, то она будет BO000, а если выбрана nonbudgeted, создается та же запись, но с другой последовательностью, она будет NBO000, а если direct, то DO000


person NeoVe    schedule 17.09.2017    source источник
comment
что вы имеете в виду в зависимости от выбора, так это то, что когда пользователь выбирает значение, вы выбираете значение из определенной последовательности?!! можете ли вы объяснить больше   -  person Charif DZ    schedule 17.09.2017
comment
Привет, спасибо, отредактировал мой вопрос, проверьте его, пожалуйста, еще раз спасибо.   -  person NeoVe    schedule 17.09.2017


Ответы (1)


Когда вы сохраняете запись, просто проверьте значение своего поля, затем выберите значение из своей последовательности.

        If vals.get('name', 'New') == 'New':
               if vals.get('typo_prod') == 'budgeted':
                      vals['name'] = self.env['ir.sequence'].next_by_code('mrp.worksheet.contract') or '/'
               elif vals.get('typo_prod') == 'nonbudgeted':
                      vals['name'] = self.env['ir.sequence'].next_by_code('mrp.second_sequence') or '/'

Я думаю, что это сделает работу, надеюсь, вы поняли идею

person Charif DZ    schedule 17.09.2017