public ActionResult SalvarCaracteristicas(CaracteristicaClienteSolicitacao car)
        {
            var s = Session["Solicitacao"] as Solicitacao;

            if (Request.IsAjaxRequest())
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        using (var caracteristicaBLL = new CaracteristicaClienteSolicitacaoBLL())
                        {
                            var carSapBLL = new CaracteristicaSapiensBLL();

                            car.Solicitacao = s;
                            carSapBLL.ObterNomes(car);

                            if (car.CodCaracteristicaClienteSolicitacao == 0)
                            {
                                car.Sequencial = s.Caracteristicas.Count + 1;
                                caracteristicaBLL.Salvar(car);
                                s.Caracteristicas.Add(car);
                            }
                            else
                            {
                                var caracteristica = caracteristicaBLL.ObterPorCodigo(car.CodCaracteristicaClienteSolicitacao);

                                var objToRemove = s.Caracteristicas.Where(c => c.CodCaracteristicaClienteSolicitacao == car.CodCaracteristicaClienteSolicitacao).FirstOrDefault();
                                var indice = s.Caracteristicas.IndexOf(objToRemove);

                                s.Caracteristicas.Remove(objToRemove);

                                caracteristica.Caracteristica = car.Caracteristica;
                                caracteristica.Componente = car.Componente;
                                caracteristica.Sequencial = car.Sequencial;

                                caracteristicaBLL.Atualizar(caracteristica);
                                s.Caracteristicas.Insert(indice, caracteristica);

                            }

                            Session["Solicitacao"] = s;

                        }

                        return Json(new { msg = "Caracteristica gravada com sucesso." }, JsonRequestBehavior.DenyGet);
                    }
                    catch (Exception ex)
                    {
                        return Json(new { msg = "Erro ao tentar gravar caracteristica: " + ex.Message }, JsonRequestBehavior.DenyGet);
                    }
                }
            }

            return View(s);
        }
        public ActionResult Consultar(int codigo = 0)
        {
            //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. ");
            }

            using (var solicitacaoBLL = new SolicitacaoBLL())
            {
                var dpaBLL = new DadoPrincipalAprovacaoBLL();
                var defSolBLL = new DefinicoesClienteSolicitacaoBLL();
                var defBLL = new DefinicoesClienteAprovacaoBLL();
                var parBLL = new ParecerSolicitacaoBLL();
                var perfilBLL = new PerfilUsuarioBLL();
                var carBLL = new CaracteristicaSapiensBLL();
                var usuarioBLL = new UsuarioSapiensBLL();
                var clienteSapiensBLL = new ClienteSapiensBLL();
                // 18/11/2014
                #region buscar a solicitacao usando o código e obter todas as dependencias OK - Update dia 30/12/2014 - Deixando o NHibernate Gerenciar os relacionamentos.

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

                s = solicitacaoBLL.ObterPorCodigo(codigo);

                s.PareceresSolicitacao = s.PareceresSolicitacao.OrderBy(par => par.CodParecer).ToList();

                foreach (var p in s.PareceresSolicitacao)
                {
                    dpaBLL.PreencheDependencias(p.DadosPrincipaisAprovacao.Last());

                    foreach (var d in p.DefinicoesAprovacao)
                    {
                        defBLL.PreencheDependencias(d, p.Solicitacao.CodCliente);
                    }

                    foreach (var c in p.CaracteristicasAprovacao)
                    {
                        carBLL.ObterNomes(c);
                    }

                    foreach (var c in s.Caracteristicas)
                    {
                        carBLL.ObterNomes(c);
                    }

                    p.Codperusu = p.Codperusu == 0 ? 2 : p.Codperusu;

                    var perfilAprovador = perfilBLL.ObterPorCodigo(p.Codperusu);
                    p.Perfil = perfilAprovador.DesPerfil;
                    var usuarioAprovador = usuarioBLL.ObterPorCodigo((int)p.Codusuapr);
                    p.Aprovador = usuarioAprovador.Nomusu;

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

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

                var usuario = Session["ConexaoSapiens"] as UsuarioSapiens;

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

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

                if (clienteSapiens != null)
                {

                    int codFilAnulavel = s.Definicoes.Last().CodFilial;

                    var definicoesClienteSapiens = new DefinicoesSapiensBLL().ObterDefinicoesPorCliente(clienteSapiens.codcli, codFilAnulavel);
                    defSolBLL.PreencheDependencias(s.Definicoes.Last(), s.CodCliente, s.CodFilial);

                    clienteSapiens.Definicoes.Add(definicoesClienteSapiens);

                    #region Lógica para mostrar o limite solicitado
                    var limiteAtual = clienteSapiensBLL.ListaLimiteAtual(1, s.CodCliente); // ex de retorno : "R$ 100,00"
                    ViewBag.LimiteAtual = limiteAtual;

                    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
                    if (clienteSapiens.Definicoes.Last() != null)
                    {

                        ///////////

                        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";
                        }

                    }

                }

                Session["Solicitacao"] = s;
                return View("Consultar", s);
            }
        }
