public String confirmarPedido() {
    logger.debug("========================================================>>");
    logger.debug("-->>confirmarPedido():");
    logger.debug("========================================================>>");
    try {
      dataValidation();
      try {
        pedidoVenta.setCliente(new Cliente(clienteId));
        pedidoVenta.setFormaDePago(new FormaDePago(formaDePagoId));
        pedidoVenta.setMetodoDePago(new MetodoDePago(metodoDePagoId));
        pedidoVenta.setUsuario(sessionUserMB.getUsuarioAuthenticated());
        pedidoVenta.setFactoriva(LogicaFinaciera.getImpuestoIVA());
        pedidoVenta.setAlmacen(almacenObjetivo);
        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.setPorcentajeDescuentoCalculado(descuentoCalculado);
        pedidoVenta.setPorcentajeDescuentoExtra(descuentoEspecial);
        double descuentoAplicar = descuentoCalculado / 100.0 + descuentoEspecial / 100.0;
        pedidoVenta.setDescuentoAplicado(descuentoAplicar);

        pedidoVenta =
            pedidoVentaBusinessLogic.crearPedidoCapturado(
                pedidoVenta, sessionUserMB.getUsuarioAuthenticated());
        logger.debug("<<===================== OK crearPedidoCapturado =======================");
        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;
    }
  }
  private List<PedidoVenta> findPedidoVentaEntities(boolean all, int maxResults, int firstResult) {
    EntityManager em = getEntityManager();
    try {
      Query q = em.createQuery("select object(o) from PedidoVenta as o");
      if (!all) {
        q.setMaxResults(maxResults);
        q.setFirstResult(firstResult);
      }
      List<PedidoVenta> result = q.getResultList();
      for (PedidoVenta pedidoVenta : result) {
        pedidoVenta.getCliente();

        pedidoVenta.getFormaDePago();

        pedidoVenta.getUsuario();

        Collection<PedidoVentaDetalle> detalleVentaPedidoCollection =
            pedidoVenta.getPedidoVentaDetalleCollection();
        for (PedidoVentaDetalle detalleVentaPedido : detalleVentaPedidoCollection) {
          Producto producto = detalleVentaPedido.getProducto();
        }

        Collection<PedidoVentaEstado> pedidoVentaEstadoCollection =
            pedidoVenta.getPedidoVentaEstadoCollection();
        for (PedidoVentaEstado pedidoVentaEstado : pedidoVentaEstadoCollection) {}
      }
      return result;
    } finally {
      em.close();
    }
  }
  public PedidoVenta findPedidoVenta(Integer id) {
    EntityManager em = getEntityManager();
    try {
      PedidoVenta pedidoVenta = em.find(PedidoVenta.class, id);

      pedidoVenta.getUsuario();
      pedidoVenta.getCliente();
      pedidoVenta.getCliente().getPoblacion();
      pedidoVenta.getAlmacen();
      pedidoVenta.getFormaDePago();

      Collection<PedidoVentaDetalle> detalleVentaPedidoCollection =
          pedidoVenta.getPedidoVentaDetalleCollection();
      for (PedidoVentaDetalle detalleVentaPedido : detalleVentaPedidoCollection) {}

      Collection<PedidoVentaEstado> pedidoVentaEstadoCollection =
          pedidoVenta.getPedidoVentaEstadoCollection();
      for (PedidoVentaEstado pedidoVentaEstado : pedidoVentaEstadoCollection) {}

      return pedidoVenta;
    } finally {
      em.close();
    }
  }