{% extends "base.html" %} {% block title %}{{ account.name }} · Wealth Dashboard{% endblock %} {% block heading %}{{ account.name }}{% endblock %} {% block content %} {% if people %}
{% if owners %}{{ _f("Belongs to {names}.", names=owners | map(attribute='name') | join(", ")) }} {% else %}{{ _("Belongs to nobody yet, so it shows under Everyone only.") }}{% endif %} {{ _("Change") }}
{% endif %} {% if account.type == 'loan' %} {% if loan %}{{ _("Each point is a reading of the balance on that day — from a sync, a statement, the loan's schedule, or typed in above. The newest reading of a day stands for the day; between readings the last one holds.") }}
{{ 'Saxo Bank' if broker.provider == 'saxo' else 'Kraken' }} {% if broker.remote_label and broker.provider == 'saxo' %}· {{ _f("account {id}", id=broker.remote_label) }}{% endif %} {% if broker.provider == 'saxo' and saxo_state.environment == 'sim' %}· {{ _("simulation") }}{% endif %}
{{ _f("Last sync: {when}.", when=(d(broker.last_sync_at) if broker.last_sync_at else _("never"))) }} {% if broker.provider == 'saxo' %} {% if saxo_state.alive %}{{ _("The login is being kept alive.") }} {% else %}{{ _("The Saxo login has lapsed — connect again to resume syncing.") }}{% endif %} {% else %}{{ _("Read-only key; syncs with the daily sync.") }}{% endif %}
{% if broker.last_error %}{{ _("A coin sent to a wallet of your own is still yours. Name the wallet — an account of type Broker, created under Accounts — and a withdrawal becomes a move between the two, at the cost the units carried; a coin sent back in is the same the other way round.") }}
{% if broker.wallet_account_id %}{{ _("For the withdrawals synced before the wallet was named, and the deposits the wallet held the coins for. Nothing is booked twice, so it can be pressed again after rows have moved.") }}
{% endif %} {% endif %} {% else %} {% if saxo_state.configured %}{{ _("Saxo Bank: log in at Saxo and this account becomes your first Saxo account; any others are created beside it.") }}
{% endif %} {% if kraken_ready %} {% endif %} {% endif %}{{ link.aspsp_name }} ({{ link.aspsp_country }}){% if link.iban %} · {{ link.iban }}{% endif %}
{{ _f("Last sync: {when}.", when=(d(link.last_sync_at) if link.last_sync_at else _("never"))) }} {% if link.days_left is not none %} {% if link.days_left > 7 %} {{ _n(link.days_left, "Consent valid for {n} more day.", "Consent valid for {n} more days.") }} {% elif link.days_left >= 0 %} {{ _n(link.days_left, "Consent expires in {n} day — reconnect soon.", "Consent expires in {n} days — reconnect soon.") }} {% else %} {{ _("Consent expired. Reconnect to resume syncing.") }} {% endif %} {% endif %}
{% if link.last_error %}{{ _("Reconnect or change bank") }}
{% else %}{{ _("This account is not connected to a bank. Connecting it pulls the balance and the transaction history straight from the bank, with your own Enable Banking credentials.") }}
{% if configured %} {% set paste_link %}{{ _("Paste the code here") }}{% endset %}{{ _f("Started one already and landed on a dead page? {paste}.", paste=paste_link) | safe }}
{% else %} {% set settings_link %}{{ _("Settings") }}{% endset %}{{ _f("Add your Enable Banking Application ID and private key in {settings} first.", settings=settings_link) | safe }}
{% endif %} {% endif %}{{ _("Import a broker CSV") }} {{ _("Add by hand") }} {{ _("Edit or delete") }}
{% if positions %}| {{ _("Security") }} | {{ _("ISIN") }} | {{ _("Quantity") }} | {{ _("Net invested") }} | {{ _("Last traded at") }} | {{ _("At that price") }} |
|---|---|---|---|---|---|
| {{ p.name or p.isin }}{{ _n(p.trades, "{n} trade", "{n} trades") }}, {{ _f("last {date}", date=d(p.last_trade)) }} | {{ p.isin }} | {{ qty(p.quantity) }} {% if p.incomplete_history %}{{ _("export starts too late") }}{% endif %} | {{ money(p.net_invested, p.currency) }} | {% if p.last_price %}{{ qty(p.last_price) }}{% else %}—{% endif %} | {% if p.value_at_last_price %}{{ money(p.value_at_last_price, p.currency) }}{% else %}—{% endif %} |
{{ _("A negative quantity is not a short position: it is a sale whose purchase is older than the file you imported. Export a period that starts when you opened the account and re-import — overlap is free.") }}
{% endif %}{{ _("Quantities are the running sum of every buy and sell, imported or typed in. The last two columns use the price of your most recent trade, not a market price — this app has no price feed yet, and a stale number presented as a valuation is worse than none.") }} {{ _("Click a security to see, and correct, every row behind it.") }}
{% endif %} {% if sources | length > 1 and other_accounts %}{{ _("An account that holds two things at once — the rows of a wallet moved in from another app beside the ones an exchange syncs — can hand one source's rows to the account they belong to. The rows keep their ids, so nothing is imported twice afterwards.") }}
| {{ _("Through") }} | {{ _("Rows") }} | {{ _("From") }} | {{ _("To") }} | |
|---|---|---|---|---|
| {{ src.source or '—' }} | {{ src.rows }} | {{ d(src.first) }} | {{ d(src.last) }} |
| {{ _("When") }} | {{ _("File") }} | {{ _("Through") }} | {{ _("Rows brought") }} | |
|---|---|---|---|---|
| {{ im.at[:16].replace('T', ' ') }} | {{ im.filename or '—' }} | {{ im.source }} | {{ im.still }}{% if im.still != im.inserted %}{{ _f("of {n}", n=im.inserted) }}{% endif %} | {% if im.still %} {% else %}{{ _("nothing left of it") }}{% endif %} |
{{ _("An import can be taken back as one thing — every row it brought, and only those; a row a re-import found already there belongs to the import that first brought it. Wrong signs from a mapping: undo, forget the mapping, import again.") }}
{% endif %}| {{ _("Date") }} | {{ _("Description") }} | {{ _("Counterparty") }} | {{ _("Amount") }} | |
|---|---|---|---|---|
| {{ d(t.txn_date) }} | {{ t.description }}{% if t.source == 'manual' %}{{ _("typed in") }}{% endif %} | {{ t.counterparty or '' }} | {{ money(t.amount, t.currency) }} |
{{ _f("Showing the {shown} most recent of {total}.", shown=transactions|length, total=total_transactions) }}
{% endif %} {% else %}{{ _("No transactions yet.") }}
{% set add_link %}{{ _("Add by hand") }}{% endset %}{{ _f("Connect a bank, import a CSV, or {add}.", add=add_link) | safe }}