from datetime import datetime from sqlalchemy import Boolean, DateTime, ForeignKey, String, Index from sqlalchemy.orm import Mapped, mapped_column from app.models.base import Base class InvoiceHeader(Base): """发票抬头表""" __tablename__ = "invoice_headers" id: Mapped[str] = mapped_column(String(32), primary_key=True, comment="主键") user_id: Mapped[str] = mapped_column( String(32), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, comment="用户ID" ) type: Mapped[str] = mapped_column(String(16), nullable=False, comment="抬头类型: personal/company") name: Mapped[str] = mapped_column(String(128), nullable=False, comment="抬头名称") tax_no: Mapped[str | None] = mapped_column(String(32), nullable=True, comment="税号") register_address: Mapped[str | None] = mapped_column(String(256), nullable=True, comment="注册地址") register_phone: Mapped[str | None] = mapped_column(String(32), nullable=True, comment="注册电话") bank_name: Mapped[str | None] = mapped_column(String(128), nullable=True, comment="开户行") bank_account: Mapped[str | None] = mapped_column(String(64), nullable=True, comment="银行账号") email: Mapped[str | None] = mapped_column(String(128), nullable=True, comment="接收邮箱") is_default: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, comment="是否默认") created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), nullable=False, comment="创建时间" ) updated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), nullable=False, comment="更新时间" ) __table_args__ = ( Index('idx_invoice_headers_user', 'user_id'), )