"""Nutzer-Vorgabe 2026-09-05: Vorlagen sollen direkt editierbar sein (keine Versionierungspflicht mehr), ohne dass das rückwirkend bereits angelegte Objekte verändert. Bisher wurde die Sollmenge live aus Vorlagenposition gelesen (objekt.vorlage_id -> vorlagenposition.sollmenge) - das koppelt jede Vorlagen-Änderung sofort an alle Objekte, die diese Vorlage nutzen. Neue Spalte objektposition.sollmenge_vorlage kopiert die Sollmenge fest bei Anlage/ Duplizieren, Backfill übernimmt den aktuell gültigen Wert für Bestandsdaten. Revision ID: 0020_sollmenge_vorlage Revises: 0019_lager Create Date: 2026-09-05 """ from typing import Sequence, Union from alembic import op revision: str = "0020_sollmenge_vorlage" down_revision: Union[str, None] = "0019_lager" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.execute("ALTER TABLE objektposition ADD COLUMN sollmenge_vorlage NUMERIC") op.execute( """ UPDATE objektposition op SET sollmenge_vorlage = vp.sollmenge FROM objekt o, vorlagenposition vp WHERE op.objekt_id = o.id AND vp.vorlage_id = o.vorlage_id AND vp.material_id = op.material_id """ ) def downgrade() -> None: op.execute("ALTER TABLE objektposition DROP COLUMN sollmenge_vorlage")