feat: Pockets sind erkennbar und zuordenbar

Ein Revolut-Pocket bringt weder eigene IBAN noch eigenen Namen mit. Certain
hielt bisher nur uid, IBAN, Name und Waehrung fest – mehrere Konten derselben
Bank sahen damit gleich aus, und in der Zeile stand die rohe Kennung.

Jetzt werden Produktbezeichnung und die Kennung fuer Konten ohne IBAN
mitgefuehrt, der angezeigte Name faellt der Reihe nach auf Name, Details,
Produkt, Kennung, IBAN zurueck statt auf die uid, und der uebermittelte
Datensatz laesst sich aufklappen – nachsehen statt raten, wenn zwei Konten
gleich aussehen. Beim Neuverbinden werden die Merkmale aufgefrischt, ohne die
Zuordnung anzutasten.

Fehlt ein Konto in der Waehrung des Bankkontos, steht das jetzt dabei; vorher
war die Auswahl einfach leer.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Guido
2026-08-26 23:02:25 +02:00
co-authored by Claude Opus 5
parent d8995116cb
commit f684c752d8
8 changed files with 199 additions and 11 deletions
+3 -1
View File
@@ -610,7 +610,9 @@
"letters": "Vorhandene Anfangsbuchstaben",
"truncatedHint": "Fehlen ganze Buchstaben, ist die Liste unvollständig. Fehlt nur deine Bank, sieh unten nach, was unter demselben Anfangsbuchstaben steht.",
"sameLetter": "Alles, was in der Liste mit „{{buchstabe}}“ beginnt:",
"pickBankMore": "Die besten {{n}} von {{treffer}} Treffern – such genauer, wenn deine Bank nicht dabei ist:"
"pickBankMore": "Die besten {{n}} von {{treffer}} Treffern – such genauer, wenn deine Bank nicht dabei ist:",
"noAccountForCurrency": "Kein Konto in {{currency}} vorhanden. Leg zuerst eines an, dann lässt sich dieses Bankkonto zuordnen.",
"rawFields": "Was die Bank geschickt hat"
},
"bankReturn": {
"title": "Rückkehr von der Bank",
+3 -1
View File
@@ -610,7 +610,9 @@
"letters": "Initial letters present",
"truncatedHint": "If whole letters are missing, the list is incomplete. If only your bank is missing, check below what is listed under the same initial letter.",
"sameLetter": "Everything in the list starting with “{{buchstabe}}”:",
"pickBankMore": "The best {{n}} of {{treffer}} matches – search more precisely if yours is not among them:"
"pickBankMore": "The best {{n}} of {{treffer}} matches – search more precisely if yours is not among them:",
"noAccountForCurrency": "No {{currency}} account yet. Create one first, then this bank account can be mapped.",
"rawFields": "What the bank sent"
},
"bankReturn": {
"title": "Back from your bank",
+25 -2
View File
@@ -208,7 +208,12 @@ export default function Bankanbindung() {
<div className="sender-row" key={l.id}>
<div className="muted small selectable">
<strong>{l.remote_name || l.iban || l.remote_uid}</strong>
{l.iban ? ` · ${l.iban}` : ""} · {l.currency}
{/* Produktbezeichnung und Ersatzkennung sind bei Pockets das
Einzige, was sie unterscheidet – ohne IBAN, oft ohne
eigenen Namen sähen mehrere Konten sonst gleich aus. */}
{l.product ? ` · ${l.product}` : ""}
{l.iban ? ` · ${l.iban}` : l.other_id ? ` · ${l.other_id}` : ""}
{` · ${l.currency}`}
</div>
<select value={l.account_id || ""}
onChange={(e) => zuordnen(l, e.target.value)}>
@@ -219,9 +224,27 @@ export default function Bankanbindung() {
</select>
{l.account_id ? null : (
<p className="muted small" style={{ margin: "4px 0 0" }}>
{t("bank.mapHint")}
{/* Ohne Konto in dieser Währung ist die Auswahl leer, und
man sucht den Fehler bei der Bank statt bei sich. */}
{konten.some((k) => k.currency === l.currency)
? t("bank.mapHint")
: t("bank.noAccountForCurrency", { currency: l.currency })}
</p>
)}
{Object.keys(l.bank_felder || {}).length > 0 && (
<details className="muted small" style={{ marginTop: 4 }}>
<summary>{t("bank.rawFields")}</summary>
<div className="selectable" style={{ marginTop: 4 }}>
{Object.entries(l.bank_felder).map(([feld, wert]) => (
<div key={feld}>
{feld}: {typeof wert === "object" && wert !== null
? JSON.stringify(wert)
: String(wert)}
</div>
))}
</div>
</details>
)}
</div>
))
)}