//recallfichafaturamento public ActionResult RecallFichaFaturamento(int recallFichasOportunidadeId, int recallFichasId, string motivoRecallFichas) { var oportunidadeBusca = _oportunidadeRepositorio.ObterOportunidadePorId(recallFichasOportunidadeId); if (oportunidadeBusca == null) { throw new Exception("Oportunidade não encontrada ou já excluída"); } var fichaBusca = _oportunidadeRepositorio.ObterFichaFaturamentoPorId(recallFichasId); if (fichaBusca == null) { throw new Exception("Ficha Faturamento não encontrada ou já excluída"); } if (!User.IsInRole("OportunidadesFichas:RecallFichaFaturamento")) { if (!_equipesService.ValidarEquipeOportunidade(oportunidadeBusca.Id)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Usuário não possui permissão para edição da Oportunidade (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(oportunidadeBusca.Id, Processo.FICHA_FATURAMENTO, fichaBusca.Id); var workflow = new RecallService(token); var retorno = workflow.Recall(new CadastroRecall(ultimoProtocolo, User.ObterLogin(), User.ObterNome(), User.ObterEmail(), motivoRecallFichas)); if (retorno == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Nenhuma resposta do serviço de Recall")); } if (retorno.sucesso) { if (fichaBusca.StatusFichaFaturamento == StatusFichaFaturamento.EM_APROVACAO) { _oportunidadeRepositorio.AtualizarStatusFichaFaturamento(StatusFichaFaturamento.EM_ANDAMENTO, fichaBusca.Id); } return(Json(new { Processo = Processo.FICHA_FATURAMENTO, RedirectUrl = $"/Oportunidades/Atualizar/{oportunidadeBusca.Id}" }, JsonRequestBehavior.AllowGet)); } return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, retorno.mensagem)); }
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"); }