Files
certain/backend/migrations/versions/0025_eingang_wechselkurs.py
T
GuidoandClaude Opus 5 8309f58a67 feat: Kurs der Bank statt EZB-Naeherung, und Saldo uebernehmen
Bei einer Fremdwaehrungs-Zahlung nennt die Bank oft ihren echten Kurs und den
Betrag in der Ausgangswaehrung. Certain warf das weg und naeherte mit dem
EZB-Kurs. Das faellt genau dort auf, wo es teuer ist: Die spaeter gelieferte
Gegenseite eines Uebertrags laesst sich mit einem geschaetzten Betrag nicht als
dieselbe Bewegung wiedererkennen.

Der Uebertrag waehlt jetzt in drei Stufen: der von der Bank genannte
Gegenbetrag (exakt), sonst ihr Kurs, sonst die EZB. Nur die erste Stufe gilt
als bekannt – daran haengt, ob bei einem angebundenen Zielkonto nachgefragt
wird.

Der Parser klopft mehrere Formen ab, weil die Feldnamen je Anbindung
verschieden sind, und setzt still nichts, wenn keine passt. Keine dieser Formen
ist gegen echte Daten geprueft; ein falscher Kurs saehe aus wie ein richtiger,
deshalb wird lieber gar keiner gesetzt.

Ausserdem ein Knopf auf der Kontenseite: den Saldo der Bank als richtig
uebernehmen. Die Differenz wandert in den ANFANGSBESTAND – sie steht fuer
Bewegungen, die Certain nie gesehen hat, und genau dafuer ist er da. Eine
Korrekturbuchung stuende dagegen fuer immer in der Liste und liefe durch jede
Auswertung. Die Buchungen bleiben unangetastet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 10:18:33 +02:00

36 lines
1.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Was die Bank ueber die Umrechnung mitteilt.
Bei einer Fremdwaehrungs-Zahlung nennt die Bank oft ihren echten Kurs und den
Betrag in der Ausgangswaehrung. Certain warf das weg und rechnete mit dem
EZB-Kurs – einer Naeherung, die auf den Rappen nicht stimmt.
Das faellt genau dort auf, wo es teuer ist: Bucht man einen Uebertrag ueber
zwei Waehrungen, laesst sich die spaeter von der Bank gelieferte Gegenseite mit
einem geschaetzten Betrag nicht als dieselbe wiedererkennen.
Revision ID: 0025
Revises: 0024
"""
import sqlalchemy as sa
from alembic import op
revision = "0025"
down_revision = "0024"
branch_labels = None
depends_on = None
def upgrade() -> None:
with op.batch_alter_table("inbox_items") as b:
b.add_column(sa.Column("fx_rate", sa.Numeric(18, 8), nullable=True))
b.add_column(sa.Column("counter_amount_cents", sa.Integer(), nullable=True))
b.add_column(sa.Column("counter_currency", sa.String(length=3), nullable=True))
def downgrade() -> None:
with op.batch_alter_table("inbox_items") as b:
b.drop_column("counter_currency")
b.drop_column("counter_amount_cents")
b.drop_column("fx_rate")