Функция Onchange в Openerp

У меня есть поле выбора в account.invoice.line с именем form_type. Он имеет три варианта выбора:

1) form_a
2) form_b
3) form_c

В account.invoice.line также есть целочисленное поле с именем flag. Когда выбрано form_c, значение флага должно быть установлено на 1; в противном случае, если выбрана форма form_a или form_b, значение флага должно быть установлено на 0. Я написал функцию onchange для вышеуказанного случая, но она не работает. Кто-нибудь может мне помочь? Что не так в моем коде?

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 в account.invoice.line для onchange:

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

person Pravitha V    schedule 21.04.2012    source источник


Ответы (1)


В вашей функции изменения вам не нужно вызывать функцию просмотра объекта, потому что значения еще не сохранены в базе данных. Кроме того, вы передаете значение «form_type» функции, а не идентификатор объекта (поскольку просмотр принимает идентификатор объекта).

Итак, ниже будет функция 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}
person Sameed Munde    schedule 22.04.2012