public void PreencheDependencias(DadoPrincipalAprovacao d)
        {
            using (var ramoDAL = new RamoAtividadeDAL())
            {
                Task t1 = Task.Factory.StartNew(() =>
                {

                    var ramos = from ramo in ramoDAL.ListarTodos()
                                select ramo;

                    d.RamosAtividade = new List<RamoAtividade>();

                    foreach (var r in ramos)
                    {
                        d.RamosAtividade.Add(r);
                    }
                });

                Task t2 = Task.Factory.StartNew(() =>
                {
                    var rotaDAL = new RotaDAL();

                    d.Rotas = new List<Rota>();
                    var rotas = from rota in rotaDAL.ListarTodos()
                                select rota;

                    foreach (var r in rotas)
                    {
                        d.Rotas.Add(r);
                    }
                });

                Task t3 = Task.Factory.StartNew(() =>
                {
                    var subRotaDAL = new SubRotaDAL();

                    d.SubRotas = new List<SubRota>();
                    var subrotas = from s in subRotaDAL.ListarTodos()
                                   select s;

                    foreach (var s in subrotas)
                    {
                        d.SubRotas.Add(s);
                    }
                    //d.SubRotas = new List<SubRota>();
                });

                Task t4 = Task.Factory.StartNew(() =>
                {
                    var grupoEmpresaDAL = new GrupoEmpresaDAL();

                    d.GrupoEmpresas = new List<GrupoEmpresa>();
                    var grupo = from g in grupoEmpresaDAL.ListarTodos()
                                select g;

                    foreach (var g in grupo)
                    {
                        d.GrupoEmpresas.Add(g);

                    }
                });

                Task.WaitAll(t1, t2, t3, t4);
            }
        }
