From 70ebb98abbc4968d73ef8331c958e5b2630f58cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 4 Aug 2023 18:29:30 +0200 Subject: [PATCH] Replace payment wizard confirmation by button A button is easier for the user to discover than a keyword action. There is a small risk that user does not group the processing of payments but it existed also wizard the keyword action and it is compensated largely by the benefit of discoverability. --- modules/account_payment/__init__.py | 1 - modules/account_payment/payment.py | 26 +++++++++++-------- modules/account_payment/payment.xml | 19 +++++--------- .../tests/scenario_account_payment.rst | 10 +++---- .../scenario_account_payment_dunning.rst | 6 +++-- .../scenario_account_payment_invoice.rst | 4 +-- modules/account_payment/view/payment_form.xml | 1 + modules/account_payment/view/payment_list.xml | 1 + .../view/payment_process_start_form.xml | 8 ------ .../scenario_account_payment_braintree.rst | 9 +++---- ...ario_account_negative_payment_clearing.rst | 4 +-- .../scenario_account_payment_clearing.rst | 20 ++++---------- ...payment_clearing_invoice_amount_to_pay.rst | 8 ++---- .../tests/scenario_account_payment_stripe.rst | 12 +++------ ...cenario_account_payment_stripe_dispute.rst | 9 +++---- ...scenario_account_payment_stripe_intent.rst | 6 ++--- .../tests/scenario_sale_payment.rst | 6 ++--- .../scenario_sale_payment_no_clearing.rst | 3 +-- 18 files changed, 58 insertions(+), 95 deletions(-) delete mode 100644 modules/account_payment/view/payment_process_start_form.xml diff --git a/modules/account_payment/__init__.py b/modules/account_payment/__init__.py index 52f6be034a..1511f6b6cd 100644 --- a/modules/account_payment/__init__.py +++ b/modules/account_payment/__init__.py @@ -11,7 +11,6 @@ def register(): payment.Group, payment.Payment, account.MoveLine, - payment.ProcessPaymentStart, account.CreateDirectDebitStart, account.PayLineStart, account.PayLineAskJournal, diff --git a/modules/account_payment/payment.py b/modules/account_payment/payment.py index 0b38a427f3..46f1494ef0 100644 --- a/modules/account_payment/payment.py +++ b/modules/account_payment/payment.py @@ -21,7 +21,7 @@ from trytond.rpc import RPC from trytond.tools import ( cursor_dict, grouped_slice, reduce_ids, sortable_values) from trytond.transaction import Transaction -from trytond.wizard import Button, StateAction, StateView, Wizard +from trytond.wizard import StateAction, Wizard from .exceptions import OverpayWarning @@ -423,6 +423,14 @@ class Payment(Workflow, ModelSQL, ModelView): 'icon': 'tryton-forward', 'depends': ['state', 'kind'], }, + 'process_wizard': { + 'invisible': ~( + (Eval('state') == 'approved') + | ((Eval('state') == 'submitted') + & (Eval('kind') == 'receivable'))), + 'icon': 'tryton-launch', + 'depends': ['state', 'kind'], + }, 'proceed': { 'invisible': ( ~Eval('state').in_(['succeeded', 'failed']) @@ -578,6 +586,11 @@ class Payment(Workflow, ModelSQL, ModelView): def approve(cls, payments): pass + @classmethod + @ModelView.button_action('account_payment.act_process_payments') + def process_wizard(cls, payments): + pass + @classmethod @Workflow.transition('processing') def process(cls, payments, group): @@ -619,19 +632,10 @@ class Payment(Workflow, ModelSQL, ModelView): pass -class ProcessPaymentStart(ModelView): - 'Process Payment' - __name__ = 'account.payment.process.start' - - class ProcessPayment(Wizard): 'Process Payment' __name__ = 'account.payment.process' - start = StateView('account.payment.process.start', - 'account_payment.payment_process_start_view_form', [ - Button('Cancel', 'end', 'tryton-cancel'), - Button('Process', 'process', 'tryton-ok', default=True), - ]) + start_state = 'process' process = StateAction('account_payment.act_payment_group_form') def _group_payment_key(self, payment): diff --git a/modules/account_payment/payment.xml b/modules/account_payment/payment.xml index 45d161e90b..691c635cfe 100644 --- a/modules/account_payment/payment.xml +++ b/modules/account_payment/payment.xml @@ -503,6 +503,13 @@ this repository contains the full copyright notices and license terms. --> + + process_wizard + Process + + Are you sure you want to process the payments? + + proceed Processing @@ -533,22 +540,10 @@ this repository contains the full copyright notices and license terms. --> - - account.payment.process.start - form - payment_process_start_form - - Process Payments account.payment.process account.payment - - form_action - account.payment,-1 - - - diff --git a/modules/account_payment/tests/scenario_account_payment.rst b/modules/account_payment/tests/scenario_account_payment.rst index ce8a21b3c9..857b843cb1 100644 --- a/modules/account_payment/tests/scenario_account_payment.rst +++ b/modules/account_payment/tests/scenario_account_payment.rst @@ -105,9 +105,10 @@ Partially pay line:: True >>> payment.state 'approved' - >>> process_payment = Wizard('account.payment.process', [payment]) - >>> process_payment.execute('process') - >>> payment.reload() + >>> process_payment = payment.click('process_wizard') + >>> group, = process_payment.actions[0] + >>> group.payments == [payment] + True >>> payment.state 'processing' >>> line.reload() @@ -158,8 +159,7 @@ Partially fail to pay the remaining:: Decimal('30.00') >>> payment.click('submit') >>> payment.click('approve') - >>> process_payment = Wizard('account.payment.process', [payment]) - >>> process_payment.execute('process') + >>> process_payment = payment.click('process_wizard') >>> line.reload() >>> line.payment_amount Decimal('0.00') diff --git a/modules/account_payment/tests/scenario_account_payment_dunning.rst b/modules/account_payment/tests/scenario_account_payment_dunning.rst index 94eb55e292..e5f803c9c7 100644 --- a/modules/account_payment/tests/scenario_account_payment_dunning.rst +++ b/modules/account_payment/tests/scenario_account_payment_dunning.rst @@ -99,8 +99,10 @@ Create no dunning:: Fail the payment:: >>> payment.click('submit') - >>> process_payment = Wizard('account.payment.process', [payment]) - >>> process_payment.execute('process') + >>> process_payment = payment.click('process_wizard') + >>> group, = process_payment.actions[0] + >>> group.payments == [payment] + True >>> payment.click('fail') >>> payment.state 'failed' diff --git a/modules/account_payment/tests/scenario_account_payment_invoice.rst b/modules/account_payment/tests/scenario_account_payment_invoice.rst index f7b2aba5d0..e809aa0c3a 100644 --- a/modules/account_payment/tests/scenario_account_payment_invoice.rst +++ b/modules/account_payment/tests/scenario_account_payment_invoice.rst @@ -3,6 +3,7 @@ Invoice Payment Scenario ======================== Imports:: + >>> import datetime >>> from decimal import Decimal >>> from proteus import Model, Wizard @@ -90,8 +91,7 @@ Check amount to pay:: Process the payment:: - >>> process_payment = Wizard('account.payment.process', [payment]) - >>> process_payment.execute('process') + >>> process_payment = payment.click('process_wizard') Check amount to pay:: diff --git a/modules/account_payment/view/payment_form.xml b/modules/account_payment/view/payment_form.xml index 62246e4952..158ca2a648 100644 --- a/modules/account_payment/view/payment_form.xml +++ b/modules/account_payment/view/payment_form.xml @@ -44,6 +44,7 @@ this repository contains the full copyright notices and license terms. -->