Initial commit
This commit is contained in:
26
app/models/__init__.py
Normal file
26
app/models/__init__.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from .cliente import ClienteCreate, ClienteUpdate, ClienteResponse
|
||||
from .pedido_cliente import (
|
||||
PedidoClienteCreate, PedidoClienteUpdate, PedidoClienteResponse,
|
||||
ReferenciaPedidoClienteCreate, ReferenciaPedidoClienteUpdate, ReferenciaPedidoClienteResponse
|
||||
)
|
||||
from .proveedor import ProveedorCreate, ProveedorUpdate, ProveedorResponse
|
||||
from .pedido_proveedor import (
|
||||
PedidoProveedorCreate, PedidoProveedorUpdate, PedidoProveedorResponse,
|
||||
ReferenciaPedidoProveedorCreate, ReferenciaPedidoProveedorResponse
|
||||
)
|
||||
from .albaran import AlbaranCreate, AlbaranUpdate, AlbaranResponse, ReferenciaAlbaranResponse
|
||||
from .devolucion import DevolucionCreate, DevolucionUpdate, DevolucionResponse
|
||||
from .stock import StockReferenciaCreate, StockReferenciaUpdate, StockReferenciaResponse
|
||||
|
||||
__all__ = [
|
||||
"ClienteCreate", "ClienteUpdate", "ClienteResponse",
|
||||
"PedidoClienteCreate", "PedidoClienteUpdate", "PedidoClienteResponse",
|
||||
"ReferenciaPedidoClienteCreate", "ReferenciaPedidoClienteUpdate", "ReferenciaPedidoClienteResponse",
|
||||
"ProveedorCreate", "ProveedorUpdate", "ProveedorResponse",
|
||||
"PedidoProveedorCreate", "PedidoProveedorUpdate", "PedidoProveedorResponse",
|
||||
"ReferenciaPedidoProveedorCreate", "ReferenciaPedidoProveedorResponse",
|
||||
"AlbaranCreate", "AlbaranUpdate", "AlbaranResponse", "ReferenciaAlbaranResponse",
|
||||
"DevolucionCreate", "DevolucionUpdate", "DevolucionResponse",
|
||||
"StockReferenciaCreate", "StockReferenciaUpdate", "StockReferenciaResponse",
|
||||
]
|
||||
|
||||
57
app/models/albaran.py
Normal file
57
app/models/albaran.py
Normal file
@@ -0,0 +1,57 @@
|
||||
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
|
||||
|
||||
31
app/models/cliente.py
Normal file
31
app/models/cliente.py
Normal file
@@ -0,0 +1,31 @@
|
||||
from pydantic import BaseModel, EmailStr
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class ClienteBase(BaseModel):
|
||||
nombre: str
|
||||
matricula_vehiculo: str
|
||||
telefono: Optional[str] = None
|
||||
email: Optional[EmailStr] = None
|
||||
|
||||
|
||||
class ClienteCreate(ClienteBase):
|
||||
pass
|
||||
|
||||
|
||||
class ClienteUpdate(BaseModel):
|
||||
nombre: Optional[str] = None
|
||||
matricula_vehiculo: Optional[str] = None
|
||||
telefono: Optional[str] = None
|
||||
email: Optional[EmailStr] = None
|
||||
|
||||
|
||||
class ClienteResponse(ClienteBase):
|
||||
id: int
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
37
app/models/devolucion.py
Normal file
37
app/models/devolucion.py
Normal file
@@ -0,0 +1,37 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class DevolucionBase(BaseModel):
|
||||
proveedor_id: int
|
||||
referencia: str
|
||||
denominacion: Optional[str] = None
|
||||
unidades: int = 1
|
||||
estado_abono: str = "pendiente"
|
||||
|
||||
|
||||
class DevolucionCreate(DevolucionBase):
|
||||
pass
|
||||
|
||||
|
||||
class DevolucionUpdate(BaseModel):
|
||||
proveedor_id: Optional[int] = None
|
||||
referencia: Optional[str] = None
|
||||
denominacion: Optional[str] = None
|
||||
unidades: Optional[int] = None
|
||||
estado_abono: Optional[str] = None
|
||||
albaran_abono_id: Optional[int] = None
|
||||
|
||||
|
||||
class DevolucionResponse(DevolucionBase):
|
||||
id: int
|
||||
fecha_devolucion: datetime
|
||||
albaran_abono_id: Optional[int] = None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
proveedor: Optional[dict] = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
70
app/models/pedido_cliente.py
Normal file
70
app/models/pedido_cliente.py
Normal file
@@ -0,0 +1,70 @@
|
||||
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
|
||||
|
||||
59
app/models/pedido_proveedor.py
Normal file
59
app/models/pedido_proveedor.py
Normal file
@@ -0,0 +1,59 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional, List
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class ReferenciaPedidoProveedorBase(BaseModel):
|
||||
referencia: str
|
||||
denominacion: str
|
||||
unidades_pedidas: int = 1
|
||||
estado: str = "pendiente"
|
||||
|
||||
|
||||
class ReferenciaPedidoProveedorCreate(ReferenciaPedidoProveedorBase):
|
||||
referencia_pedido_cliente_id: Optional[int] = None
|
||||
|
||||
|
||||
class ReferenciaPedidoProveedorResponse(ReferenciaPedidoProveedorBase):
|
||||
id: int
|
||||
pedido_proveedor_id: int
|
||||
referencia_pedido_cliente_id: Optional[int] = None
|
||||
unidades_recibidas: int = 0
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class PedidoProveedorBase(BaseModel):
|
||||
proveedor_id: int
|
||||
numero_pedido: Optional[str] = None
|
||||
tipo: str = "web"
|
||||
estado: str = "pendiente_recepcion"
|
||||
email_confirmacion_path: Optional[str] = None
|
||||
|
||||
|
||||
class PedidoProveedorCreate(PedidoProveedorBase):
|
||||
referencias: Optional[List[ReferenciaPedidoProveedorCreate]] = []
|
||||
|
||||
|
||||
class PedidoProveedorUpdate(BaseModel):
|
||||
proveedor_id: Optional[int] = None
|
||||
numero_pedido: Optional[str] = None
|
||||
tipo: Optional[str] = None
|
||||
estado: Optional[str] = None
|
||||
email_confirmacion_path: Optional[str] = None
|
||||
|
||||
|
||||
class PedidoProveedorResponse(PedidoProveedorBase):
|
||||
id: int
|
||||
fecha_pedido: datetime
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
proveedor: Optional[dict] = None
|
||||
referencias: Optional[List[ReferenciaPedidoProveedorResponse]] = []
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
31
app/models/proveedor.py
Normal file
31
app/models/proveedor.py
Normal file
@@ -0,0 +1,31 @@
|
||||
from pydantic import BaseModel, EmailStr
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class ProveedorBase(BaseModel):
|
||||
nombre: str
|
||||
email: Optional[EmailStr] = None
|
||||
tiene_web: bool = True
|
||||
activo: bool = True
|
||||
|
||||
|
||||
class ProveedorCreate(ProveedorBase):
|
||||
pass
|
||||
|
||||
|
||||
class ProveedorUpdate(BaseModel):
|
||||
nombre: Optional[str] = None
|
||||
email: Optional[EmailStr] = None
|
||||
tiene_web: Optional[bool] = None
|
||||
activo: Optional[bool] = None
|
||||
|
||||
|
||||
class ProveedorResponse(ProveedorBase):
|
||||
id: int
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
27
app/models/stock.py
Normal file
27
app/models/stock.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class StockReferenciaBase(BaseModel):
|
||||
referencia: str
|
||||
unidades_disponibles: int = 0
|
||||
|
||||
|
||||
class StockReferenciaCreate(StockReferenciaBase):
|
||||
pass
|
||||
|
||||
|
||||
class StockReferenciaUpdate(BaseModel):
|
||||
referencia: Optional[str] = None
|
||||
unidades_disponibles: Optional[int] = None
|
||||
|
||||
|
||||
class StockReferenciaResponse(StockReferenciaBase):
|
||||
id: int
|
||||
ultima_actualizacion: datetime
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
Reference in New Issue
Block a user