示例#1
0
        public ActionResult Index(int id = 0)
        {
            var condicoesPagamento = _condicaoPagamentoFaturaRepositorio.ObterCondicoesPagamento();

            var viewModel = new AnaliseCreditoViewModel
            {
                ContasPesquisa            = new List <Conta>(),
                CondicoesPagamento        = condicoesPagamento,
                PendenciasFinanceiras     = new List <PendenciaFinanceiraDTO>(),
                ResultadoSPC              = new WsSPC.ConsultaSpcResponse(),
                SolicitacoesLimiteCredito = new List <LimiteCreditoSpcDTO>()
            };

            if (id != 0)
            {
                var contaSessao = _contaRepositorio.ObterContaPorId(id);
                Session["ContaId"]         = contaSessao.Id;
                Session["RazaoSocial"]     = contaSessao.Descricao;
                Session["FontePagadoraId"] = contaSessao.Id;
                Session["Cnpj"]            = contaSessao.Documento;
            }


            return(View(viewModel));
        }
示例#2
0
        public ActionResult Atualizar(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction(nameof(Index)));
            }

            var conta = _contaRepositorio.ObterContaPorId(id.Value);

            if (conta == null)
            {
                RegistroNaoEncontrado();
            }

            var viewModel = new ContaViewModel
            {
                Id                  = conta.Id,
                Descricao           = conta.Descricao,
                SituacaoCadastral   = conta.SituacaoCadastral,
                Segmento            = conta.Segmento,
                ClassificacaoFiscal = conta.ClassificacaoFiscal,
                Documento           = conta.Documento,
                InscricaoEstadual   = conta.InscricaoEstadual,
                NomeFantasia        = conta.NomeFantasia,
                Telefone            = conta.Telefone,
                VendedorId          = conta.VendedorId,
                CEP                 = conta.CEP,
                Logradouro          = conta.Logradouro,
                Numero              = conta.Numero,
                Bairro              = conta.Bairro,
                Estado              = conta.Estado,
                CidadeId            = conta.CidadeId,
                PaisId              = conta.PaisId,
                Complemento         = conta.Complemento,
                CriadoPor           = conta.CriadoPor,
                Blacklist           = conta.Blacklist
            };

            var usuario = _usuarioRepositorio.ObterUsuarioPorId(conta.CriadoPor);

            if (usuario != null)
            {
                ViewBag.UsuarioCriacao = usuario.Login;
                ViewBag.DataCriacao    = conta.DataCriacao.DataHoraFormatada();
            }

            PopularCidades(viewModel);
            PopularPaises(viewModel);
            PopularVendedores(viewModel);
            PopularContatos(viewModel);
            PopularOportunidades(viewModel);
            PopularVinculosIPs(viewModel);

            return(View(viewModel));
        }
示例#3
0
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            if (context.HttpContext.User.IsInRole("Administrador"))
            {
                return;
            }

            if (context.HttpContext.User.IsInRole("UsuarioExterno"))
            {
                return;
            }

            if (HttpContext.Current.Request.QueryString["conta"] == null)
            {
                context.Result = new RedirectResult("~/Home/Indisponivel");
                return;
            }

            var contaId = HttpContext.Current.Request.QueryString["conta"].ToString().ToInt();

            var contaBusca = _contaRepositorio
                             .ObterContaPorId(contaId);

            if (contaBusca == null)
            {
                context.Result = new RedirectResult("~/Home/Indisponivel");
                return;
            }

            var login = HttpContext.Current.User.Identity.Name;

            var permissoesPorVendedor = _equipeContaRepositorio
                                        .ObterPermissoesOportunidadePorVendedor(contaBusca.VendedorId, login);

            // Usuário esta vinculado a equipe do vendedor da oportunidade?

            if (permissoesPorVendedor != null)
            {
                context.Controller.ViewBag.ContatoSomenteLeitura = permissoesPorVendedor.AcessoConta == 0;
            }
            else
            {
                // Usuário esta vinculado a equipe da conta relacionada à oportunidade?

                var permissoesPorConta = _equipeContaRepositorio
                                         .ObterPermissoesContaPorConta(contaBusca.Id, login);

                if (permissoesPorConta != null)
                {
                    context.Controller.ViewBag.ContatoSomenteLeitura = permissoesPorConta.AcessoConta == 0;
                }
                else
                {
                    context.Controller.ViewBag.ContatoSomenteLeitura = true;
                }
            }
        }
