Files
certain/backend/migrations/versions/0036_gebundenes_geld.py
T
ScarriffleandClaude Opus 5 76dbd3b481 feat: Geld, an das man nicht herankommt, zaehlt nicht mehr als verfuegbar
Eine Saeule 3a ist gesperrt – bis zur Rente, zur Selbstaendigkeit oder
zur Auswanderung. Bisher zaehlte ihr Stand in dieselbe Summe wie das
Girokonto, und die Antwort auf "wie viel habe ich" war um genau diesen
Betrag zu hoch. Das Geld steht da und ist doch nicht da.

Konten lassen sich jetzt als gebunden kennzeichnen. "Gesamt" zeigt dann
nur noch, was wirklich ausgegeben werden kann; darunter steht
"zusaetzlich CHF 2'004.61 gebunden" – aufklappbar, mit jedem Konto
einzeln. Eine Summe, die man nicht nachrechnen kann, muss man glauben.

Verschwiegen wird nichts: Der Saldo bleibt am Konto stehen, und
Vermoegensverlauf wie Nettovermoegen rechnen weiter damit. Es nicht
ausgeben zu koennen heisst nicht, es nicht zu besitzen – das ist der
ganze Unterschied, und ein Test haelt ihn fest.

Ein eigenes Kennzeichen, keine Ableitung aus dem Kontotyp: Ein frei
verkaeufliches Depot und eine gesperrte Saeule 3a kommen beide als
"depot" herein. Am Typ laesst sich das nicht ablesen – am
ausdruecklichen Eintrag schon.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-01 20:29:34 +02:00

37 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.
"""Geld, an das man nicht herankommt.
Eine Saeule 3a ist gesperrt – bis zur Rente, zur Selbstaendigkeit oder zur
Auswanderung. Bisher zaehlte ihr Stand in dieselbe Summe wie das Girokonto, und
die Antwort auf „wie viel habe ich" war um genau diesen Betrag zu hoch.
Das Konto behaelt seinen Saldo und bleibt Teil des Vermoegens. Nur die Summe,
die sagt, was ausgegeben werden kann, laesst es aussen vor und weist es
daneben aus.
Kein Ableiten aus dem Kontotyp: Ein frei verkaeufliches Depot und eine
gesperrte Saeule 3a kommen beide als „depot" herein.
Revision ID: 0036
Revises: 0035
"""
import sqlalchemy as sa
from alembic import op
revision = "0036"
down_revision = "0035"
branch_labels = None
depends_on = None
def upgrade() -> None:
# Ohne batch_alter_table, wie in 0034/0035: Eine Spalte anhaengen kann
# SQLite direkt, der Tabellen-Umbau risse ueber ON DELETE CASCADE haengende
# Zeilen mit (tests/test_migrations.py).
op.execute(sa.text(
"ALTER TABLE accounts ADD COLUMN is_locked BOOLEAN NOT NULL DEFAULT 0"))
def downgrade() -> None:
op.execute(sa.text("ALTER TABLE accounts DROP COLUMN is_locked"))