2017-04-06 17 views
0

私はOdoo 9をテストしており、継承を調べようとしています。以下のコードでは、フィールドjason_test2、total_amount_invoiceおよびtotal_balance_invoiceをres.partnerテーブルに追加する必要があります。それを追加するものではありません。Odoo Inherit - フィールドを追加する

from openerp.osv import osv, fields 
from openerp.tools.translate import _ 
from openerp import fields, models, api, exceptions, _ 
class ResPartner(models.Model): 


_inherit = 'res.partner' 
def _get_total_amount_invoice(self): 
    res = {} 
    for partner in self: 
     invoice_obj = self.env['account.invoice'] 
     invoice_ids = invoice_obj.search([('partner_id', '=', partner.id)]) 
     amount_total = 0 
     for invoice in invoice_ids: 
      amount_total += invoice.amount_total 
     res.update({'total_amount_invoice': amount_total}) 


def _get_total_balance_invoice(self): 
    res = {} 
    for partner in self: 
     invoice_obj = self.env['account.invoice'] 
     invoice_ids = invoice_obj.search([('partner_id', '=', partner.id)]) 
     balance_total = 0 
     for invoice in invoice_ids: 
      balance_total += invoice.residual 
     res.update({'total_balance_invoice': balance_total}) 


jason_test2 = fields.Char("Jason2") 

total_amount_invoice = fields.Monetary(string='Amount Total', type='float', 
             readonly=True, compute='_get_total_amount_invoice') 
total_balance_invoice = fields.Monetary(string='Balance Total', type='float', 
             readonly=True, compute='_get_total_balance_invoice') 
+0

チェックを保存するために通貨フィールドを追加格納するフィールドを追加します。ファイル –

答えて

0

それが問題のフォーマット問題でない限り、あなたのクラス定義の本体は、それ以外の場合は、すべてのクラスの一部ではない、インデントされなければなりません。

class ResPartner(models.Model): 

    _inherit = 'res.partner' 
    def _get_total_amount_invoice(self): 
     res = {} 
     for partner in self: 
      invoice_obj = self.env['account.invoice'] 
      invoice_ids = invoice_obj.search([('partner_id', '=', partner.id)]) 
      amount_total = 0 
      for invoice in invoice_ids: 
       amount_total += invoice.amount_total 
      res.update({'total_amount_invoice': amount_total}) 


    def _get_total_balance_invoice(self): 
     res = {} 
     for partner in self: 
      invoice_obj = self.env['account.invoice'] 
      invoice_ids = invoice_obj.search([('partner_id', '=', partner.id)]) 
      balance_total = 0 
      for invoice in invoice_ids: 
       balance_total += invoice.residual 
      res.update({'total_balance_invoice': balance_total}) 


    jason_test2 = fields.Char("Jason2") 

    total_amount_invoice = fields.Monetary(string='Amount Total', type='float', 
              readonly=True, compute='_get_total_amount_invoice') 
    total_balance_invoice = fields.Monetary(string='Balance Total', type='float', 
              readonly=True, compute='_get_total_balance_invoice') 
+0

jason_test2、total_amount_invoiceおよびtotal_balance_invoiceをres.partnerテーブルに追加する場合は、インデントの問題は発生しません。 I – user2491438

+0

'jason_test2'だけをテーブルに追加する必要があります。他の2つは計算フィールドで、フィールド定義に 'store = True'を指定しない限り、デフォルトでは保存されません。また、@Charifが示唆しているようにモジュールを '__init__'にインポートしたことと、フィールド定義が変更された後にモジュールをインストール/アップグレードしたことを確認してください。 – dgeorgiev

0

金銭的なフィールドは、金額のため 通貨を格納するための補完通貨のフィールドを必要とします。

class LibraryBook(models.Model): 
    # ... 
    currency_id = fields.Many2one('res.currency', string='Currency') 

2を使用されている通貨はあなたが__init__.pyに新しいPythonのファイルをインポートするかどうか量

total_amount_invoice = fields.Monetary(string='Amount Total', type='float', 
            readonly=True, currency_field='currency_id' compute='_get_total_amount_invoice') 
関連する問題