Se esta trabajando en el formulario de partes y sus relaciones

This commit is contained in:
2026-01-06 18:02:45 -06:00
parent 2182f0b739
commit 7c5f78f258
9 changed files with 595 additions and 252 deletions

View File

@@ -3,27 +3,45 @@ from decimal import Decimal
from typing import List, Optional
from pydantic import BaseModel, Field
# --- DTO DE CREACIÓN ---
class PartCreateDTO(BaseModel):
client_id: int
part_number: str = Field(..., max_length=50)
# Campos Generales
description_spanish: Optional[str] = None
description_english: Optional[str] = None
part_class: Optional[str] = None
unit_of_measure: Optional[str] = "PZ"
commercial_part_number: Optional[str] = None
country_of_origin: Optional[str] = "MEX"
# Costos y Pesos
unit_cost: Optional[Decimal] = Decimal("0.0")
currency_key: Optional[str] = "USD"
unit_weight: Optional[Decimal] = Decimal("0.0")
weight_type: Optional[str] = "KG"
# --- LOS QUE FALTABAN Y AHORA SE GUARDARÁN ---
added_value: Optional[Decimal] = None
part_photo: Optional[str] = None
alternate_unit_measure: Optional[str] = None
license_code: Optional[str] = None
export_code: Optional[str] = None
exclusion_symbol: Optional[str] = None
# Regulatorios
fraction: Optional[str] = None
us_fraction: Optional[str] = None
supplier: Optional[str] = None
fda_key: Optional[str] = None
fcc_key: Optional[str] = None
eccn: Optional[str] = None
# Estatus
is_active: Optional[bool] = True
# --- DTO DE ACTUALIZACIÓN ---
class PartUpdateDTO(BaseModel):
description_spanish: Optional[str] = None
description_english: Optional[str] = None
@@ -31,10 +49,18 @@ class PartUpdateDTO(BaseModel):
unit_of_measure: Optional[str] = None
commercial_part_number: Optional[str] = None
country_of_origin: Optional[str] = None
unit_cost: Optional[Decimal] = None
currency_key: Optional[str] = None
unit_weight: Optional[Decimal] = None
weight_type: Optional[str] = None
added_value: Optional[Decimal] = None
part_photo: Optional[str] = None
alternate_unit_measure: Optional[str] = None
license_code: Optional[str] = None
export_code: Optional[str] = None
exclusion_symbol: Optional[str] = None
fraction: Optional[str] = None
us_fraction: Optional[str] = None
supplier: Optional[str] = None
@@ -43,6 +69,7 @@ class PartUpdateDTO(BaseModel):
eccn: Optional[str] = None
is_active: Optional[bool] = None
class PartResponseDTO(PartCreateDTO):
id: int
tenant_id: int

View File

@@ -41,6 +41,7 @@ from .general_catalogs.electronic_notices.routes import router as electronic_not
from .transportation.trailers.routes import router as trailers_router
from .transportation.transporters.routes import router as transporters_router
from .transportation.vehicles.routes import router as vehicles_router
from api.v1.modules.public.reference_data.material_types.routes import router as material_types_router
# Router principal
router = APIRouter()
@@ -94,3 +95,10 @@ router.include_router(error_catalogs_router, prefix="/a76")
router.include_router(doda_router, prefix="/a76")
router.include_router(prevalidators_router, prefix="/a76")
router.include_router(electronic_notices_router, prefix="/a76")
# Registrar router de tipos de material públicos
router.include_router(
material_types_router,
prefix="/public/reference-data",
tags=["Reference Data"]
)