示例#4
0
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            if (context.HttpContext.User.IsInRole("UsuarioExterno"))
            {
                if (context.RouteData != null && context.RouteData.Values["id"] == null)
                {
                    return;
                }

                var contaId = context.RouteData.Values["id"].ToString().ToInt();

                var conta = _contaRepositorio.ObterContaPorId(contaId);

                if (conta != null)
                {
                    if (!_usuarioRepositorio.ExisteVinculoConta(conta.Id, HttpContext.Current.User.ObterId()))
                    {
                        context.Result = new RedirectResult("~/Home/AcessoNegado");
                    }
                }
            }
        }
示例#5
0
        public ActionResult VincularConta(int contaId, int usuarioId)
        {
            var contaBusca = _contaRepositorio.ObterContaPorId(contaId);

            if (contaBusca == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Conta não encontrada ou já excluída"));
            }

            var usuarioBusca = _usuarioRepositorio.ObterUsuarioPorId(usuarioId);

            if (usuarioBusca == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Usuário não encontrado"));
            }

            _usuarioRepositorio.VincularConta(contaBusca.Id, usuarioBusca.Id);

            var vinculos = _usuarioRepositorio.ObterVinculosContas(usuarioBusca.Id);

            return(PartialView("_ConsultaVinculoContas", vinculos));
        }
示例#6
0
        public ActionResult EquipeUsuarios(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction(nameof(Index)));
            }

            var conta = _contaRepositorio.ObterContaPorId(id.Value);

            if (conta == null)
            {
                RegistroNaoEncontrado();
            }

            var vendedor = _vendedorRepositorio.ObterVendedorPorId(conta.VendedorId);

            if (vendedor == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Esta conta não possui nenhum Vendedor vinculado"));
            }

            var viewModel = new EquipeContaViewModel
            {
                ContaId      = conta.Id,
                Descricao    = conta.Descricao,
                Documento    = conta.Documento,
                VendedorId   = vendedor.Id,
                VendedorNome = vendedor.Nome
            };

            var vinculos = _equipeContaRepositorio.ObterUsuariosVinculados(conta.Id);

            viewModel.Vinculos = vinculos;

            return(View(viewModel));
        }
示例#7
0
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            if (context.HttpContext.User.IsInRole("Administrador"))
            {
                return;
            }

            if (context.RouteData != null && context.RouteData.Values["id"] == null)
            {
                return;
            }

            var oportunidadeId = context.RouteData.Values["id"].ToString().ToInt();

            var oportunidadeBusca = _oportunidadeRepositorio
                                    .ObterOportunidadePorId(oportunidadeId);

            if (oportunidadeBusca == null)
            {
                context.Result = new RedirectResult("~/Home/Indisponivel");
                return;
            }

            var contaBusca = _contaRepositorio.ObterContaPorId(oportunidadeBusca.ContaId);

            if (contaBusca == null)
            {
                return;
            }

            var login = HttpContext.Current.User.Identity.Name;

            var vendedor = oportunidadeBusca.OportunidadeProposta.VendedorId == 0
                ? contaBusca.VendedorId
                : oportunidadeBusca.OportunidadeProposta.VendedorId;

            var permissoesPorVendedor = _equipeContaRepositorio
                                        .ObterPermissoesOportunidadePorVendedor(vendedor, login);

            var usuarioBusca = _usuarioRepositorio.ObterUsuarioPorId(HttpContext.Current.User.ObterId());

            // Usuário esta vinculado a equipe do vendedor da oportunidade?

            if (permissoesPorVendedor != null || usuarioBusca.Vendedor)
            {
                if (!usuarioBusca.Vendedor)
                {
                    context.Controller.ViewBag.OportunidadeSomenteLeitura = permissoesPorVendedor.AcessoOportunidade == 0;
                }
                else
                {
                    context.Controller.ViewBag.OportunidadeSomenteLeitura = false;
                }
            }
            else
            {
                // Usuário esta vinculado a equipe da conta relacionada à oportunidade?

                var permissoesPorConta = _equipeContaRepositorio
                                         .ObterPermissoesContaPorConta(oportunidadeBusca.ContaId, login);

                if (permissoesPorConta != null)
                {
                    context.Controller.ViewBag.OportunidadeSomenteLeitura = permissoesPorConta.AcessoOportunidade == 0;
                }
                else
                {
                    // Usuário esta vinculado a equipe da oportunidade?

                    var permissoesPorOportunidade = _equipeContaRepositorio.ObterPermissoesPorOportunidade(oportunidadeBusca.Id, login);

                    if (permissoesPorOportunidade != null)
                    {
                        context.Controller.ViewBag.OportunidadeSomenteLeitura = permissoesPorOportunidade.AcessoOportunidade == 0;
                    }
                    else
                    {
                        if (contaBusca == null)
                        {
                            context.Controller.ViewBag.OportunidadeSomenteLeitura = null;
                        }
                        else
                        {
                            context.Controller.ViewBag.OportunidadeSomenteLeitura = true;
                        }
                    }
                }
            }
        }
