public ActionResult FornecedoresControleSolicitacoesFrm(string chaveurl)
        {
            int idSolicitacao = 0;
            int idSolicitacaoTipo;
            int idPapel;

            if (!string.IsNullOrEmpty(chaveurl))
            {
                List <ParametroCriptografia> param = Cripto.DescriptografarUrl(chaveurl, Key);
                Int32.TryParse(param.First(p => p.Name == "idS").Value, out idSolicitacao);
                Int32.TryParse(param.First(p => p.Name == "idST").Value, out idSolicitacaoTipo);
                Int32.TryParse(param.First(p => p.Name == "idP").Value, out idPapel);
            }

            int tipoFluxoId = _solicitacaoService.BuscarTipoFluxoId(idSolicitacao);

            ViewBag.Fluxo = tipoFluxoId;

            SOLICITACAO solicitacao = _solicitacaoService.BuscarPorIdControleSolicitacoes(idSolicitacao);
            int         tpFluxoId   = solicitacao.Fluxo.FLUXO_TP_ID;

            ViewBag.QtdGrupoEmpresa = _grupoService.QuantidadeEmpresa(solicitacao.CONTRATANTE_ID);
            FichaCadastralWebForLinkVM ficha = new FichaCadastralWebForLinkVM(
                idSolicitacao,
                new AprovacaoVM
            {
                Solicitacao_Tramite = new SOLICITACAO_TRAMITE()
            });

            switch (tipoFluxoId)
            {
            case 10:     // Cadastro Fornecedor Nacional
            case 20:     // Cadastro Fornecedor Nacional Direto
            case 30:     // Cadastro de Fonecedor Pessoa Física
            case 40:     // Cadastro Fornecedor Pessoa Fisica Direto
                this.PopularAcompanhamentoNovoFornecedor(ficha, solicitacao);
                break;

            case 50:     // Cadastro Fornecedor Estrangeiro
                this.PopularAcompanhamentoNovoFornecedorEstrangeiro(ficha, solicitacao);
                break;

            case 60:     // Ampliação de Fornecedor
                this.PopularAcompanhamentoAmpliacao(ficha, solicitacao);
                break;

            case 70:     // Modificações gerais
                this.PopularAcompanhamentoModificacaoGerais(ficha, solicitacao);
                ViewBag.OutrosDadosVisao     = new SelectList(_visaoService.ListarTodos(), "ID", "VISAO_NM", ficha.OutrosDadosVisao);
                ViewBag.OutrosDadosGrupo     = new SelectList(_tipoGrupoService.ListarGruposPorVisao(ficha.OutrosDadosVisao), "ID", "GRUPO_NM", ficha.OutrosDadosGrupo);
                ViewBag.OutrosDadosDescricao = new SelectList(_descricaoService.ListarPorGrupoId(ficha.OutrosDadosGrupo), "ID", "DESCRICAO_NM", ficha.OutrosDadosDescricao);
                break;

            case 90:     // Modificações de dados Bancários
                this.PopularAcompanhamentoModificacaoDadosBancarios(ficha, solicitacao);
                break;

            case 100:     // Modificações de dados Contatos
                this.PopularAcompanhamentoModificacaoDadosContatos(ficha, solicitacao);
                break;

            case 110:     // Bloqueio do Fornecedor
                this.PopularAcompanhamentoBloqueio(ficha, solicitacao);
                ViewBag.BloqueioMotivoQualidade = _funcaoBloqueioService.ListarTodosPorCodigoFuncaoBloqueio();
                break;

            case 120:     // Desbloqueio do Fornecedor
                this.PopularAcompanhamentoDesbloqueio(ficha, solicitacao);
                break;

            case 130:     // Atualizar Documentos
                this.PopularAcompanhamentoAtualizacaoDocumento(ficha, solicitacao);
                break;

            case 140:     //Questionário Dinâmico
                this.PopularAcompanhamentoQuestionarioDinamico(ficha, solicitacao);
                break;

            case 150:     //Mudança de Endereco
                this.PopularAcompanhamentoModificacaoEndereco(ficha, solicitacao);
                break;

            case 160:     //Unspsc
                this.PopularAcompanhamentoModificacaoUnspsc(ficha, solicitacao);
                break;
            }

            //Mapear UNSPSC
            ficha.FornecedoresUnspsc =
                Mapper.Map <List <SOLICITACAO_UNSPSC>, List <FornecedorUnspscVM> >(solicitacao.WFD_SOL_UNSPSC.ToList());

            // Solicitação
            Mapper.Map(solicitacao, ficha.Aprovacao);

            this.PopularAcompanhamentoPreencheStatusRobo(ficha, solicitacao, tpFluxoId);

            int papelSolicitante = _papelService.BuscarPorContratanteETipoPapel(solicitacao.Contratante.ID, (int)EnumTiposPapel.Solicitante).ID;

            ficha.Questionarios = new RetornoQuestionario <QuestionarioVM>
            {
                QuestionarioDinamicoList =
                    Mapper.Map <List <QuestionarioDinamico>, List <QuestionarioVM> >(
                        _cadastroUnicoService.BuscarQuestionarioDinamico(new QuestionarioDinamicoFiltrosDTO()
                {
                    ContratanteId = solicitacao.Contratante.ID,
                    PapelId       = papelSolicitante,
                    CategoriaId   = ficha.CategoriaId,
                    Alteracao     = false,
                    SolicitacaoId = solicitacao.ID
                })
                        )
            };

            var prorrogacao = solicitacao.WFD_SOLICITACAO_PRORROGACAO.Where(o => o.APROVADO == null).LastOrDefault();

            if (prorrogacao != null)
            {
                //Busca a ultima solicitacao de prorrogação, ou seja a ativa.
                ficha.ProrrogacaoPrazo =
                    Mapper.Map <SOLICITACAO_PRORROGACAO, ProrrogacaoPrazoVM>(prorrogacao);
            }
            ficha.ProrrogacaoPrazo.PrazoPreenchimento = _contratanteConfiguracaoService.BuscarPrazo(solicitacao);

            PreparaModal(ficha);

            return(View(ficha));
        }