Ejemplo n.º 1
0
        public ActionResult Criar(TipoAlteracao tipo)
        {
            //Autentica
            if (Session["ConexaoSapiens"] == null)
            {
                return RedirectToAction("Login", "Home");
            }
            //Autoriza
            if (!AutorizaUsuario(ControlAccessConfig.Usuario))
            {
                return View("Erro", null, "Módulo não autorizado para este usuário. ");
            }

            using (var bll = new TipoAlteracaoBLL())
            {
                try
                {
                    tipo.Situacao = "A";
                    bll.Salvar(tipo);
                    return RedirectToAction("Index");
                }
                catch (Exception ex)
                {
                    return View("Erro", ex.Message);
                }
            }
        }
Ejemplo n.º 2
0
        public ActionResult SalvarDadoPrincipal(DadoPrincipalSolicitacao dps)
        {
            //Autentica
            if (Session["ConexaoSapiens"] == null)
            {
                return RedirectToAction("Login", "Home");
            }

            //Autoriza
            if (!AutorizaUsuario(Helpers.ControlAccessConfig.NovaSolicitacao))
            {
                return View("Erro", null, "Módulo não autorizado para este usuário. ");
            }

            Solicitacao s = Session["Solicitacao"] as Solicitacao;

            // pegar o valor das dropdowns com jquery, e adicionar no "data" da request ajax. FEITO. 11/11/2014
            #region preenche variáveis que não podem ficar nulas.

            if (String.IsNullOrEmpty(dps.Telefone))
            {
                dps.Telefone = "";
            }
            else
            {
                dps.Telefone = Regex.Replace(dps.Telefone, @"(\)+)|(\(+)|(\-+)", "");
                if (dps.Telefone[2] == '0')
                {
                    var ddd = dps.Telefone.Substring(0, 2);
                    var num = dps.Telefone.Substring(2);

                    dps.Telefone = ddd + num;
                }
            }

            dps.Telefone2 = String.IsNullOrEmpty(dps.Telefone2) ? "" : dps.Telefone2;
            dps.Telefone3 = String.IsNullOrEmpty(dps.Telefone3) ? "" : dps.Telefone3;
            dps.Telefone4 = String.IsNullOrEmpty(dps.Telefone4) ? "" : dps.Telefone4;
            dps.Telefone5 = String.IsNullOrEmpty(dps.Telefone5) ? "" : dps.Telefone5;

            //dps.ContribuinteICMS = String.IsNullOrEmpty(dps.ContribuinteICMS) ? "" : dps.ContribuinteICMS;
            var IE = String.IsNullOrEmpty(dps.InscricaoEstadual) ? "" : dps.InscricaoEstadual;

            dps.ContribuinteICMS = IE.Trim().ToLower() == "isento" || IE.Trim().ToLower() == "" ? "N" : "S";

            dps.TributaICMS = "S";
            dps.CodGrupoEmpresa = String.IsNullOrEmpty(dps.CodGrupoEmpresa) ? "" : dps.CodGrupoEmpresa;
            dps.NumeroFax = String.IsNullOrEmpty(dps.NumeroFax) ? "" : dps.NumeroFax;
            dps.PontoDeReferencia = string.IsNullOrEmpty(dps.PontoDeReferencia) ? "" : dps.PontoDeReferencia;

            dps.CodClienteDadoPrincipalSol = s.CodCliente;
            dps.TipoMercado = "I";
            dps.CobraCliente = "S";
            dps.ExpurgaDaInadimplencia = "N";
            dps.ObservacaoMotivoSituacao = string.IsNullOrEmpty(dps.ObservacaoMotivoSituacao) ? "" : dps.ObservacaoMotivoSituacao;
            dps.TipoDireitoPropriedadeEmpresa = "1";

            s.CodFilial = Convert.ToInt32(Session["CodigoFilial"]); // obter a filial no sapiens... OK

            #endregion

            try
            {
                var tiposDeAlteracao = dps.Alteracoes;

                //salvar os tipos de alteração.

                var usuario = (UsuarioSapiens)Session["ConexaoSapiens"];
                s.CodUsuarioSolicitacao = usuario.Codusu;
                s.DatAlteracao = DateTime.Now;

                using (SolicitacaoBLL solicitacaoBLL = new SolicitacaoBLL())
                {
                    DadoPrincipalSolicitacaoBLL dadoPrincipalBLL = new DadoPrincipalSolicitacaoBLL();
                    HistoricoSolicitacaoBLL historicoBLL = new HistoricoSolicitacaoBLL();
                    DocumentoAnexadoSolicitacaoBLL docsBLL = new DocumentoAnexadoSolicitacaoBLL();
                    TipoAlteracaoBLL tipAltBLL = new TipoAlteracaoBLL();

                    var justificativaArmazenada = Session["TxtJustificativa"] as string;
                    s.Usuario = usuario.Nomusu;
                    s.DatCriacao = DateTime.Now;
                    s.TxtJustificativa = !String.IsNullOrEmpty(s.TxtJustificativa) ?
                        s.TxtJustificativa
                        : !String.IsNullOrEmpty(justificativaArmazenada) ? justificativaArmazenada : "";

                    // AQUI GERA O TICKET SE AINDA NÃO HOUVER DADOS DA SOLICITAÇÃO -> OK
                    if (dps.CodigoDadoPrincipal == 0)
                    {

                        //------------------------------------------------------------------------
                        if (s.CodCliente == 0)
                        {
                            s.CodTipoSolicitacao = Convert.ToInt32(TipoSolicitacao.Inclusao);
                        }
                        else // se o código do cliente não for 0, pode ser duplicação ou alteração.
                        {
                            if (s.CodTipoSolicitacao != 3) // se vem da duplicação, o codTipoSolicitacao foi definido lá
                            {
                                s.CodTipoSolicitacao = Convert.ToInt32(TipoSolicitacao.Alteracao);
                            }
                        }
                        //------------------------------------------------------------------------

                        #region Salvar o histórico da solicitação se não existir ( MOSTROU-SE DESNECESSÁRIO )

                        //var historico = s.Historicos.LastOrDefault();
                        //if (historico == null)
                        //{
                        //    // Inserir como 'DIGITANDO' (código 1)
                        //    var h = new HistoricoSolicitacao();
                        //    h.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoSolicitacao.AguardandoFechamento);
                        //    s.CodSituacaoAtual = Convert.ToInt32(SituacaoSolicitacao.AguardandoFechamento);
                        //    h.Solicitacao = s;
                        //    s.Historicos.Add(h);
                        //}
                        #endregion
                        s.CodSituacaoAtual = Convert.ToInt32(SituacaoSolicitacao.AguardandoFechamento);
                        solicitacaoBLL.SalvarOuAtualizar(s);

                        if (tiposDeAlteracao != null)
                        {
                            foreach (var t in tiposDeAlteracao)
                            {
                                var codTipoAlteracao = Convert.ToInt32(t);
                                var tipo = tipAltBLL.ObterPorCodigo(codTipoAlteracao);

                                if (!s.TiposAlteracao.Contains(tipo))
                                {

                                    s.TiposAlteracao.Add(tipo);
                                }

                                //se o tipo de alteração que eu estou tentando gravar já existir, não gravar.

                            }
                        }
                        solicitacaoBLL.Atualizar(s);

                        dps.Solicitacao = s; // atribui a chave estrageira (solicitação) ao dado principal.

                        dps.EmailNFE = String.IsNullOrEmpty(dps.EmailNFE) ? "" : dps.EmailNFE;// +";" + dps.EmailNFE2;

                        dadoPrincipalBLL.Salvar(dps); // salva os dados principais.
                    }
                    else
                    {
                        var dadoPrincipal = dadoPrincipalBLL.ObterPorCodigo(dps.CodigoDadoPrincipal);

                        dadoPrincipal.Ativo = dps.Ativo;
                        dadoPrincipal.Bairro = dps.Bairro;
                        dadoPrincipal.CEP = dps.CEP;
                        dadoPrincipal.Cidade = dps.Cidade;
                        dadoPrincipal.CobraCliente = dps.CobraCliente;
                        dadoPrincipal.CodClienteDadoPrincipalSol = dps.CodClienteDadoPrincipalSol;
                        dadoPrincipal.CodGrupoEmpresa = dps.CodGrupoEmpresa;
                        dadoPrincipal.CodIBGE = dps.CodIBGE;
                        dadoPrincipal.CodigoDadoPrincipal = dps.CodigoDadoPrincipal;
                        dadoPrincipal.CodRamoAtividade = dps.CodRamoAtividade;
                        dadoPrincipal.CodRota = dps.CodRota;
                        dadoPrincipal.CodSubRota = dps.CodSubRota;
                        dadoPrincipal.Complemento = dps.Complemento;
                        dadoPrincipal.ContribuinteICMS = dps.ContribuinteICMS;
                        dadoPrincipal.CPFCNPJ = dps.CPFCNPJ;
                        dadoPrincipal.DataUltimaConsulta = dps.DataUltimaConsulta;
                        dadoPrincipal.EmailNFE2 = dps.EmailNFE2;
                        dadoPrincipal.EmailNFE = dps.EmailNFE + ";" + dps.EmailNFE2;
                        dadoPrincipal.ExpurgaDaInadimplencia = dps.ExpurgaDaInadimplencia;
                        dadoPrincipal.InscricaoEstadual = dps.InscricaoEstadual;
                        dadoPrincipal.Isento = dps.Isento;
                        dadoPrincipal.Logradouro = dps.Logradouro;
                        dadoPrincipal.NomeFantasia = dps.NomeFantasia;
                        dadoPrincipal.Numero = dps.Numero;
                        dadoPrincipal.NumeroFax = dps.NumeroFax;
                        dadoPrincipal.ObservacaoMotivoSituacao = dps.ObservacaoMotivoSituacao;
                        dadoPrincipal.PontoDeReferencia = dps.PontoDeReferencia;
                        dadoPrincipal.RamoFiscal = dps.RamoFiscal;
                        dadoPrincipal.RazaoSocial = dps.RazaoSocial;
                        dadoPrincipal.SituacaoReceitaFederal = String.IsNullOrEmpty(dadoPrincipal.SituacaoReceitaFederal) ? "Consulta não retornou dados" : dadoPrincipal.SituacaoReceitaFederal;
                        dadoPrincipal.SituacaoReceitaEstadual = String.IsNullOrEmpty(dadoPrincipal.SituacaoReceitaEstadual) ? "Consulta não retornou dados" : dadoPrincipal.SituacaoReceitaEstadual;
                        dadoPrincipal.Solicitacao = s;
                        dadoPrincipal.Telefone = dps.Telefone;
                        dadoPrincipal.Telefone2 = dps.Telefone2;
                        dadoPrincipal.Telefone3 = dps.Telefone3;
                        dadoPrincipal.Telefone4 = dps.Telefone4;
                        dadoPrincipal.Telefone5 = dps.Telefone5;
                        dadoPrincipal.TipoCliente = dps.TipoCliente;
                        dadoPrincipal.TipoDireitoPropriedadeEmpresa = dps.TipoDireitoPropriedadeEmpresa;
                        dadoPrincipal.TipoEmpresa = dps.TipoEmpresa;
                        dadoPrincipal.TipoMercado = dps.TipoMercado;
                        dadoPrincipal.TributaICMS = dps.TributaICMS;
                        dadoPrincipal.UF = dps.UF;

                        solicitacaoBLL.SalvarOuAtualizar(s);// AQUI GERA O TICKET     -> OK

                        /////////////////////
                        if (tiposDeAlteracao != null)
                        {
                            foreach (var t in tiposDeAlteracao)
                            {
                                var codTipoAlteracao = Convert.ToInt32(t);
                                var tipo = tipAltBLL.ObterPorCodigo(codTipoAlteracao);

                                if (!s.TiposAlteracao.Contains(tipo))
                                {
                                    s.TiposAlteracao.Add(tipo);
                                }
                            }
                            solicitacaoBLL.Atualizar(s);
                        }
                        /////////////////////

                        dps.Solicitacao = s;
                        dadoPrincipalBLL.Atualizar(dadoPrincipal);
                    }

                    s.DadosPrincipaisSolicitacao.Clear();
                    s.DadosPrincipaisSolicitacao.Add(dps); // as vezes reclama de session aberta, solução -> trazer do banco , preencher os dados e atualizar.

                }

                Session["Solicitacao"] = s;
                new SolicitacaoBLL().ObterNomes(new List<Solicitacao>() { s });
                return Json(new { msg = "Dados Principais gravados com sucesso. ticket nº: " + s.Codigo, codSol = s.Codigo, datCriacao = s.DatCriacao.ToShortDateString(), filial = s.Filial, status = s.Situacao, tipo = s.Tipo }, JsonRequestBehavior.DenyGet);
            }
            catch (Exception ex)
            {
                return Json(new { msg = "Erro ao tentar gravar dados principais: " + ex.Message }, JsonRequestBehavior.DenyGet);
            }
        }
