Coverage for backend \ app \ Venta \ controllers \ ventaController.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.Venta.services.ventaService import VentaService 

3from app.Venta.schemas.ventaSchemas import VentaCrearSchema 

4from app.database import obtenerSesion 

5from app.configuracionGeneral.seguridadJWT import protegerRuta 

6from app.configuracionGeneral.schemasGenerales import respuestaApi 

7 

8router = APIRouter() 

9 

10@router.post("/crear", tags=["Venta"], summary="Crear venta", description="Registra una venta y sus detalles; valida stock, promociones y caja abierta.", status_code=201, response_model=respuestaApi) 

11async def crear_venta(venta: VentaCrearSchema, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Venta","POST"))): 

12 return VentaService(dbSession).crearVenta(venta, usuario) 

13 

14@router.get("/", tags=["Venta"], summary="Listar ventas (hoy)", description="Lista ventas del día actual; Administrador ve todas, Cajero sus ventas.", status_code=200, response_model=respuestaApi) 

15async def listar_ventas(dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Venta","GET"))): 

16 return VentaService(dbSession).listarVentasHoy(usuario) 

17 

18@router.get("/historico", tags=["Venta"], summary="Histórico de ventas", description="Lista todas las ventas (histórico). Solo Administrador.", status_code=200, response_model=respuestaApi) 

19async def listar_historico(dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Venta","GET"))): 

20 return VentaService(dbSession).listarHistorico(usuario) 

21 

22@router.delete("/{idVenta}", tags=["Venta"], summary="Anular venta", description="Anula una venta (Administrador cualquier venta; Cajero solo las suyas).", status_code=200, response_model=respuestaApi) 

23async def anular_venta(idVenta: int, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Venta","DELETE"))): 

24 return VentaService(dbSession).anularVenta(idVenta, usuario) 

25 

26@router.get("/generar-comprobante/{idVenta}", tags=["Venta"], summary="Generar comprobante de venta", description="Genera un comprobante con parámetros del negocio y datos de la venta.", status_code=200, response_model=respuestaApi) 

27async def generar_comprobante(idVenta: int, dbSession=Depends(obtenerSesion), usuario=Depends(protegerRuta("Venta","GET"))): 

28 return VentaService(dbSession).generarComprobanteVenta(idVenta, usuario)