I’m just getting started with the customer portal. I have a test customer with one invoice which has been paid. Why does the pay button still show? Clicking the pay button results in the following error:
Traceback (most recent call last):
File "apps/frappe/frappe/app.py", line 115, in application
response = frappe.api.handle(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/api/__init__.py", line 49, in handle
data = endpoint(**arguments)
^^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/api/v1.py", line 36, in handle_rpc_call
return frappe.handler.handle()
^^^^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/handler.py", line 51, in handle
data = execute_cmd(cmd)
^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/handler.py", line 87, in execute_cmd
return frappe.call(method, **frappe.form_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/__init__.py", line 1729, in call
return fn(*args, **newargs)
^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/utils/typing_validations.py", line 31, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py", line 583, in make_payment_request
grand_total = validate_and_calculate_grand_total(grand_total, existing_payment_request_amount)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py", line 574, in validate_and_calculate_grand_total
frappe.throw(_("Payment Request is already created"))
File "apps/frappe/frappe/__init__.py", line 607, in throw
msgprint(
File "apps/frappe/frappe/__init__.py", line 572, in msgprint
_raise_exception()
File "apps/frappe/frappe/__init__.py", line 523, in _raise_exception
raise exc
frappe.exceptions.ValidationError: Payment Request is already created
Why is pay button present for an invoice with status = paid?