public void nombreDescripcionChanged(ValueChangeEvent e) { String nombrePresentacionBuscar = ((String) e.getNewValue()); String[] nombresPresentacionBuscar = nombrePresentacionBuscar.toLowerCase().split("([ ])+"); logger.debug( "## >> nombreDescripcionChanged: nombrePresentacionBuscar=" + nombrePresentacionBuscar + " =>" + Arrays.asList(nombresPresentacionBuscar)); productoConNombreDescripcion = new ArrayList<SelectItem>(); cantidadAgregar = null; if (nombrePresentacionBuscar.trim().length() >= 3) { String nombreDescripcionOriginal = null; String nombreDescripcionOriginalLC = null; boolean found = false; for (AlmacenProducto ap : getListAlmacenProductoBuscar()) { nombreDescripcionOriginal = ap.getProducto().getNombre() + "/" + ap.getProducto().getPresentacion() + " (" + ap.getProducto().getContenido() + ap.getProducto().getUnidadMedida() + " / " + ap.getProducto().getUnidadesPorCaja() + "UxCj.) #" + ap.getCantidadActual(); nombreDescripcionOriginalLC = nombreDescripcionOriginal.toLowerCase(); found = false; for (String n : nombresPresentacionBuscar) { if (nombreDescripcionOriginalLC.contains(n)) { found = true; } } if (found) { cantidadAgregar = 1; productoConNombreDescripcion.add( new SelectItem(ap.getProducto().getCodigoBarras(), nombreDescripcionOriginal)); } } } }
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()); } }