{% extends "base.html" %} {% import "_jobs.html" as parts with context %} {% import "_bank.html" as bank with context %} {% block title %}{{ connection.connection_id }} — painfree{% endblock %} {% block body %}

{{ connection.connection_id }}

{{ connection.key_state.value }} {{ t('key_state.' ~ connection.key_state.value) }}

{% if updated %}
{{ t('connection.updated') }}
{% endif %} {% if staged %}
{{ t('connection.staged') }} {{ t('connection.staged_why') }}

{{ t('connection.compare') }}

{% endif %}
{# The three EBICS identifiers are what the bank knows this subscriber as. They are identifiers, not prose: never translated, never reformatted. #} {# Whether a payment on this connection can move money without a person. It belongs beside the identifiers rather than buried in the edit form. #}
HostID{{ connection.host_id }}
PartnerID{{ connection.partner_id }}
UserID{{ connection.user_id }}
{{ t('connections.host_url') }}{{ connection.host_url }}
{{ t('connection.ebics_version') }}{{ connection.ebics_version }}
{{ t('connection.product') }}{{ connection.product.name if connection.product else '—' }}
{{ t('connection.letter_quotes') }}{{ connection.letter_digest.value }}
{{ t('connection.request_eds') }} {% if connection.request_eds %}{{ t('connection.request_eds_on') }} {% else %}{{ t('connection.request_eds_off') }}{% endif %}
INI{% if connection.ini_sent %}{{ t('connection.sent_order_id') }} {{ connection.ini_order_id or '—' }}{% else %}{{ t('connection.not_sent') }}{% endif %}
HIA{% if connection.hia_sent %}{{ t('connection.sent_order_id') }} {{ connection.hia_order_id or '—' }}{% else %}{{ t('connection.not_sent') }}{% endif %}
{{ t('connection.can_submit') }}{{ t('common.yes') if connection.initialised else t('common.no') }}
{{ t('connection.registered') }}{{ connection.created_at | moment }}
{{ t('connection.key_lifecycle') }} {% if subscriber_keys %} {{ t('connection.ini_letter') }} {% endif %} {# Offered only once the bank has activated the subscriber. A submit button on a connection that cannot send produces a refusal an operator has to read to understand, where an absent button is already the explanation. #} {% if connection.initialised and may_on('payments:submit', connection.connection_id) %} {{ t('connection.test_payment') }} {% endif %} {{ t('connection.catalogue') }} {% if may('connections:write') %} {{ t('connection.edit') }} {% endif %} {% if principal and principal.admin %} {{ t('connection.who_has_access') }} {% endif %}

{{ t('connection.payment_schemes') }}

{# What this bank is told about a payment: the BTF triplet that announces the upload, and the `PmtTpInf` inside the document. They are shown together because a BTF claiming instant over a document that does not is refused with a code that will not explain itself. #} {% for name, profile in schemes %} {% endfor %}
{{ t('order.scheme') }}{{ t('order.attempt_btf') }} {{ t('order.attempt_payment_type') }} {{ t('schemes.ceiling') }}
{{ name }} {{ t('scheme.' ~ name) }} {% if name == connection.schemes.default.value %} {{ t('schemes.default') }}{% endif %} {{ profile.btf_summary() }} {% if profile.payment_type_summary() %}{{ profile.payment_type_summary() }} {% else %}{{ t('schemes.none') }}{% endif %} {% if profile.max_amount %}{{ profile.max_amount | amount('') }}{% else %}—{% endif %}
{% if not connection.schemes.instant_configured %}

{{ t('schemes.instant_unavailable') }}

{% endif %}

{{ t('schemes.refusal_codes') }}: {{ connection.schemes.instant_refusal_codes | join(' ') }}

{{ t('connection.our_keys') }}

{% if subscriber_keys %}{{ parts.key_table(subscriber_keys) }} {% else %}

{{ t('connection.no_keys') }}

{% endif %}

{{ t('connection.bank_keys') }}

{% if bank_keys %}{{ parts.key_table(bank_keys) }} {% else %}

{{ t('connection.no_bank_keys') }}

{% endif %}

{{ t('connection.key_operations') }}

{{ parts.job_table(jobs) }}

{{ t('connection.recent_orders') }}

{% if may('payments:read') %} {% if orders %} {% for row in orders %} {% endfor %}
{{ t('orders.order') }}{{ t('common.state') }} {{ t('connection.bank') }}{{ t('orders.accepted') }}
{{ row.order_id }} {{ row.state.value }} {% if row.return_code %}{{ row.return_code }} {{ bank.quiet(row.report_text) }}{% else %}—{% endif %} {{ row.accepted_at | moment }}
{% else %}

{{ t('connection.no_orders') }}

{% endif %} {% else %}

{{ t('connection.orders_need_scope') }}

{% endif %}
{% endblock %}