fix: Startdatum lag in der Zukunft – Saldi kamen, Umsaetze nicht
Beim ersten Abruf beginnt Certain am Tag NACH der neuesten vorhandenen Buchung des Kontos, damit es nicht in schon eingelesene Monate zurueckgreift. Liegt diese Buchung auf heute, ist der Tag danach morgen – und die Schnittstelle lehnt das rundweg ab: "date_from can not be in the future". Der Fehler faellt erst beim Umsatz-Abruf an. Die Saldi sind da schon gelesen und geschrieben, der Abruf bricht danach ab. Von aussen sieht es genau so aus, wie der Nutzer es beschrieben hat: Der Kontostand aktualisiert sich, die Buchungen kommen nie – und die Abweichung bleibt bestehen, obwohl man den Saldo gerade erst von der Bank uebernommen hat. Genau dieses Uebernehmen legt naemlich keine Buchung an, aber es gibt fast immer eine von heute. Das Startdatum wird jetzt auf heute begrenzt. Gegenprobe: Ohne die Begrenzung verlangt der Abruf den 28.08. an einem 27.08. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1053,3 +1053,35 @@ def test_verschluckter_umsatz_laesst_sich_nachholen(admin, fake_bank):
|
||||
|
||||
assert admin.post(f"/api/bank/links/{link['id']}/sync",
|
||||
params={"tage": 400}).status_code == 400
|
||||
|
||||
|
||||
def test_startdatum_liegt_nie_in_der_zukunft(admin, fake_bank):
|
||||
"""Liegt die neueste Buchung auf heute, waere der Tag danach morgen – und
|
||||
die Schnittstelle lehnt das ab ("date_from can not be in the future").
|
||||
Der Fehler faellt erst beim Umsatz-Abruf an, nachdem die Saldi schon
|
||||
gelesen sind: Es sieht dann aus, als kaemen nur Saldi und keine Umsaetze.
|
||||
"""
|
||||
_app(admin)
|
||||
heute = date.today()
|
||||
uid = f"acc-{secrets.token_hex(4)}"
|
||||
gegenstelle = fake_bank(
|
||||
konten=[{"uid": uid, "currency": "EUR"}],
|
||||
umsaetze=[dict(UMSATZ, entry_reference=f"tx-{secrets.token_hex(4)}",
|
||||
booking_date=heute.isoformat())])
|
||||
state = admin.post("/api/bank/connect",
|
||||
json={"aspsp_name": f"Zukunft-{secrets.token_hex(3)}",
|
||||
"country": "DE"}).json()["state"]
|
||||
admin.post(f"/api/bank/callback?state={state}&code=guter-code")
|
||||
link = [v for v in admin.get("/api/bank/links").json() if v["remote_uid"] == uid][0]
|
||||
konto = _konto(admin, name=f"Zukunft {secrets.token_hex(3)}", currency="EUR")
|
||||
# Eine Buchung von HEUTE – der Tag danach ist morgen.
|
||||
admin.post("/api/transactions", json={
|
||||
"type": "expense", "date": heute.isoformat(), "account_id": konto["id"],
|
||||
"amount_cents": 500, "payee": "von heute"})
|
||||
admin.post(f"/api/bank/links/{link['id']}/account/{konto['id']}")
|
||||
|
||||
r = admin.post(f"/api/bank/links/{link['id']}/sync")
|
||||
assert r.status_code == 200, r.text
|
||||
assert gegenstelle.date_from <= heute.isoformat(), \
|
||||
f"date_from liegt in der Zukunft: {gegenstelle.date_from}"
|
||||
assert r.json()["ab"] == heute.isoformat()
|
||||
|
||||
Reference in New Issue
Block a user