Python Compute字段未自我更新odoo 8

Python Compute字段未自我更新odoo 8,python,python-2.7,openerp,Python,Python 2.7,Openerp,account.report类中的计算字段(余额)具有store=True parm,并且它依赖于accounts.accounts.entries.balance,当依赖字段的余额更改时,它应该更改,如果手动添加journal.entries记录,则它可以工作,但如果它是通过exmaple createjournal()创建的函数account.type和account.report中的余额未更新。触发get_balance函数的任何解决方案 @api.multi def createjour

account.report类中的计算字段(余额)具有store=True parm,并且它依赖于accounts.accounts.entries.balance,当依赖字段的余额更改时,它应该更改,如果手动添加journal.entries记录,则它可以工作,但如果它是通过exmaple createjournal()创建的函数account.type和account.report中的余额未更新。触发get_balance函数的任何解决方案

@api.multi
def createjournal(self):
    journal = self.env['journal.entries']
    journal.sudo().create({'name': "new record"})

class JournalEntries(models.Model):
    _name = 'journal.entries'

    debit = fields.Float()
    credit = fields.Float()
    balance = fields.Float(compute="get_balance", store=True)


    @api.depends('credit','debit')
    def get_balance(self):
        for x in self:
            balance = x.debit - x.credit
            x.balance = abs(balance)

class ErpAccount(models.Model):
    _name = 'erp.account'

    entries = fields.One2many('journal.entries','account')
    balance = fields.Float(compute="get_balance")
    debit = fields.Float(compute="get_debit")
    credit = fields.Float(compute="get_credit")

    @api.multi
    @api.depends('debit','credit')
    def get_balance(self):
        for x in self:
            balance = x.debit - x.credit
            x.balance = abs(balance)


    @api.multi
    def get_debit(self):
        for x in self:
            x.debit = sum(line.debit for line in x.entries)


    @api.multi
    def get_credit(self):
        for x in self:
            x.credit = sum(line.credit for line in x.entries)

class AccountType(models.Model):
    _name = 'account.type'

    accounts = fields.One2many('erp.account','account_type')
    balance = fields.Float(compute="get_balance")
    debit = fields.Float(compute="get_debit")
    credit = fields.Float(compute="get_credit")


    @api.multi
    @api.depends('accounts.entries.balance')
    def get_balance(self):
        for x in self:
            x.balance = sum(line.balance for line in x.accounts)


    @api.multi
    def get_debit(self):
        for x in self:
            x.debit = sum(line.debit for line in x.accounts)


    @api.multi
    def get_credit(self):
        for x in self:
            x.credit = sum(line.credit for line in x.accounts)


class AccountReportName(models.Model):
    _name = 'account.report'


    types = fields.One2many('account.type','report_account')
    balance = fields.Float(compute="get_balance", store=True)
    debit = fields.Float(compute="get_debit")
    credit = fields.Float(compute="get_credit")

    @api.multi
    @api.depends('types.accounts.entries.balance')
    def get_balance(self):
        for x in self:
            x.balance = sum(line.balance for line in x.types)


    @api.multi
    def get_debit(self):
        for x in self:
            x.debit = sum(line.debit for line in x.types)


    @api.multi
    def get_credit(self):
        for x in self:
            x.credit = sum(line.credit for line in x.types)

当您希望更新余额时,应删除
store=True

由于这只会在您编辑日记账分录记录时更新。

问题已解决,我在erp.account上添加了@api.depends('entries.balance','entries.active'),它工作正常

是的,但存储是必需的,否则它将不会出现在搜索以及图形上。您可以创建一个自定义搜索功能。那么平衡值不会出现在图形视图中呢