changeset 69d28a7108fe in modules/analytic_account:default
details: 
https://hg.tryton.org/modules/analytic_account?cmd=changeset;node=69d28a7108fe
description:
        Remove mandatory on analytic roots

        Having required field managed by user breaks automated workflows.

        issue7605
        review70531002
diffstat:

 CHANGELOG             |   1 +
 account.py            |  54 +-------------------------------------------------
 exceptions.py         |   4 ---
 message.xml           |   3 --
 view/account_form.xml |   2 -
 5 files changed, 3 insertions(+), 61 deletions(-)

diffs (151 lines):

diff -r 3520bc3b4615 -r 69d28a7108fe CHANGELOG
--- a/CHANGELOG Sat Jan 26 01:10:47 2019 +0100
+++ b/CHANGELOG Mon Feb 18 18:39:29 2019 +0100
@@ -1,3 +1,4 @@
+* Remove mandatory on analytic roots
 * Remove positive constraint on debit/credit
 
 Version 5.0.0 - 2018-10-01
diff -r 3520bc3b4615 -r 69d28a7108fe account.py
--- a/account.py        Sat Jan 26 01:10:47 2019 +0100
+++ b/account.py        Mon Feb 18 18:39:29 2019 +0100
@@ -16,7 +16,7 @@
 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 @@
         ('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 @@
     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 @@
         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 @@
                 ])
         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 @@
                 ])
         for account in root_accounts:
             accounts.append({
-                    'required': account.mandatory,
                     'root': account.id,
                     })
         return accounts
@@ -559,32 +538,3 @@
     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 -r 3520bc3b4615 -r 69d28a7108fe exceptions.py
--- a/exceptions.py     Sat Jan 26 01:10:47 2019 +0100
+++ b/exceptions.py     Mon Feb 18 18:39:29 2019 +0100
@@ -6,7 +6,3 @@
 
 class AccountValidationError(ValidationError):
     pass
-
-
-class RootValidationError(ValidationError):
-    pass
diff -r 3520bc3b4615 -r 69d28a7108fe message.xml
--- a/message.xml       Sat Jan 26 01:10:47 2019 +0100
+++ b/message.xml       Mon Feb 18 18:39:29 2019 +0100
@@ -6,9 +6,6 @@
         <record model="ir.message" id="msg_invalid_distribution">
             <field name="text">To save account "%(account)s" the sum of their 
distributions must be 100%%.</field>
         </record>
-        <record model="ir.message" id="msg_missing_root_account">
-            <field name="text">To save "%(name)s" you must set a value for 
analytics "%(analytics)s".</field>
-        </record>
         <record model="ir.message" id="msg_root_origin_unique">
             <field name="text">Only one account is allowed by analytic root 
and origin.</field>
         </record>
diff -r 3520bc3b4615 -r 69d28a7108fe view/account_form.xml
--- a/view/account_form.xml     Sat Jan 26 01:10:47 2019 +0100
+++ b/view/account_form.xml     Mon Feb 18 18:39:29 2019 +0100
@@ -22,8 +22,6 @@
             <field name="company"/>
             <label name="currency"/>
             <field name="currency"/>
-            <label name="mandatory"/>
-            <field name="mandatory"/>
             <field name="childs" colspan="4"
                 view_ids="analytic_account.account_view_list2"/>
         </page>

Reply via email to