From 4020a95197fdf7e66bb6fe232011cd464963728a Mon Sep 17 00:00:00 2001 From: Sergi Almacellas Abellana Date: Mon, 18 Apr 2016 11:55:48 +0200 Subject: [PATCH] Fix party_required computation for general ledger lines issue5480 review22951002 --- account.py | 16 ++++++++++------ tests/scenario_reports.rst | 2 ++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/account.py b/account.py index f31b8d9fde..1bfa1ea489 100644 --- a/account.py +++ b/account.py @@ -1233,8 +1233,7 @@ class GeneralLedgerLine(ModelSQL, ModelView): 'invisible': ~Eval('party_required', False), }, depends=['party_required']) - party_required = fields.Function(fields.Boolean('Party Required'), - 'get_party_required') + party_required = fields.Boolean('Party Required') company = fields.Many2One('company.company', 'Company') debit = fields.Numeric('Debit', digits=(16, Eval('currency_digits', 2)), @@ -1266,10 +1265,12 @@ class GeneralLedgerLine(ModelSQL, ModelView): pool = Pool() Line = pool.get('account.move.line') Move = pool.get('account.move') - Account = pool.get('account.general_ledger.account') + LedgerAccount = pool.get('account.general_ledger.account') + Account = pool.get('account.account') context = Transaction().context line = Line.__table__() move = Move.__table__() + account = Account.__table__() columns = [] for fname, field in cls._fields.iteritems(): if hasattr(field, 'set'): @@ -1288,6 +1289,8 @@ class GeneralLedgerLine(ModelSQL, ModelView): column = (line.debit - line.credit).as_('balance') elif fname == 'move_description': column = Column(move, 'description').as_(fname) + elif fname == 'party_required': + column = Column(account, 'party_required').as_(fname) elif (not field_line or fname == 'state' or isinstance(field_line, fields.Function)): @@ -1295,13 +1298,14 @@ class GeneralLedgerLine(ModelSQL, ModelView): else: column = Column(line, fname).as_(fname) columns.append(column) - start_period_ids = set(Account.get_period_ids('start_balance')) - end_period_ids = set(Account.get_period_ids('end_balance')) + start_period_ids = set(LedgerAccount.get_period_ids('start_balance')) + end_period_ids = set(LedgerAccount.get_period_ids('end_balance')) period_ids = list(end_period_ids.difference(start_period_ids)) with Transaction().set_context(periods=period_ids): line_query, fiscalyear_ids = Line.query_get(line) return line.join(move, condition=line.move == move.id - ).select(*columns, where=line_query) + ).join(account, condition=line.account == account.id + ).select(*columns, where=line_query) def get_party_required(self, name): return self.account.party_required diff --git a/tests/scenario_reports.rst b/tests/scenario_reports.rst index 5deff0f5c6..9064f8342a 100644 --- a/tests/scenario_reports.rst +++ b/tests/scenario_reports.rst @@ -81,6 +81,8 @@ Print some reports:: >>> GeneralLedgerAccount = Model.get('account.general_ledger.account') >>> gl_accounts = GeneralLedgerAccount.find([]) + >>> _ = [(l.balance, l.party_required) for gl in gl_accounts + ... for l in gl.lines] >>> general_ledger = Report('account.general_ledger', context={ ... 'company': company.id,