private void addSugestaoItemSolicitacao(SolicitacaoMedicamentoUnidadeItem item) {
   List<Estoque> estoques =
       new EstoqueConsultaRaiz().consultarEstoquesMaterial(item.getMaterial());
   int quantidadeTemp = item.getQuantidadeSolicitada();
   ItemDispensacao id = new ItemDispensacao();
   id.setItem(item);
   for (Estoque estoque : estoques) {
     EstoqueDispensacao ed = new EstoqueDispensacao();
     if (quantidadeTemp <= estoque.getQuantidadeAtual()) {
       ed.setEstoque(estoque);
       ed.setQuantidadeDispensada(quantidadeTemp);
       id.getEstoques().add(ed);
       break;
     } else {
       if (quantidadeTemp > estoque.getQuantidadeAtual()) {
         ed.setEstoque(estoque);
         ed.setQuantidadeDispensada(estoque.getQuantidadeAtual());
         id.getEstoques().add(ed);
         quantidadeTemp = quantidadeTemp - estoque.getQuantidadeAtual();
       }
     }
   }
   if (estoques == null || estoques.isEmpty()) {
     id.getItem().setStatusItem(TipoStatusSolicitacaoItemEnum.R);
     id.getItem().setJustificativa("Item recusado por n�o possuir algum lote com saldo");
   }
   getItensDispensacao().add(id);
 }
 private int getQuantidadeLiberada() {
   int total = 0;
   for (EstoqueDispensacao ed : getEstoquesEdicao()) {
     total += ed.getQuantidadeDispensada();
   }
   return total;
 }
 public void carregarEstoquesDispensacao() {
   List<Estoque> estoques =
       new EstoqueConsultaRaiz().consultarEstoquesMaterial(getItemEdicao().getMaterial());
   setEstoquesEdicao(new ArrayList<EstoqueDispensacao>());
   for (Estoque estoque : estoques) {
     EstoqueDispensacao ed = new EstoqueDispensacao();
     ed.setEstoque(estoque);
     ed.setQuantidadeDispensada(quantidadeDispensadaItemEstoque(estoque));
     getEstoquesEdicao().add(ed);
   }
 }
 private void unlockEstoques() {
   for (ItemDispensacao item : getItensDispensacao()) {
     for (EstoqueDispensacao ed : item.getEstoques()) {
       try {
         new ControleEstoque().unLockEstoque(ed.getEstoque());
       } catch (ExcecaoEstoqueUnLock e) {
         e.printStackTrace();
       }
     }
   }
 }
 private void atualizarItensEstoqueEdicao() {
   for (ItemDispensacao item : getItensDispensacao()) {
     if (item.getItem().equals(getItemEdicao())) {
       item.setEstoques(new ArrayList<EstoqueDispensacao>());
       for (EstoqueDispensacao ed : getEstoquesEdicao()) {
         if (ed.getQuantidadeDispensada() != 0) {
           item.getEstoques().add(ed);
         }
       }
       break;
     }
   }
 }
 private int quantidadeDispensadaItemEstoque(Estoque estoque) {
   for (ItemDispensacao item : getItensDispensacao()) {
     if (item.getItem().equals(getItemEdicao())) {
       for (EstoqueDispensacao ed : item.getEstoques()) {
         if (ed.getEstoque().getLote().equals(estoque.getLote())) {
           return ed.getQuantidadeDispensada();
         }
       }
       return 0;
     }
   }
   return 0;
 }
  private void finalizarDispensacao() {
    PadraoFluxoTemp.limparFluxo();
    try {
      TipoMovimento tipoMovimentoDS = Parametro.tipoMovimentoDispensacaoSimples();
      Date date = new Date();
      for (ItemDispensacao item : getItensDispensacao()) {
        item.getItem().setDataLiberacao(date);
        item.getItem().setProfissionalLiberacao(Autenticador.getProfissionalLogado());
        if (!item.getItem().getStatusItem().equals(TipoStatusSolicitacaoItemEnum.R)) {
          for (EstoqueDispensacao ed : item.getEstoques()) {
            MovimentoLivro ml = new MovimentoLivro();
            ml.setEstoque(ed.getEstoque());
            ml.setTipoMovimento(tipoMovimentoDS);
            ml.setQuantidadeMovimentacao(ed.getQuantidadeDispensada());
            ml.setJustificativa("RM: " + getInstancia().getIdSolicitacaoMedicamentoUnidade());
            new ControleEstoque().liberarAjuste(date, ml);

            PadraoFluxoTemp.getObjetoSalvar().put("MovimentoLivro" + ml.hashCode(), ml);

            DispensacaoSimples ds = new DispensacaoSimples();
            ds.setSolicitacaoMedicamentoUnidadeItem(item.getItem());
            ds.setMovimentoLivro(ml);
            ds.setUnidadeDispensada(
                item.getItem().getSolicitacaoMedicamentoUnidade().getUnidadeDestino());
            PadraoFluxoTemp.getObjetoSalvar().put("DispensacaoSimples" + ds.hashCode(), ds);
          }
        }
        PadraoFluxoTemp.getObjetoAtualizar()
            .put("ItemDispensacao" + item.hashCode(), item.getItem());
      }
      getInstancia().setDataDispensacao(date);
      getInstancia().setProfissionalDispensacao(Autenticador.getProfissionalLogado());
      getInstancia().setStatusDispensacao(TipoStatusDispensacaoEnum.D);
      PadraoFluxoTemp.getObjetoAtualizar()
          .put("Dispensacao" + getInstancia().hashCode(), getInstancia());
      PadraoFluxoTemp.finalizarFluxo();
      setExibirDialogProfissionalReceptor(false);
      setExibirDialogDispensacao(true);
      SolicitacaoMedicamentoUnidadeConsultaRaiz.getInstanciaAtual()
          .consultarSolicitacoesPendentes();
    } catch (Exception e) {
      e.printStackTrace();
      getInstancia().setStatusDispensacao(TipoStatusDispensacaoEnum.P);
    } finally {
      PadraoFluxoTemp.limparFluxo();
      unlockEstoques();
      setInstancia(
          new SolicitacaoMedicamentoUnidadeConsultaRaiz()
              .solicitacaoId(getInstancia().getIdSolicitacaoMedicamentoUnidade()));
    }
  }