2016-04-05 7 views
0

Das Compute-Feld (Saldo) in der account.report-Klasse hat Speicher = True Parm und es ist abhängig von accounts.accounts.entries.balance, sollte es sich ändern, wenn das Gleichgewicht der abhängigen Feld geändert, funktioniert es, wenn journal.entries manuell aufzeichnen, aber wenn es über die Funktion createjournal() erstellt wird, wird das Konto account.type und account.report nicht aktualisiert. irgendeine Lösung, um die Funktion get_balance zu triggern.Compute-Feld aktualisiert es nicht selbst odoo 8

@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) 

Antwort

0

Wenn Sie balancieren möchten aktualisiert werden Sie store=True Da dies nur aktualisiert werden, entfernen sollten, wenn Sie die journal.entries Datensatz bearbeiten.

+0

Ja, aber Speicher ist erforderlich, sonst wird es nicht auf der Suche sowie in Grafik –

+0

angezeigt Sie könnten eine benutzerdefinierte Suchfunktion – JordyRitzen

+0

Und was ist mit Wert des Saldos nicht in der grafischen Ansicht angezeigt –

0

Problem gelöst ich @ Api.depends hinzufügen ('entries.balance', 'entries.active') auf erp.account und es funktioniert gut.

Verwandte Themen