2017-04-06 126 views
0

我正在測試Odoo 9並試圖找出繼承。使用下面的代碼應該將字段jason_test2,total_amount_invoice和total_balance_invoice添加到res.partner表中。它不會添加它們,我不知道它是否應該。Odoo繼承 - 添加字段

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

檢查您是否在__init__.py導入新的Python文件中的貨幣文件 –

回答

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'添加到表格中。另外兩個是計算字段,除非您在字段定義中指定'store = True',否則這些字段默認不存儲。另外,請確保您已將模塊導入到__init__中,如@Charif建議的那樣,並且在字段定義更改之後安裝/升級了模塊。 – dgeorgiev

0

貨幣字段需要互補的貨幣字段來存儲 貨幣金額。

1添加一個字段來存儲正在使用

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

2加入貨幣字段來存儲量

total_amount_invoice = fields.Monetary(string='Amount Total', type='float', 
            readonly=True, currency_field='currency_id' compute='_get_total_amount_invoice')