public List pesquisaProduto(Produto produto, Integer tipoPesquisa, String porPesquisa) {
    if (produto.getDescricao().isEmpty()) {
      return new ArrayList();
    }
    try {
      String por;
      if (porPesquisa.equals("Inicial")) {
        por = "";
      } else {
        por = "%";
      }
      String descricao = por + produto.getDescricao() + "%";
      String queryString =
          ""
              + "SELECT P.*                                                                                               \n"
              + "  FROM est_produto AS P                                                                                  \n"
              + " WHERE trim(UPPER(func_translate(P.ds_descricao))) LIKE trim(UPPER(func_translate('"
              + descricao
              + "'))) \n"
              + "   OR (                                                                                                  \n"
              + "     trim(UPPER(func_translate(P.ds_modelo))) LIKE trim(UPPER(func_translate('"
              + produto.getDescricao()
              + "')))         \n"
              + "     OR trim(UPPER(func_translate(P.ds_marca))) LIKE trim(UPPER(func_translate('"
              + produto.getDescricao()
              + "')))       \n"
              + "     OR trim(UPPER(func_translate(P.ds_fabricante))) LIKE trim(UPPER(func_translate('"
              + produto.getDescricao()
              + "')))  \n"
              + ")                                                                                                        \n"
              + "ORDER BY P.ds_descricao                                                                                  \n"
              + "   ";

      Query query = getEntityManager().createNativeQuery(queryString, Produto.class);
      List list = query.getResultList();
      if (!list.isEmpty()) {
        return list;
      }
    } catch (Exception e) {
      return new ArrayList();
    }
    return new ArrayList();
  }
 public List listaEstoquePorProduto(Produto p) {
   try {
     Query q =
         getEntityManager()
             .createQuery(
                 "SELECT E FROM Estoque AS E WHERE E.produto.id = :p1 ORDER BY E.filial.filial.pessoa.nome ASC, E.estoqueTipo.descricao ASC");
     q.setParameter("p1", p.getId());
     List list = q.getResultList();
     if (!list.isEmpty()) {
       return list;
     }
   } catch (Exception e) {
   }
   return new ArrayList();
 }
 public Estoque listaEstoquePorProdutoFilial(Produto p, Filial l) {
   try {
     Query q =
         getEntityManager()
             .createQuery(
                 "SELECT E FROM Estoque AS E WHERE E.produto.id = :p1 AND E.filial.id = :p2 ORDER BY E.filial.filial.pessoa.nome");
     q.setParameter("p1", p.getId());
     q.setParameter("p2", l.getId());
     List list = q.getResultList();
     if (!list.isEmpty()) {
       return (Estoque) q.getSingleResult();
     }
   } catch (Exception e) {
   }
   return null;
 }