@RequestMapping("/determinaQuantidade")
  @ResponseBody
  public String determinaQuantidade(Integer idProdutoGrupo, Integer idGrupo) {

    ProdutoGrupo produto = manager.getReference(ProdutoGrupo.class, idProdutoGrupo);
    Grupo grupo = manager.getReference(Grupo.class, idGrupo);
    DeterminaQuantidades d = produtoGrupoDAO.determinaQuant(idGrupo);
    DeterQuantpadrao detPad = produtoGrupoDAO.deterQuantPadrao(idGrupo);

    DetalhesItemProducao detalhes = new DetalhesItemProducao();

    BigDecimal[] valores = pegaValores(produto.getIdProdutoGrupo(), grupo.getIdgrupo());
    // valores [0] = t - valorUnit;
    // valores [1] = p - preco;
    // valores [2] = q - quantDeter Bigdecimal;
    // valores [3] = d - Diaria Bigdecimal;

    double quantDeter = valores[2].doubleValue();
    double diarias = valores[3].doubleValue();

    double quantDiaria = quantDeter * diarias;

    if (d == null) {

      if (detPad == null) {
        novoDeterminaQuant(produto, grupo);
      } else {
        manager.remove(detPad);
        novoDeterminaQuant(produto, grupo);
      }

    } else {
      d.setProdutoGrupo(produto);
      d.setValorUnit(valores[0]);
      d.setPrecoTotal(valores[1]);
      d.setQuantDeterm(quantDeter);
      d.setDiarias(diarias);

      manager.merge(d);
    }

    String quant = valores[2].toString();
    String quantDia = String.valueOf(quantDiaria);

    String precs = valores[1].toString();
    precs = util.ConverteDolarParaReal(precs);

    String tots = valores[0].toString();
    tots = util.ConverteDolarParaReal(tots);

    detalhes.setDeterminaQuant(quantDia);
    detalhes.setPrecoTotal(precs);
    detalhes.setValorUnit(tots);

    Gson gson = new Gson();
    return gson.toJson(detalhes);
  }
  public void novoDeterminaQuant(ProdutoGrupo produto, Grupo grupo) {
    BigDecimal[] valores = pegaValores(produto.getIdProdutoGrupo(), grupo.getIdgrupo());

    double quantDeter = valores[2].doubleValue();
    double diarias = valores[3].doubleValue();

    DeterminaQuantidades novoDeterm = new DeterminaQuantidades();

    novoDeterm.setProdutoGrupo(produto);
    novoDeterm.setGrupo(grupo);
    novoDeterm.setValorUnit(valores[0]);
    novoDeterm.setPrecoTotal(valores[1]);
    novoDeterm.setQuantDeterm(quantDeter);
    novoDeterm.setDiarias(diarias);

    manager.persist(novoDeterm);
  }
  @RequestMapping("/atualizaDetalhesItem")
  public String atualizaDetalhesItem(ProdutoGrupo produtoGrupo) {

    /**
     * Faz uma verificação se o valor unitário do item está zero ou nulo Se estiver preenche com o
     * valor 0,00
     */
    String teste = produtoGrupo.getCustoProdutoTransiente();
    if (teste.equals("")) {
      produtoGrupo.setCustoProdutoTransiente("0,00");
    }

    String quant = produtoGrupo.getQuantidadeTransiente().replace(",", ".");
    produtoGrupo.setQuantidade(utilConv.converterStringParaDouble(quant));

    String quant2 = produtoGrupo.getQuantidade2Transiente().replace(",", ".");
    produtoGrupo.setQuantidade2(utilConv.converterStringParaDouble(quant2));

    String diaria = produtoGrupo.getDiariasTransiente().replace(",", ".");
    produtoGrupo.setDiarias(utilConv.converterStringParaDouble(diaria));

    // Fim Teste

    Produto produto = manager.find(Produto.class, produtoGrupo.getIdprodutoTransiente());
    Grupo grupo = manager.find(Grupo.class, produtoGrupo.getIdGrupoTransiente());
    Lista lista = manager.find(Lista.class, grupo.getIdLista().getIdLista());
    Empresa empresa = manager.find(Empresa.class, produtoGrupo.getIdEmpresaTransiente());

    Usuario usuario = util.retornaUsuarioLogado();
    produtoGrupo.setUsuario(usuario);

    BigDecimal custoProduto =
        new BigDecimal(util.formataValores(produtoGrupo.getCustoProdutoTransiente()));
    BigDecimal zero = new BigDecimal(0);

    // 1 Verifica se terá Custo com BV forn. incluso // Caiu em desuso Segundo o Pedro
    if (produtoGrupo.isCustoComBvFornecedor() == false) {
      produtoGrupo.setBvFornecedor(zero);
      produtoGrupo.setCustoComBvFornecedor(false);
      produtoGrupo.setBvFornecedorEmPorcentagem(false);
      produtoGrupo.setBvFornecedorValor(zero);
    } else {
      valoresProdutoGrupo.custoComBvFornecedorIncluso(produtoGrupo);
    }

    // 2 Custo do produto sem impostos ou bv
    produtoGrupo.setCustoProduto(custoProduto);

    // 3 Verifica se terá BV venda
    valoresProdutoGrupo.BvVenda(produtoGrupo, custoProduto, produtoGrupo.getIdGrupoTransiente());

    // 4 ------------------------------------
    // Buscar mais detalhes sobre essa regra

    // 5 ------------------------------------
    produtoGrupo.setIdGrupo(grupo);
    produtoGrupo.setIdProduto(produto);
    produtoGrupo.setProduto(produto.getProduto());
    produtoGrupo.setEmpresa(empresa);
    produtoGrupo.setAlteradoEm(Calendar.getInstance());

    String al = Utilitaria.nomeAleatorio(12);

    produtoGrupo.setTidProdutoGrupo(al);

    manager.merge(produtoGrupo);

    // Setando valores no Grupo dos itens
    valoresEmGrupo.atualizaImpostoGrupo(grupo);
    // Setando os valores na Lista
    //			valoresNaLista.InsereValoresLista(grupo, lista);
    valoresNaLista.calculaValorLista(
        lista.getIdLista()); // / ------- Setar valores na lista --------- ///	

    // Verifica se é necessário uma quantidade Determinante nesse produto
    DeterminaQuantidades d = produtoGrupoDAO.determinaQuant(produtoGrupo.getIdGrupoTransiente());

    /*Integer pg1 = d.getProdutoGrupo().getIdProdutoGrupo();
    Integer pg2 = produtoGrupo.getIdProdutoGrupo();*/

    if (d == null) {
      novoDeterminaQuant(produtoGrupo, grupo);
    } else {

      if (d.getProdutoGrupo().getIdProdutoGrupo().equals(produtoGrupo.getIdProdutoGrupo())) {
        atualizaDeterminaQuant(d, produtoGrupo, grupo);
      } else {
        System.out.println("Não faz nada");
      }
    }

    if (produtoGrupo.isSalvarEfechar() == true) {
      return "redirect:editaLinha?idGrupo=" + produtoGrupo.getIdGrupoTransiente();
    } else {
      return "redirect:descricaoItem?idProdutoGrupo="
          + produtoGrupo.getIdProdutoGrupo()
          + "&idGrupo="
          + produtoGrupo.getIdGrupoTransiente();
    }
  }