Exemple #1
0
        public HorarioPassagemManualValidator()
        {
            _countTransacaoPassagemManualHorarioIncompativelNaMesmaPracaQuery = new ObterCountTransacaoPassagemManualHorarioIncompativelNaMesmaPracaQuery();
            _countTransacaoPassagemPorHorarioDePassagemManualQuery            = new ObterCountTransacaoPassagemPorHorarioDePassagemManualQuery();
            var configuracao = ConfiguracaoSistemaCacheRepository.Obter(NomeConfiguracaoSistema.QuantidadeDiasLimiteEstornoPassagem.ToString());

            _quantidadeDiasLimiteEstornoPassagem = configuracao.Valor.TryToInt();
        }
        public HorarioValidator()
        {
            var configuracao = ConfiguracaoSistemaCacheRepository.Obter(ConfiguracaoSistemaModel.TempoAceitePassagem);

            if (configuracao != null)
            {
                _tempoAceitePassagem = configuracao.Valor.TryToInt();
            }
        }
        public PassagemForaDoPrazoValidator()
        {
            _passagemAnteriorValidaQuery = new ObterPassagemAnteriorValidaQuery();
            var configuracao = ConfiguracaoSistemaCacheRepository.Obter(ConfiguracaoSistemaModel.QuantidadeDiasLimiteEstornoPassagem);

            if (configuracao != null)
            {
                DiasLimiteEstornoPassagem = configuracao.Valor.TryToInt();
            }
        }
        public DivergenciaCategoriaValidator()
        {
            _categoriaVeiculo = new ObterCategoriaVeiculo();
            _transacaoPassagemPorAdesaoIdQuery = new ObterTransacaoPassagemPorAdesaoIdQuery();
            _categoriasRejeitadasQuery         = new ObterCategoriasRejeitadasQuery();

            var qtdPassagensConfiguracao = ConfiguracaoSistemaCacheRepository.Obter(NomeConfiguracaoSistema
                                                                                    .QuantidadeDePassagensParaConfirmacaoDeCategoria.ToString());

            var qtdDivergenciasConfiguracao = ConfiguracaoSistemaCacheRepository.Obter(NomeConfiguracaoSistema
                                                                                       .QuantidadeLimiteDeDivergenciasParaReiniciarConfirmacaoDeCategoria.ToString());

            _quantidadeLimitePassagens    = qtdPassagensConfiguracao.Valor.TryToInt();
            _quantidadeLimiteDivergencias = qtdDivergenciasConfiguracao.Valor.TryToInt();
        }
        public CalcularRepasseBo()
        {
            _repasseQuery = new ObterRepasseQuery();
            _dataVencimentoUltimaFaturaQuery    = new ObterDataVencimentoUltimaFaturaQuery();
            _diaVencimentoFaturaQuery           = new ObterDiaVencimentoFaturaQuery();
            _dataCadastroConfiguracaoPlanoQuery = new ObterDataCadastroConfiguracaoPlanoQuery();

            var configuracaoQuantidadeDiasParaCorteFaturaPosPagoEmpresarialAntesVencimento = ConfiguracaoSistemaCacheRepository.Obter(ConfiguracaoSistemaModel.QuantidadeDiasParaCorteFaturaPosPagoEmpresarialAntesVencimento);
            var configuracaoQuantidadeMinimaDiasFaturaPosPagoEmpresarial = ConfiguracaoSistemaCacheRepository.Obter(ConfiguracaoSistemaModel.QuantidadeMinimaDiasFaturaPosPagoEmpresarial);
            var configuracaoQuantidadeMaximaDiasFaturaPosPagoEmpresarial = ConfiguracaoSistemaCacheRepository.Obter(ConfiguracaoSistemaModel.QuantidadeMaximaDiasFaturaPosPagoEmpresarial);

            _quantidadeDeDiasParaCorte      = configuracaoQuantidadeDiasParaCorteFaturaPosPagoEmpresarialAntesVencimento.Valor.TryToInt() * -1;
            _quantidadeMinimaDeDiasDaFatura = configuracaoQuantidadeMinimaDiasFaturaPosPagoEmpresarial.Valor.TryToInt();
            _quantidadeMaximaDeDiasDaFatura = configuracaoQuantidadeMaximaDiasFaturaPosPagoEmpresarial.Valor.TryToInt();
        }
