merge account.kind and account.type

This commit is contained in:
?ngel ?lvarez 2019-04-04 12:23:27 +02:00
parent 96b8fed26d
commit 27c236d845
3 changed files with 36 additions and 27 deletions

View file

@ -4,7 +4,7 @@ from itertools import chain
from trytond.model import ModelView, fields, dualmethod from trytond.model import ModelView, fields, dualmethod
from trytond.pool import Pool, PoolMeta from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval from trytond.pyson import Eval, Bool
from trytond.i18n import gettext from trytond.i18n import gettext
from trytond.exceptions import UserError from trytond.exceptions import UserError
@ -28,9 +28,9 @@ class Account(metaclass=PoolMeta):
('id', 'not in', Eval('analytic_forbidden')), ('id', 'not in', Eval('analytic_forbidden')),
('id', 'not in', Eval('analytic_optional')), ('id', 'not in', Eval('analytic_optional')),
], states={ ], 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_forbidden = fields.Many2Many(
'analytic_account.account-forbidden-account.account', 'account', 'analytic_account.account-forbidden-account.account', 'account',
'analytic_account', 'Analytic Forbidden', domain=[ 'analytic_account', 'Analytic Forbidden', domain=[
@ -39,9 +39,9 @@ class Account(metaclass=PoolMeta):
('id', 'not in', Eval('analytic_required')), ('id', 'not in', Eval('analytic_required')),
('id', 'not in', Eval('analytic_optional')), ('id', 'not in', Eval('analytic_optional')),
], states={ ], 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_optional = fields.Many2Many(
'analytic_account.account-optional-account.account', 'account', 'analytic_account.account-optional-account.account', 'account',
'analytic_account', 'Analytic Optional', domain=[ 'analytic_account', 'Analytic Optional', domain=[
@ -50,14 +50,14 @@ class Account(metaclass=PoolMeta):
('id', 'not in', Eval('analytic_required')), ('id', 'not in', Eval('analytic_required')),
('id', 'not in', Eval('analytic_forbidden')), ('id', 'not in', Eval('analytic_forbidden')),
], states={ ], 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( analytic_pending_accounts = fields.Function(
fields.Many2Many('analytic_account.account', None, None, fields.Many2Many('analytic_account.account', None, None,
'Pending Accounts', states={ 'Pending Accounts', states={
'invisible': Eval('kind') == 'view', 'invisible':~Bool(Eval('type')),
}, depends=['kind']), }, depends=['type']),
'on_change_with_analytic_pending_accounts') 'on_change_with_analytic_pending_accounts')

View file

@ -24,7 +24,7 @@ class AnalyticAccount(metaclass=PoolMeta):
analytic_required = fields.Many2Many( analytic_required = fields.Many2Many(
'analytic_account.account-required-account.account', 'analytic_account.account-required-account.account',
'analytic_account', 'account', 'Analytic Required', domain=[ 'analytic_account', 'account', 'Analytic Required', domain=[
('kind', '!=', 'view'), ('type', '!=', None),
('company', '=', Eval('company')), ('company', '=', Eval('company')),
('id', 'not in', Eval('analytic_forbidden')), ('id', 'not in', Eval('analytic_forbidden')),
('id', 'not in', Eval('analytic_optional')), ('id', 'not in', Eval('analytic_optional')),
@ -35,7 +35,7 @@ class AnalyticAccount(metaclass=PoolMeta):
analytic_forbidden = fields.Many2Many( analytic_forbidden = fields.Many2Many(
'analytic_account.account-forbidden-account.account', 'analytic_account.account-forbidden-account.account',
'analytic_account', 'account', 'Analytic Forbidden', domain=[ 'analytic_account', 'account', 'Analytic Forbidden', domain=[
('kind', '!=', 'view'), ('type', '!=', None),
('company', '=', Eval('company')), ('company', '=', Eval('company')),
('id', 'not in', Eval('analytic_required')), ('id', 'not in', Eval('analytic_required')),
('id', 'not in', Eval('analytic_optional')), ('id', 'not in', Eval('analytic_optional')),
@ -46,7 +46,7 @@ class AnalyticAccount(metaclass=PoolMeta):
analytic_optional = fields.Many2Many( analytic_optional = fields.Many2Many(
'analytic_account.account-optional-account.account', 'analytic_account.account-optional-account.account',
'analytic_account', 'account', 'Analytic Optional', domain=[ 'analytic_account', 'account', 'Analytic Optional', domain=[
('kind', '!=', 'view'), ('type', '!=', None),
('company', '=', Eval('company')), ('company', '=', Eval('company')),
('id', 'not in', Eval('analytic_required')), ('id', 'not in', Eval('analytic_required')),
('id', 'not in', Eval('analytic_forbidden')), ('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_forbidden]
current_accounts += [x.id for x in self.analytic_optional] current_accounts += [x.id for x in self.analytic_optional]
pending_accounts = Account.search([ pending_accounts = Account.search([
('kind', '!=', 'view'), ('type', '!=', None),
('company', '=', self.company), ('company', '=', self.company),
('id', 'not in', current_accounts), ('id', 'not in', current_accounts),
]) ])

View file

@ -68,13 +68,19 @@ class TestCase(ModuleTestCase):
Account = pool.get('account.account') Account = pool.get('account.account')
AnalyticAccount = pool.get('analytic_account.account') AnalyticAccount = pool.get('analytic_account.account')
revenue_expense = Account.search([ revenue_expense = Account.search([
('kind', 'in', ('revenue', 'expense')), 'OR',('type.expense', '=', True),
('type.revenue', '=', True)
]) ])
receivable_payable = Account.search([ receivable_payable = Account.search([
('kind', 'in', ('receivable', 'payable')), 'OR', ('type.payable', '=', True),
('type.receivable', '=', True)
]) ])
other = Account.search([ other = Account.search([
('kind', '=', 'other'), ('type','!=', None),
('type.revenue', '=', False),
('type.expense', '=', False),
('type.payable', '=', False),
('type.receivable', '=', False)
]) ])
roots = AnalyticAccount.search([ roots = AnalyticAccount.search([
('type', '=', 'root') ('type', '=', 'root')
@ -135,16 +141,16 @@ class TestCase(ModuleTestCase):
('code', '=', 'EXP'), ('code', '=', 'EXP'),
]) ])
revenue, = Account.search([ revenue, = Account.search([
('kind', '=', 'revenue'), ('type.revenue', '=', True)
]) ])
receivable, = Account.search([ receivable, = Account.search([
('kind', '=', 'receivable'), ('type.receivable', '=', True)
]) ])
expense, = Account.search([ expense, = Account.search([
('kind', '=', 'expense'), ('type.expense', '=', True)
]) ])
payable, = Account.search([ payable, = Account.search([
('kind', '=', 'payable'), ('type.payable', '=', True)
]) ])
project1, = AnalyticAccount.search([ project1, = AnalyticAccount.search([
('code', '=', 'P1'), ('code', '=', 'P1'),
@ -256,16 +262,16 @@ class TestCase(ModuleTestCase):
('code', '=', 'EXP'), ('code', '=', 'EXP'),
]) ])
revenue, = Account.search([ revenue, = Account.search([
('kind', '=', 'revenue'), ('type.expense', '=', True),
]) ])
receivable, = Account.search([ receivable, = Account.search([
('kind', '=', 'receivable'), ('type.receivable', '=', True),
]) ])
expense, = Account.search([ expense, = Account.search([
('kind', '=', 'expense'), ('type.expense', '=', True),
]) ])
payable, = Account.search([ payable, = Account.search([
('kind', '=', 'payable'), ('type.payable', '=', True),
]) ])
project1, = AnalyticAccount.search([ project1, = AnalyticAccount.search([
('code', '=', 'P1'), ('code', '=', 'P1'),
@ -326,7 +332,7 @@ class TestCase(ModuleTestCase):
# Create some analytic lines on draft move and check how their # Create some analytic lines on draft move and check how their
# state change # state change
expense_move_line = [l for l in draft_move.lines 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([{ line1, = AnalyticLine.create([{
'credit': Decimal(0), 'credit': Decimal(0),
'debit': Decimal(600), 'debit': Decimal(600),
@ -389,10 +395,13 @@ class TestCase(ModuleTestCase):
('code', '=', 'REV'), ('code', '=', 'REV'),
]) ])
other, = Account.search([ other, = Account.search([
('kind', '=', 'other'), ('type.revenue', '=', False),
('type.receivable', '=', False),
('type.expense', '=', False),
('type.payable', '=', False),
], limit=1) ], limit=1)
receivable, = Account.search([ receivable, = Account.search([
('kind', '=', 'receivable'), ('type.receivable', '=', True),
]) ])
project1, = AnalyticAccount.search([ project1, = AnalyticAccount.search([
('code', '=', 'P1'), ('code', '=', 'P1'),