private void AprovarRepasseSeTemFuncionalidade(RepasseNivelUm repasseStfCorp)
        {
            var logins = _repasseNivelUmRepository.ObterLoginsComFuncionalidadeAprovarNivelDois();

            if (logins.Contains(_variables.UserName))
            {
                var aprovarRepasseDtoNivelUm = new AprovarRepasseDto
                {
                    Id      = repasseStfCorp.Id,
                    Status  = StatusRepasseEacesso.APROVADO_NIVEL_UM.GetDescription(),
                    Usuario = _variables.UserName
                };

                if (!CelulaDestinoPagadoraExterior(repasseStfCorp.IdCelulaDestino))
                {
                    AprovarRepasseSemValidacaoCelulaExterior(aprovarRepasseDtoNivelUm);
                }
                else
                {
                    AprovarRepasse(aprovarRepasseDtoNivelUm);
                }

                if (!CelulaDestinoPagadoraExterior(repasseStfCorp.IdCelulaDestino))
                {
                    var aprovarRepasseDtoNivelDois = new AprovarRepasseNivelDoisDto
                    {
                        Id     = repasseStfCorp.Id,
                        Status = StatusRepasseEacesso.APROVADO_NIVEL_DOIS.GetDescription()
                    };
                    AprovarRepasseNivelDois(aprovarRepasseDtoNivelDois);
                }
            }
        }
 private void ValidarSeRepassePodeSerEditado(RepasseNivelUm repasse)
 {
     if (repasse.Status != StatusRepasseEacesso.NAO_ANALISADO.GetDescription() &&
         repasse.Status != StatusRepasseEacesso.NEGADO.GetDescription())
     {
         throw new Exception("Um repasse só pode ser editado se seu status estiver como Negado ou Não Analisado.");
     }
 }
        private void AtualizarRepasseStfCorp(RepasseNivelUm repasse)
        {
            repasse.Status = DefinirStatusRepasseStfCorp(repasse);
            _repasseNivelUmRepository.Update(repasse);

            var idStatusRePasse = _dominioRepository.Buscar(x => x.DescricaoValor.Equals(StatusRepasseEacesso.REPASSE_EDITADO.GetDescription())).FirstOrDefault().Id;

            AdicionarLogRepasse(repasse.Id, idStatusRePasse, "");
        }
        private void AdicionarParcelasDoRepasseStfCorp(RepasseNivelUm repasse)
        {
            RepasseNivelUm cloneRepasse = repasse.Clone();

            cloneRepasse.IdRepasseMae = repasse.Id;
            for (int i = 1; i < repasse.QtdVezesRepetir; i++)
            {
                cloneRepasse.Id          = 0;
                cloneRepasse.DataRepasse = cloneRepasse.DataRepasse.AddMonths(1);
                _repasseNivelUmRepository.Adicionar(cloneRepasse);
                cloneRepasse = cloneRepasse.Clone();
            }
        }
 private void AtualizarRepasseEAcesso(RepasseNivelUm repasseNivelUm)
 {
     if (repasseNivelUm.IdRepasseEacesso != null && repasseNivelUm.IdRepasseEacesso > 0)
     {
         var repasseEacesso = _repasseRepository.BuscarPorId((int)repasseNivelUm.IdRepasseEacesso);
         repasseEacesso.Status = repasseNivelUm.Status;
         if (repasseNivelUm.Status == StatusRepasseEacesso.NEGADO.GetDescription())
         {
             repasseEacesso.MotivoNegacao = repasseNivelUm.MotivoNegacao;
         }
         _repasseRepository.Update(repasseEacesso);
         _unitOfWork.CommitLegado();
     }
 }
        private int ObterNumeroParcelasRepasse(RepasseNivelUm repasse)
        {
            int vezesRepertir;

            if (repasse.IdRepasseEacesso != null)
            {
                vezesRepertir = _repasseRepository.BuscarTodosFilhosLegado((int)repasse.IdRepasseEacesso).Count();
            }
            else
            {
                vezesRepertir = _repasseNivelUmRepository.BuscarTodosFilhos(repasse.Id).Count();
            }
            return(vezesRepertir + 1);
        }
 private string DefinirStatusRepasseStfCorp(RepasseNivelUm repasse)
 {
     if (repasse.Id == 0)
     {
         return(repasse.IdCelulaOrigem == repasse.IdCelulaDestino && _repasseNivelUmRepository.ValidarUsuarioResponsavelPelaCelula(repasse.IdCelulaDestino)
             ? StatusRepasseEacesso.APROVADO_NIVEL_UM.GetDescription()
             : StatusRepasseEacesso.NAO_ANALISADO.GetDescription());
     }
     else
     {
         return(repasse.Status == StatusRepasseEacesso.NEGADO.GetDescription()
             ? StatusRepasseEacesso.NAO_ANALISADO.GetDescription()
             : repasse.Status);
     }
 }
        private void AdicionarRepasseStfCorp(RepasseNivelUm repasseStfCorp, Repasse repasseEAcesso, int idDominioRepasseCadastrado)
        {
            var periodoVigente = _periodoRepasseRepository.BuscarPeriodoVigente();

            repasseStfCorp.Status           = DefinirStatusRepasseStfCorp(repasseStfCorp);
            repasseStfCorp.IdRepasseEacesso = repasseEAcesso.Id;
            repasseStfCorp.DataLancamento   = periodoVigente.DtLancamento;
            repasseStfCorp.ParcelaRepasse   = $"1/{repasseEAcesso.QtdVezesRepetir.ToString()}";
            _repasseNivelUmRepository.Adicionar(repasseStfCorp);

            AdicionarLogRepasse(repasseStfCorp.Id, idDominioRepasseCadastrado, string.Empty);


            _unitOfWork.Commit();
        }
        private void AdicionarParcelasDeRepasseNoStfcorpENoEacesso(
            RepasseNivelUm repasseStfCorp, Repasse repasseEAcesso, int repasseCadastradoLogIdDominio
            )
        {
            int idDominioAprovadoNivelUm = _dominioRepository.Buscar((int)StatusRepasseEacesso.APROVADO_NIVEL_UM, StatusRepasseEacesso.VL_TIPO_DOMINIO.GetDescription()).Id;

            Repasse cloneRepasseEacesso = repasseEAcesso.Clone();

            cloneRepasseEacesso.IdRepasseMae = repasseEAcesso.Id;

            RepasseNivelUm cloneRepasseStfCorp = repasseStfCorp.Clone();

            cloneRepasseStfCorp.IdRepasseMae        = repasseStfCorp.Id;
            cloneRepasseStfCorp.IdRepasseMaeEAcesso = repasseEAcesso.Id;

            for (int i = 1; i < repasseEAcesso.QtdVezesRepetir; i++)
            {
                cloneRepasseEacesso.Id = 0;
                cloneRepasseEacesso.DescricaoProjeto = $"{repasseEAcesso.DescricaoProjeto} - {i + 1}/{repasseEAcesso.QtdVezesRepetir.ToString()}";
                cloneRepasseEacesso.DataRepasse      = cloneRepasseEacesso.DataRepasse.AddMonths(1);
                _repasseRepository.Adicionar(cloneRepasseEacesso);
                _unitOfWork.CommitLegado();
                cloneRepasseEacesso = cloneRepasseEacesso.Clone();


                cloneRepasseStfCorp.Id               = 0;
                cloneRepasseStfCorp.DataRepasse      = cloneRepasseStfCorp.DataRepasse.AddMonths(1);
                cloneRepasseStfCorp.DataLancamento   = cloneRepasseStfCorp.DataLancamento.AddMonths(1);
                cloneRepasseStfCorp.IdRepasseEacesso = cloneRepasseEacesso.Id;
                cloneRepasseStfCorp.LogsRepasse      = null;
                cloneRepasseStfCorp.ParcelaRepasse   = $"{i + 1}/{repasseEAcesso.QtdVezesRepetir.ToString()}";

                //cloneRepasseStfCorp.DescricaoProjeto = $"{repasseEAcesso.DescricaoProjeto} - {i + 1}/{repasseEAcesso.QtdVezesRepetir.ToString()}";
                _repasseNivelUmRepository.Adicionar(cloneRepasseStfCorp);
                _unitOfWork.Commit();
                _repasseNivelUmRepository.DetachEntity(cloneRepasseStfCorp);
                AdicionarLogRepasse(cloneRepasseStfCorp.Id, repasseCadastradoLogIdDominio, String.Empty);

                if (cloneRepasseStfCorp.IdCelulaOrigem == cloneRepasseStfCorp.IdCelulaDestino)
                {
                    AdicionarLogRepasse(cloneRepasseStfCorp.Id, idDominioAprovadoNivelUm, String.Empty);
                }

                _unitOfWork.Commit();
                cloneRepasseStfCorp = cloneRepasseStfCorp.Clone();
            }
        }
        public void Persistir(RepasseNivelUm repasseStfCorp, Repasse repasseEAcesso)
        {
            using (var stfCorpTran = _unitOfWork.BeginTranStfCorp())
                using (var eacessoTran = _unitOfWork.BeginTranEAcesso())
                {
                    try
                    {
                        if (repasseStfCorp.Id == 0)
                        {
                            AdicionarRepasseEacesso(repasseEAcesso);
                            int idDominioRepasseCadastradoLog = _dominioRepository.Buscar((int)StatusRepasseEacesso.REPASSE_CADASTRADO, StatusRepasseEacesso.VL_TIPO_DOMINIO.GetDescription()).Id;
                            AdicionarRepasseStfCorp(repasseStfCorp, repasseEAcesso, idDominioRepasseCadastradoLog);

                            if (repasseStfCorp.QtdVezesRepetir > 1)
                            {
                                AdicionarParcelasDeRepasseNoStfcorpENoEacesso(repasseStfCorp, repasseEAcesso, idDominioRepasseCadastradoLog);
                            }
                        }
                        else
                        {
                            ValidarSeRepassePodeSerEditado(repasseStfCorp);
                            AtualizarRepasseStfCorp(repasseStfCorp);
                            _unitOfWork.Commit();

                            repasseEAcesso.Id = (int)repasseStfCorp.IdRepasseEacesso;
                            AtualizarRepasseEacesso(repasseEAcesso);
                            _unitOfWork.CommitLegado();
                        }
                        stfCorpTran.Commit();
                        eacessoTran.Commit();
                    }
                    catch (Exception ex)
                    {
                        stfCorpTran.Rollback();
                        eacessoTran.Rollback();
                        throw ex;
                    }
                }

            AprovarRepasseSeTemFuncionalidade(repasseStfCorp);
        }
