From 27c236d84516ba27842653a03a8a432929fa0b4d Mon Sep 17 00:00:00 2001 From: ?ngel ?lvarez Date: Thu, 4 Apr 2019 12:23:27 +0200 Subject: [PATCH] merge account.kind and account.type --- account.py | 18 +++++++-------- analytic.py | 8 +++---- tests/test_analytic_line_state.py | 37 +++++++++++++++++++------------ 3 files changed, 36 insertions(+), 27 deletions(-) diff --git a/account.py b/account.py index 0058ba8..92a93d5 100644 --- a/account.py +++ b/account.py @@ -4,7 +4,7 @@ from itertools import chain from trytond.model import ModelView, fields, dualmethod from trytond.pool import Pool, PoolMeta -from trytond.pyson import Eval +from trytond.pyson import Eval, Bool from trytond.i18n import gettext from trytond.exceptions import UserError @@ -28,9 +28,9 @@ class Account(metaclass=PoolMeta): ('id', 'not in', Eval('analytic_forbidden')), ('id', 'not in', Eval('analytic_optional')), ], states={ - 'invisible': Eval('kind') == 'view', + 'invisible':~Bool(Eval('type')), }, - depends=['company', 'analytic_forbidden', 'analytic_optional', 'kind']) + depends=['company', 'analytic_forbidden', 'analytic_optional', 'type']) analytic_forbidden = fields.Many2Many( 'analytic_account.account-forbidden-account.account', 'account', 'analytic_account', 'Analytic Forbidden', domain=[ @@ -39,9 +39,9 @@ class Account(metaclass=PoolMeta): ('id', 'not in', Eval('analytic_required')), ('id', 'not in', Eval('analytic_optional')), ], states={ - 'invisible': Eval('kind') == 'view', + 'invisible':~Bool(Eval('type')), }, - depends=['company', 'analytic_required', 'analytic_optional', 'kind']) + depends=['company', 'analytic_required', 'analytic_optional', 'type']) analytic_optional = fields.Many2Many( 'analytic_account.account-optional-account.account', 'account', 'analytic_account', 'Analytic Optional', domain=[ @@ -50,14 +50,14 @@ class Account(metaclass=PoolMeta): ('id', 'not in', Eval('analytic_required')), ('id', 'not in', Eval('analytic_forbidden')), ], states={ - 'invisible': Eval('kind') == 'view', + 'invisible':~Bool(Eval('type')), }, - depends=['company', 'analytic_required', 'analytic_forbidden', 'kind']) + depends=['company', 'analytic_required', 'analytic_forbidden', 'type']) analytic_pending_accounts = fields.Function( fields.Many2Many('analytic_account.account', None, None, 'Pending Accounts', states={ - 'invisible': Eval('kind') == 'view', - }, depends=['kind']), + 'invisible':~Bool(Eval('type')), + }, depends=['type']), 'on_change_with_analytic_pending_accounts') diff --git a/analytic.py b/analytic.py index b74cf12..84257be 100644 --- a/analytic.py +++ b/analytic.py @@ -24,7 +24,7 @@ class AnalyticAccount(metaclass=PoolMeta): analytic_required = fields.Many2Many( 'analytic_account.account-required-account.account', 'analytic_account', 'account', 'Analytic Required', domain=[ - ('kind', '!=', 'view'), + ('type', '!=', None), ('company', '=', Eval('company')), ('id', 'not in', Eval('analytic_forbidden')), ('id', 'not in', Eval('analytic_optional')), @@ -35,7 +35,7 @@ class AnalyticAccount(metaclass=PoolMeta): analytic_forbidden = fields.Many2Many( 'analytic_account.account-forbidden-account.account', 'analytic_account', 'account', 'Analytic Forbidden', domain=[ - ('kind', '!=', 'view'), + ('type', '!=', None), ('company', '=', Eval('company')), ('id', 'not in', Eval('analytic_required')), ('id', 'not in', Eval('analytic_optional')), @@ -46,7 +46,7 @@ class AnalyticAccount(metaclass=PoolMeta): analytic_optional = fields.Many2Many( 'analytic_account.account-optional-account.account', 'analytic_account', 'account', 'Analytic Optional', domain=[ - ('kind', '!=', 'view'), + ('type', '!=', None), ('company', '=', Eval('company')), ('id', 'not in', Eval('analytic_required')), ('id', 'not in', Eval('analytic_forbidden')), @@ -70,7 +70,7 @@ class AnalyticAccount(metaclass=PoolMeta): current_accounts += [x.id for x in self.analytic_forbidden] current_accounts += [x.id for x in self.analytic_optional] pending_accounts = Account.search([ - ('kind', '!=', 'view'), + ('type', '!=', None), ('company', '=', self.company), ('id', 'not in', current_accounts), ]) diff --git a/tests/test_analytic_line_state.py b/tests/test_analytic_line_state.py index 41fb5e8..6ecff8b 100644 --- a/tests/test_analytic_line_state.py +++ b/tests/test_analytic_line_state.py @@ -68,13 +68,19 @@ class TestCase(ModuleTestCase): Account = pool.get('account.account') AnalyticAccount = pool.get('analytic_account.account') revenue_expense = Account.search([ - ('kind', 'in', ('revenue', 'expense')), + 'OR',('type.expense', '=', True), + ('type.revenue', '=', True) ]) receivable_payable = Account.search([ - ('kind', 'in', ('receivable', 'payable')), + 'OR', ('type.payable', '=', True), + ('type.receivable', '=', True) ]) other = Account.search([ - ('kind', '=', 'other'), + ('type','!=', None), + ('type.revenue', '=', False), + ('type.expense', '=', False), + ('type.payable', '=', False), + ('type.receivable', '=', False) ]) roots = AnalyticAccount.search([ ('type', '=', 'root') @@ -135,16 +141,16 @@ class TestCase(ModuleTestCase): ('code', '=', 'EXP'), ]) revenue, = Account.search([ - ('kind', '=', 'revenue'), + ('type.revenue', '=', True) ]) receivable, = Account.search([ - ('kind', '=', 'receivable'), + ('type.receivable', '=', True) ]) expense, = Account.search([ - ('kind', '=', 'expense'), + ('type.expense', '=', True) ]) payable, = Account.search([ - ('kind', '=', 'payable'), + ('type.payable', '=', True) ]) project1, = AnalyticAccount.search([ ('code', '=', 'P1'), @@ -256,16 +262,16 @@ class TestCase(ModuleTestCase): ('code', '=', 'EXP'), ]) revenue, = Account.search([ - ('kind', '=', 'revenue'), + ('type.expense', '=', True), ]) receivable, = Account.search([ - ('kind', '=', 'receivable'), + ('type.receivable', '=', True), ]) expense, = Account.search([ - ('kind', '=', 'expense'), + ('type.expense', '=', True), ]) payable, = Account.search([ - ('kind', '=', 'payable'), + ('type.payable', '=', True), ]) project1, = AnalyticAccount.search([ ('code', '=', 'P1'), @@ -326,7 +332,7 @@ class TestCase(ModuleTestCase): # Create some analytic lines on draft move and check how their # state change expense_move_line = [l for l in draft_move.lines - if l.account.kind == 'expense'][0] + if l.account.type.expense][0] line1, = AnalyticLine.create([{ 'credit': Decimal(0), 'debit': Decimal(600), @@ -389,10 +395,13 @@ class TestCase(ModuleTestCase): ('code', '=', 'REV'), ]) other, = Account.search([ - ('kind', '=', 'other'), + ('type.revenue', '=', False), + ('type.receivable', '=', False), + ('type.expense', '=', False), + ('type.payable', '=', False), ], limit=1) receivable, = Account.search([ - ('kind', '=', 'receivable'), + ('type.receivable', '=', True), ]) project1, = AnalyticAccount.search([ ('code', '=', 'P1'),