コード例 #1
0
        public void Calcular(int oportunidadeId)
        {
            var oportunidade = _oportunidadeRepositorio.ObterOportunidadePorId(oportunidadeId);

            if (oportunidade == null)
            {
                throw new Exception("Oportunidade não encontrada");
            }

            _simuladorRepositorio.LimparServicosSimulador(oportunidade.Identificacao);

            var clientes = _simuladorRepositorio.ObterClientesSimulador(oportunidade.Identificacao);

            _simuladorRepositorio.CadastrarTabela(
                new SimuladorDTO
            {
                Proposta    = oportunidade.Identificacao,
                Descricao   = oportunidade.Descricao,
                Importador  = clientes.Importador,
                Despachante = clientes.Despachante,
                Coloader    = clientes.Coloader,
                CoColoader  = clientes.CoColoader,
                CoColoader2 = clientes.CoColoader2
            });

            _simuladorRepositorio.ImportarArmazenagem(oportunidade.Identificacao, oportunidade.Id);
            _simuladorRepositorio.ImportarServicoMargem(oportunidade.Identificacao, oportunidade.Id);
            _simuladorRepositorio.ImportarServicoHubPort(oportunidade.Identificacao, oportunidade.Id);
            _simuladorRepositorio.ImportarServicoMecanicaManual(oportunidade.Identificacao, oportunidade.Id);
            _simuladorRepositorio.ImportarServicosGerais(oportunidade.Identificacao, oportunidade.Id);
            _simuladorRepositorio.ImportarServicoLiberacao(oportunidade.Identificacao, oportunidade.Id);
        }
コード例 #2
0
        public ActionResult Index(int modeloId, int oportunidadeId)
        {
            if (modeloId == 0)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var oportunidadeBusca = _oportunidadeRepositorio.ObterOportunidadePorId(oportunidadeId);

            if (oportunidadeBusca == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var servicos = _impostosExcecaoRepositorio.ObterServicos(modeloId, oportunidadeId);

            return(View(new ImpostosExcecaoViewModel
            {
                ModeloId = modeloId,
                OportunidadeId = oportunidadeId,
                Tipo = TiposExcecoesImpostos.ImpostoAIsentar,
                StatusOportunidade = oportunidadeBusca.StatusOportunidade,
                Servicos = servicos
            }));
        }
コード例 #3
0
        public ActionResult EquipeUsuarios(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction(nameof(Index)));
            }

            var oportunidade = _oportunidadeRepositorio.ObterOportunidadePorId(id.Value);

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

            var vendedor = _vendedorRepositorio.ObterVendedorPorId(oportunidade.OportunidadeProposta.VendedorId);

            var viewModel = new EquipeOportunidadeViewModel
            {
                OportunidadeId     = oportunidade.Id,
                Proposta           = oportunidade.Identificacao,
                Descricao          = oportunidade.Descricao,
                StatusOportunidade = oportunidade.StatusOportunidade.ToName(),
                Vendedor           = vendedor?.Nome
            };

            var vinculos = _equipeOportunidadeRepositorio.ObterUsuariosVinculados(oportunidade.Id);

            viewModel.Vinculos = vinculos;

            return(View(viewModel));
        }
コード例 #4
0
        public ActionResult CadastrarParametrosSimulador([Bind(Include = "SimuladorPropostaId, SimuladorPropostaModeloId, SimuladorPropostaOportunidadeId, SimuladorPropostaRegime, SimuladorPropostaPeriodos, SimuladorPropostaGrupoAtracacaoId, SimuladorPropostaTipoDocumentoId, SimuladorPropostaNumeroLotes, SimuladorPropostaMargem, SimuladorPropostaPeso, SimuladorPropostaVolumeM3, SimuladorPropostaArmadorId, SimuladorPropostaQtde20, SimuladorPropostaQtde40, SimuladorPropostaCif, Observacoes")] SimuladorPropostaViewModel viewModel)
        {
            var oportunidadeBusca = _oportunidadeRepositorio
                                    .ObterOportunidadePorId(viewModel.SimuladorPropostaOportunidadeId);

            if (oportunidadeBusca == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Oportunidade não encontrada"));
            }

            var parametro = new SimuladorPropostaParametros(
                viewModel.SimuladorPropostaOportunidadeId,
                viewModel.SimuladorPropostaModeloId,
                oportunidadeBusca.TipoServico.ToName(),
                viewModel.SimuladorPropostaMargem,
                viewModel.SimuladorPropostaGrupoAtracacaoId,
                viewModel.SimuladorPropostaVolumeM3,
                viewModel.SimuladorPropostaPeso,
                viewModel.SimuladorPropostaPeriodos,
                viewModel.SimuladorPropostaTipoDocumentoId,
                viewModel.SimuladorPropostaQtde20,
                viewModel.SimuladorPropostaQtde40,
                viewModel.Observacoes,
                viewModel.SimuladorPropostaCif,
                User.ObterId());

            if (Enum.IsDefined(typeof(StatusOportunidade), oportunidadeBusca.StatusOportunidade))
            {
                if (oportunidadeBusca.StatusOportunidade != StatusOportunidade.RECUSADO)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, $"Não permitido para Oportunidades com Status {oportunidadeBusca.StatusOportunidade.ToName()}"));
                }
            }

            if (viewModel.SimuladorPropostaModeloId == 0)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, $"Informe o Modelo do Simulador"));
            }

            var existe = _simuladorRepositorio
                         .ObterParametrosSimulador(viewModel.SimuladorPropostaOportunidadeId)
                         .FirstOrDefault(c => c.ModeloId == viewModel.SimuladorPropostaModeloId);

            if (existe != null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Modelo de Simulador já cadastrado"));
            }

            _simuladorRepositorio.CadastrarParametrosSimulador(parametro);

            var simuladores = _simuladorRepositorio.ObterParametrosSimulador(viewModel.SimuladorPropostaOportunidadeId).ToList();

            return(PartialView("_ConsultaParametros", simuladores));
        }