Exemplo n.º 11
0
        public void RealizarMigracaoRepasseEacesso()
        {
            var repasses       = _repasseRepository.BuscarTodosMigracaoRepasse();
            var repasseSTFCORP = _repasseNivelUmRepository.BuscarTodos();

            List <RepasseNivelUm> repasseNivelUmLista = new List <RepasseNivelUm>();

            var periodoVigente = _periodoRepasseService.BuscarPeriodoVigente();

            var countAdd   = 0;
            var countTotal = 0;

            repasses.ForEach(r =>
            {
                var clienteOrigiem = obterNomeCliente(r.IdClienteOrigem);
                var clienteDestino = _clienteRepository.BuscarPorId(r.IdClienteDestino).NomeFantasia;

                var servicoOrigiem = obterNomeServico(r.IdServicoOrigem);
                var servicoDestino = _clienteServicoRepository.BuscarPorId(r.IdServicoDestino).Nome;

                var nomeProficiional = obterNomeProfissional(r.IdProfissional);


                var repasseNivelUm = new RepasseNivelUm
                {
                    IdClienteOrigem        = r.IdClienteOrigem.GetValueOrDefault(),
                    IdClienteDestino       = r.IdClienteDestino,
                    IdCelulaDestino        = r.IdCelulaDestino,
                    DataRepasse            = r.DataRepasse,
                    DescricaoProjeto       = r.DescricaoProjeto,
                    IdCelulaOrigem         = r.IdCelulaOrigem,
                    IdEpm                  = 0,//Não mapeado
                    IdMoeda                = r.IdMoeda,
                    IdOrigem               = r.IdOrigem,
                    IdProfissional         = r.IdProfissional,
                    IdRepasseEacesso       = r.Id,
                    IdRepasseMaeEAcesso    = r.IdRepasseMae,
                    IdServicoDestino       = r.IdServicoDestino,
                    IdServicoOrigem        = r.IdServicoOrigem.GetValueOrDefault(),
                    Justificativa          = r.Justificativa,
                    MotivoNegacao          = r.MotivoNegacao,
                    NomeClienteDestino     = clienteDestino,
                    NomeClienteOrigem      = clienteOrigiem,
                    NomeProfissional       = nomeProficiional,
                    NomeServicoDestino     = servicoDestino,
                    NomeServicoOrigem      = servicoOrigiem,
                    QuantidadeItens        = (int)r.QuantidadeItens,
                    RepasseInterno         = false, //não mapeado
                    Status                 = r.Status,
                    ValorCustoProfissional = r.ValorCustoProfissional,
                    ValorTotal             = r.ValorTotal,
                    ValorUnitario          = r.ValorUnitario,
                    DataAlteracao          = DateTime.Now,
                    Usuario                = "STFCORP"
                };


                //TODO IMPLEMENATAR e TESTAR
                LogRepasse log = new LogRepasse
                {
                    IdStatusRepasse = 4849,
                    Descricao       = SharedEnuns.StatusRepasseEacesso.NAO_ANALISADO.GetDescription(),
                    DataAlteracao   = repasseNivelUm.DataAlteracao,
                    Usuario         = repasseNivelUm.Usuario
                };

                repasseNivelUm.LogsRepasse.Add(log);

                repasseNivelUmLista.Add(repasseNivelUm);

                countAdd++;
                countTotal++;
                bool encontrado = false;

                if (countAdd == 100 || repasses.Count == countAdd)
                {
                    _repasseNivelUmRepository.AdicionarRange(repasseNivelUmLista);

                    foreach (var repasse in repasseSTFCORP)
                    {
                        if (repasseNivelUm.IdRepasseEacesso == repasse.IdRepasseEacesso)
                        {
                            encontrado = true;
                        }
                    }

                    if (!encontrado)
                    {
                        _unitOfWork.Commit();
                    }
                    else
                    {
                        encontrado = false;
                    }

                    countAdd            = 0;
                    repasseNivelUmLista = new List <RepasseNivelUm>();
                }
                ;
            });
        }
        private void AtualizarRepasseNivelUmAposNegadoNivelDois(AprovarRepasseNivelDoisDto aprovarRepasseDto, RepasseNivelUm repasseNivelUm)
        {
            repasseNivelUm.Usuario       = aprovarRepasseDto.Usuario;
            repasseNivelUm.Status        = aprovarRepasseDto.Status;
            repasseNivelUm.MotivoNegacao = aprovarRepasseDto.Motivo;
            int idDominioRepasseNegado = _dominioRepository.Buscar((int)StatusRepasseEacesso.NEGADO, StatusRepasseEacesso.VL_TIPO_DOMINIO.GetDescription()).Id;

            AdicionarLogRepasse(repasseNivelUm.Id, idDominioRepasseNegado, aprovarRepasseDto.Motivo);
            _repasseNivelUmRepository.Update(repasseNivelUm);
            _unitOfWork.Commit();
        }
        private void AtualizarRepasseQuandoAprovandoOuNegando(AprovarRepasseDto aprovarRepasseDto, RepasseNivelUm repasseNivelUm)
        {
            repasseNivelUm.Usuario = aprovarRepasseDto.Usuario;
            repasseNivelUm.Status  = aprovarRepasseDto.Status;

            LogRepasse log = new LogRepasse
            {
                IdStatusRepasse = repasseNivelUm.Status == StatusRepasseEacesso.NEGADO.GetDescription()
                    ? _dominioRepository.Buscar(x => x.DescricaoValor.Equals(StatusRepasseEacesso.NEGADO.GetDescription())).FirstOrDefault().Id
                    : _dominioRepository.Buscar(x => x.DescricaoValor.Equals(StatusRepasseEacesso.APROVADO_NIVEL_UM.GetDescription())).FirstOrDefault().Id,
                Descricao = repasseNivelUm.Status == StatusRepasseEacesso.NEGADO.GetDescription()
                    ? aprovarRepasseDto.Motivo
                    : string.Empty,
                DataAlteracao = DateTime.Now,
                Usuario       = repasseNivelUm.Usuario
            };

            repasseNivelUm.MotivoNegacao = repasseNivelUm.Status == StatusRepasseEacesso.NEGADO.GetDescription() ? aprovarRepasseDto.Motivo : null;
            repasseNivelUm.LogsRepasse.Add(log);

            if (aprovarRepasseDto.Status == StatusRepasseEacesso.APROVADO_NIVEL_DOIS.GetDescription() &&
                !CelulaDestinoPagadoraExterior(repasseNivelUm.IdCelulaDestino))
            {
                int idDominioRepasseAprovadoNivelDois = _dominioRepository.Buscar((int)StatusRepasseEacesso.APROVADO_NIVEL_DOIS, StatusRepasseEacesso.VL_TIPO_DOMINIO.GetDescription()).Id;
                log = new LogRepasse
                {
                    Id              = 0,
                    IdRepasse       = repasseNivelUm.Id,
                    IdStatusRepasse = idDominioRepasseAprovadoNivelDois,
                    Descricao       = string.Empty,
                    DataAlteracao   = DateTime.Now,
                    Usuario         = repasseNivelUm.Usuario
                };

                repasseNivelUm.LogsRepasse.Add(log);
            }

            _repasseNivelUmRepository.Update(repasseNivelUm);
            _unitOfWork.Commit();
        }