feat(line_items): update part number and component part number fields to use integers; enhance schemas and services for better data handling

This commit is contained in:
Galindo97
2026-01-22 09:52:21 -06:00
parent ce8712436e
commit 9b32c019ef
12 changed files with 777 additions and 36 deletions

View File

@@ -40,11 +40,11 @@ class LineItem(Base, TenantScopedMixin, TimestampMixin):
line_number: Mapped[int] = mapped_column(Integer) # LINEAIMPO/LINEAEXPO/LINEA
# Part identification
part_number: Mapped[Optional[str]] = mapped_column(
ForeignKey("a76.parts.id")
part_number: Mapped[Optional[int]] = mapped_column(
Integer, ForeignKey("a76.parts.id")
) # NUMPARTE
component_part_number: Mapped[Optional[str]] = mapped_column(
ForeignKey("a76.parts.id")
component_part_number: Mapped[Optional[int]] = mapped_column(
Integer, ForeignKey("a76.parts.id")
) # NUMPARTECOM
class_id: Mapped[Optional[int]] = mapped_column(
ForeignKey("a76.classes.id")

View File

@@ -44,12 +44,16 @@ from api.v1.modules.a24.fa.fa_item_lines.dto import (
class LineItemBase(BaseModel):
"""Base schema for line items"""
model_config = ConfigDict(populate_by_name=True)
line_number: int = Field(..., description="Line number")
# Part identification
part_number_id: Optional[int] = Field(None, description="Part number")
part_number_id: Optional[int] = Field(
None, description="Part number", alias="part_number", serialization_alias="part_number_id"
)
component_part_number_id: Optional[int] = Field(
None, description="Component part number"
None, description="Component part number", alias="component_part_number", serialization_alias="component_part_number_id"
)
class_id: Optional[int] = Field(None, description="Class code")
@@ -257,6 +261,12 @@ class LineItemResponse(LineItemBase):
if hasattr(data, key):
result[key] = getattr(data, key)
# Map model field names to schema field names for aliased fields
if hasattr(data, "part_number"):
result["part_number_id"] = data.part_number
if hasattr(data, "component_part_number"):
result["component_part_number_id"] = data.component_part_number
# Extract class info
if hasattr(data, "class_info") and data.class_info is not None:
result["class_code"] = data.class_info.class_code

View File

@@ -269,6 +269,12 @@ class ItemService:
line_dict["tenant_id"] = tenant_id
line_dict["company_id"] = company_id
# Map schema field names to model field names
if "part_number_id" in line_dict:
line_dict["part_number"] = line_dict.pop("part_number_id")
if "component_part_number_id" in line_dict:
line_dict["component_part_number"] = line_dict.pop("component_part_number_id")
# Create line item
db_line = LineItem(**line_dict)
db.add(db_line)
@@ -485,6 +491,12 @@ class ItemService:
line_dict["tenant_id"] = tenant_id
line_dict["company_id"] = company_id
# Map schema field names to model field names
if "part_number_id" in line_dict:
line_dict["part_number"] = line_dict.pop("part_number_id")
if "component_part_number_id" in line_dict:
line_dict["component_part_number"] = line_dict.pop("component_part_number_id")
db_line = LineItem(**line_dict)
db.add(db_line)
db.flush()