Example #3
0
        /// <summary>
        /// Insere todos os dados do cliente que está no sapiens, nos respectivos campos da solicitação.
        /// </summary>
        /// <param name="s">a solicitação.</param>
        /// <param name="cliente">o cliente que veio do sapiens.</param>
        public void PreencheDadosSolicitacaoUsandoSapiens(Solicitacao s, ClienteSapiens cliente, bool pertenceAFilial)
        {
            s.DadosPrincipaisSolicitacao[0].Ativo = cliente.sitcli == null ? "" : cliente.sitcli;
            s.DadosPrincipaisSolicitacao[0].Bairro = cliente.baicli == null ? "" : cliente.baicli.ToString();
            s.DadosPrincipaisSolicitacao[0].CEP = cliente.cepcli == null ? "" : cliente.cepcli.ToString();
            s.DadosPrincipaisSolicitacao[0].Cidade = cliente.cidcli == null ? "" : cliente.cidcli.ToString();
            s.DadosPrincipaisSolicitacao[0].CodGrupoEmpresa = cliente.codgre == null ? "" : cliente.codgre.ToString();
            s.DadosPrincipaisSolicitacao[0].CodRamoAtividade = cliente.codram == null ? "" : cliente.codram.ToString();
            s.DadosPrincipaisSolicitacao[0].CodRota = cliente.codroe == null ? "" : cliente.codroe.ToString();
            s.DadosPrincipaisSolicitacao[0].CodSubRota = cliente.codsro == null ? "" : cliente.codsro.ToString();
            s.DadosPrincipaisSolicitacao[0].Complemento = cliente.cplend == null ? "" : cliente.cplend.ToString();
            s.DadosPrincipaisSolicitacao[0].CPFCNPJ = cliente.cgccpf == null ? "" : cliente.cgccpf.ToString();
            s.DadosPrincipaisSolicitacao[0].EmailNFE = cliente.emanfe == null ?
                "" :
                cliente.emanfe.IndexOf(";") != -1 ?
                cliente.emanfe.Split(';')[0] :
                cliente.emanfe;
            s.DadosPrincipaisSolicitacao[0].EmailNFE2 = cliente.emanfe == null ?
                "" :
                cliente.emanfe.IndexOf(";") != -1 ?
                cliente.emanfe.Split(';')[1] :
                "";
            s.DadosPrincipaisSolicitacao[0].InscricaoEstadual = cliente.insest == null ? "" : cliente.insest.ToString();
            //s.DadosPrincipaisSolicitacao[0].//Isento
            s.DadosPrincipaisSolicitacao[0].Logradouro = cliente.endcli == null ? "" : cliente.endcli.ToString();
            s.DadosPrincipaisSolicitacao[0].NomeFantasia = cliente.apecli == null ? "" : cliente.apecli.ToString();
            s.DadosPrincipaisSolicitacao[0].Numero = cliente.nencli == null ? "" : cliente.nencli.ToString();
            s.DadosPrincipaisSolicitacao[0].RamoFiscal = cliente.usuRamofiscal == null ? "" : cliente.usuRamofiscal.ToString();
            s.DadosPrincipaisSolicitacao[0].RazaoSocial = cliente.nomcli == null ? "" : cliente.nomcli.ToString();
            s.DadosPrincipaisSolicitacao[0].Telefone = cliente.foncli == null ? "" : cliente.foncli.ToString();
            s.DadosPrincipaisSolicitacao[0].TipoDireitoPropriedadeEmpresa = cliente.tipemp == null ? "" : cliente.tipemp.ToString();
            s.DadosPrincipaisSolicitacao[0].TipoEmpresa = cliente.tipemc == null ? "" : cliente.tipemc.ToString();
            s.DadosPrincipaisSolicitacao[0].TipoMercado = cliente.tipmer == null ? "" : cliente.tipmer.ToString();
            s.DadosPrincipaisSolicitacao[0].TipoCliente = cliente.tipcli == null ? "" : cliente.tipcli.ToString();
            s.DadosPrincipaisSolicitacao[0].TributaICMS = cliente.triicm == null ? "" : cliente.triicm;
            s.DadosPrincipaisSolicitacao[0].UF = cliente.sigufs == null ? "" : cliente.sigufs.ToString();

            //if (cliente.Definicoes[0] != null && cliente.Definicoes.Count > 0)
            if (cliente.Definicoes.Count > 0)
            {
                /* Definições ------------------------------------------------------ */

                s.Definicoes[0].VlrLimite = cliente.Definicoes[0].limite.ToString();
                s.Definicoes[0].CodCategoria = cliente.Definicoes[0].Catcli.ToString();
                s.Definicoes[0].CodFormaDePagamento = cliente.Definicoes[0].Codfpg.ToString();
                s.Definicoes[0].CodGrupoContasAReceber = cliente.Definicoes[0].Codcrp;
                s.Definicoes[0].IndAceitaFaturamentoParcialPedido = cliente.Definicoes[0].Acepar;
                s.Definicoes[0].IndLimiteAprovado = cliente.Definicoes[0].Limapr;
                s.Definicoes[0].CodCondicaoPagamento = cliente.Definicoes[0].Codcpg;
                s.Definicoes[0].CodRepresentante = cliente.Definicoes[0].Codrep.ToString();
                s.Definicoes[0].CodRegiaoDeVendas = cliente.Definicoes[0].Codrve;
                s.Definicoes[0].RecJurosMoraMes = cliente.Definicoes[0].Recjmm.ToString();
                s.Definicoes[0].TipJuros = cliente.Definicoes[0].Rectjr;
                s.Definicoes[0].IndCobrarTaxaBanco = cliente.Definicoes[0].UsuCbtban;
                s.Definicoes[0].IndEmiteBoleto = cliente.Definicoes[0].UsuEmitebol;
                s.Definicoes[0].IndDescontoFinanceiro = "N"; // por padrão é NÃO, se o contrato de desconto existir, mudar para SIM
                //s.Definicoes[0].IndicativoPresencial = cliente.Definicoes[0].Indpre;
                s.Definicoes[0].IndicativoPresencial = "9";
                s.Definicoes[0].ConsumidorFinal = cliente.Definicoes[0].Confin;
                // buscar do histórico.
            }

            if (pertenceAFilial)
            {
                if (cliente.Caracteristicas != null && cliente.Caracteristicas.Count > 0)
                {
                    foreach (var c in cliente.Caracteristicas)
                    {
                        s.Caracteristicas.Add((CaracteristicaClienteSolicitacao)c);
                    }

                    using (var carSapBLL = new CaracteristicaSapiensBLL())
                    {
                        foreach (var c in s.Caracteristicas)
                        {
                            carSapBLL.ObterNomes(c);
                        }
                    }
                }

                if (cliente.EnderecosCobranca != null && cliente.EnderecosCobranca.Count() > 0)
                {
                    foreach (var e in cliente.EnderecosCobranca)
                    {
                        s.EnderecosCobranca.Add((EnderecoCobrancaClienteSolicitacao)e);
                    }
                }

                if (cliente.EnderecosEntrega != null && cliente.EnderecosEntrega.Count > 0)
                {
                    foreach (var e in cliente.EnderecosEntrega)
                    {
                        s.EnderecosEntrega.Add((EnderecoEntregaClienteSolicitacao)e);
                    }
                }

                if (cliente.Contatos != null && cliente.Contatos.Count > 0)
                {
                    foreach (var c in cliente.Contatos)
                    {
                        s.Contatos.Add((ContatoClienteSolicitacao)c);
                    }
                }

                if (cliente.Referencias != null && cliente.Referencias.Count > 0)
                {
                    foreach (var r in cliente.Referencias)
                    {
                        s.Referencias.Add((ReferenciaClienteSolicitacao)r);
                    }
                }

                if (cliente.Socios != null && cliente.Socios.Count > 0)
                {
                    foreach (var soc in cliente.Socios)
                    {
                        s.Socios.Add((SocioEmpresaSolicitacao)soc);
                    }
                }
            }// fim de if pertenceAFilial
        }
        public JsonResult GridCaracteristicasPaginado(int? page)
        {
            using (var bll = new CaracteristicaSapiensBLL())
            {
                var s = Session["Solicitacao"] as Solicitacao;

                foreach (var c in s.Caracteristicas)
                {
                    bll.ObterNomes(c);
                }
                var vm = s.Caracteristicas.AsQueryable();
                var ajaxGridFactory = new AjaxGridFactory();
                var grid = ajaxGridFactory.CreateAjaxGrid(vm, page.HasValue ? page.Value : 1, false);

                return Json(new { Html = grid.ToJson("_GridCaracteristicas", this), grid.HasItems }, JsonRequestBehavior.AllowGet);
            }
        }
