52 lines
2.5 KiB
Python
52 lines
2.5 KiB
Python
from typing import Optional, TYPE_CHECKING
|
|
from sqlalchemy import Boolean, String, Text, Integer, ForeignKey
|
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
from core.database import Base
|
|
|
|
if TYPE_CHECKING:
|
|
from ..models import LineItem
|
|
|
|
class LineDescription(Base):
|
|
"""
|
|
Description details for line items
|
|
Consolidates all line-level data from Q and S tables
|
|
"""
|
|
__tablename__ = "item_line_descriptions"
|
|
__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"))
|
|
|
|
# Descriptions
|
|
description_spanish: Mapped[Optional[str]] = mapped_column(String(4999)) # DESCRIPCIONE
|
|
description_english: Mapped[Optional[str]] = mapped_column(String(4999)) # DESCRIPCIONI
|
|
extra_description: Mapped[Optional[str]] = mapped_column(Text) # DESCRIPCIONEEXTRA
|
|
part_description: Mapped[Optional[str]] = mapped_column(String(500)) # DESCRIPCIONPARTE
|
|
class_description: Mapped[Optional[str]] = mapped_column(String(500)) # DESCRIPCIONCLASE
|
|
package_description: Mapped[Optional[str]] = mapped_column(String(500)) # DESCRIPCIONBULTO
|
|
|
|
# Product attributes
|
|
brand: Mapped[Optional[str]] = mapped_column(String(50)) # MARCA
|
|
model: Mapped[Optional[str]] = mapped_column(String(50)) # MODELO
|
|
has_serial: Mapped[Optional[bool]] = mapped_column(Boolean) # LLEVASERIE
|
|
|
|
# Additional information
|
|
additional_info_spanish: Mapped[Optional[str]] = mapped_column(String(1000)) # INFOADICIONESP
|
|
additional_info_english: Mapped[Optional[str]] = mapped_column(String(1000)) # INFOADICIONING
|
|
|
|
# Lot and entry tracking
|
|
lot: Mapped[Optional[str]] = mapped_column(String(254)) # LOTE
|
|
entry_number: Mapped[Optional[str]] = mapped_column(String(50)) # NUMENTRADA/NUMERODEENTRADA
|
|
|
|
# Eighth rule and A31 fields
|
|
eighth_rule_fraction: Mapped[Optional[str]] = mapped_column(String(20)) # Eighth Rule Fraction
|
|
eighth_rule_line: Mapped[Optional[int]] = mapped_column(Integer) # Eighth Rule Line
|
|
consider_a31: Mapped[Optional[bool]] = mapped_column(Boolean, default=False) # Consider in A31
|
|
|
|
# Machinery location
|
|
machinery_location: Mapped[Optional[str]] = mapped_column(String(200)) # Machinery and equipment location
|
|
|
|
# Relationship (one-to-one)
|
|
line: Mapped["LineItem"] = relationship(back_populates="description") |