Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Last active September 4, 2019 21:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/a5483be2ad583340bfbc4ea0a31e427d to your computer and use it in GitHub Desktop.
Save parzibyte/a5483be2ad583340bfbc4ea0a31e427d to your computer and use it in GitHub Desktop.
@PostMapping(value = "/terminar")
public String terminarVenta(HttpServletRequest request, RedirectAttributes redirectAttrs) {
ArrayList<ProductoParaVender> carrito = this.obtenerCarrito(request);
// Si no hay carrito o está vacío, regresamos inmediatamente
if (carrito == null || carrito.size() <= 0) {
return "redirect:/vender/";
}
Venta v = ventasRepository.save(new Venta());
// Recorrer el carrito
for (ProductoParaVender productoParaVender : carrito) {
// Obtener el producto fresco desde la base de datos
Producto p = productosRepository.findById(productoParaVender.getId()).orElse(null);
if (p == null) continue; // Si es nulo o no existe, ignoramos el siguiente código con continue
// Le restamos existencia
p.restarExistencia(productoParaVender.getCantidad());
// Lo guardamos con la existencia ya restada
productosRepository.save(p);
// Creamos un nuevo producto que será el que se guarda junto con la venta
ProductoVendido productoVendido = new ProductoVendido(productoParaVender.getCantidad(), productoParaVender.getPrecio(), productoParaVender.getNombre(), productoParaVender.getCodigo(), v);
// Y lo guardamos
productosVendidosRepository.save(productoVendido);
}
// Al final limpiamos el carrito
this.limpiarCarrito(request);
// e indicamos una venta exitosa
redirectAttrs
.addFlashAttribute("mensaje", "Venta realizada correctamente")
.addFlashAttribute("clase", "success");
return "redirect:/vender/";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment