from decimal import Decimal from typing import TYPE_CHECKING from api.v1.common.base_models import TenantScopedMixin, TimestampMixin from core.database import Base from sqlalchemy import ( ForeignKeyConstraint, Integer, Numeric, PrimaryKeyConstraint, SmallInteger, String, UniqueConstraint, ) from sqlalchemy.orm import Mapped, mapped_column, relationship if TYPE_CHECKING: from api.v1.modules.a76.pedmientos.models.pedimentos import Pedimentos class PedimentoIncrementables(Base, TenantScopedMixin, TimestampMixin): __tablename__ = "pedimento_incrementables" __table_args__ = ( PrimaryKeyConstraint("id", name="pedimento_incrementables_pkey"), ForeignKeyConstraint( ["tenant_id"], ["a76.tenants.id"], name="fk_pedimento_incrementables_tenant" ), ForeignKeyConstraint( ["company_id"], ["a76.company.id"], name="fk_pedimento_incrementables_company", ), ForeignKeyConstraint( ["pedimento_id"], ["a76.pedimentos.id"], ondelete="CASCADE", name="fk_pedimento_incrementables", ), UniqueConstraint( "tenant_id", "company_id", "pedimento_id", name="pedimento_incrementables_pedimento_id_key", ), {"schema": "a76"}, ) id: Mapped[int] = mapped_column(Integer) pedimento_id: Mapped[int] = mapped_column(Integer, nullable=False) insured_value: Mapped[Decimal] = mapped_column(Numeric(13, 2)) freight: Mapped[Decimal] = mapped_column(Numeric(13, 2)) insurance: Mapped[Decimal] = mapped_column(Numeric(13, 2)) packaging: Mapped[Decimal] = mapped_column(Numeric(13, 2)) others: Mapped[Decimal] = mapped_column(Numeric(13, 3)) deductibles: Mapped[Decimal] = mapped_column(Numeric(13, 3)) currency: Mapped[str] = mapped_column(String(3)) currency_factor: Mapped[Decimal] = mapped_column(Numeric(15, 8)) not_affect_usd_value: Mapped[int] = mapped_column(SmallInteger) not_affect_customs_value: Mapped[int] = mapped_column(SmallInteger) pedimento: Mapped["Pedimentos"] = relationship( "Pedimentos", back_populates="pedimento_incrementables" )