예제 #2
0
        public ActionResult SalvarDadoPrincipal(DadoPrincipalAprovacao dpa)
        {
            //Autentica
            if (Session["ConexaoSapiens"] == null)
            {
                return RedirectToAction("Login", "Home");
            }
            //Autoriza
            if (!AutorizaUsuario(Helpers.ControlAccessConfig.AbrirAnalise))
            {
                return View("Erro", null, "Módulo não autorizado para este usuário. ");
            }

            var p = Session["Parecer"] as ParecerSolicitacao;

            // 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(dpa.Telefone))
            {
                dpa.Telefone = "";
            }
            else
            {
                dpa.Telefone = Regex.Replace(dpa.Telefone, @"(\)+)|(\(+)|(/+)|(\-+)", "");
                if (dpa.Telefone[2] == '0')
                {
                    var ddd = dpa.Telefone.Substring(0, 2);
                    var num = dpa.Telefone.Substring(3);

                    dpa.Telefone = ddd + num;
                }
            }

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

            var IE = String.IsNullOrEmpty(dpa.InscricaoEstadual) ? "" : dpa.InscricaoEstadual;

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

            dpa.TributaICMS = "S";
            dpa.EmailNFE = String.IsNullOrEmpty(dpa.EmailNFE2) ? dpa.EmailNFE : dpa.EmailNFE + ";" + dpa.EmailNFE2;

            dpa.CodGrupoEmpresa = String.IsNullOrEmpty(dpa.CodGrupoEmpresa) ? "" : dpa.CodGrupoEmpresa;
            dpa.NumeroFax = String.IsNullOrEmpty(dpa.NumeroFax) ? "" : dpa.NumeroFax;
            dpa.PontoDeReferencia = string.IsNullOrEmpty(dpa.PontoDeReferencia) ? "" : dpa.PontoDeReferencia;

            dpa.TipoMercado = "I";
            dpa.CobraCliente = "S";
            dpa.ExpurgaDaInadimplencia = "N";
            dpa.ObservacaoMotivoSituacao = string.IsNullOrEmpty(dpa.ObservacaoMotivoSituacao) ? "" : dpa.ObservacaoMotivoSituacao;

            #endregion

            try
            {
                using (var dpaBLL = new DadoPrincipalAprovacaoBLL())
                {
                    var dadoPrincipal = dpaBLL.ObterPorCodigo(dpa.CodigoDadoPrincipalAprovacao);

                    dadoPrincipal.Ativo = dpa.Ativo;
                    dadoPrincipal.Bairro = dpa.Bairro;
                    dadoPrincipal.CEP = dpa.CEP;
                    dadoPrincipal.Cidade = dpa.Cidade;
                    dadoPrincipal.CobraCliente = dpa.CobraCliente;
                    dadoPrincipal.CodClienteDadoPrincipalApr = dpa.CodClienteDadoPrincipalApr;
                    dadoPrincipal.CodGrupoEmpresa = dpa.CodGrupoEmpresa;
                    dadoPrincipal.CodIBGE = dpa.CodIBGE;
                    dadoPrincipal.CodigoDadoPrincipalAprovacao = dpa.CodigoDadoPrincipalAprovacao;
                    dadoPrincipal.CodRamoAtividade = dpa.CodRamoAtividade;
                    dadoPrincipal.CodRota = dpa.CodRota;
                    dadoPrincipal.CodSubRota = dpa.CodSubRota;
                    dadoPrincipal.Complemento = dpa.Complemento;
                    dadoPrincipal.ContribuinteICMS = dpa.ContribuinteICMS;
                    dadoPrincipal.CPFCNPJ = dpa.CPFCNPJ;
                    dadoPrincipal.DataUltimaConsulta = dpa.DataUltimaConsulta;

                    dadoPrincipal.EmailNFE = String.IsNullOrEmpty(dpa.EmailNFE2) ? dpa.EmailNFE : dpa.EmailNFE + ";" + dpa.EmailNFE2;
                    dadoPrincipal.EmailNFE2 = dpa.EmailNFE2;

                    dadoPrincipal.ExpurgaDaInadimplencia = dpa.ExpurgaDaInadimplencia;
                    dadoPrincipal.InscricaoEstadual = dpa.InscricaoEstadual;
                    dadoPrincipal.Isento = dpa.Isento;
                    dadoPrincipal.Logradouro = dpa.Logradouro;
                    dadoPrincipal.NomeFantasia = dpa.NomeFantasia;
                    dadoPrincipal.Numero = dpa.Numero;
                    dadoPrincipal.NumeroFax = dpa.NumeroFax;
                    dadoPrincipal.ObservacaoMotivoSituacao = dpa.ObservacaoMotivoSituacao;
                    dadoPrincipal.PontoDeReferencia = dpa.PontoDeReferencia;
                    dadoPrincipal.RamoFiscal = dpa.RamoFiscal;
                    dadoPrincipal.RazaoSocial = dpa.RazaoSocial;
                    dadoPrincipal.SituacaoReceitaFederal = String.IsNullOrEmpty(dadoPrincipal.SituacaoReceitaFederal) ? "Consulta não realizada" : dadoPrincipal.SituacaoReceitaFederal;
                    dadoPrincipal.SituacaoReceitaEstadual = String.IsNullOrEmpty(dadoPrincipal.SituacaoReceitaEstadual) ? "Consulta não realizada" : dadoPrincipal.SituacaoReceitaEstadual;
                    //dadoPrincipal.Parecer = p; // não precisa, o NHibernate entende a associação.
                    dadoPrincipal.Telefone = dpa.Telefone;
                    dadoPrincipal.Telefone2 = dpa.Telefone2;
                    dadoPrincipal.Telefone3 = dpa.Telefone3;
                    dadoPrincipal.Telefone4 = dpa.Telefone4;
                    dadoPrincipal.Telefone5 = dpa.Telefone5;
                    dadoPrincipal.TipoCliente = dpa.TipoCliente;
                    dadoPrincipal.TipoDireitoPropriedadeEmpresa = dpa.TipoDireitoPropriedadeEmpresa;
                    dadoPrincipal.TipoEmpresa = dpa.TipoEmpresa;
                    dadoPrincipal.TipoMercado = dpa.TipoMercado;
                    dadoPrincipal.TributaICMS = dpa.TributaICMS;
                    dadoPrincipal.UF = dpa.UF;

                    dpaBLL.Atualizar(dadoPrincipal);
                }

                Session["Parecer"] = p;

                return Json(new { msg = "Dados Principais da aprovação foram gravados com sucesso. nº: " + dpa.CodigoDadoPrincipalAprovacao }, JsonRequestBehavior.DenyGet);
            }
            catch (Exception ex)
            {
                return Json(new { msg = "Erro ao tentar gravar dados principais: " + ex.Message }, JsonRequestBehavior.DenyGet);
            }
        }