Example #5
0
        /// <summary>
        /// Busca as dependencias dos relacionamentos. EX: as caracteristicas da solicitacao e as caracteristicas para as dropdowns
        /// </summary>
        /// <param name="chavePrimaria"></param>
        /// <returns></returns>
        public override Solicitacao ObterPorCodigo(int chavePrimaria)
        {
            try
            {
                var sol = base.ObterPorCodigo(chavePrimaria);

                //sol.CodCliente = sol.DadosPrincipaisSolicitacao.Last().CodClienteDadoPrincipalSol;

                using (var dadoBLL = new DadoPrincipalSolicitacaoBLL())
                {
                    var dadoPrincipalBLL = new DadoPrincipalAprovacaoBLL();
                    var definicoesBLL = new DefinicoesClienteAprovacaoBLL();
                    var carBLL = new CaracteristicaSapiensBLL();

                    dadoBLL.PreencheDependencias(sol.DadosPrincipaisSolicitacao.Last());

                    foreach (var c  in sol.Caracteristicas)
                    {
                        carBLL.ObterNomes(c);
                    }
                }

                sol.Definicoes = sol.Definicoes.Count > 0 ? sol.Definicoes : new List<DefinicoesClienteSolicitacao>() { new DefinicoesClienteSolicitacao() };

                sol.EnderecosCobranca = sol.EnderecosCobranca.Count > 0 ? sol.EnderecosCobranca : new List<EnderecoCobrancaClienteSolicitacao>();
                sol.EnderecosEntrega = sol.EnderecosEntrega.Count > 0 ? sol.EnderecosEntrega : new List<EnderecoEntregaClienteSolicitacao>();
                sol.Referencias = sol.Referencias.Count > 0 ? sol.Referencias : new List<ReferenciaClienteSolicitacao>();
                sol.Contatos = sol.Contatos.Count > 0 ? sol.Contatos : new List<ContatoClienteSolicitacao>();
                sol.DocumentosAnexados = sol.DocumentosAnexados.OrderBy(c => c.CodTipoDocumento).ToList();

                //foreach (var d in sol.DocumentosAnexados)
                //{
                //    switch (d.CodTipoDocumento)
                //    {
                //        case 1: d.TipoDocumento = "Serasa"; break;
                //        case 2: d.TipoDocumento = "Contrato Social"; break;
                //        case 3: d.TipoDocumento = "Arquivos Limite/Prazo"; break;
                //        case 4: d.TipoDocumento = "Arquivos Ativação/Inativação"; break;
                //        case 5: d.TipoDocumento = "Contrato de Desconto"; break;
                //        case 6: d.TipoDocumento = "Comercial 4"; break;
                //    }
                //}

                sol.Socios = sol.Socios.Count > 0 ? sol.Socios : new List<SocioEmpresaSolicitacao>() { /*new SocioEmpresaSolicitacao()*/ };

                var ajaxGridFactory = new AjaxGridFactory();

                sol.GridCaracteristicas = ajaxGridFactory.CreateAjaxGrid(sol.Caracteristicas.AsQueryable(), 1, false);
                sol.GridEnderecosCobranca = ajaxGridFactory.CreateAjaxGrid(sol.EnderecosCobranca.AsQueryable(), 1, false);
                sol.GridEnderecosEntrega = ajaxGridFactory.CreateAjaxGrid(sol.EnderecosEntrega.AsQueryable(), 1, false);
                sol.GridReferencias = ajaxGridFactory.CreateAjaxGrid(sol.Referencias.AsQueryable(), 1, false);
                sol.GridContatos = ajaxGridFactory.CreateAjaxGrid(sol.Contatos.AsQueryable(), 1, false);
                sol.GridAnexos = ajaxGridFactory.CreateAjaxGrid(sol.DocumentosAnexados.AsQueryable(), 1, false);
                sol.GridSocios = ajaxGridFactory.CreateAjaxGrid(sol.Socios.AsQueryable(), 1, false);
                sol.GridIntegracoes = ajaxGridFactory.CreateAjaxGrid(sol.Integracoes.AsQueryable(), 1, false);

                return sol;
            }
            catch (Exception ex)
            {
               throw ex;
            }
        }
