Exemplo n.º 1
1
  @Override
  public void validate(final FacesContext context) {
    context
        .getApplication()
        .publishEvent(context, PreValidateEvent.class, UIValidateForm.class, this);
    BeanManager manager = BeanManagerAccessor.getBeanManager();
    manager.fireEvent(this, BEFORE);

    Validator validator = context.getApplication().createValidator(validatorId);
    if (validator == null) {
      throw new IllegalArgumentException(
          "Could not create Validator with id: [" + validatorId + "]");
    }

    try {
      UIComponent parent = this.getParent();
      validator.validate(context, parent, components);
    } catch (ValidatorException e) {
      setValid(false);
      for (UIInput comp : components.values()) {
        comp.setValid(false);
        // TODO Put this back when attributes can control it
        // context.addMessage(comp.getClientId(), e.getFacesMessage());
      }
      context.addMessage(null, e.getFacesMessage());
    }

    manager.fireEvent(this, AFTER);
    context
        .getApplication()
        .publishEvent(context, PostValidateEvent.class, UIValidateForm.class, this);
  }
  public String confirmarPedido() {
    logger.debug("========================================================>>");
    logger.debug("-->>confirmarPedido():");
    logger.debug("========================================================>>");
    try {

      dataValidation();
      try {
        pedidoVenta.setCliente(new Cliente(clienteId));
        pedidoVenta.setFormaDePago(new FormaDePago(formaDePagoId));
        pedidoVenta.setUsuario(sessionUserMB.getUsuarioAuthenticated());
        pedidoVenta.setComentarios("PedidoNuevoMB.confirmarPedido @" + new Date());
        pedidoVenta.setFactoriva(LogicaFinaciera.getImpuestoIVA());

        Collection<PedidoVentaDetalle> pedidoVentaDetalleCollection =
            new ArrayList<PedidoVentaDetalle>();

        for (PedidoVentaDetalleWrapper pvdw : pedidoVentaDetalleList) {
          pedidoVentaDetalleCollection.add(pvdw.getPedidoVentaDetalle());
        }
        for (PedidoVentaDetalle pvd : pedidoVentaDetalleCollection) {
          logger.debug(
              "\t==>>pedidoVentaDetalleCollection:"
                  + pvd.getCantidad()
                  + " x "
                  + pvd.getProducto());
        }
        pedidoVenta.setPedidoVentaDetalleCollection(pedidoVentaDetalleCollection);

        pedidoVenta =
            pedidoVentaBusinessLogic.crearPedidoCapturado(
                pedidoVenta, sessionUserMB.getUsuarioAuthenticated());
        logger.debug("<<===================== OK crearPedidoCapturado =======================");
        // pedidoVenta =
        // pedidoVentaBusinessLogic.crearPedidoVentaDetalleCapturado(pedidoVenta,pedidoVentaDetalleCollection);
        // logger.debug("<<===================== OK crearPedidoVentaDetalleCapturado
        // =======================");
        pedidoVentaBusinessLogic.sincronizarPedido(
            pedidoVenta, sessionUserMB.getUsuarioAuthenticated());
        logger.debug("<<===================== OK sincronizarPedido =======================");
        return "pedidoCreado";
      } catch (Exception ex) {
        logger.debug("<<++++++++++++++++++++++++++++++++++++++++++++++++++");
        ex.printStackTrace(System.err);
        logger.debug("Error in MB to create pedido:", ex);

        throw new ValidatorException(
            new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.toString(), ex.toString()));
      } finally {
        reiniciarPedido();
      }
    } catch (ValidatorException ve) {
      logger.debug("<<!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
      FacesContext.getCurrentInstance().addMessage(null, ve.getFacesMessage());
      return null;
    }
  }
  public void agregarNProductoBuscado(ActionEvent e) {
    logger.debug(
        "## >> agregarNProductoBuscado : productoSelected="
            + productoCBSelected
            + ", cantidadAgregar="
            + cantidadAgregar);
    FacesMessage fm = null;
    int cantidadPrevia = 0;
    try {
      productoEncontrado = productoJPAController.findEntityByReadableProperty(productoCBSelected);

      cantidadPrevia = agregarProductoADetallePrevia(productoEncontrado.getId(), cantidadAgregar);

      fm =
          new FacesMessage(
              FacesMessage.SEVERITY_INFO,
              "Agregar Producto : ",
              "Se actualizó cantidad = "
                  + cantidadPrevia
                  + " + "
                  + cantidadAgregar
                  + " = "
                  + (cantidadPrevia + cantidadAgregar)
                  + ", del producto ["
                  + productoCBSelected
                  + "]");
    } catch (ValidatorException ex) {
      logger.error("## >> agregarNProductoBuscado : Exception", ex);
      fm = ex.getFacesMessage();
    } catch (Exception ex) {
      logger.error("## >> agregarNProductoBuscado : Exception", ex);
      fm =
          new FacesMessage(
              FacesMessage.SEVERITY_INFO,
              "Agregar Producto : ",
              "Error al gregar cantidad = "
                  + cantidadPrevia
                  + " + "
                  + cantidadAgregar
                  + " = "
                  + (cantidadPrevia + cantidadAgregar)
                  + ", del producto ["
                  + productoCBSelected
                  + "] :"
                  + ex.getMessage());
    } finally {
      cantidadAgregar = 1;
      cantidadCBAgregar = 1;
      productoEncontrado = null;
      productoConNombreDescripcion = new ArrayList<SelectItem>();
      nombreDescripcion = null;
      codigoBuscar = "";
      FacesContext.getCurrentInstance().addMessage(null, fm);
    }
  }
  public void codigoBuscarChangedAction(ActionEvent e) {
    logger.debug(
        "## >> codigoBuscarChangedAction: codigoBuscar="
            + codigoBuscar
            + ", cantidadAgregar="
            + cantidadCBAgregar);
    FacesMessage fm = null;
    int cantidadPrevia = 0;
    try {

      if (!codigoBuscar.matches(REG_EXP_NUMBER_PATTERN)) {
        throw new ValidatorException(
            new FacesMessage(
                FacesMessage.SEVERITY_WARN,
                "Agregar Producto : ",
                "No es un Codigo de barras valido :" + codigoBuscar));
      }

      productoEncontrado = productoJPAController.findEntityByReadableProperty(codigoBuscar);

      cantidadPrevia = agregarProductoADetallePrevia(productoEncontrado.getId(), cantidadCBAgregar);

      fm =
          new FacesMessage(
              FacesMessage.SEVERITY_INFO,
              "Agregar Producto : ",
              "Se actualizó cantidad = "
                  + cantidadPrevia
                  + " + "
                  + cantidadCBAgregar
                  + " = "
                  + (cantidadPrevia + cantidadCBAgregar)
                  + ", del producto ["
                  + codigoBuscar
                  + "]");
    } catch (ValidatorException ex) {
      logger.error("## >> agergarNProductoPorCodigo: Exception", ex);
      fm = ex.getFacesMessage();
    } finally {
      cantidadAgregar = 1;
      cantidadCBAgregar = 1;
      productoEncontrado = null;
      productoConNombreDescripcion = new ArrayList<SelectItem>();
      nombreDescripcion = null;
      codigoBuscar = "";
      FacesContext.getCurrentInstance().addMessage(null, fm);
    }
  }
  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());
    }
  }