diff --git a/CHANGELOG b/CHANGELOG index 1000a555ce..f90218c656 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Remove mandatory on analytic roots * Remove positive constraint on debit/credit Version 5.0.0 - 2018-10-01 diff --git a/account.py b/account.py index a33023fae4..3b937eb60c 100644 --- a/account.py +++ b/account.py @@ -16,7 +16,7 @@ from trytond.pyson import Eval, If, PYSONEncoder, PYSONDecoder from trytond.transaction import Transaction from trytond.pool import Pool -from .exceptions import AccountValidationError, RootValidationError +from .exceptions import AccountValidationError __all__ = ['Account', 'AccountDistribution', 'OpenChartAccountStart', 'OpenChartAccount', @@ -90,11 +90,6 @@ class Account( ('debit-credit', 'Debit - Credit'), ('credit-debit', 'Credit - Debit'), ], 'Display Balance', required=True) - mandatory = fields.Boolean('Mandatory', states={ - 'invisible': Eval('type') != 'root', - }, - depends=['type'], - help="Make this account mandatory when filling documents") distributions = fields.One2Many( 'analytic_account.account.distribution', 'parent', "Distributions", @@ -137,10 +132,6 @@ class Account( def default_display_balance(): return 'credit-debit' - @staticmethod - def default_mandatory(): - return False - @classmethod def validate(cls, accounts): super(Account, cls).validate(accounts) @@ -393,16 +384,11 @@ class AnalyticAccountEntry(ModelView, ModelSQL): depends=['company']) account = fields.Many2One('analytic_account.account', 'Account', ondelete='RESTRICT', - states={ - 'required': Eval('required', False), - }, domain=[ ('root', '=', Eval('root')), ('type', 'in', ['normal', 'distribution']), ], - depends=['root', 'required', 'company']) - required = fields.Function(fields.Boolean('Required'), - 'on_change_with_required') + depends=['root', 'company']) company = fields.Function(fields.Many2One('company.company', 'Company'), 'on_change_with_company', searcher='search_company') @@ -461,12 +447,6 @@ class AnalyticAccountEntry(ModelView, ModelSQL): ]) return [(None, '')] + [(m.model, m.name) for m in models] - @fields.depends('root') - def on_change_with_required(self, name=None): - if self.root: - return self.root.mandatory - return False - def on_change_with_company(self, name=None): return None @@ -541,7 +521,6 @@ class AnalyticMixin(object): ]) for account in root_accounts: accounts.append({ - 'required': account.mandatory, 'root': account.id, }) return accounts @@ -559,32 +538,3 @@ class AnalyticMixin(object): def get_analytic_accounts_size(cls, records, name): roots = cls.default_analytic_accounts_size() return {r.id: roots for r in records} - - @classmethod - def validate(cls, analytics): - super(AnalyticMixin, cls).validate(analytics) - cls.check_roots(analytics) - - @classmethod - def check_roots(cls, analytics): - "Check that all mandatory root entries are defined in entries" - pool = Pool() - Account = pool.get('analytic_account.account') - all_mandatory_roots = {a for a in Account.search([ - ('type', '=', 'root'), - ('mandatory', '=', True), - ])} - for analytic in analytics: - analytic_roots = {e.root for e in analytic.analytic_accounts} - companies = {e.company for e in analytic.analytic_accounts} - mandatory_roots = set() - for mandatory in all_mandatory_roots: - if mandatory.company in companies: - mandatory_roots.add(mandatory) - mandatory_roots.difference_update(analytic_roots) - if mandatory_roots: - raise RootValidationError( - gettext('analytic_account.msg_missing_root_account', - name=analytic.rec_name, - analytics=', '.join( - (r.rec_name for r in mandatory_roots)))) diff --git a/exceptions.py b/exceptions.py index 671304ce46..745a952741 100644 --- a/exceptions.py +++ b/exceptions.py @@ -6,7 +6,3 @@ from trytond.model.exceptions import ValidationError class AccountValidationError(ValidationError): pass - - -class RootValidationError(ValidationError): - pass diff --git a/message.xml b/message.xml index 8afd274e7d..e9b2acbe7e 100644 --- a/message.xml +++ b/message.xml @@ -6,9 +6,6 @@ this repository contains the full copyright notices and license terms. --> To save account "%(account)s" the sum of their distributions must be 100%%. - - To save "%(name)s" you must set a value for analytics "%(analytics)s". - Only one account is allowed by analytic root and origin. diff --git a/view/account_form.xml b/view/account_form.xml index 0fc98a6555..41b63a36c8 100644 --- a/view/account_form.xml +++ b/view/account_form.xml @@ -22,8 +22,6 @@ this repository contains the full copyright notices and license terms. -->