Coverage for backend \ app \ Pedido \ schemas \ pedidoSchemas.py: 100.00%

38 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2025-12-29 16:13 -0500

1from pydantic import BaseModel, Field 

2from typing import Optional, List, Literal 

3from datetime import datetime 

4from app.Productos.schemas.productoSchemas import ProductoRespuestaSchema 

5from app.Usuarios.schemas.usuarioSchemas import UsuarioPublicoSchema 

6 

7class DetallePedidoCrearSchema(BaseModel): 

8 idProducto: int = Field(..., example=1) 

9 cantidadSolicitada: int = Field(..., example=10, ge=1) 

10 

11class PedidoCrearSchema(BaseModel): 

12 detalles: List[DetallePedidoCrearSchema] 

13 

14 model_config = { 

15 "json_schema_extra": { 

16 "example": { 

17 "detalles": [ 

18 {"idProducto": 1, "cantidadSolicitada": 10}, 

19 {"idProducto": 2, "cantidadSolicitada": 5} 

20 ] 

21 } 

22 } 

23 } 

24class DetallePedidoRespuestaSchema(BaseModel): 

25 idDetallePedido: int 

26 idPedido: int 

27 cantidadSolicitada: int 

28 precioUnitarioCompra: float 

29 estadoDetalle: str 

30 fechaRecepcion: Optional[datetime] = Field(None, example="2025-12-20T15:30:00Z") 

31 producto: Optional[ProductoRespuestaSchema] = None 

32 usuarioReceptor: Optional[UsuarioPublicoSchema] = None 

33 

34 class Config: 

35 from_attributes = True 

36 

37class PedidoRespuestaSchema(BaseModel): 

38 idPedido: int 

39 usuarioCreador: UsuarioPublicoSchema 

40 usuarioAprobador: Optional[UsuarioPublicoSchema] = None 

41 totalCostoPedido: float 

42 fechaCreacion: Optional[datetime] = Field(None, example="2025-12-20T15:30:00Z") 

43 estadoPedido: str 

44 observaciones: Optional[str] = None 

45 detalles: List[DetallePedidoRespuestaSchema] = [] 

46 

47 class Config: 

48 from_attributes = True 

49 

50class RevisarPedidoSchema(BaseModel): 

51 estadoPedido: Literal["APROBADO","RECHAZADO"] = Field(..., example="APROBADO", description="Enviar 'APROBADO' o 'RECHAZADO'. Solo Administrador puede aprobar pedidos creados por otros.") 

52 observaciones: Optional[str] = None 

53 

54class RecepcionDetalleSchema(BaseModel): 

55 confirmar: bool = Field(..., example=True, description="Debe ser true para confirmar la recepción completa del detalle") 

56