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); } }
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); } }
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); } } }
/// <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; }