示例#8
0
        private void PopularContas(ContatoViewModel viewModel)
        {
            var conta = _contaRepositorio.ObterContaPorId(viewModel.ContaId);

            viewModel.Contas.Add(conta);
        }
示例#9
0
        public ActionResult Index(string termo, string chave, string menu)
        {
            if (!string.IsNullOrWhiteSpace(termo))
            {
                var contas             = _contaRepositorio.ObterContasPorDescricao(termo, (int?)ViewBag.UsuarioExternoId);
                var contatos           = _contatoRepositorio.ObterContatosPorDescricao(termo, (int?)ViewBag.UsuarioExternoId);
                var mercadorias        = _mercadoriaRepositorio.ObterMercadoriaPorDescricao(termo);
                var modelos            = _modeloRepositorio.ObterModelosPorDescricao(termo);
                var oportunidades      = _oportunidadeRepositorio.ObterOportunidadesPorDescricao(termo, (int?)ViewBag.UsuarioExternoId);
                var subClientes        = _oportunidadeRepositorio.ObterSubClientesPorDescricao(termo, (int?)ViewBag.UsuarioExternoId);
                var clientesGrupo      = _oportunidadeRepositorio.ObterClientesGrupoCNPJPorDescricao(termo, (int?)ViewBag.UsuarioExternoId);
                var adendosSubClientes = _oportunidadeRepositorio.ObterAdendosPorSubClientes(termo, (int?)ViewBag.UsuarioExternoId);
                var servicos           = _servicoRepositorio.ObterServicosPorDescricao(termo);

                return(View(new BuscaViewModel
                {
                    Termo = termo,
                    Contas = contas.ToList(),
                    Contatos = contatos.ToList(),
                    Mercadorias = mercadorias.ToList(),
                    Modelos = modelos.ToList(),
                    Oportunidades = oportunidades.ToList(),
                    SubClientes = subClientes.ToList(),
                    ClientesGrupoCNPJ = clientesGrupo.ToList(),
                    Servicos = servicos.ToList(),
                    AdendosSubClientes = adendosSubClientes.ToList()
                }));
            }

            if (!string.IsNullOrWhiteSpace(chave))
            {
                var id = chave.ToInt();

                Conta                                conta              = new Conta();
                Contato                              contato            = new Contato();
                Mercadoria                           mercadoria         = new Mercadoria();
                Modelo                               modelo             = new Modelo();
                Servico                              servico            = new Servico();
                Oportunidade                         oportunidade       = new Oportunidade();
                List <OportunidadeDTO>               oportunidades      = new List <OportunidadeDTO>();
                List <ClientePropostaDTO>            subClientes        = new List <ClientePropostaDTO>();
                List <ClientePropostaDTO>            clientesGrupo      = new List <ClientePropostaDTO>();
                List <OportunidadeAdendoClientesDTO> adendosSubClientes = new List <OportunidadeAdendoClientesDTO>();

                var viewModel = new BuscaViewModel();

                switch (menu)
                {
                case "Contas":

                    conta = _contaRepositorio.ObterContaPorId(id);

                    if (ViewBag.UsuarioExternoId != null)
                    {
                        if (!_usuarioRepositorio.ExisteVinculoConta(conta.Id, ViewBag.UsuarioExternoId))
                        {
                            break;
                        }
                    }

                    if (conta != null)
                    {
                        viewModel.Contas.Add(conta);

                        subClientes = _oportunidadeRepositorio.ObterSubClientesPorConta(conta.Id).ToList();

                        if (subClientes != null)
                        {
                            viewModel.SubClientes.AddRange(subClientes);
                        }

                        clientesGrupo = _oportunidadeRepositorio.ObterClientesGrupoCNPJPorConta(conta.Id).ToList();

                        if (clientesGrupo != null)
                        {
                            viewModel.ClientesGrupoCNPJ.AddRange(clientesGrupo);
                        }

                        oportunidades = _oportunidadeRepositorio.ObterOportunidadesPorConta(conta.Id).ToList();

                        if (oportunidades != null)
                        {
                            viewModel.Oportunidades.AddRange(oportunidades);
                        }
                    }

                    break;

                case "Contatos":
                    contato = _contatoRepositorio.ObterContatoPorId(id);

                    if (contato != null)
                    {
                        viewModel.Contatos.Add(contato);
                    }

                    break;

                case "Mercadorias":
                    mercadoria = _mercadoriaRepositorio.ObterMercadoriaPorId(id);

                    if (mercadoria != null)
                    {
                        viewModel.Mercadorias.Add(mercadoria);
                    }

                    break;

                case "Modelos":
                    modelo = _modeloRepositorio.ObterModeloPorId(id);

                    if (modelo != null)
                    {
                        viewModel.Modelos.Add(modelo);
                    }
                    break;

                case "Oportunidades":

                    oportunidade = _oportunidadeRepositorio.ObterOportunidadePorId(id);

                    if (ViewBag.UsuarioExternoId != null)
                    {
                        if (!_usuarioRepositorio.ExisteVinculoConta(oportunidade.ContaId, ViewBag.UsuarioExternoId))
                        {
                            break;
                        }
                    }

                    if (oportunidade != null)
                    {
                        viewModel.Oportunidades.Add(new OportunidadeDTO
                        {
                            Id                 = oportunidade.Id,
                            Identificacao      = oportunidade.Identificacao,
                            Descricao          = oportunidade.Descricao,
                            ContaDescricao     = oportunidade.Conta.Descricao,
                            SucessoNegociacao  = oportunidade.SucessoNegociacao,
                            StatusOportunidade = oportunidade.StatusOportunidade
                        });
                    }
                    break;

                case "Serviços":
                    servico = _servicoRepositorio.ObterServicoPorId(id);

                    if (servico != null)
                    {
                        viewModel.Servicos.Add(servico);
                    }
                    break;

                default:
                    break;
                }

                return(View(viewModel));
            }

            return(RedirectToAction("Index", "Home"));
        }
