from src.models.base import Base, UUIDPrimaryMixin from decimal import Decimal import uuid from sqlalchemy import ForeignKey, String, Enum as SAEnum, Numeric from sqlalchemy.orm import Mapped, mapped_column from src.schemas.enums import CounterpartyType class OsvEntry(Base, UUIDPrimaryMixin): __tablename__ = "osv_entry" recognition_job_id: Mapped[uuid.UUID] = mapped_column(ForeignKey("recognition_job.id"), nullable=False) legal_entity_id: Mapped[uuid.UUID] = mapped_column(ForeignKey("legal_entity.id")) stored_file_id: Mapped[uuid.UUID] = mapped_column(ForeignKey('stored_file.id'), nullable=False) account_code: Mapped[str] = mapped_column(String) account_id: Mapped[uuid.UUID] = mapped_column(ForeignKey('chart_of_account.id')) account_root: Mapped[str] = mapped_column(String) counterparty_name: Mapped[str] = mapped_column(String) counterparty_inn: Mapped[str] = mapped_column(String) counterparty_id: Mapped[uuid.UUID] = mapped_column(ForeignKey("legal_entity.id"), nullable=True) opening_debit: Mapped[Decimal] = mapped_column(Numeric) opening_credit: Mapped[Decimal] = mapped_column(Numeric) turnover_debit: Mapped[Decimal] = mapped_column(Numeric) turnover_credit: Mapped[Decimal] = mapped_column(Numeric) closing_debit: Mapped[Decimal] = mapped_column(Numeric) closing_credit: Mapped[Decimal] = mapped_column(Numeric)