feat: Aufschluesselung zeigt, was der Stichtag ausschliesst
Buchungen bis einschliesslich des Stichtags zaehlen nicht in den Kontostand – sie stecken schon im Anfangsbestand. In der Liste stehen sie aber, und in den Auswertungen zaehlen sie mit. Das ist richtig so, war in der Oberflaeche aber nirgends zu sehen: Der Unterschied zwischen dem, was man sieht, und dem, was gerechnet wird, liess sich nicht erklaeren. Ein Konto, dessen Stichtag nach dem Beginn des eingelesenen Auszugs liegt, zeigt deshalb einen Kontostand, der zu den sichtbaren Buchungen nicht passt – und niemand kaeme darauf, warum. Die Rechnung nennt jetzt Stichtag, Anzahl und Summe der ausgeschlossenen Buchungen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -269,3 +269,34 @@ def test_saldo_laesst_sich_aufschluesseln(admin):
|
||||
gegen = admin.get(f"/api/accounts/{b['id']}/aufschluesselung").json()
|
||||
assert gegen["teile"]["uebertraege_rein"] == {"cents": 30000, "anzahl": 1}
|
||||
assert gegen["uebertraege"][0]["raus"] is False
|
||||
|
||||
|
||||
def test_aufschluesselung_zeigt_was_der_stichtag_ausschliesst(admin):
|
||||
"""Buchungen bis zum Stichtag stehen in der Liste, zaehlen aber nicht in
|
||||
den Kontostand – sie stecken schon im Anfangsbestand. In der Oberflaeche
|
||||
war das unsichtbar, und der Unterschied zwischen Gesehenem und Gerechnetem
|
||||
nicht zu erklaeren."""
|
||||
import secrets
|
||||
|
||||
konto = admin.post("/api/accounts", json={
|
||||
"name": f"Stichtag {secrets.token_hex(3)}", "type": "girokonto",
|
||||
"currency": "CHF", "opening_balance_cents": 120000,
|
||||
"opening_date": "2026-08-15"}).json()
|
||||
|
||||
# Vor dem Stichtag – steckt schon im Anfangsbestand.
|
||||
admin.post("/api/transactions", json={
|
||||
"type": "expense", "date": "2026-08-10", "account_id": konto["id"],
|
||||
"amount_cents": 150000, "payee": "Alt"})
|
||||
# Danach – zaehlt.
|
||||
admin.post("/api/transactions", json={
|
||||
"type": "expense", "date": "2026-08-20", "account_id": konto["id"],
|
||||
"amount_cents": 30000, "payee": "Neu"})
|
||||
|
||||
teile = admin.get(f"/api/accounts/{konto['id']}/aufschluesselung").json()["teile"]
|
||||
assert teile["stichtag"] == "2026-08-15"
|
||||
assert teile["vor_stichtag"] == {"cents": -150000, "anzahl": 1}
|
||||
assert teile["ausgaben"] == {"cents": 30000, "anzahl": 1}, "nur die nach dem Stichtag"
|
||||
assert teile["saldo"]["cents"] == 120000 - 30000
|
||||
|
||||
# Und die Kontenliste sagt dasselbe.
|
||||
assert admin.get(f"/api/accounts/{konto['id']}").json()["balance_cents"] == 90000
|
||||
|
||||
Reference in New Issue
Block a user