Example #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);
                }
            }
        }
Example #7
0
        public JsonResult ConsultaAprovador(int CodParecer = 0)
        {
            // pegar o usuario por seu codigo
            // obter o parecer da solicitacao em que o usuario aparecer, retornar os dados deste parecer.
            // o que precisa ser alterado? os dados de parecer.(Aprovacao)

            // recarregar a tela com um novo parecer.

            using (var solicitacaoBLL = new SolicitacaoBLL())
            {
                var carSapBLL = new CaracteristicaSapiensBLL();
                var parecerSolicitacaoBLL = new ParecerSolicitacaoBLL();
                var usuario = Session["ConexaoSapiens"] as UsuarioSapiens;
                var perfilBLL = new PerfilUsuarioBLL();
                var clienteSapiensBLL = new ClienteSapiensBLL();

                var p = parecerSolicitacaoBLL.ObterPorCodigo(CodParecer);

                Solicitacao s = p.Solicitacao;

                foreach (var c in p.CaracteristicasAprovacao)
                {
                    carSapBLL.ObterNomes(c);
                }

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

                new DefinicoesClienteSolicitacaoBLL().PreencheDependencias(p.Solicitacao.Definicoes.Last(), p.Solicitacao.CodCliente, Convert.ToInt32(Session["CodigoFilial"]));

                p.ContatosAprovacao = p.ContatosAprovacao.Count > 0 ? p.ContatosAprovacao : new List<ContatoClienteAprovacao>() { /* new ContatoClienteAprovacao() */ };

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

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

                // aqui, verifico se o usuário atual, tem perfil de aprovador
                var podeSalvar = queryPodeSalvarParecer.Count() > 0 ? "S" : "N";

                //aqui, verifico se o parecer está aguardando aprovação
                if (p.Codsitpar != Convert.ToInt32(SituacaoParecer.AguardandoAprovacao))
                {
                    podeSalvar = "N";
                }

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

                var perfilAprovador = perfilBLL.ObterPorCodigo(p.Codperusu);
                p.Perfil = perfilAprovador.DesPerfil;
                var usuarioAprovador = new UsuarioSapiensBLL().ObterPorCodigo((int)p.Codusuapr);
                p.Aprovador = usuarioAprovador.Nomusu;

                #endregion

                Session["Parecer"] = p;
                var dpa = p.DadosPrincipaisAprovacao.Last();
                var def = p.DefinicoesAprovacao.Last();
                //return PartialView("_Parecer", p);

                var parecerJson = new
                {

                    Ativo = dpa.Ativo,
                    CodParecer = p.CodParecer,
                    Txtpar = p.Txtpar,
                    Perfil = p.Perfil,
                    Aprovador = p.Aprovador,
                    LimiteSugerido = p.LimiteSugerido,
                    CodigoDadoPrincipalAprovacao = dpa.CodigoDadoPrincipalAprovacao,
                    CodCliente = dpa.CodCliente,
                    CPFCNPJ = dpa.CPFCNPJ,
                    TipoCliente = dpa.TipoCliente,
                    InscricaoEstadual = dpa.InscricaoEstadual,
                    SituacaoReceitaFederal = dpa.SituacaoReceitaFederal,
                    SituacaoReceitaEstadual = dpa.SituacaoReceitaEstadual,
                    RazaoSocial = dpa.RazaoSocial,
                    NomeFantasia = dpa.NomeFantasia,
                    TipoMercado = dpa.TipoMercado,
                    TipoEmpresa = dpa.TipoEmpresa,
                    TipoDireitoPropriedadeEmpresa = dpa.TipoDireitoPropriedadeEmpresa,
                    CodRamoAtividade = dpa.CodRamoAtividade,
                    RamoFiscal = dpa.RamoFiscal,
                    CodRota = dpa.CodRota,

                    CodSubRota = dpa.CodSubRota,

                    CodGrupoEmpresa = dpa.CodGrupoEmpresa,
                    CEP = dpa.CEP,
                    Logradouro = dpa.Logradouro,
                    Numero = dpa.Numero,
                    Complemento = dpa.Complemento,
                    Bairro = dpa.Bairro,
                    Cidade = dpa.Cidade,
                    UF = dpa.UF,
                    Telefone = dpa.Telefone,
                    EmailNFE = dpa.EmailNFE,
                    PontoDeReferencia = dpa.PontoDeReferencia,
                    ObservacaoMotivoSituacao = dpa.ObservacaoMotivoSituacao,
                    //Definicoes = p.DefinicoesAprovacao.Last(),

                    CodDefinicoesClienteAprovacao = def.CodDefinicoesClienteAprovacao,
                    CodCategoria = def.CodCategoria,
                    CodCondicaoPagamento = def.CodCondicaoPagamento,
                    CodFilial = def.CodFilial,
                    CodFormaDePagamento = def.CodFormaDePagamento,
                    CodGrupoContasAReceber = def.CodGrupoContasAReceber,
                    CodRegiaoDeVendas = def.CodRegiaoDeVendas,
                    CodRepresentante = def.CodRepresentante,
                    ConsumidorFinal = def.ConsumidorFinal,
                    ContratoDesconto = def.ContratoDesconto,
                    IndAceitaFaturamentoParcialPedido = def.IndAceitaFaturamentoParcialPedido,
                    IndCobrarTaxaBanco = def.IndCobrarTaxaBanco,
                    IndDescontoFinanceiro = def.IndDescontoFinanceiro,
                    Rodrigo = def.Rodrigo,
                    VlrDescontoFinanceiro = def.VlrDescontoFinanceiro,
                    VlrLimite = def.VlrLimite,
                    podeSalvar = podeSalvar

                };

                return Json(parecerJson, JsonRequestBehavior.AllowGet);

            }
        }