예제 #3
0
        public ActionResult SalvarParecer(DadoPrincipalAprovacao dadPri, DefinicoesClienteAprovacao defCli, string Txtpar, string StatusParecer, string chkEncerra, string vlrLimAnalise, string cpgAnalise, string fpgAnalise)
        {
            using (ParecerSolicitacaoBLL parecerSolicitacaoBLL = new ParecerSolicitacaoBLL())
            {
                PerfilUsuarioBLL perfilBLL = new PerfilUsuarioBLL();
                ConfiguracaoWorkflowBLL configBLL = new ConfiguracaoWorkflowBLL();
                HistoricoSolicitacaoBLL historicoBLL = new HistoricoSolicitacaoBLL();

                ParecerSolicitacao p = Session["Parecer"] as ParecerSolicitacao;
                Solicitacao s = Session["Solicitacao"] as Solicitacao;

                var historico = new HistoricoSolicitacao();

                var usuario = Session["ConexaoSapiens"] as UsuarioSapiens;
                List<PerfilUsuario> perfisUsuarioLogado = null;

                if (usuario != null)
                {
                    perfisUsuarioLogado = perfilBLL.ObterGruposPorCodUsuario(usuario.Codusu);
                }

                // se algum dos perfis do usuário logado contém o perfil aprovador, pode salvar parecer.
                var queryPodeSalvarParecer = from meuPerfil in perfisUsuarioLogado
                                             where meuPerfil.CodPerfilUsuario == p.Codperusu
                                             select meuPerfil;

                var podeSalvar = queryPodeSalvarParecer.Count() > 0 ? true : false;

                // Se o usuário logado não tiver o perfil de aprovação, não pode salvar o parecer
                if (!podeSalvar)
                {
                    return Json(new { msg = "O perfil atual não tem permissão para aprovar este parecer." }, JsonRequestBehavior.DenyGet);
                }

                switch (StatusParecer)
                {
                    case "AP":
                        p.Codsitpar = Convert.ToDecimal(SituacaoParecer.Aprovada);
                        break;

                    case "RP":
                        p.Codsitpar = Convert.ToDecimal(SituacaoParecer.Reprovada);
                        p.Solicitacao.Situacao = "REPROVADA";
                        historico.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoParecer.Reprovada);
                        historico.DatFinalizacao = DateTime.Now;

                        break;
                }

                #region atualiza o parecer atual com os dados que estão na tela.

                SalvarDadoPrincipal(dadPri);

                defCli.VlrLimite = vlrLimAnalise;
                defCli.CodCondicaoPagamento = cpgAnalise;
                defCli.CodFormaDePagamento = fpgAnalise;

                SalvarDefinicoes(defCli);

                #endregion

                // usando o SignalR para implementar atualização geral em tempo real.
                // (atualiza os grids de todos os usuários logados , sem necessidade do F5)
                var context = GlobalHost.ConnectionManager.GetHubContext<StatusHub>();

                //o parecer persistido ( pode gravar, atualizar, até excluir pelo BLL);
                var parecer = parecerSolicitacaoBLL.ObterPorCodigo(p.CodParecer);

                parecer.Codsitpar = p.Codsitpar; // O Novo parecer inicia como Aguardando Aprovação.
                parecer.Codusuapr = usuario.Codusu;
                parecer.Datpar = DateTime.Now;
                parecer.Solicitacao = p.Solicitacao;
                parecer.Txtpar = Txtpar;

                try
                {
                    if (!String.IsNullOrEmpty(Txtpar))
                    {
                        // se entrar aqui , está APROVADA e OK para Gravar.
                        if (parecer.Codsitpar == Convert.ToDecimal(SituacaoParecer.Aprovada))
                        {
                            // verificar na configuração de alçada se tem próximo nível e qual é esse nível.
                            // 21/08/2015 - verificar se o parecer que está sendo aprovado é o último necessário

                            // se o usuário aprovador corresponde ao nivel máximo, ou se está marcado para encerrar o parecer, pode enviar...
                            var prontaParaIntegrar = (((parecer.Codperusu - 2) == s.nivelMaximo) || chkEncerra == "S");
                            //(s.PareceresSolicitacao.Count - 1) == s.nivelMaximo || chkEncerra == "S"
                            if (prontaParaIntegrar)
                            {
                                try
                                {
                                    // muda status para Aguardando integração
                                    parecer.Codsitpar = Convert.ToDecimal(SituacaoParecer.AguardandoIntegracao);
                                    parecer.Solicitacao.CodSituacaoAtual = Convert.ToInt32(SituacaoSolicitacao.AguardandoIntegracao);
                                    parecerSolicitacaoBLL.Atualizar(parecer);

                                    s.CodSituacaoAtual = Convert.ToInt32(SituacaoSolicitacao.AguardandoIntegracao);

                                    Thread t = new Thread(_ =>
                                    {
                                        ServiceReferenceTeste.srvSicadSoapClient clienteTesteIntegracao = new ServiceReferenceTeste.srvSicadSoapClient();
                                        clienteTesteIntegracao.IntegrarDadosCliente(p.Solicitacao.Codigo);
                                    });

                                    t.Start();

                                    historico.DatEncaminhamento = DateTime.Now;
                                    historico.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoSolicitacao.AguardandoIntegracao);
                                    historico.Solicitacao = s;
                                    if (chkEncerra == "S")
                                    {
                                        Txtpar += " ( Encerramento do workflow antecipado por " + usuario.Nomusu + " )";
                                    }
                                    historico.TxtHistorico = Txtpar;

                                    historicoBLL.Salvar(historico);
                                }
                                catch (Exception ex)
                                {
                                    // TODO: Retirar depois de validar a execução do webservice ( vai ficar aguardando Integração se for finalmente aprovado )
                                    parecer.Codsitpar = Convert.ToDecimal(SituacaoParecer.AguardandoAprovacao);
                                    parecerSolicitacaoBLL.Atualizar(parecer);

                                    throw ex;
                                }
                            }
                            else
                            {

                                int codPerfilAprovadorAtual = Convert.ToInt32(parecer.Codperusu);

                                // se não encerra, cria um novo parecer ...
                                var novoParecer = new ParecerSolicitacao();

                                novoParecer.Solicitacao = p.Solicitacao;

                                novoParecer.Codsitpar = Convert.ToDecimal(SituacaoParecer.AguardandoAprovacao);

                                novoParecer.Codhistsol = historico.CodHistoricoSolicitacao; // pegar o codhist OK
                                //novoParecer.Codperusu = ++p.Codperusu; // o perfil do analista de crédito. -> se o usuário não tiver perfil, avisar na tela.

                                int codPerfilProximoAprovador = 0;

                                switch (codPerfilAprovadorAtual)
                                {
                                    case 2: codPerfilProximoAprovador = 3; break;
                                    case 3: codPerfilProximoAprovador = 4; break;
                                    case 4: codPerfilProximoAprovador = 5; break;

                                    //case 5: return Json("", JsonRequestBehavior.DenyGet);

                                }

                                novoParecer.Codperusu = (decimal)codPerfilProximoAprovador;
                                //novoParecer.Codusuapr = s.CodUsuarioSolicitacao; // obter o codigo do usuario da aprovacao. OK
                                novoParecer.Codusuapr = usuario.Codusu;

                                // necessário definir o código como 0 para instruir o NHibernate que este é um novo objeto.
                                dadPri.CodigoDadoPrincipalAprovacao = 0;
                                dadPri.Parecer = parecer;

                                // salvar todos os dados do parecer anterior no novo parecer, e incluir as alterações feitas na tela.
                                novoParecer.DadosPrincipaisAprovacao.Add(dadPri);

                                defCli.CodDefinicoesClienteAprovacao = 0;
                                defCli.Parecer = parecer;
                                novoParecer.DefinicoesAprovacao.Add(defCli);

                                foreach (var ca in p.CaracteristicasAprovacao)
                                {
                                    ca.CodCaracteristicaClienteAprovacao = 0;
                                    novoParecer.CaracteristicasAprovacao.Add(ca);
                                }

                                foreach (var ec in p.EnderecosCobrancaAprovacao)
                                {
                                    ec.CodEnderecoCobrancaClienteApr = 0;
                                    novoParecer.EnderecosCobrancaAprovacao.Add(ec);
                                }

                                foreach (var ee in p.EnderecosEntregaAprovacao)
                                {
                                    ee.CodEnderecoEntregaClienteApr = 0;
                                    novoParecer.EnderecosEntregaAprovacao.Add(ee);
                                }

                                foreach (var r in p.ReferenciasAprovacao)
                                {
                                    r.CodReferenciaApr = 0;
                                    novoParecer.ReferenciasAprovacao.Add(r);
                                }

                                foreach (var c in p.ContatosAprovacao)
                                {
                                    c.CodContatoAprovacao = 0;
                                    novoParecer.ContatosAprovacao.Add(c);
                                }

                                foreach (var soc in p.SociosAprovacao)
                                {
                                    soc.CodSocioEmpresaAprovacao = 0;
                                    novoParecer.SociosAprovacao.Add(soc);
                                }

                                foreach (var doc in p.DocumentosAnexadosAprovacao)
                                {
                                    doc.CodDocumentoAnexadoApr = 0;
                                    novoParecer.DocumentosAnexadosAprovacao.Add(doc);
                                }

                                // EX: se estiver R$ 5.000,00 vai ficar 5000, se for nulo vai virar string vazia
                                novoParecer.DefinicoesAprovacao.Last().VlrLimite = String.IsNullOrEmpty(novoParecer.DefinicoesAprovacao.Last().VlrLimite) ? "" : Regex.Replace(novoParecer.DefinicoesAprovacao.Last().VlrLimite, @"(\s+)|(\\+)|(\.+)|(/+)|(\-+)|(\,+)|(R+)|(\$+)", "");
                                novoParecer.DefinicoesAprovacao.Last().VlrLimite = novoParecer.DefinicoesAprovacao.Last().VlrLimite != "" ? novoParecer.DefinicoesAprovacao.Last().VlrLimite.Substring(0, novoParecer.DefinicoesAprovacao.Last().VlrLimite.Length - 2) : "";

                                // EX: se estiver R$ 5.000,00 vai ficar 5000, se for nulo vai virar string vazia
                                novoParecer.DefinicoesAprovacao.Last().VlrDescontoFinanceiro = String.IsNullOrEmpty(novoParecer.DefinicoesAprovacao.Last().VlrDescontoFinanceiro) ? "" : Regex.Replace(novoParecer.DefinicoesAprovacao.Last().VlrDescontoFinanceiro, @"(\s+)|(\\+)|(\.+)|(/+)|(\-+)|(\,+)|(R+)|(\$+)", ""); // .Substring(0, novoParecer.DefinicoesAprovacao.Last().VlrDescontoFinanceiro.Length - 2) estava assim pois inicialmente esse campo foi entendido como monetário, mas é um valor percentual,como em '33%' ou '02%'

                                // salva o novo parecer e os objetos associados.
                                parecerSolicitacaoBLL.Salvar(novoParecer);

                                // atualiza o parecer existente para aprovado
                                parecerSolicitacaoBLL.Atualizar(parecer);

                                historico.Solicitacao = p.Solicitacao;
                                historico.TxtHistorico = p.Txtpar;
                                historico.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoSolicitacao.AguardandoAprovacao);
                                historicoBLL.Salvar(historico);
                            } // fim do "se não encerra"

                        } // fim do "se aprova"
                        else // se não aprova.
                        {
                            historico.DatFinalizacao = DateTime.Now;
                            historico.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoSolicitacao.Reprovada);
                            p.Solicitacao.CodSituacaoAtual = Convert.ToInt32(SituacaoSolicitacao.Reprovada);
                            s.CodSituacaoAtual = Convert.ToInt32(SituacaoSolicitacao.Reprovada);
                            historico.Solicitacao = p.Solicitacao;
                            historico.TxtHistorico = Txtpar; // MOTIVO DA REPROVAÇÃO.
                            historicoBLL.SalvarOuAtualizar(historico);

                            //TODO: atualizar o código da situação da solicitação.
                            new SolicitacaoBLL().AtualizarSituacao(s.Codigo, Convert.ToInt32(SituacaoSolicitacao.Reprovada));

                            parecerSolicitacaoBLL.Atualizar(parecer);

                            context.Clients.All.AtualizarGrid();
                            return Json(new { msg = "Parecer Atualizado." }, JsonRequestBehavior.DenyGet);

                        } // fim do "se não aprova"

                        context.Clients.All.AtualizarGrid();
                        return Json(new { msg = "Parecer Atualizado." }, JsonRequestBehavior.DenyGet);
                    }
                    else
                    {
                        throw new Exception("Não foi possível obter o texto do parecer.");
                    }
                } // Fim do try

                catch (Exception ex)
                {
                    historico.Solicitacao = p.Solicitacao;
                    historico.CodSituacaoIntegracaoSolicitacao = Convert.ToInt32(SituacaoIntegracaoSolicitacao.Erro);
                    historico.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoSolicitacao.AguardandoAprovacao);
                    historico.TxtHistorico = ex.Message;
                    historico.DatFinalizacao = DateTime.Now;
                    historicoBLL.Salvar(historico);

                    return Json(new { erro = "Não foi possível salvar o parecer. Detalhes : " + ex.Message }, JsonRequestBehavior.DenyGet);
                }
            }
        }
