public void seleccionarProducto(ActionEvent e) { FacesContext context = FacesContext.getCurrentInstance(); Integer productoId = Integer.parseInt(context.getExternalContext().getRequestParameterMap().get("productoId")); logger.debug("## >> seleccionarProducto: productoId=" + productoId); boolean selectedFromDetalle = false; for (PedidoVentaDetalleWrapper dvp : pedidoVentaDetalleList) { if (dvp.getProducto().getId() == productoId) { detalleVentaPedidoSeleccionado.setProducto(dvp.getProducto()); detalleVentaPedidoSeleccionado.setCantidad(dvp.getCantidad()); selectedFromDetalle = true; break; } } if (!selectedFromDetalle) { logger.warn( "\t## >> productoId=" + productoId + " => detalleVentaPedidoSeleccionado is null"); } logger.debug("## >> end: seleccionarProducto"); }
private synchronized int agregarProductoADetallePrevia(Integer productoIdAgregar, int cantidad) { int cantidadPrevia = 0; PedidoVentaDetalleWrapper detalleVentaPedidoAgregar = null; logger.debug( "-->> agregarProductoADetallePrevia: productoIdAgregar=" + productoIdAgregar + ", cantidad=" + cantidad); for (PedidoVentaDetalleWrapper dvp : pedidoVentaDetalleList) { if (dvp.getProducto().getId().intValue() == productoIdAgregar.intValue()) { detalleVentaPedidoAgregar = dvp; break; } } if (detalleVentaPedidoAgregar != null) { if (detalleVentaPedidoAgregar.getCantidad() + cantidad > detalleVentaPedidoAgregar.getCantMax()) { throw new ValidatorException( new FacesMessage( FacesMessage.SEVERITY_ERROR, "Agregar Producto : ", "Producto [" + detalleVentaPedidoAgregar.getProducto().getCodigoBarras() + "] ya agregado, pero con esta cantidad (+" + cantidad + ") excede la existencia en Almacén de " + detalleVentaPedidoAgregar.getCantMax() + " unidades.")); } else { cantidadPrevia = detalleVentaPedidoAgregar.getCantidad(); detalleVentaPedidoAgregar.setCantidad(cantidadPrevia + cantidad); logger.debug("-->> agregarProductoADetallePrevia: Ok, actualizada"); } } else { detalleVentaPedidoAgregar = new PedidoVentaDetalleWrapper(new PedidoVentaDetalle()); detalleVentaPedidoAgregar.setCantidad(cantidad); Producto producto = productoJPAController.findById(productoIdAgregar); Collection<AlmacenProducto> almacenProductoCollection = producto.getAlmacenProductoCollection(); int cantMaxAlmacen = 0; double precioObjetivo = 0.0; for (AlmacenProducto almacenProducto : almacenProductoCollection) { if (almacenProducto.getAlmacen().getId().intValue() == getAlmacenObjetivo().getId().intValue()) { precioObjetivo = almacenProducto.getPrecioVenta(); cantMaxAlmacen = almacenProducto.getCantidadActual(); } } if (cantidad > cantMaxAlmacen) { throw new ValidatorException( new FacesMessage( FacesMessage.SEVERITY_ERROR, "Agregar Producto : ", "Producto [" + producto.getCodigoBarras() + "] se hiba a agregar, pero con esta cantidad (+" + cantidad + ") excede la existencia en Almacén de " + cantMaxAlmacen + " unidades.")); } if (listAlmacenProductoBuscar == null) { getListAlmacenProductoBuscar(); } AlmacenProductoDemanda prodEnDemanda = productoDemandaHT.get(productoIdAgregar); if (prodEnDemanda != null) { detalleVentaPedidoAgregar.setCantDemanda(prodEnDemanda.getSumDemanda()); detalleVentaPedidoAgregar.setOtrosPedidos(prodEnDemanda.getOtrosPedidos()); } detalleVentaPedidoAgregar.setCantMax(cantMaxAlmacen); detalleVentaPedidoAgregar.setProducto(producto); detalleVentaPedidoAgregar.setDescuentoAplicado(0.0); detalleVentaPedidoAgregar.setPrecioVenta(precioObjetivo); pedidoVentaDetalleList.add(detalleVentaPedidoAgregar); // pedidoVentaDetalleList.add(0, detalleVentaPedidoAgregar); logger.debug("-->> agregarProductoADetallePrevia: Ok, Add new"); } return cantidadPrevia; }
private void agregarProductoADetalle(Integer productoIdAgregar) { PedidoVentaDetalleWrapper detalleVentaPedidoAgregar = null; logger.debug( "################################ >> agregarProductoADetalle: productoIdAgregar=" + productoIdAgregar); for (PedidoVentaDetalleWrapper dvp : pedidoVentaDetalleList) { if (dvp.getProducto().getId() == productoIdAgregar) { detalleVentaPedidoAgregar = dvp; break; } } try { if (detalleVentaPedidoAgregar != null) { if (detalleVentaPedidoAgregar.getCantidad() >= detalleVentaPedidoAgregar.getCantMax()) { logger.warn( "################################ >> agregarProductoADetalle: Cantidad Exedida, no se agregara"); throw new ValidatorException( new FacesMessage( FacesMessage.SEVERITY_ERROR, "Sobrepasa cantidad Maxima de existencia en Almacenes", "Sobrepasa cantidad Maxima de existencia en Almacenes")); } else { detalleVentaPedidoAgregar.setCantidad(detalleVentaPedidoAgregar.getCantidad() + 1); logger.debug("################################ >> agregarProductoADetalle: \t Ok, edit"); } } else { detalleVentaPedidoAgregar = new PedidoVentaDetalleWrapper(new PedidoVentaDetalle()); detalleVentaPedidoAgregar.setCantidad(1); Producto producto = productoJpaController.findProducto(productoIdAgregar); Collection<AlmacenProducto> almacenProductoCollection = producto.getAlmacenProductoCollection(); int cantMaxAlmacenes = 0; for (AlmacenProducto almacenProducto : almacenProductoCollection) { cantMaxAlmacenes += almacenProducto.getCantidadActual(); } if (cantMaxAlmacenes <= 0) { logger.warn( "################################ >> agregarProductoADetalle: Cantidad Exedida, No hay existencia en Almacenes"); throw new ValidatorException( new FacesMessage( FacesMessage.SEVERITY_ERROR, "No hay existencia en Almacenes", "No hay existencia en Almacenes")); } detalleVentaPedidoAgregar.setCantMax(cantMaxAlmacenes); detalleVentaPedidoAgregar.setProducto(producto); detalleVentaPedidoAgregar.setDescuentoAplicado(0.0); detalleVentaPedidoAgregar.setPrecioVenta( detalleVentaPedidoAgregar.getProducto().getPrecioBase() * (1.0 + LogicaFinaciera.getImpuestoIVA())); pedidoVentaDetalleList.add(detalleVentaPedidoAgregar); logger.debug("################################ >> agregarProductoADetalle: \t Ok, Add new"); } } catch (ValidatorException ve) { logger.debug("<<!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); FacesContext.getCurrentInstance().addMessage(null, ve.getFacesMessage()); } }