"""Tax rate model — ERP tax configuration.""" from __future__ import annotations import uuid from datetime import datetime from decimal import Decimal from sqlalchemy import Boolean, DateTime, Index, Numeric, String from sqlalchemy.dialects.postgresql import UUID as PGUUID from sqlalchemy.orm import Mapped, mapped_column from app.core.db import Base, TenantMixin class TaxRate(Base, TenantMixin): """Tax rate entity — e.g. 'Mehrwertsteuer 19%'.""" __tablename__ = "tax_rates" __table_args__ = ( Index("ix_tax_rates_tenant_name", "tenant_id", "name"), Index("ix_tax_rates_tenant_default", "tenant_id", "is_default"), ) id: Mapped[uuid.UUID] = mapped_column( PGUUID(as_uuid=True), primary_key=True, default=uuid.uuid4 ) name: Mapped[str] = mapped_column(String(100), nullable=False) rate: Mapped[Decimal] = mapped_column(Numeric(5, 2), nullable=False) is_default: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False) country: Mapped[str | None] = mapped_column(String(2), nullable=True)