2017-09-17 40 views
1

我想根據Selection字段爲模型創建不同的序列。在對象上創建多個序列-Odoo v8

現在我只有一個序列是這樣的:

@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

+1

你意思取決於選擇是,當用戶選擇一個值,你從特定的順序分隔值!你能解釋一下嗎 – Cherif

+0

嗨,謝謝你,編輯我的問題,請檢查一下,謝謝你。 – NeoVe

回答

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

我認爲這將做的工作希望你的想法

+0

是的,應該這樣做,非常感謝你 – NeoVe

+1

對你有好處... – Cherif