from pydantic import BaseModel from typing import Optional, List from datetime import datetime class ReferenciaPedidoClienteBase(BaseModel): referencia: str denominacion: str unidades_solicitadas: int = 1 unidades_en_stock: int = 0 estado: str = "pendiente" class ReferenciaPedidoClienteCreate(ReferenciaPedidoClienteBase): pass class ReferenciaPedidoClienteUpdate(BaseModel): referencia: Optional[str] = None denominacion: Optional[str] = None unidades_solicitadas: Optional[int] = None unidades_en_stock: Optional[int] = None estado: Optional[str] = None class ReferenciaPedidoClienteResponse(ReferenciaPedidoClienteBase): id: int pedido_cliente_id: int unidades_pendientes: int created_at: datetime updated_at: datetime class Config: from_attributes = True class PedidoClienteBase(BaseModel): numero_pedido: str cliente_id: int fecha_cita: Optional[datetime] = None estado: str = "pendiente_revision" presupuesto_id: Optional[str] = None archivo_pdf_path: Optional[str] = None class PedidoClienteCreate(PedidoClienteBase): referencias: Optional[List[ReferenciaPedidoClienteCreate]] = [] class PedidoClienteUpdate(BaseModel): numero_pedido: Optional[str] = None cliente_id: Optional[int] = None fecha_cita: Optional[datetime] = None estado: Optional[str] = None presupuesto_id: Optional[str] = None archivo_pdf_path: Optional[str] = None class PedidoClienteResponse(PedidoClienteBase): id: int fecha_pedido: datetime created_at: datetime updated_at: datetime cliente: Optional[dict] = None referencias: Optional[List[ReferenciaPedidoClienteResponse]] = [] es_urgente: bool = False class Config: from_attributes = True