Files
certain/backend/migrations/versions/0029_ausgabe_ist_kein_verlust.py
T
ScarriffleandClaude Opus 5 ff621984dc feat: Eine Ausgabe, die kein Verlust ist
Sparen zaehlt im Budget wie eine Ausgabe – zu Recht, das Geld ist diesen Monat
gebunden. Es stand danach aber in Rot da, und wer tausend zuruecklegte statt
achthundert, bekam eine Warnung fuer etwas Gutes.

Ein Haken an der Kategorie stellt das ab. Zwei Folgen:

Der Betrag steht neutral. NICHT gruen: Gruen heisst in Certain ueberall "Geld
kommt rein", und CHF 1'010 in Gruen liest sich als Einnahme. Grau sagt genau
das Richtige – kein Verlust, kein Gewinn.

Und mehr als geplant ist keine Ueberschreitung mehr. Das gilt auch eine Ebene
hoeher: Eine Gruppe misst sich an dem, was WIRKLICH zu viel war. Sonst faerbt
sich "Finanzen" rot, weil jemand gespart hat, und die echte Ueberschreitung
daneben faellt nicht mehr auf. Angezeigt werden weiter die vollen Summen; nur
das Urteil laesst das Sparen aus.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 15:28:36 +02:00

32 lines
921 B
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.
"""Eine Ausgabe, die kein Verlust ist.
Sparen zaehlt im Budget wie eine Ausgabe – zu Recht, denn das Geld ist diesen
Monat nicht mehr verfuegbar. Es stand danach aber in Rot da, und mehr gespart
als geplant galt als Budget-Ueberschreitung. Wer tausend zuruecklegt statt
achthundert, bekam eine Warnung fuer etwas Gutes.
Mit diesem Haken steht der Betrag neutral, und ein Ueberschreiten ist keins.
Revision ID: 0029
Revises: 0028
"""
import sqlalchemy as sa
from alembic import op
revision = "0029"
down_revision = "0028"
branch_labels = None
depends_on = None
def upgrade() -> None:
with op.batch_alter_table("categories") as batch:
batch.add_column(sa.Column("spending_is_good", sa.Boolean(), nullable=False,
server_default=sa.false()))
def downgrade() -> None:
with op.batch_alter_table("categories") as batch:
batch.drop_column("spending_is_good")