{% extends "ui/templates/base/layout.html" %} {% block content %}

Accounting Intelligence · Phase 11

Bank → Tally Review

Import a completed Bank Analyzer job, reuse the common ledger-learning engine for non-contra transactions, and post only reviewed Payment / Receipt / Contra vouchers through the durable Local Agent job system.

Bank Analyzer
{% if message %}
{{ message }}
{% endif %} {% if error %}
{{ error }}
{% endif %}
{% if selected_client %}

{{ selected_client.client_name }}

{{ total }} bank transaction(s). Matched multi-bank contra rows are visibly linked by pair ID.

{% for tx in rows %} {% set choice = choices.get(tx.id) %}
{{ tx.transaction_date }} · {{ tx.bank_name }}
{{ tx.account_number }}
{{ tx.narration }}
₹{{ '%.2f'|format(tx.amount) }} · {{ tx.direction }}
{% if tx.contra_pair_id %}
{{ tx.contra_pair_id }} · {{ tx.contra_counter_bank }} / {{ tx.contra_counter_account }} · {{ '%.0f'|format(tx.contra_confidence) }}%
{% endif %}
Suggestion
{{ tx.suggested_voucher_type }}
{{ tx.auto_party or '—' }}
{{ tx.suggested_ledger_name or tx.analyzer_ledger or 'Review ledger' }}
Confidence {{ tx.suggested_confidence }}%
{% if tx.review_status != 'reviewed' %}
{% elif tx.posting_status in ['not_started','preflight_failed','posting_failed'] %}
Reviewed: {{ tx.final_voucher_type }}{% if tx.final_ledger_name %} · {{ tx.final_ledger_name }}{% endif %}
{% if tx.last_error %}
{{ tx.last_error }}
{% endif %}
{% elif tx.posting_status in ['preflight_queued','preflight_claimed','posting_queued','posting_claimed'] %}
{{ tx.posting_status|replace('_',' ')|title }}. Refresh the page after the workstation processes the durable job.
{% elif tx.posting_status == 'preflight_ready' and choice %}
{% if choice.duplicate_candidates %}
Possible duplicate exists in Tally. Posting is blocked until resolved.
{% endif %} {% if tx.final_voucher_type == 'Contra' %} {% else %} {% endif %}
{% elif tx.posting_status == 'posted' %}
Posted. Voucher {{ tx.tally_voucher_number or tx.tally_voucher_id or 'created' }}.
{% elif tx.posting_status == 'posting_indeterminate' %}
Manual verification required — do not retry. {{ tx.last_error }}
{% endif %}
{% else %}
No imported bank transactions.
{% endfor %}
{% if pages > 1 %}
Page {{ page }} of {{ pages }}
{% if page>1 %}Previous{% endif %}{% if pageNext{% endif %}
{% endif %}
{% endif %}
{% endblock %}