Example #8
0
        public ActionResult SalvarCaracteristicas(CaracteristicaClienteAprovacao carApr)
        {
            using (var bll = new CaracteristicaClienteAprovacaoBLL())
            {
                var p = Session["Parecer"] as ParecerSolicitacao;
                //pega por código e atualiza
                var carSapBLL = new CaracteristicaSapiensBLL();
                try
                {
                    var codCarApr = carApr.CodCaracteristicaClienteAprovacao;
                    if (codCarApr == 0)
                    {
                        p.CaracteristicasAprovacao.Add(carApr);
                    }
                    else
                    {
                        var car = bll.ObterPorCodigo(codCarApr);

                        car.Caracteristica = carApr.Caracteristica;
                        car.Componente = carApr.Componente;
                        car.Sequencial = carApr.Sequencial;

                        var objToRemove = p.CaracteristicasAprovacao.Where(c => c.CodCaracteristicaClienteAprovacao == car.CodCaracteristicaClienteAprovacao).FirstOrDefault();
                        var indice = p.CaracteristicasAprovacao.IndexOf(objToRemove);
                        p.CaracteristicasAprovacao.Remove(objToRemove);

                        carSapBLL.ObterNomes(car);

                        p.CaracteristicasAprovacao.Insert(indice, car);
                    }

                    Session["Parecer"] = p;

                    return Json(new { msg = "Característica Atualizada" }, JsonRequestBehavior.DenyGet);

                }
                catch (Exception)
                {
                    return Json(new { msg = "Erro ao tentar atualizar" }, JsonRequestBehavior.DenyGet);
                }

            }
        }
Example #9
0
        public JsonResult GridCaracteristicasPaginado(int? page)
        {
            using (var bll = new CaracteristicaSapiensBLL())
            {
                var p = Session["Parecer"] as ParecerSolicitacao;

                if (p == null)
                {
                    var s = Session["Solicitacao"] as Solicitacao;
                    p = s.PareceresSolicitacao.Last();
                }

                foreach (var c in p.CaracteristicasAprovacao)
                {
                    bll.ObterNomes(c);
                }
                var vm = p.CaracteristicasAprovacao.Count == 0 ? new List<CaracteristicaClienteAprovacao>().AsQueryable() : p.CaracteristicasAprovacao.AsQueryable();
                var ajaxGridFactory = new AjaxGridFactory();
                var grid = ajaxGridFactory.CreateAjaxGrid(vm, page.HasValue ? page.Value : 1, false);

                return Json(new { Html = grid.ToJson("_GridCaracteristicasApr", this), grid.HasItems }, JsonRequestBehavior.AllowGet);
            }
        }