Exemple #6
0
        private decimal ObterLimiteDeCredito()
        {
            var configuracaoSaldoMinimoNegativo = ConfiguracaoSistemaCacheRepository.Obter(ConfiguracaoSistemaModel.SaldoMinimoNegativo).Valor.TryToDecimal();

            switch (_passagemPendenteEdi.Adesao.Plano)
            {
            case PlanoDePagamento.PrePago:
                return(0);

            case PlanoDePagamento.RecargaAutomatica:
            case PlanoDePagamento.PlanoMensalidade:
            case PlanoDePagamento.ValorVariavel:
                return(configuracaoSaldoMinimoNegativo * -1);

            case PlanoDePagamento.PrePagoEmpresarial:
            case PlanoDePagamento.PosPagoEmpresarial:
                return(ObterLimiteDeCreditoConfiguracaoPlanoCliente());
            }
            throw new EdiDomainException("Plano não configurado.", _passagemPendenteEdi);
        }
        public GeradorPassagemInvalidaArtespHandler()
        {
            var configuracaoQtdTentativas = ConfiguracaoSistemaCacheRepository.Obter(NomeConfiguracaoSistema.QuantidadeTentativasProcessamentoMensagemItem.GetDescription());

            _qtdTentativas = configuracaoQtdTentativas.Valor.TryToInt();
        }
        private decimal ObterSaldoMinimoNegativo()
        {
            var configuracao = ConfiguracaoSistemaCacheRepository.Obter(ConfiguracaoSistemaModel.SaldoMinimoNegativo);

            return(configuracao.Valor.TryToDecimal());
        }
        public OSAValidator()
        {
            var configuracaoSistema = ConfiguracaoSistemaCacheRepository.Obter(ConfiguracaoSistemaModel.OsaId);

            _idOsaConfiguracao = configuracaoSistema.Valor.TryToInt();
        }
