58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
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
|
|
|