From 40c9904b26d7dbb02aa50f8d2c1403fa53ef12dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 11 Oct 2021 18:22:19 +0200 Subject: [PATCH] Add succeed button for payment groups issue10809 review369811002 --- CHANGELOG | 2 ++ payment.py | 41 +++++++++++++++++++++++++++++- payment.xml | 10 ++++++++ tests/scenario_account_payment.rst | 3 ++- view/payment_group_form.xml | 2 ++ 5 files changed, 56 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index bbf74d6fc8..bc070c3b79 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +* Add succeed button for payment groups + Version 6.0.0 - 2021-05-03 * Bug fixes (see mercurial logs for details) * Add employee on payments for some states diff --git a/payment.py b/payment.py index 081342cc13..fd34db4e17 100644 --- a/payment.py +++ b/payment.py @@ -75,8 +75,9 @@ class Group(ModelSQL, ModelView): 'account.payment', 'group', 'Payments', readonly=True, domain=[ ('company', '=', Eval('company', -1)), + ('journal', '=', Eval('journal', -1)), ], - depends=['company']) + depends=['company', 'journal']) currency = fields.Function(fields.Many2One( 'currency.currency', "Currency"), 'on_change_with_currency') @@ -97,6 +98,20 @@ class Group(ModelSQL, ModelView): help="All the payments in the group are complete."), 'get_payment_aggregated', searcher='search_complete') + process_method = fields.Function( + fields.Selection('get_process_methods', "Process Method"), + 'on_change_with_process_method', searcher='search_process_method') + + @classmethod + def __setup__(cls): + super().__setup__() + cls._buttons.update( + succeed={ + 'invisible': Eval('payment_complete', False), + 'depends': ['payment_complete', 'process_method'], + }, + ) + @classmethod def __register__(cls, module_name): table_h = cls.__table_handler__(module_name) @@ -110,6 +125,22 @@ class Group(ModelSQL, ModelView): def default_company(): return Transaction().context.get('company') + @classmethod + def get_process_methods(cls): + pool = Pool() + Journal = pool.get('account.payment.journal') + field_name = 'process_method' + return Journal.fields_get([field_name])[field_name]['selection'] + + @fields.depends('journal') + def on_change_with_process_method(self, name=None): + if self.journal: + return self.journal.process_method + + @classmethod + def search_process_method(cls, name, clause): + return [('journal.' + clause[0],) + tuple(clause[1:])] + @classmethod def create(cls, vlist): pool = Pool() @@ -134,6 +165,14 @@ class Group(ModelSQL, ModelView): default.setdefault('payments', None) return super(Group, cls).copy(groups, default=default) + @classmethod + @ModelView.button + def succeed(cls, groups): + pool = Pool() + Payment = pool.get('account.payment') + payments = sum((g.payments for g in groups), ()) + Payment.succeed(payments) + @classmethod def _get_complete_states(cls): return ['succeeded', 'failed'] diff --git a/payment.xml b/payment.xml index b9e7c967e1..2e4c7d9ce8 100644 --- a/payment.xml +++ b/payment.xml @@ -171,6 +171,16 @@ this repository contains the full copyright notices and license terms. --> + + succeed + Succeed + + + + + + + Account Payment Group diff --git a/tests/scenario_account_payment.rst b/tests/scenario_account_payment.rst index f9d20733ac..c4c0380389 100644 --- a/tests/scenario_account_payment.rst +++ b/tests/scenario_account_payment.rst @@ -120,7 +120,8 @@ Check the properties of the payment group:: Success the payment and recheck the payment group:: - >>> payment.click('succeed') + >>> group.click('succeed') + >>> payment.reload() >>> payment.succeeded_by == employee True >>> payment.state diff --git a/view/payment_group_form.xml b/view/payment_group_form.xml index 32b8cddaea..e0aeeaaf9d 100644 --- a/view/payment_group_form.xml +++ b/view/payment_group_form.xml @@ -19,4 +19,6 @@ this repository contains the full copyright notices and license terms. -->