from pydantic import BaseModel from typing import Optional, List, Dict, Any from datetime import datetime, date from decimal import Decimal class ReferenciaAlbaranBase(BaseModel): referencia: str denominacion: str unidades: int = 1 precio_unitario: Decimal = Decimal("0") impuesto_tipo: str = "21" impuesto_valor: Decimal = Decimal("0") class ReferenciaAlbaranResponse(ReferenciaAlbaranBase): id: int albaran_id: int referencia_pedido_proveedor_id: Optional[int] = None created_at: datetime class Config: from_attributes = True class AlbaranBase(BaseModel): proveedor_id: Optional[int] = None numero_albaran: Optional[str] = None fecha_albaran: Optional[date] = None archivo_path: str estado_procesado: str = "pendiente" class AlbaranCreate(AlbaranBase): datos_ocr: Optional[Dict[str, Any]] = {} class AlbaranUpdate(BaseModel): proveedor_id: Optional[int] = None numero_albaran: Optional[str] = None fecha_albaran: Optional[date] = None estado_procesado: Optional[str] = None datos_ocr: Optional[Dict[str, Any]] = None class AlbaranResponse(AlbaranBase): id: int fecha_procesado: Optional[datetime] = None datos_ocr: Dict[str, Any] = {} created_at: datetime updated_at: datetime proveedor: Optional[dict] = None referencias: Optional[List[ReferenciaAlbaranResponse]] = [] class Config: from_attributes = True