"""Auszahlungs-Anträge: Status + Genehmigungs-Metadaten + Firmen-Opt-in

Revision ID: 0042
Revises: 0041
Create Date: 2026-07-08

Erweitert hours_payouts um einen Genehmigungs-Workflow: Mitarbeiter beantragt eine
Überstunden-Auszahlung (status='requested'), HR genehmigt/lehnt ab. Bestehende Zeilen
und HR-Direktbuchungen sind 'approved'. companies.payout_request_enabled schaltet die
Selbstbedienung pro Firma frei (Default aus → nur HR-Direktbuchung wie bisher).

Keine RLS-Änderung nötig: nur neue Spalten auf bereits gefencten Tabellen
(hours_payouts-Policy seit 0039, companies-Policy vorhanden) → conftest unverändert.
"""
from alembic import op

revision = "0042"
down_revision = "0041"
branch_labels = None
depends_on = None


def upgrade() -> None:
    op.execute("ALTER TABLE hours_payouts ADD COLUMN IF NOT EXISTS status VARCHAR(12) NOT NULL DEFAULT 'approved'")
    op.execute("ALTER TABLE hours_payouts ADD COLUMN IF NOT EXISTS decided_by UUID REFERENCES users(id) ON DELETE SET NULL")
    op.execute("ALTER TABLE hours_payouts ADD COLUMN IF NOT EXISTS decided_at TIMESTAMPTZ")
    op.execute("ALTER TABLE hours_payouts ADD COLUMN IF NOT EXISTS rejection_reason TEXT")
    op.execute("ALTER TABLE companies ADD COLUMN IF NOT EXISTS payout_request_enabled BOOLEAN NOT NULL DEFAULT FALSE")


def downgrade() -> None:
    op.execute("ALTER TABLE companies DROP COLUMN IF EXISTS payout_request_enabled")
    op.execute("ALTER TABLE hours_payouts DROP COLUMN IF EXISTS rejection_reason")
    op.execute("ALTER TABLE hours_payouts DROP COLUMN IF EXISTS decided_at")
    op.execute("ALTER TABLE hours_payouts DROP COLUMN IF EXISTS decided_by")
    op.execute("ALTER TABLE hours_payouts DROP COLUMN IF EXISTS status")
