Я хотел бы создать разные последовательности для модели на основе поля 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