2016-12-01 5 views
0

私はOdooの元のフィールド関数をオーバーライドしたいと考えています。v8のフィールド関数をオーバーライドする方法

ここの答えによると:Odoo: How to override original function ちょうど元のモデルとまったく同じ方法を定義するだけです。だからここに私のコード:

class paiement_client_difference_montant(models.Model): 
    _inherit="account.voucher" 

    #writeoff_amount=fields.Float(compute='_get_writeoff_amount') 

def _get_writeoff_amount(self, cr, uid, ids, name, args, context=None): 
    print '_get_writeoff_amount _inherit' 
    if not ids: return {} 
    currency_obj = self.pool.get('res.currency') 
    res = {} 
    for voucher in self.browse(cr, uid, ids, context=context): 
     debit = credit = 0.0 
     sign = voucher.type == 'payment' and -1 or 1 
     for l in voucher.line_dr_ids: 
      debit += l.amount 
     for l in voucher.line_cr_ids: 
      credit += l.amount 
     currency = voucher.currency_id or voucher.company_id.currency_id 
     res[voucher.id] = currency_obj.round(cr, uid, currency, voucher.amount - sign * (credit - debit)) 
    return res 

しかし、そのコードには決して達しません。 助けてください。ありがとうございました。

+1

これはおそらく字下げの問題です。あなたの質問を編集して修正しました。継承フィールドがクラスブロックの外にあるため、あなたのクラスは 'account.voucher'から継承されません。 – danidee

+0

フィールドでは' writeoff_amount'を意味しません。これはコメントです。あなたの変更を試してみたところ、それはまだ機能しません。 –

+0

'writeoff_amount'は' account.voucher'ベースのフィールドですか? – gabrieloliveira

答えて

2

この新しく作成されたメソッドを実行するには、クラスでそのフィールドを再度オーバーライドする必要があります。

+0

今すぐご利用いただきありがとうございます。そのフィールドをもう一度上書きし、計算パラメータを使用する必要がありました。 –

関連する問題