コード例 #5
0
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            if (context.HttpContext.User.IsInRole("UsuarioExterno"))
            {
                if (context.RouteData != null && context.RouteData.Values["id"] == null)
                {
                    return;
                }

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

                var oportunidade = oportunidadeRepositorio.ObterOportunidadePorId(oportunidadeId);

                if (oportunidade != null)
                {
                    if (!_usuarioRepositorio.ExisteVinculoConta(oportunidade.ContaId, HttpContext.Current.User.ObterId()))
                    {
                        context.Result = new RedirectResult("~/Home/AcessoNegado");
                    }
                }
            }
        }
コード例 #6
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;
                        }
                    }
                }
            }
        }
コード例 #7
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"));
        }
コード例 #8
0
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            var oportunidadeId = 0;

            if (context.RouteData != null && context.RouteData.Values["id"] != null)
            {
                oportunidadeId = context.RouteData.Values["id"].ToString().ToInt();
            }
            else
            {
                if (context.HttpContext.Request.Headers["Referer"] != null)
                {
                    var referer = context.HttpContext.Request.Headers["Referer"].Split('/');

                    oportunidadeId = referer[referer.Length - 1].ToInt();
                }
            }

            var oportunidadeBusca = _oportunidadeRepositorio
                                    .ObterOportunidadePorId(oportunidadeId);

            if (oportunidadeBusca == null)
            {
                throw new Exception($"Oportunidade ({oportunidadeId}) não encontrada");
            }

            var usuarioIntegracao = _usuarioRepositorio
                                    .ObterUsuariosIntegracao()
                                    .Where(c => c.UsuarioId == HttpContext.Current.User.ObterId()).FirstOrDefault();

            if (usuarioIntegracao == null)
            {
                context.Controller.ViewBag.HabilitaBotaoIntegracaoProposta = false;
            }
            else
            {
                var modeloBusca = _modeloRepositorio.ObterModeloPorId(oportunidadeBusca.OportunidadeProposta.ModeloId);

                if (modeloBusca == null)
                {
                    context.Controller.ViewBag.HabilitaBotaoIntegracaoProposta = false;
                }
                else
                {
                    var permiteIntegracao = modeloBusca.IntegraChronos;

                    var usuarioHabilitadoIntegracaoProducao = usuarioIntegracao.AcessoProducao;

                    var oportunidadeEnviadaAprovacao = oportunidadeBusca.StatusOportunidade == StatusOportunidade.ENVIADO_PARA_APROVACAO;

                    if (HttpContext.Current.User.IsInRole("BaseDesenvolvimento"))
                    {
                        context.Controller.ViewBag.HabilitaBotaoIntegracaoProposta = permiteIntegracao && oportunidadeEnviadaAprovacao;
                    }
                    else
                    {
                        context.Controller.ViewBag.HabilitaBotaoIntegracaoProposta = permiteIntegracao && oportunidadeEnviadaAprovacao && usuarioHabilitadoIntegracaoProducao;
                    }
                }
            }
        }
