"""Phase 7b: Stückzahl und Gebinde trennen Bis hierher steckten beide in `quantity`/`unit`. Bei "500 ml" zu 2,99 EUR rechnete die Summenbildung 500 × 2,99 = 1495 EUR. Die vorhandenen Werte werden als Gebinde übernommen (aus "500 ml" wird pack_size=500, pack_unit=ml) und die Stückzahl auf 1 gesetzt. Das ist die sichere Richtung: Wo bisher tatsächlich eine Stückzahl gemeint war, stimmt die Summe danach - sie wird nur nicht mehr vervielfacht. Revision ID: 0010 Revises: 0009 Create Date: 2026-08-08 """ from collections.abc import Sequence import sqlalchemy as sa from alembic import op revision: str = "0010" down_revision: str | None = "0009" branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None def upgrade() -> None: op.add_column( "list_item", sa.Column("count", sa.Integer(), nullable=False, server_default=sa.text("1")), ) op.alter_column("list_item", "quantity", new_column_name="pack_size", existing_type=sa.Numeric(10, 3)) op.alter_column("list_item", "unit", new_column_name="pack_unit", existing_type=sa.String(32)) op.alter_column("price_point", "quantity", new_column_name="pack_size", existing_type=sa.Numeric(10, 3)) op.alter_column("price_point", "unit", new_column_name="pack_unit", existing_type=sa.String(32)) op.add_column("product_cache", sa.Column("count", sa.Integer(), nullable=True)) op.alter_column("product_cache", "quantity", new_column_name="pack_size", existing_type=sa.Numeric(10, 3)) op.alter_column("product_cache", "unit", new_column_name="pack_unit", existing_type=sa.String(32)) def downgrade() -> None: op.alter_column("product_cache", "pack_unit", new_column_name="unit", existing_type=sa.String(32)) op.alter_column("product_cache", "pack_size", new_column_name="quantity", existing_type=sa.Numeric(10, 3)) op.drop_column("product_cache", "count") op.alter_column("price_point", "pack_unit", new_column_name="unit", existing_type=sa.String(32)) op.alter_column("price_point", "pack_size", new_column_name="quantity", existing_type=sa.Numeric(10, 3)) op.alter_column("list_item", "pack_unit", new_column_name="unit", existing_type=sa.String(32)) op.alter_column("list_item", "pack_size", new_column_name="quantity", existing_type=sa.Numeric(10, 3)) op.drop_column("list_item", "count")