{% extends "base.html" %} {% block title %}{{ t('payment_new.title') }} โ€” painfree{% endblock %} {% block body %}

{{ t('payment_new.heading') }}

{{ t('payment_new.lede') }}

{# The two refusals an operator can hit before the bank is involved -- the model's own shape rules and the Swiss Payment Standards rules -- render as one list. To the person fixing them they are the same kind of problem, and the location is the name of the input they typed into. #} {% if failures %}
{{ t('payment_new.refused') }} {% for failure in failures %} {% endfor %}
{{ t('payment_new.field') }}{{ t('payment_new.problem') }}
{{ failure.location }} {{ failure.message }}
{{ failure.rule }}
{% endif %} {% if not connection.initialised %}
{{ t('payment_new.not_initialised') }}

{{ t('payment_new.not_initialised_body') }}

{% endif %}

{{ t('payment_new.debtor') }}

{# A datalist rather than a select. `AccountInfo` is optional in the H005 schema, so a bank may publish none, and a catalogue is only as current as the last fetch -- a closed list built from either would refuse a payment the bank would have taken. Click and pick when the list is right, type when it is not. No script: this is what the element is for. #} {% if accounts %} {% for account in accounts %} {% endfor %} {% else %} {# Said rather than hidden: an empty dropdown with no explanation reads as "this connection has no accounts", which is not what it means. #}

{{ t('payment_new.debtor_iban_no_htd') }} {{ t('payment_new.debtor_iban_ask') }}

{% endif %}

{{ t('payment_new.creditor') }}

{{ t('payment_new.the_payment') }}

{# QRR and SCOR are not interchangeable and the rule about which goes with which account is in `painfree.sps`, not here. The form offers the choice and lets that module refuse the combination. #}
{{ t('common.cancel') }}

{{ t('payment_new.preview_hint') }}

{% endblock %}