コード例 #9
0
        public void EnviarOportunidadeParaAprovacao(int id, string criadoPor)
        {
            var oportunidadeBusca = _oportunidadeRepositorio.ObterOportunidadePorId(id);

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

            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 oportunidadeDetalhes = _oportunidadeRepositorio.ObterDetalhesOportunidade(id);

            var usuario = _usuarioRepositorio.ObterUsuarioPorId(criadoPor.ToInt());

            var campos = new
            {
                oportunidadeId = oportunidadeDetalhes.Id,
                oportunidadeDetalhes.Descricao,
                oportunidadeDetalhes.Identificacao,
                ContaId      = oportunidadeDetalhes.Conta,
                ContatoId    = oportunidadeDetalhes.Contato,
                MercadoriaId = oportunidadeDetalhes.Mercadoria,
                oportunidadeDetalhes.Aprovada,
                oportunidadeDetalhes.DataFechamento,
                oportunidadeDetalhes.TabelaId,
                oportunidadeDetalhes.Probabilidade,
                oportunidadeDetalhes.SucessoNegociacao,
                oportunidadeDetalhes.ClassificacaoCliente,
                oportunidadeDetalhes.Segmento,
                oportunidadeDetalhes.EstagioNegociacao,
                oportunidadeDetalhes.StatusOportunidade,
                oportunidadeDetalhes.MotivoPerda,
                oportunidadeDetalhes.TipoDeProposta,
                oportunidadeDetalhes.TipoServico,
                oportunidadeDetalhes.TipoNegocio,
                oportunidadeDetalhes.TipoOperacaoOportunidade,
                oportunidadeDetalhes.RevisaoId,
                oportunidadeDetalhes.Observacao,
                oportunidadeDetalhes.FaturamentoMensalLCL,
                oportunidadeDetalhes.FaturamentoMensalFCL,
                oportunidadeDetalhes.VolumeMensal,
                oportunidadeDetalhes.CIFMedio,
                oportunidadeDetalhes.PremioParceria,
                CriadoPor = usuario.Login,
                oportunidadeDetalhes.TipoOperacao,
                oportunidadeDetalhes.Vendedor,
                oportunidadeDetalhes.FormaPagamento,
                DataInicio  = oportunidadeDetalhes.DataInicio.DataFormatada(),
                DataTermino = oportunidadeDetalhes.DataTermino.DataFormatada()
            };

            var retorno = workflow.EnviarParaAprovacao(
                new CadastroWorkflow(Processo.OPORTUNIDADE, 1, oportunidadeBusca.Id, usuario.Login, usuario.Nome, usuario.Email, JsonConvert.SerializeObject(campos)));

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

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

            var oportunidadeWorkflow = new EnvioWorkflow(oportunidadeBusca.Id, Processo.OPORTUNIDADE, retorno.protocolo, retorno.mensagem, usuario.Id);

            _workflowRepositorio.IncluirEnvioAprovacao(oportunidadeWorkflow);

            if (oportunidadeBusca.StatusOportunidade != StatusOportunidade.CANCELADA)
            {
                oportunidadeBusca.StatusOportunidade = StatusOportunidade.ENVIADO_PARA_APROVACAO;
            }

            _oportunidadeRepositorio.AtualizarStatusOportunidade(oportunidadeBusca.StatusOportunidade, oportunidadeBusca.Id);
        }
コード例 #10
0
        public bool ValidarEquipeOportunidade(int oportunidadeId)
        {
            if (HttpContext.Current.User.IsInRole("Administrador"))
            {
                return(true);
            }

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

            var oportunidadeBusca = _oportunidadeRepositorio.ObterOportunidadePorId(oportunidadeId);

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

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

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

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

            if (permissoesPorVendedor != null)
            {
                if (permissoesPorVendedor.AcessoOportunidade == 1)
                {
                    return(true);
                }
            }
            else
            {
                // Usuário esta vinculado a equipe da conta relacionada à oportunidade?

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

                if (permissoesPorConta != null)
                {
                    if (permissoesPorConta.AcessoOportunidade == 1)
                    {
                        return(true);
                    }
                }
                else
                {
                    // Usuário esta vinculado a equipe da oportunidade?

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

                    if (permissoesPorOportunidade != null)
                    {
                        if (permissoesPorOportunidade.AcessoOportunidade == 1)
                        {
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
コード例 #11
0
        public ActionResult RecallOportunidade(int recallOportunidadeId, string motivoRecallOportunidade)
        {
            var oportunidadeBusca = _oportunidadeRepositorio.ObterOportunidadePorId(recallOportunidadeId);

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

            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(oportunidadeBusca.Id, Processo.OPORTUNIDADE);

            var workflow = new RecallService(token);

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

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

            if (retorno.sucesso)
            {
                if (oportunidadeBusca.Cancelado)
                {
                    //_oportunidadeRepositorio.AtualizarStatusOportunidade(StatusOportunidade.ATIVA, oportunidadeBusca.Id);
                    //_oportunidadeRepositorio.AtualizarCancelamentoOportunidade(false, oportunidadeBusca.Id);
                    //_oportunidadeRepositorio.AtualizarDataCancelamentoOportunidade(null, oportunidadeBusca.Id);
                    _oportunidadeRepositorio.PermiteAlterarDataCancelamento(oportunidadeBusca.Id, true);
                }

                if (oportunidadeBusca.StatusOportunidade == StatusOportunidade.ENVIADO_PARA_APROVACAO)
                {
                    _oportunidadeRepositorio.AtualizarStatusOportunidade(null, oportunidadeBusca.Id);
                }

                var fichasFaturamento = _oportunidadeRepositorio.ObterFichasFaturamento(oportunidadeBusca.Id);

                foreach (var ficha in fichasFaturamento)
                {
                    if (ficha.StatusFichaFaturamento == StatusFichaFaturamento.EM_APROVACAO)
                    {
                        _oportunidadeRepositorio.AtualizarStatusFichaFaturamento(StatusFichaFaturamento.EM_ANDAMENTO, ficha.Id);
                    }
                }

                return(Json(new
                {
                    Processo = Processo.OPORTUNIDADE,
                    RedirectUrl = $"/Oportunidades/Atualizar/{oportunidadeBusca.Id}"
                }, JsonRequestBehavior.AllowGet));
            }

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