Class VentaController

java.lang.Object
com.deusto.coffeestack.controller.VentaController

@RestController @RequestMapping("/api/ventas") public class VentaController extends Object
REST controller para el registro y consulta de ventas.

Endpoints:

  • POST /api/ventas – registrar venta (EMPLEADO, PROPIETARIO, ROOT)
  • GET /api/ventas – listar todas las ventas (cualquier autenticado)
  • GET /api/ventas/{id} – detalle de una venta (cualquier autenticado)
  • Constructor Details

  • Method Details

    • registrar

      @PostMapping @PreAuthorize("hasAnyRole(\'EMPLEADO\', \'PROPIETARIO\', \'ROOT\')") public org.springframework.http.ResponseEntity<VentaResponse> registrar(@Valid @RequestBody @Valid VentaRequest request, @AuthenticationPrincipal org.springframework.security.core.userdetails.UserDetails userDetails)
      Registra una nueva venta, descuenta el inventario y genera los movimientos de trazabilidad correspondientes. Devuelve 201 Created con la venta en el body.
    • obtenerReporte

      @GetMapping("/reporte") @PreAuthorize("hasAnyRole(\'PROPIETARIO\', \'ROOT\')") public List<ReporteVentasDTO> obtenerReporte()
      Genera el reporte simple de ventas por día y por producto para análisis de demanda.
    • descargarReporteCsv

      @GetMapping("/reporte/csv") @PreAuthorize("hasAnyRole(\'PROPIETARIO\', \'ROOT\')") public org.springframework.http.ResponseEntity<byte[]> descargarReporteCsv()
      Descarga el reporte de ventas como fichero CSV. El fichero incluye BOM UTF-8 para compatibilidad con Microsoft Excel.
    • listar

      @GetMapping @PreAuthorize("isAuthenticated()") public List<VentaResponse> listar()
      Devuelve todas las ventas registradas, de más reciente a más antigua.
    • obtener

      @GetMapping("/{id}") @PreAuthorize("isAuthenticated()") public VentaResponse obtener(@PathVariable Long id)
      Devuelve el detalle completo de una venta por su id.