49 lines
2.5 KiB
Python
49 lines
2.5 KiB
Python
from decimal import Decimal
|
|
from typing import Optional, TYPE_CHECKING
|
|
from sqlalchemy import String, Integer, Numeric, SmallInteger, ForeignKey
|
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
from core.database import Base
|
|
|
|
if TYPE_CHECKING:
|
|
from ..line_items.models import LineItem
|
|
|
|
class LineQuantity(Base):
|
|
"""
|
|
Quantity details for line items
|
|
Consolidates all line-level data from Q and S tables
|
|
"""
|
|
__tablename__ = "item_line_quantities"
|
|
__table_args__ = {
|
|
"schema": "a76",
|
|
}
|
|
|
|
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
|
|
item_line_id: Mapped[int] = mapped_column(ForeignKey("a76.item_lines.id"))
|
|
|
|
# Quantities
|
|
quantity: Mapped[Optional[Decimal]] = mapped_column(Numeric(19, 8)) # CANTIMPO / CANTEXPO / CANTIMPODEF
|
|
alternate_quantity: Mapped[Optional[Decimal]] = mapped_column(Numeric(19, 8)) # CANTALTERNA
|
|
quantity_uma: Mapped[Optional[Decimal]] = mapped_column(Numeric(19, 8)) # CANTIMPOUMA / CANTEXPOUMA
|
|
auxiliary_quantity: Mapped[Optional[Decimal]] = mapped_column(Numeric(19, 8)) # CANTIMPOAUXILIAR / CANTEXPOAUXILIAR
|
|
|
|
# Quantities - Special (SCAF specific)
|
|
quantity_temp_export: Mapped[Optional[Decimal]] = mapped_column(Numeric(19, 8)) # CANTEXPOTEMP
|
|
quantity_existence: Mapped[Optional[Decimal]] = mapped_column(Numeric(19, 8)) # CANTEXISTENCIA
|
|
quantity_returned: Mapped[Optional[Decimal]] = mapped_column(Numeric(19, 8)) # CANTRETORNADA
|
|
quantity_returned_temp: Mapped[Optional[Decimal]] = mapped_column(Numeric(19, 8)) # CANTRETORNADATEMP
|
|
serial_count: Mapped[Optional[int]] = mapped_column(Integer) # CANT_SERIES/CANT_SERIESDEF
|
|
|
|
# Weight
|
|
net_weight: Mapped[Optional[Decimal]] = mapped_column(Numeric(19, 8)) # PESONETO
|
|
gross_weight: Mapped[Optional[Decimal]] = mapped_column(Numeric(19, 8)) # PESOBRUTO
|
|
|
|
# Packaging
|
|
package_id: Mapped[Optional[int]] = mapped_column(Integer) # CLAVEBULTOS (Originally package_key)
|
|
package_quantity: Mapped[Optional[int]] = mapped_column(Integer) # CANTBULTOS
|
|
# package_description removed as not in DB
|
|
container_quantity: Mapped[Optional[int]] = mapped_column(SmallInteger) # CANTBULCONT
|
|
container_description: Mapped[Optional[str]] = mapped_column(String(40)) # DESCCONTENEDOR
|
|
box_count: Mapped[Optional[str]] = mapped_column(String(30)) # NOCAJAS
|
|
|
|
# Relationship (one-to-one)
|
|
line: Mapped["LineItem"] = relationship(back_populates="quantity") |