2012-04-21 69 views
3

我在account.invoice.line中有一個名爲form_type的選擇字段。它有三個選項:Openerp的Onchange函數

1) form_a 
2) form_b 
3) form_c 

也有在account.invoice.line命名標誌整型字段。當選擇form_c時,標誌值應該設置爲1;否則,如果form_a或form_b被選中,標誌值應該被設置爲0.我爲上述情況寫了一個函數,但它不起作用。有人可以幫我嗎?我的代碼有什麼問題?在account.invoice.line爲平變化

def onchange_form_type(self, cr, uid, ids, invoice, context=None): 
    val={} 
    flag=0 
    invoice = self.pool.get('account.invoice.line').browse(cr, uid, invoice) 
    for invoice in self.browse(cr, uid, ids, context=context): 
     if invoice.form_type=="form_c": 
      flag="1" 
     else: 
      flag="0" 

    print flag 
    val = { 'flag': flag, } 
    return {'value': val} 

我的XML代碼:

<field name="form_type" on_change="onchange_form_type(form_type)"/> 

回答

6

在你的onchange功能,您不需要調用對象的瀏覽功能,因爲這些值尚未存儲在數據庫中。此外,您正將「form_type」值傳遞給該函數,而不是對象ID(如瀏覽接受對象ID)。

所以,下面將是on_change功能,爲預期的要求:

def onchange_form_type(self, cr, uid, ids, form_type, context=None): 

    val={} 
    flag=0 
    if form_type == 'form_c': 
     flag="1" 
    val = { 'flag': flag } 
return {'value': val} 
+0

三江源尤爾幫助先生。 – 2012-04-23 04:22:18