Coverage for backend \ app \ Caja \ controllers \ cajaController.py: 86.36%

22 statements  

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

1from fastapi import APIRouter, Depends 

2from app.Caja.services.cajaService import CajaService 

3from app.Caja.schemas.cajaSchemas import * 

4from app.database import obtenerSesion 

5from app.configuracionGeneral.seguridadJWT import protegerRuta 

6from app.configuracionGeneral.schemasGenerales import respuestaApi 

7 

8router = APIRouter() 

9 

10@router.post("/abrir", tags=["Caja"], summary="Abrir caja", description="Abre una nueva caja para el usuario autenticado y registra la fecha de apertura y el monto inicial declarado.", status_code=201, response_model=respuestaApi) 

11async def abrir_caja(caja: CajaCrearSchema, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Caja", "POST"))): 

12 return CajaService(dbSession).crearCajaHistorial(caja, usuario) 

13 

14@router.post("/cerrar/{idCaja}", tags=["Caja"], summary="Cerrar caja", description="Cierra una caja abierta y registra la fecha de cierre (sistema), el monto final declarado y un detalle que indica quién cerró y si hubo alguna anomalía. Los Cajeros solo pueden cerrar su propia caja el mismo día; los Administradores pueden cerrar cualquier caja por id.", status_code=200, response_model=respuestaApi) 

15async def cerrar_caja(idCaja: int, cierre: CajaCerrarSchema, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Caja","POST"))): 

16 return CajaService(dbSession).cerrarCaja(idCaja, cierre, usuario) 

17 

18@router.get("/listar", tags=["Caja"], summary="Listar cajas (hoy)", description="Lista las cajas del día actual; los Administradores ven las de todos los usuarios y los Cajeros solo las suyas.", status_code=200, response_model=respuestaApi) 

19async def listar_cajas(dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Caja","GET"))): 

20 return CajaService(dbSession).listarCajasHoy(usuario) 

21 

22@router.get("/listar/todas", tags=["Caja"], summary="Listar todas las cajas", description="Lista todas las cajas (histórico). Solo Administrador.", status_code=200, response_model=respuestaApi) 

23async def listar_cajas_todas(dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Caja", "GET"))): 

24 return CajaService(dbSession).listarTodasCajas(usuario) 

25 

26@router.post("/reabrir/{idCaja}", tags=["Caja"], summary="Reabrir caja", description="Reabre una caja ya cerrada por su id. Solo el rol Administrador puede reabrir cajas cerradas.", status_code=200, response_model=respuestaApi) 

27async def reabrir_caja(idCaja: int, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Caja", "POST"))): 

28 return CajaService(dbSession).reabrirCaja(idCaja, usuario) 

29 

30# Nota: los endpoints de cierre pendiente y filtrado han sido eliminados. Sólo quedan: abrir (POST /abrir), cerrar (POST /cerrar/{idCaja}), listar (GET /listar).