Exemple #10
0
        public void Validate()
        {
            int quantidadeLimiteDivergencias;
            int quantidadeLimitePassagens;
            var categoriaIdentificada = _passagemPendenteEdi.CategoriaUtilizada;

            if (_passagemPendenteEdi.CategoriaUtilizada.Automovel && _passagemPendenteEdi.CategoriaUtilizada.Id != 1)
            {
                var obterCategoriaVeiculoPorCodigo = new ObterCategoriaVeiculo();

                //Codigo 1 = Automóvel, caminhonete e furgão (2 eixos simples).
                categoriaIdentificada = obterCategoriaVeiculoPorCodigo.Execute(1);
            }

            try
            {
                quantidadeLimitePassagens    = ConfiguracaoSistemaCacheRepository.Obter(ConfiguracaoSistemaModel.QuantidadeDePassagensParaConfirmacaoDeCategoria).Valor.TryToInt();
                quantidadeLimiteDivergencias = ConfiguracaoSistemaCacheRepository.Obter(ConfiguracaoSistemaModel.QuantidadeLimiteDeDivergenciasParaReiniciarConfirmacaoDeCategoria).Valor.TryToInt();
            }
            catch (Exception ex)
            {
                Log.Info("Os parâmetros de limite do grupo de configuração de sistema CategoriaConfirmada são inválidos.", ex);
                return;
            }

            if (_passagemPendenteEdi.Adesao.Veiculo.CategoriaConfirmada)
            {
                //Se o veículo possui categoria confirmada e a categoria identificada pela transação é a mesma, então o processo deve continuar normalmente.
                if (_passagemPendenteEdi.Adesao.Veiculo.Categoria.Id == categoriaIdentificada.Id)
                {
                    _passagemPendenteEdi.Adesao.Veiculo.ContagemDivergenciaCategoriaConfirmada = null;
                }
                else
                {
                    //Se o veículo possui categoria confirmada, mas não é a mesma identificada pela transação.
                    var obterUltimaTransacaoPassagem = new ObterUltimaTransacaoPassagemTrnPorAdesaoIdQuery();
                    var ultimaTransacaoPassagem      = obterUltimaTransacaoPassagem.Execute(_passagemPendenteEdi.Adesao.Id ?? 0);

                    if (ultimaTransacaoPassagem.CategoriaUtilizadaId == 0 && _passagemPendenteEdi.Adesao.AdesaoOrigemId != 0)
                    {
                        ultimaTransacaoPassagem = obterUltimaTransacaoPassagem.Execute(_passagemPendenteEdi.AdesaoOrigemId.TryToLong());
                    }

                    //Se a ultima transacao nao for encontrada eu forço uma categoria inexistente para indicar divergencia
                    int categoriaUltimaTransacao = ultimaTransacaoPassagem.CategoriaUtilizadaId != 0 ? ultimaTransacaoPassagem.CategoriaUtilizadaId : _passagemPendenteEdi.Adesao.Veiculo.Categoria.Id.TryToInt();

                    if (categoriaUltimaTransacao == 7 || categoriaUltimaTransacao == 8)
                    {
                        categoriaUltimaTransacao = 1;
                    }

                    var obterCategoriasRejeitadasQuery =
                        new ObterCategoriasRejeitadasQuery();

                    var contemCategoriaRegeitada = obterCategoriasRejeitadasQuery.Execute(
                        new ObterCategoriasRejeitadasFilter(_passagemPendenteEdi.Conveniado.Id ?? 0,
                                                            _passagemPendenteEdi.Adesao.Veiculo.Id ?? 0));

                    //Somente rejeito se a categoria estiver configurada como "rejeitável"
                    if (contemCategoriaRegeitada)
                    {
                        Log.Info($"Passagem recusada para o veículo {_passagemPendenteEdi.Placa} por divergência de categoria. Veículo tem categoria confirmada {_passagemPendenteEdi.Adesao.Veiculo.Categoria.Codigo} e conveniado recusa categorias divergentes para veículos dessa categoria.");
                        throw new EdiTransacaoException(CodigoRetornoTransacaoTRF.CATCobradaNaoCompativel, _passagemPendenteEdi);
                    }

                    //Se a categoria identificada for diferente da última transação, porém a última transação tem a mesma categoria que a categoria confirmada.
                    //Negaremos a criação da transação passagem
                    if (categoriaUltimaTransacao != categoriaIdentificada.Id &&
                        categoriaUltimaTransacao == _passagemPendenteEdi.Adesao.Veiculo.Categoria.Id &&
                        _passagemPendenteEdi.Adesao.Veiculo.ContagemDivergenciaCategoriaConfirmada == null)
                    {
                        _passagemPendenteEdi.Adesao.Veiculo.ContagemDivergenciaCategoriaConfirmada = 0;

                        if (_passagemPendenteEdi.Conveniado.AtivoProtocoloArtesp)
                        {
                            throw new EdiTransacaoException(CodigoRetornoTransacaoTRF.CATCobradaNaoCompativel, _passagemPendenteEdi);
                        }

                        throw new EdiTransacaoException(CodigoRetornoTransacaoTRF.CATCobradaNaoCompativel, _passagemPendenteEdi);
                    }

                    //Se a categoria identificada for diferente da última transação e a última transação já não for a mesma da categoria confirmada
                    //Contaremos a quantidade de divergências e reiniciaremos o processo de Categoria Confirmada
                    if (_passagemPendenteEdi.Adesao.Veiculo.ContagemDivergenciaCategoriaConfirmada != null)
                    {
                        _passagemPendenteEdi.Adesao.Veiculo.ContagemDivergenciaCategoriaConfirmada++;
                    }

                    if (_passagemPendenteEdi.Adesao.Veiculo.ContagemDivergenciaCategoriaConfirmada >= quantidadeLimiteDivergencias)
                    {
                        IniciarConfirmacaoCategoria(categoriaIdentificada);
                    }
                }
                //salva.
            }
            else
            {
                //Se a categoria ainda não está confirmada, verifica se é a primeira passagem e inicia a contagem de transações
                if (_passagemPendenteEdi.Adesao.Veiculo.ContagemConfirmacaoCategoria == null || _passagemPendenteEdi.Adesao.Veiculo.ContagemConfirmacaoCategoria == 0)
                {
                    IniciarConfirmacaoCategoria(categoriaIdentificada);
                }
                else
                {
                    //Se a categoria ainda não está confirmada
                    //Incrementa o contador de transações
                    _passagemPendenteEdi.Adesao.Veiculo.ContagemConfirmacaoCategoria++;

                    //Verifica se a categoria identificada é diferente da categoria em processo de confirmação
                    //Gera um alerta e reinicia a contagem de transações com a nova categoria identificada
                    if (_passagemPendenteEdi.Adesao.Veiculo.Categoria.Id != categoriaIdentificada.Id)
                    {
                        _passagemPendenteEdi.PossuiDivergenciaCategoriaVeiculo = true; // criar a divergencia no gerador passagem aprovada

                        IniciarConfirmacaoCategoria(categoriaIdentificada);
                    }

                    //Ao atingir o número definido de passagens atribui a categoria gravada o status de Categoria Confirmada
                    //Também atualiza o valor da categoria na ConfiguracaoAdesao para espelhar a informação para outros processos
                    if (_passagemPendenteEdi.Adesao.Veiculo.ContagemConfirmacaoCategoria >= quantidadeLimitePassagens)
                    {
                        SubstituirCategoriaVeiculo(_passagemPendenteEdi.Adesao.Veiculo.Categoria.Id ?? 0);

                        _passagemPendenteEdi.Adesao.Veiculo.DataConfirmacaoCategoria = DateTime.Now;
                        _passagemPendenteEdi.Adesao.Veiculo.CategoriaConfirmada      = true;
                    }
                }
            }
        }