Ejemplo n.º 3
0
        public ActionResult Editar(int codigo)
        {
            if (Session["ConexaoSapiens"] == null)
            {
                return RedirectToAction("Login", "Home");
            }
            //Autoriza
            if (!AutorizaUsuario(ControlAccessConfig.Usuario))
            {
                return View("Erro", null, "Módulo não autorizado para este usuário. ");
            }

            using (var bll = new TipoAlteracaoBLL())
            {
                var model = bll.ObterPorCodigo(codigo);

                return View(model);
            }
        }
Ejemplo n.º 4
0
        //
        // GET: /TipoAlteracao/
        public ActionResult Index()
        {
            //Autentica
            if (Session["ConexaoSapiens"] == null)
            {
                return RedirectToAction("Login", "Home");
            }
            //Autoriza
            if (!AutorizaUsuario(ControlAccessConfig.Usuario))
            {
                return View("Erro", null, "Módulo não autorizado para este usuário. ");
            }

            // mostrar uma lista
            using (TipoAlteracaoBLL bll = new TipoAlteracaoBLL())
            {
                var lista = bll.ListarTodos();

                return View(lista);
            }
        }
Ejemplo n.º 5
0
        public ActionResult Editar(TipoAlteracao tipo)
        {
            if (Session["ConexaoSapiens"] == null)
            {
                return RedirectToAction("Login", "Home");
            }
            //Autoriza
            if (!AutorizaUsuario(ControlAccessConfig.Usuario))
            {
                return View("Erro", null, "Módulo não autorizado para este usuário. ");
            }

            using (var bll = new TipoAlteracaoBLL())
            {

                try
                {
                    bll.Atualizar(tipo);
                    return RedirectToAction("Index");
                }
                catch (Exception)
                {
                    return View();
                }

            }
        }