示例#10
0
        public void EnviarFichaFaturamentoParaAprovacao(int id)
        {
            var fichaFaturamentoBusca = _oportunidadeRepositorio.ObterFichaFaturamentoPorId(id);

            if (fichaFaturamentoBusca == null)
            {
                _logger.Info($"Ficha Faturamento {fichaFaturamentoBusca.Id} não encontrada");
            }

            var oportunidadeBusca = _oportunidadeRepositorio.ObterOportunidadePorId(fichaFaturamentoBusca.OportunidadeId);

            if (oportunidadeBusca == null)
            {
                _logger.Info($"Oportunidade {oportunidadeBusca.Id} não encontrada");
            }

            var aprovacoes = _workflowRepositorio.ObterAprovacoesPorOportunidade(oportunidadeBusca.Id, Processo.FICHA_FATURAMENTO);

            if (aprovacoes.Any() && fichaFaturamentoBusca.StatusFichaFaturamento == StatusFichaFaturamento.EM_APROVACAO)
            {
                _logger.Info($"Já existe uma aprovação pendente para esta Ficha de Faturamento {fichaFaturamentoBusca.Id}");
            }

            var token = Autenticador.Autenticar();

            if (token == null)
            {
                _logger.Info("Não foi possível se autenticar no serviço de Workflow");
            }

            var workflow = new WorkflowService(token);

            var conta = _contaRepositorio.ObterContaPorId(oportunidadeBusca.ContaId);

            CondicaoPagamentoFatura condicaoPagamentoFatura = null;

            if (fichaFaturamentoBusca.CondicaoPagamentoFaturamentoId != null)
            {
                condicaoPagamentoFatura = _condicaoPagamentoFaturaRepositorio.ObterCondicoPagamentoPorId(fichaFaturamentoBusca.CondicaoPagamentoFaturamentoId);
            }

            var oportunidadeDetalhes = _oportunidadeRepositorio.ObterDetalhesOportunidade(oportunidadeBusca.Id);

            var campos = new
            {
                OportunidadeId                 = oportunidadeBusca.Id,
                Descricao                      = $"F-{fichaFaturamentoBusca.Id}",
                DescricaoOportunidade          = oportunidadeBusca.Descricao,
                StatusFichaFaturamento         = fichaFaturamentoBusca.StatusFichaFaturamento.ToName(),
                CondicaoPagamentoFaturamentoId = condicaoPagamentoFatura?.Descricao,
                ContaId     = oportunidadeDetalhes.Conta,
                DataInicio  = oportunidadeDetalhes.DataInicio.DataFormatada(),
                DataTermino = oportunidadeDetalhes.DataTermino.DataFormatada(),
                oportunidadeDetalhes.TabelaId,
                fichaFaturamentoBusca.FaturadoContraId,
                fichaFaturamentoBusca.DiasSemana,
                fichaFaturamentoBusca.DiasFaturamento,
                fichaFaturamentoBusca.DataCorte,
                fichaFaturamentoBusca.EmailFaturamento,
                fichaFaturamentoBusca.ObservacoesFaturamento,
                fichaFaturamentoBusca.AnexoFaturamento,
                oportunidadeDetalhes.TipoOperacao
            };

            var retorno = workflow.EnviarParaAprovacao(
                new CadastroWorkflow(Processo.FICHA_FATURAMENTO, 1, fichaFaturamentoBusca.Id, User.ObterLogin(), User.ObterNome(), User.ObterEmail(), JsonConvert.SerializeObject(campos)));

            if (retorno == null)
            {
                throw new Exception("Nenhuma resposta do serviço de Workflow");
            }

            if (retorno.sucesso == false)
            {
                _logger.Info(retorno.mensagem);
            }

            _workflowRepositorio.IncluirEnvioAprovacao(new EnvioWorkflow(oportunidadeBusca.Id, Processo.FICHA_FATURAMENTO, retorno.protocolo, retorno.mensagem, User.ObterId()));

            _oportunidadeRepositorio.AtualizarStatusFichaFaturamento(StatusFichaFaturamento.EM_APROVACAO, fichaFaturamentoBusca.Id);

            _logger.Info($"Ficha de Faturamento {fichaFaturamentoBusca.Id} enviada para Aprovação");
        }