예제 #4
0
        /// <summary>
        /// Carrega as dependencias do Tableu como: código do cliente, identificação de cliente novo ou existente,
        /// Ramos de atividade, Grupo Empresarial, Cidade e Estado
        /// </summary>
        /// <param name="dpa"></param>
        /// <returns>sem retorno.</returns>       
        public void PreencherDependenciasTableau(DadoPrincipalAprovacao dpa)
        {
            var s = Session["Solicitacao"] as Solicitacao;

            if (s.CodTipoSolicitacao == 1)
                ViewBag.tipoPainel = "PainelCalcLimite-CliNovo";
            else
                ViewBag.tipoPainel = "PainelLimite-CliCadastrado";

            ViewBag.cliente = dpa.CodCliente == 0 ? "" : dpa.CodCliente.ToString();

            using (var dpaBLL = new DadoPrincipalAprovacaoBLL())
            {
                dpaBLL.PreencheDependencias(dpa);
            }
            var codGrupoEmpresas = Convert.ToInt16(dpa.CodGrupoEmpresa);

            ViewBag.ramoAtividade = dpa.RamosAtividade.Where(r => r.codram == dpa.CodRamoAtividade).Select(r => r.desram).FirstOrDefault();
            ViewBag.grupo = dpa.GrupoEmpresas.Where(g => g.codgre == codGrupoEmpresas).Select(g => g.nomgre).FirstOrDefault();
            ViewBag.cidade = dpa.Cidade;
            ViewBag.uf = dpa.UF;
        }