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