Ejemplo n.º 6
0
        public ActionResult Analise(int codigo = 0, int CodParecer = 0)
        {
            #region Autentica
            if (Session["ConexaoSapiens"] == null)
            {
                return RedirectToAction("Login", "Home");
            }
            #endregion

            #region Autoriza

            if (!AutorizaUsuario(Helpers.ControlAccessConfig.AbrirAnalise))
            {
                return View("Erro", null, "Módulo não autorizado para este usuário. ");
            }

            #endregion

            ViewBag.CodSol = codigo;

            var usuario = (UsuarioSapiens)Session["ConexaoSapiens"];

            ViewBag.Usuario = usuario.Nomusu;
            ViewBag.NomeEmpresa = usuario.Numemp;
            var nomeFilial = Session["NomeFilial"] as string;
            ViewBag.Filial = usuario.Codfil + " - " + nomeFilial;

            using (var solicitacaoBLL = new SolicitacaoBLL())
            {
                #region Prepara a camada lógica de negócio

                var dadoPrincipalBLL = new DadoPrincipalAprovacaoBLL();
                var caracteristicaSapiensBLL = new CaracteristicaSapiensBLL();
                var definicoesBLL = new DefinicoesClienteAprovacaoBLL();
                var defBLL = new DefinicoesClienteSolicitacaoBLL();
                var perfilBLL = new PerfilUsuarioBLL();
                var usuarioBLL = new UsuarioSapiensBLL();
                var clienteSapiensBLL = new ClienteSapiensBLL();
                var consultaReceitaBLL = new ConsultaReceitaBLL();
                var parecerBLL = new ParecerSolicitacaoBLL();
                var tipAltBLL = new TipoAlteracaoBLL();

                #endregion

                Solicitacao s = null;
                ParecerSolicitacao p = null;
                try
                {
                    // se não for passado o código da solicitação, mas foi passado o código do parecer.
                    if (codigo == 0 && CodParecer != 0)
                    {
                        p = parecerBLL.ObterPorCodigo(CodParecer);
                        s = p.Solicitacao;
                    }
                    // e se não for passado um código de parecer, obter o último parecer de uma solicitação.
                    else
                    {
                        s = solicitacaoBLL.ObterPorCodigo(codigo);
                        p = s.PareceresSolicitacao.OrderBy(par => par.CodParecer).Last();
                    }
                    #region Buscar a solicitacao usando o código e obter todas as dependencias OK

                    // Procura na session, se não tiver , tenta obter por código, se tiver, usa da session

                    //se está aguardando integração, não pode abrir -> "Não é possível abrir a análise de uma solicitação \n\r em processo de integração."

                    solicitacaoBLL.ObterNomes(new List<Solicitacao> { s });

                    Session["Solicitacao"] = s;

                    try
                    {
                        var sitInt = s.Historicos.OrderBy(h => h.CodHistoricoSolicitacao).Last().CodSituacaoIntegracaoSolicitacao;

                        var situacaoIntegracao =
                            sitInt == 1 ? "Pendente de Integração" :
                            sitInt == 2 ? "Integrado" :
                            sitInt == 3 ? "Erro na Integração" : "Não Iniciado";

                        ViewBag.SituacaoIntegracao = situacaoIntegracao;
                    }
                    catch (Exception)
                    {
                        ViewBag.SituacaoIntegracao = "Não Encontrado";
                    }

                    //if (s.Situacao.ToUpper() == "AGUARDANDO INTEGRAÇÃO")
                    //{
                    //    return Json(new { erro = "Não é possível abrir a análise de uma solicitação \n\r em processo de integração." }, JsonRequestBehavior.AllowGet);
                    //}

                    #region obter o perfil atribuído a cada parecer. (quem precisa aprovar)

                    foreach (var par in s.PareceresSolicitacao)
                    {
                        var perfilAprovador = perfilBLL.ObterPorCodigo(par.Codperusu);
                        par.Perfil = perfilAprovador.DesPerfil;
                        var usuarioAprovador = usuarioBLL.ObterPorCodigo((int)par.Codusuapr);
                        par.Aprovador = usuarioAprovador.Nomusu;
                    }

                    #endregion

                    #region pega o último parecer.

                    if (!String.IsNullOrEmpty(s.Definicoes.Last().VlrLimite))
                    {
                        var vlrLimite = s.Definicoes.Last().VlrLimite;
                        s.Definicoes.Last().VlrLimite = String.IsNullOrEmpty(vlrLimite) ? "" : Regex.Replace(vlrLimite, @"(\s+)|(\\+)|(\.+)|(/+)|(\-+)|(\,+)|(R+)|(\$+)", "");
                    }

                    //preenche os nomes
                    foreach (var par in s.PareceresSolicitacao)
                    {
                        foreach (var c in par.CaracteristicasAprovacao)
                        {
                            caracteristicaSapiensBLL.ObterNomes(c);
                        }
                    }

                    #endregion

                    #endregion

                    #region obter os perfis do usuario  (quem está logado) OK - se algum dos perfis do usuário logado contém o perfil aprovador, pode salvar parecer.

                    var perfisUsuarioLogado = perfilBLL.ObterGruposPorCodUsuario(usuario.Codusu);

                    if (perfisUsuarioLogado.Count() == 0)
                    {
                        perfisUsuarioLogado.Add(new PerfilUsuario() { DesPerfil = "DESCONHECIDO", CodPerfilUsuario = 0, SitPerfil = 0 });
                    }

                    var queryPodeSalvarParecer = from meuPerfil in perfisUsuarioLogado
                                                 where meuPerfil.CodPerfilUsuario == p.Codperusu
                                                 select meuPerfil;

                    var queryUsuarioTI = from meuPerfil in perfisUsuarioLogado
                                         where meuPerfil.CodPerfilUsuario == 1
                                         select meuPerfil;

                    ViewBag.PodeSalvar = queryPodeSalvarParecer.Count() > 0 ? "S" : "N";
                    ViewBag.IsUsuarioTI = queryUsuarioTI.Count() > 0 ? "S" : "N";

                    ViewBag.Usuario = usuario.Nomusu;

                    #endregion

                    foreach (var v in s.Integracoes)
                    {
                        if (v.CodSecao.HasValue)
                        {
                            v.Secao = v.CodSecao.Value == 1 ? "Dados Principais" :
                                v.CodSecao.Value == 2 ? "Características" :
                                v.CodSecao.Value == 3 ? "Definições" :
                                v.CodSecao.Value == 4 ? "Endereço de Cobrança" :
                                v.CodSecao.Value == 5 ? "Endereço de Entrega" :
                                v.CodSecao.Value == 6 ? "Referências" :
                                v.CodSecao.Value == 7 ? "Contatos" :
                                v.CodSecao.Value == 8 ? "Anexos" :
                                v.CodSecao.Value == 9 ? "Sócios" : "";
                        }

                        if (v.CodSituacaoIntegracao.HasValue)
                        {
                            v.SituacaoIntegracao = v.CodSituacaoIntegracao.Value == 1 ? "Comando Enviado" :
                                v.CodSituacaoIntegracao.Value == 2 ? "OK" :
                                v.CodSituacaoIntegracao.Value == 3 ? "Erro" : "";
                        }
                    }

                    // pegar o código do usuário e comparar
                    // se o perfil do parecer não for o mesmo do usuário atual, travar todos os campos.

                    #region Prepara o Parecer 'p' e exibe na tela.

                    // preencher a tela de aprovacao com:

                    // 1 - a lista de Pareceres OK
                    // 2 - a tela de resumo da solicitação. ( OK )
                    // 3 - os dados complementares. ( OK )
                    // 4 - o click do botao de parecer pega o aprovador e muda o parecer. ( OK )
                    // 5 - as views de consulta.

                    p.Codusuapr = usuario.Codusu; // obter o codigo do usuario da aprovacao.

                    dadoPrincipalBLL.PreencheDependencias(p.DadosPrincipaisAprovacao.Last());
                    var cgccpf = Regex.Replace(p.DadosPrincipaisAprovacao.Last().CPFCNPJ, @"(\s+)|(\\+)|(\.+)|(/+)|(\-+)", "");

                    var codFilial = Session["CodigoFilial"];

                    #region HINT DATA ULTIMA CONSULTA OU DATA CADASTRO

                    var ultimaConsulta = consultaReceitaBLL.ObterDataUltimaConsultaDoCliente(cgccpf);

                    #endregion

                    p.DadosPrincipaisAprovacao.Last().DataUltimaConsulta = ultimaConsulta.ToString("dd/MM/yyyy HH:mm:ss");

                    p.CaracteristicasAprovacao = p.CaracteristicasAprovacao.Count > 0 ? p.CaracteristicasAprovacao : new List<CaracteristicaClienteAprovacao>() { };
                    p.DefinicoesAprovacao = p.DefinicoesAprovacao.Count > 0 ? p.DefinicoesAprovacao : new List<DefinicoesClienteAprovacao>() { };
                    definicoesBLL.PreencheDependencias(p.DefinicoesAprovacao.Last(), p.Solicitacao.CodCliente);
                    p.ContatosAprovacao = p.ContatosAprovacao.Count > 0 ? p.ContatosAprovacao : new List<ContatoClienteAprovacao>() { };

                    defBLL.PreencheDependencias(p.Solicitacao.Definicoes.Last(), 1, 1);

                    if (!String.IsNullOrEmpty(p.DefinicoesAprovacao.Last().VlrLimite))
                    {
                        p.DefinicoesAprovacao.Last().VlrLimite = String.Format("{0:C}", Convert.ToInt32(p.DefinicoesAprovacao.Last().VlrLimite));
                    }

                    if (p.SociosAprovacao.Count > 0)
                    {
                        if (!String.IsNullOrEmpty(p.SociosAprovacao.Last().CapitalSocial))
                        {
                            var strCapitalSocial = p.SociosAprovacao.Last().CapitalSocial;
                            int valorInteiroCapitalSocial = 0;
                            if (Int32.TryParse(strCapitalSocial, out valorInteiroCapitalSocial))
                            {

                                p.SociosAprovacao.Last().CapitalSocial = String.Format("{0:C}",valorInteiroCapitalSocial);
                            }

                        }
                    }

                    #endregion

                    #region Preencher Dependencias do Tableau

                    PreencherDependenciasTableau(p.DadosPrincipaisAprovacao.Last());

                    #endregion

                    #region Buscar Cliente e verificar a data da última solicitação ( se houver prepara dependências dos dados complementares )

                    var clienteSapiens = clienteSapiensBLL.ObterPorCodigo(s.CodCliente);

                    // se já é cliente, verifica se já tem alguma solicitação.
                    if (clienteSapiens != null)
                    {
                        int codFilAnulavel = s.Definicoes.Last().CodFilial;

                        var definicoesClienteSapiens = new DefinicoesSapiensBLL().ObterDefinicoesPorCliente(clienteSapiens.codcli, codFilAnulavel);

                        clienteSapiens.Definicoes.Add(definicoesClienteSapiens);

                        var pessoaJuridica = new SocioSapiensBLL().ObterSociosPorCliente(clienteSapiens.codcli).LastOrDefault();

                        var solicitacoes = solicitacaoBLL.ObterSolicitacoesPorCodFilial(Convert.ToInt32(Session["CodigoFilial"]));
                        var queryClienteSolicitacao = from sol in solicitacoes
                                                      where sol.CodCliente == clienteSapiens.codcli
                                                      select sol;

                        #region Preencher Dependências dos Dados Complementares OK Gilberto 20/03/2015 - Atualizado em 26/08/2015

                        var umAnoAtras = new DateTime(DateTime.Now.Year - 1, DateTime.Now.Month, DateTime.Now.Day).ToShortDateString();
                        var hoje = DateTime.Now.ToShortDateString();

                        ViewBag.GrupoDeEmpresasCadastro = s.DadosPrincipaisSolicitacao.Last().GrupoEmpresas.Where(g => g.codgre == clienteSapiens.codgre).Select(grupo => grupo.nomgre).FirstOrDefault();
                        if (clienteSapiens.Definicoes.Last() != null)
                        {
                            ViewBag.DescontoFinanceiroCadastro =
                            clienteSapiens.Definicoes.Last().UsuPerds1 == 0 ? "NÃO" : "SIM";

                            ///////////

                            var codcpgAtual = clienteSapiens.Definicoes.Last().Codcpg;
                            var codcpgSolicitado = s.Definicoes.Last().CodCondicaoPagamento;

                            var prazoDePagamentoAtual = s.Definicoes.Last().CondicoesPagamento.Where(c => c.codcpg == codcpgAtual).Select(cond => cond.descpg).FirstOrDefault();
                            ViewBag.PrazoDePagamentoCadastro = prazoDePagamentoAtual;

                            if (codcpgAtual != codcpgSolicitado)
                            {
                                ViewBag.HouveAlteracaoPrazo = "S";
                            }
                            else
                            {
                                ViewBag.HouveAlteracaoPrazo = "N";
                            }

                            var codFpgAtual = clienteSapiens.Definicoes.Last().Codfpg;
                            var codFpgSolicitado = s.Definicoes.Last().CodFormaDePagamento;

                            var formaDePagamentoAtual = s.Definicoes.Last().FormasPagamento.Where(c => c.codfpg == codFpgAtual).Select(cond => cond.desfpg).FirstOrDefault();
                            ViewBag.FormaDePagamentoCadastro = formaDePagamentoAtual;

                            if (codFpgAtual.ToString() != codFpgSolicitado)
                            {
                                ViewBag.HouveAlteracaoFormaPagamento = "S";
                            }
                            else
                            {
                                ViewBag.HouveAlteracaoFormaPagamento = "N";
                            }

                        }
                        ///////////

                        if (pessoaJuridica != null)
                        {
                            ViewBag.CapitalSocialCadastro = String.Format("{0:C}", pessoaJuridica.USU_CAPSOC.HasValue ? pessoaJuridica.USU_CAPSOC.Value : 0);
                            ViewBag.DataFundacaoCadastro = pessoaJuridica.DATFDC.HasValue ? pessoaJuridica.DATFDC.Value.ToShortDateString() : "";
                            ViewBag.DataInclusaoCadastro = pessoaJuridica.DATPAL.HasValue ? pessoaJuridica.DATPAL.Value.ToShortDateString() : "";
                        }
                        ViewBag.TktMedioTitulosLiquidados = clienteSapiensBLL.TicketMedioCompras("cliente", s.CodCliente.ToString(), umAnoAtras, hoje);
                        ViewBag.TktMedioAVencer = clienteSapiensBLL.TkTMedVencer("cliente", s.CodCliente.ToString(), umAnoAtras, hoje);
                        ViewBag.ValorFinanceiroTotal = clienteSapiensBLL.ValorFinTotal("cliente", s.CodCliente.ToString(), umAnoAtras, hoje);
                        ViewBag.QtdTitulosVencidos = clienteSapiensBLL.QtdeTitulosVencidos("cliente", s.CodCliente.ToString(), umAnoAtras, hoje);
                        ViewBag.PercentualMedioPontualidade = clienteSapiensBLL.PercentPontualidade("cliente", s.CodCliente.ToString(), umAnoAtras, hoje);
                        ViewBag.PrazoMedioPgtoTitulos = clienteSapiensBLL.PrazoMedioPgto("cliente", s.CodCliente.ToString(), umAnoAtras, hoje);
                        ViewBag.VlrTotalTitulosVencidos = clienteSapiensBLL.VlrTotalTitulosVencidos("cliente", s.CodCliente.ToString(), umAnoAtras, hoje);
                        ViewBag.LimiteUtilizado = clienteSapiensBLL.LimiteUtilizado(1, s.CodFilial, s.CodCliente.ToString());

                        var limiteAtual = clienteSapiensBLL.ListaLimiteAtual(1, s.CodCliente); // ex de retorno : "R$ 100,00"
                        ViewBag.LimiteAtual = limiteAtual;

                        #region lógica pra mostrar o limite solicitado na tela de análise, somente se o solicitante alterou o limite cadastrado.

                        limiteAtual = Regex.Replace(limiteAtual, @"(\s+)|(\\+)|(\.+)|(/+)|(\-+)|(\,+)|(R+)|(\$+)", "");
                        if (limiteAtual.Length > 1)
                        {
                            limiteAtual = limiteAtual.Substring(0, limiteAtual.Length - 2);
                        }
                        else
                        {
                            limiteAtual = "0";
                        }

                        string limiteSolicitado = String.Format("{0:C}", s.Definicoes.Last().VlrLimite);

                        if (limiteAtual != limiteSolicitado)
                        {
                            ViewBag.HouveAlteracaoLimite = "S";
                            ViewBag.LimiteSolicitado = String.Format("{0:C}", Decimal.Parse(limiteSolicitado));
                        }
                        else
                        {
                            ViewBag.HouveAlteracaoLimite = "N";
                            ViewBag.LimiteSolicitado = "---";
                        }
                        #endregion

                        ViewBag.LimiteDisponivel = clienteSapiensBLL.ListaLimiteDisponivel(1, s.CodCliente);

                        ViewBag.MaiorFatura = clienteSapiensBLL.MaiorFatura(s.CodCliente.ToString());
                        ViewBag.MaiorAtraso = clienteSapiensBLL.TituloMaiorAtraso(s.CodCliente.ToString());
                        ViewBag.DataUltimoPedido = clienteSapiensBLL.BuscarUltimoPedido(1, s.CodCliente);

                        var dataUltimaSolicitacaov2 = solicitacaoBLL.ObterDataUltimaSolicitacaoNoSICADV2(s.CodCliente);
                        var dataUltimaSolicitacaov3 = "";
                        if (queryClienteSolicitacao.LastOrDefault() != null)
                        {
                            // já existe solicitação para este cliente.
                            dataUltimaSolicitacaov3 = queryClienteSolicitacao.Last().DatCriacao.ToString("dd/MM/yyyy");
                        }

                        ViewBag.DataUltimaSolicitacao = String.IsNullOrEmpty(dataUltimaSolicitacaov3) ? dataUltimaSolicitacaov2 : dataUltimaSolicitacaov3;
                        ViewBag.DataUltimaSolicitacaov2 = dataUltimaSolicitacaov2;

                        string valorFaturamento1;
                        string valorFaturamento2;
                        string valorFaturamento3;
                        string dataFaturamento1;
                        string dataFaturamento2;
                        string dataFaturamento3;
                        string mediaFaturamentoTrimestre;

                        clienteSapiensBLL.ObterDadosFaturamentoCliente(s.CodCliente, out valorFaturamento1, out valorFaturamento2, out valorFaturamento3, out  dataFaturamento1, out  dataFaturamento2, out  dataFaturamento3, out mediaFaturamentoTrimestre);

                        ViewBag.ValorFaturamento1 = dataFaturamento1 + " R$ " + valorFaturamento1;
                        ViewBag.ValorFaturamento2 = dataFaturamento2 + " R$ " + valorFaturamento2;
                        ViewBag.ValorFaturamento3 = dataFaturamento3 + " R$ " + valorFaturamento3;
                        ViewBag.MediaFaturamentoTrimestre = " " + mediaFaturamentoTrimestre;

                        #endregion
                    }
                    else
                    {
                        // se ainda não é cliente, devo marcar como S pra exibir os valores solicitados na tela.
                        ViewBag.HouveAlteracaoLimite = "S";
                        ViewBag.HouveAlteracaoFormaPagamento = "S";
                        ViewBag.HouveAlteracaoPrazo = "S";

                        string limiteSolicitado = String.Format("{0:C}", s.Definicoes.Last().VlrLimite);
                        if(!String.IsNullOrEmpty(limiteSolicitado))
                        {
                            ViewBag.LimiteSolicitado = String.Format("{0:C}", Decimal.Parse(limiteSolicitado));
                        }
                        else
                        {
                            ViewBag.HouveAlteracaoLimite = "N";
                            ViewBag.LimiteSolicitado = "---";
                        }
                    }

                    #endregion

                    if (s.CodTipoSolicitacao == 3)
                    {
                        ViewBag.PrecisaValidar = "N";
                    }// TODO : desativar a validação em caso de inativação.

                    Session["Parecer"] = p;
                    return View("Analise", p); // sem as dependencias.
                }
                catch (Exception ex)
                {
                    return Json(new { msg = "Não foi possível abrir a Solicitação nº " + s.Codigo + " , ERRO -> " + ex.Message }, JsonRequestBehavior.AllowGet);
                }
            }
        }