feat: Certain fragt in der Buchungsliste nach, ob es ein Uebertrag ist
Die Erkennung gab es laengst – aber nur auf der Seite "Zu erledigen", in einer Karte, die man erst finden muss. Wer in der Buchungsliste steht und die zweite Haelfte eines Uebertrags sieht, greift stattdessen zum ↔-Knopf und legt einen zweiten Uebertrag an. Genau so ist heute eine Zahlung doppelt verschoben worden. Jetzt steht die Frage in der Zeile: "Uebertrag von/nach Revolut CHF?" mit Verbinden und Ignorieren. Ignorieren wird gemerkt, sonst fragte Certain bei jedem Laden erneut. Dafuer gibt es die Suche jetzt auch als reines Nachschlagen: ``finde`` mit ``nur_vorschlaege`` verknuepft nichts, und dahinter liegt GET /uebertraege/vorschlaege. Eine Ansicht, die bloss fragt, darf beim Hinsehen nichts veraendern – sonst entschiede das Anschauen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -283,3 +283,29 @@ def test_ignorierte_paare_kehren_nicht_zurueck(admin):
|
||||
admin.post("/api/uebertraege/ignorieren", json={"a_id": aus["id"], "b_id": ein["id"]})
|
||||
danach = _suchen(admin)["vorschlaege"]
|
||||
assert not any({v["a"]["id"], v["b"]["id"]} == {aus["id"], ein["id"]} for v in danach)
|
||||
|
||||
|
||||
def test_vorschlaege_veraendern_nichts(admin):
|
||||
"""Eine Ansicht, die bloss fragt „ist das ein Uebertrag?", darf beim
|
||||
Hinsehen nichts verknuepfen – sonst entscheidet das Anschauen."""
|
||||
import secrets
|
||||
|
||||
a = _konto(admin, name=f"V-A {secrets.token_hex(3)}")
|
||||
b = _konto(admin, name=f"V-B {secrets.token_hex(3)}")
|
||||
betrag = 30000 + secrets.randbelow(900)
|
||||
# Mit Hinweis im Text – das wuerde /suchen automatisch verknuepfen.
|
||||
raus = admin.post("/api/transactions", json={
|
||||
"type": "expense", "date": "2026-08-20", "account_id": a["id"],
|
||||
"amount_cents": betrag, "payee": f"Uebertrag auf {b['name']}"}).json()
|
||||
rein = admin.post("/api/transactions", json={
|
||||
"type": "income", "date": "2026-08-20", "account_id": b["id"],
|
||||
"amount_cents": betrag, "payee": "Gutschrift"}).json()
|
||||
|
||||
r = admin.get("/api/uebertraege/vorschlaege").json()
|
||||
assert r["verknuepft"] == 0, "beim Fragen darf nichts verknuepft werden"
|
||||
paare = [(v["a"]["id"], v["b"]["id"]) for v in r["vorschlaege"]]
|
||||
assert any({raus["id"], rein["id"]} == set(p) for p in paare)
|
||||
|
||||
# Und es ist wirklich keine Verknuepfung entstanden.
|
||||
links = admin.get("/api/transactions/links").json()
|
||||
assert str(raus["id"]) not in links and str(rein["id"]) not in links
|
||||
|
||||
Reference in New Issue
Block a user