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. -->
-
-