3

account.invoice.line に form_type という名前の選択フィールドがあります。次の 3 つの選択オプションがあります。

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}

onchange の account.invoice.line の XML コードは次のとおりです。

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

1 に答える 1

6

変更時関数では、値がまだデータベースに保存されていないため、オブジェクトの参照関数を呼び出す必要はありません。また、オブジェクト ID ではなく、「form_type」値を関数に渡しています (browse はオブジェクト 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}
于 2012-04-22T16:41:07.013 に答える