示例#11
0
        public ActionResult RecallAnaliseCredito(int recallAnaliseId, string motivoRecallAnalise)
        {
            var contaSessao = _contaRepositorio.ObterContaPorId(recallAnaliseId);

            Session["ContaId"]         = contaSessao.Id;
            Session["RazaoSocial"]     = contaSessao.Descricao;
            Session["FontePagadoraId"] = contaSessao.Id;
            Session["Cnpj"]            = contaSessao.Documento;

            var analiseCreditoBusca = _analiseCreditoRepositorio.ObterConsultaSpc(recallAnaliseId);

            if (analiseCreditoBusca == null)
            {
                throw new Exception("Solicitação não encontrada ou já excluída");
            }

            if (!User.IsInRole("OportunidadesFichas:RecallFichaFaturamento"))
            {
                if (!_equipesService.ValidarEquipeOportunidade(analiseCreditoBusca.Id))
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Usuário não possui permissão para edição da Solicitacao (Equipes)"));
                }
            }

            var token = Autenticador.Autenticar();

            if (token == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Não foi possível se autenticar no serviço de Recall"));
            }

            var ultimoProtocolo = _workflowRepositorio.UltimoProtocolo(analiseCreditoBusca.ContaId, Processo.ANALISE_DE_CREDITO);


            var workflow = new RecallService(token);

            var retorno = workflow.Recall(new CadastroRecall(ultimoProtocolo, User.ObterLogin(), User.ObterNome(), User.ObterEmail(), motivoRecallAnalise));

            if (retorno == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Nenhuma resposta do serviço de Recall"));
            }

            if (retorno.sucesso)
            {
                if (analiseCreditoBusca.StatusAnaliseDeCredito == StatusAnaliseDeCredito.EM_APROVACAO)
                {
                    _analiseCreditoRepositorio.AtualizarSPC1(recallAnaliseId);
                }

                //var resultado = _analiseCreditoRepositorio
                //.ObterSolicitacoesLimiteDeCredito(solicitacaoBusca.ContaId);

                //return PartialView("_SolicitacoesLimiteCredito", resultado);
                return(Json(new
                {
                    Processo = Processo.ANALISE_DE_CREDITO,
                    RedirectUrl = $"/AnaliseCredito/{recallAnaliseId}",
                }, JsonRequestBehavior.AllowGet));
                //return RedirectToAction("Index", "AnaliseCredito", new { id = recallAnaliseId });
            }

            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, retorno.mensagem));
        }