55 lines
2.6 KiB
Python
55 lines
2.6 KiB
Python
from typing import Optional
|
|
from pydantic import BaseModel, Field, ConfigDict
|
|
|
|
# ============================================================================
|
|
# LINE DESCRIPTION SCHEMAS
|
|
# ============================================================================
|
|
|
|
class LineDescriptionBase(BaseModel):
|
|
"""Base schema for line descriptions"""
|
|
# Descriptions
|
|
description_spanish: Optional[str] = Field(None, max_length=4999, description="Description in Spanish (DESCRIPCIONE)")
|
|
description_english: Optional[str] = Field(None, max_length=4999, description="Description in English (DESCRIPCIONI)")
|
|
extra_description: Optional[str] = Field(None, description="Extra description (DESCRIPCIONEEXTRA)")
|
|
part_description: Optional[str] = Field(None, max_length=500, description="Part description (DESCRIPCIONPARTE)")
|
|
class_description: Optional[str] = Field(None, max_length=500, description="Class description (DESCRIPCIONCLASE)")
|
|
|
|
# Product attributes
|
|
brand: Optional[str] = Field(None, max_length=50, description="Brand (MARCA)")
|
|
model: Optional[str] = Field(None, max_length=50, description="Model (MODELO)")
|
|
has_serial: Optional[bool] = Field(None, description="Has serial (LLEVASERIE)")
|
|
|
|
# Additional information
|
|
additional_info_spanish: Optional[str] = Field(None, max_length=1000, description="Additional info in Spanish (INFOADICIONESP)")
|
|
additional_info_english: Optional[str] = Field(None, max_length=1000, description="Additional info in English (INFOADICIONING)")
|
|
|
|
# Lot and entry tracking
|
|
lot: Optional[str] = Field(None, max_length=254, description="Lot (LOTE)")
|
|
entry_number: Optional[str] = Field(None, max_length=50, description="Entry number (NUMENTRADA/NUMERODEENTRADA)")
|
|
|
|
# Eighth rule and A31 fields
|
|
eighth_rule_fraction: Optional[str] = Field(None, max_length=20, description="Eighth Rule Fraction")
|
|
eighth_rule_line: Optional[int] = Field(None, description="Eighth Rule Line")
|
|
consider_a31: Optional[bool] = Field(False, description="Consider in A31")
|
|
|
|
# Machinery location
|
|
machinery_location: Optional[str] = Field(None, max_length=200, description="Machinery and equipment location")
|
|
|
|
|
|
class LineDescriptionCreate(LineDescriptionBase):
|
|
"""Schema for creating line description"""
|
|
pass
|
|
|
|
|
|
class LineDescriptionUpdate(LineDescriptionBase):
|
|
"""Schema for updating line description"""
|
|
pass
|
|
|
|
|
|
class LineDescriptionResponse(LineDescriptionBase):
|
|
"""Schema for line description response"""
|
|
id: int
|
|
item_line_id: int
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|