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
« 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
8router = APIRouter()
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)
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)
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)
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)
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)
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).