Beispiel #1
0
        public TransacaoConfirmacaoValidator(PassagemPendenteEDI passagemPendenteEdi)
        {
            _passagemPendenteEdi = passagemPendenteEdi;
            var query = new ObterCountPossuiTransacaoProvisoriaQuery();

            PossuiTransacaoProvisoria = query.Execute(passagemPendenteEdi);
        }
Beispiel #2
0
        public void Calcular()
        {
            if (RepasseDto == null)
            {
                throw new EdiDomainException("ObterRepasse não configurado.", _passagemAprovadaEdi);
            }

            _transacaoPassagem.DataRepasse = CalcularDataDeRepasse();
            _transacaoPassagem.RepasseId   = RepasseDto.RepasseId;

            var possuiTransacaoProvisoriaQuery = new ObterCountPossuiTransacaoProvisoriaQuery();

            var obterConveniado = new ObterConveniadoQuery(DataSourceConectSysReadOnly, DataSourceFallBack);
            var conveniado      = obterConveniado.Execute(_passagemAprovadaEdi.Conveniado.Id.TryToInt());

            if (possuiTransacaoProvisoriaQuery.Execute(_passagemAprovadaEdi))
            {
                var obterTransacaoProvisoria = new ObterTransacaoProvisoriaQuery();
                var transacaoProvisoria      = obterTransacaoProvisoria.Execute(_passagemAprovadaEdi);

                if (_passagemAprovadaEdi.StatusCobranca == StatusCobranca.Confirmacao)
                {
                    if (transacaoProvisoria.Valor > _passagemAprovadaEdi.Valor)
                    {
                        _transacaoPassagem.Credito = true;
                        _transacaoPassagem.Valor   = Math.Round(transacaoProvisoria.Valor - _transacaoPassagem.Valor, 2);
                    }
                    else
                    {
                        _transacaoPassagem.Credito = false;
                        _transacaoPassagem.Valor   = Math.Round(_transacaoPassagem.Valor - transacaoProvisoria.Valor, 2);
                    }
                }

                var valorCorrigido = (_transacaoPassagem.Credito ? -1 * _transacaoPassagem.Valor : _transacaoPassagem.Valor) + (transacaoProvisoria.Credito ? -1 * transacaoProvisoria.Valor : transacaoProvisoria.Valor);

                _transacaoPassagem.TarifaDeInterconexao = valorCorrigido * RepasseDto.TarifaDeInterconexao / 100 ?? 0;
                _transacaoPassagem.ValorRepasse         = valorCorrigido - _transacaoPassagem.TarifaDeInterconexao;

                if (_transacaoPassagem.TipoOperacao == TipoOperacaoMovimentoFinanceiro.PassagemValePedagio && conveniado.ConcessionariaParticipanteValePedagio)
                {
                    var tarifaValePedagio          = conveniado.TaxaInterconexaoValePedagio;
                    var tarifaInterconexaoParceiro = RepasseDto.TarifaDeInterconexaoParceiro;
                    var tarifa = tarifaValePedagio + tarifaInterconexaoParceiro;

                    _transacaoPassagem.ValorRepasse = valorCorrigido - (valorCorrigido * (tarifa / 100));
                }
            }
            else
            {
                _transacaoPassagem.TarifaDeInterconexao = RepasseDto.TarifaDeInterconexao.HasValue ? (_transacaoPassagem.Valor * RepasseDto.TarifaDeInterconexao.Value) / 100 : 0;
                _transacaoPassagem.ValorRepasse         = _transacaoPassagem.Valor - _transacaoPassagem.TarifaDeInterconexao;
                if (_transacaoPassagem.TipoOperacao == TipoOperacaoMovimentoFinanceiro.PassagemValePedagio && conveniado.ConcessionariaParticipanteValePedagio)
                {
                    var tarifaValePedagio          = conveniado.TaxaInterconexaoValePedagio;
                    var tarifaInterconexaoParceiro = RepasseDto.TarifaDeInterconexaoParceiro;
                    var tarifa = tarifaValePedagio + tarifaInterconexaoParceiro;

                    _transacaoPassagem.ValorRepasse = _transacaoPassagem.Valor - (_transacaoPassagem.Valor * (tarifa / 100));
                }
            }
        }
        //private void PreencherDetalheTrfManualmenteDto()
        //{
        //    if (_request.DetalheTrfRecusado != null)
        //    {
        //        _passagemAprovadaEdiDto.DetalheTRFAprovadoManualmente = new DetalheTRFAprovadoManualmenteDto
        //        {
        //            Id = _request.PassagemAprovadaEdi.DetalheTrfAprovadoManualmenteId,
        //            SurrogateKey = _request.PassagemAprovadaEdi.DetalheTrnId
        //        };
        //    }
        //}

        private void PreencherPassagemAprovadaDto()
        {
            if (_request.PassagemAprovadaEdi?.Transacao != null)
            {
                _passagemAprovadaEdiDto.TransacaoPassagemEDI = new TransacaoPassagemEDIDto
                {
                    Id                       = _request.PassagemAprovadaEdi.Transacao.Id.TryToInt(),
                    AdesaoId                 = _request.PassagemAprovadaEdi.Transacao.AdesaoId,
                    CategoriaUtilizadaId     = _request.PassagemAprovadaEdi.Transacao.CategoriaUtilizadaId,
                    ItemListaDeParaUtilizado =
                        _request.PassagemAprovadaEdi.Transacao.ItemListaDeParaUtilizado.TryToInt(),
                    OrigemTransacaoId = _request.PassagemAprovadaEdi.Transacao.OrigemTransacaoId,
                    Credito           = _request.PassagemAprovadaEdi.Transacao.Credito,
                    Data                   = _request.PassagemAprovadaEdi.Transacao.Data,
                    DataDePassagem         = _request.PassagemAprovadaEdi.Transacao.DataDePassagem,
                    DataRepasse            = _request.PassagemAprovadaEdi.Transacao.DataRepasse,
                    Valor                  = _request.PassagemAprovadaEdi.Transacao.Valor,
                    ValorRepasse           = _request.PassagemAprovadaEdi.Transacao.ValorRepasse,
                    TipoOperacaoId         = _request.PassagemAprovadaEdi.Transacao.TipoOperacaoId,
                    PistaId                = _request.PassagemAprovadaEdi.Transacao.PistaId,
                    RepasseId              = _request.PassagemAprovadaEdi.Transacao.RepasseId,
                    StatusId               = (int)StatusAutorizacao.Ativa,
                    TarifaDeinterconexao   = _request.PassagemAprovadaEdi.Transacao.TarifaDeInterconexao,
                    SurroGateKey           = _request.PassagemAprovadaEdi.DetalheTrnId,
                    DetalheTRNId           = _request.PassagemAprovadaEdi.DetalheTrnId,
                    EvasaoAceita           = _request.PassagemAprovadaEdi.PossuiEvasaoAceita,
                    ChaveCriptografiaBanco = _chaveCriptografiaBanco,
                    SaldoId                = _request.PassagemAprovadaEdi.Adesao.SaldoId,
                    TransacaoDeCorrecaoId  = null
                };

                if (_request.PassagemAprovadaEdi.StatusCobranca == StatusCobranca.Confirmacao)
                {
                    var obterTransacaoProvisoriaIdQuery = new ObterCountPossuiTransacaoProvisoriaQuery();
                    var possuiProvisoria = obterTransacaoProvisoriaIdQuery.Execute(_request.PassagemAprovadaEdi);

                    if (possuiProvisoria)
                    {
                        var obterProvisoriaQuery = new ObterTransacaoProvisoriaQuery();
                        var transacaoProvisoria  = obterProvisoriaQuery.Execute(_request.PassagemAprovadaEdi);

                        _passagemAprovadaEdiDto.TransacaoPassagemEDI.TransacaoDeCorrecaoId = transacaoProvisoria.Id.TryToInt();
                    }
                }

                if (_request.PassagemAprovadaEdi.PossuiDivergenciaCategoriaVeiculo)
                {
                    _passagemAprovadaEdiDto.DivergenciaCategoriaConfirmada = new DivergenciaCategoriaConfirmadaDto
                    {
                        Id = _request.PassagemAprovadaEdi.Transacao.DivergenciaCategoriaConfirmada?.Id.TryToInt() ?? 0,
                        CategoriaVeiculoId =
                            _request.PassagemAprovadaEdi.Transacao.DivergenciaCategoriaConfirmada?.CategoriaVeiculo?.Id
                            .TryToInt() ?? 0,
                        Data = _request.PassagemAprovadaEdi.Transacao.Data,
                        TransacaoPassagemId = _request.PassagemAprovadaEdi.Transacao.Id.TryToInt(),
                        SurrogateKey        = _request.PassagemAprovadaEdi.DetalheTrnId
                    };
                }
            }
            else if (_request.PassagemAprovadaEdi?.TransacaoProvisoria != null)
            {
                _passagemAprovadaEdiDto.TransacaoProvisoriaEDI = new TransacaoProvisoriaEDIDto
                {
                    Id                       = _request.PassagemAprovadaEdi.TransacaoProvisoria.Id.TryToInt(),
                    AdesaoId                 = _request.PassagemAprovadaEdi.TransacaoProvisoria.AdesaoId,
                    CategoriaUtilizadaId     = _request.PassagemAprovadaEdi.TransacaoProvisoria.CategoriaUtilizadaId,
                    ItemListaDeParaUtilizado = _request.PassagemAprovadaEdi.TransacaoProvisoria.ItemListaDeParaUtilizado.TryToInt(),
                    OrigemTransacaoId        = _request.PassagemAprovadaEdi.TransacaoProvisoria.OrigemTransacaoId,
                    Credito                  = _request.PassagemAprovadaEdi.TransacaoProvisoria.Credito,
                    Data                     = _request.PassagemAprovadaEdi.TransacaoProvisoria.Data,
                    DataDePassagem           = _request.PassagemAprovadaEdi.TransacaoProvisoria.DataDePassagem,
                    DataRepasse              = _request.PassagemAprovadaEdi.TransacaoProvisoria.DataRepasse,
                    Valor                    = _request.PassagemAprovadaEdi.TransacaoProvisoria.Valor,
                    ValorRepasse             = _request.PassagemAprovadaEdi.TransacaoProvisoria.ValorRepasse,
                    TipoOperacaoId           = _request.PassagemAprovadaEdi.TransacaoProvisoria.TipoOperacaoId,
                    PistaId                  = _request.PassagemAprovadaEdi.TransacaoProvisoria.PistaId,
                    RepasseId                = _request.PassagemAprovadaEdi.TransacaoProvisoria.RepasseId,
                    StatusId                 = (int)StatusAutorizacao.Ativa,
                    DetalheTRNId             = _request.PassagemAprovadaEdi.TransacaoProvisoria.DetalheTrnId,
                    TarifaDeinterconexao     = _request.PassagemAprovadaEdi.TransacaoProvisoria.TarifaDeInterconexao,
                    SurroGateKey             = _request.PassagemAprovadaEdi.TransacaoProvisoria.DetalheTrnId,
                    EvasaoAceita             = _request.PassagemAprovadaEdi.PossuiEvasaoAceita,
                    ChaveCriptografiaBanco   = _chaveCriptografiaBanco,
                    SaldoId                  = _request.PassagemAprovadaEdi.Adesao.SaldoId, //request.PassagemAprovadaEdi.Transacao.
                    TransacaoDeCorrecaoId    = null
                };


                if (_request.PassagemAprovadaEdi.PossuiDivergenciaCategoriaVeiculo)
                {
                    _passagemAprovadaEdiDto.DivergenciaCategoriaConfirmada = new DivergenciaCategoriaConfirmadaDto
                    {
                        Id = _request.PassagemAprovadaEdi.TransacaoProvisoria.DivergenciaCategoriaConfirmada?.Id
                             .TryToInt() ?? 0,
                        CategoriaVeiculoId =
                            _request.PassagemAprovadaEdi.TransacaoProvisoria.DivergenciaCategoriaConfirmada
                            ?.CategoriaVeiculo?.Id.TryToInt() ?? 0,
                        Data = _request.PassagemAprovadaEdi.TransacaoProvisoria.Data,
                        TransacaoPassagemId = _request.PassagemAprovadaEdi.TransacaoProvisoria.Id.TryToInt(),
                        SurrogateKey        = _request.PassagemAprovadaEdi.DetalheTrnId
                    }
                }
                ;
            }

            if (_request?.PassagemAprovadaEdi?.Adesao?.Veiculo != null)
            {
                _passagemAprovadaEdiDto.Veiculo = new VeiculoDto
                {
                    CategoriaVeiculoId = _request.PassagemAprovadaEdi.Adesao.Veiculo.Categoria.Id.TryToInt(),
                    Id    = _request.PassagemAprovadaEdi.Adesao.Veiculo.Id.TryToInt(),
                    Placa = _request.PassagemAprovadaEdi.Adesao.Veiculo.Placa,
                    CategoriaConfirmada = _request.PassagemAprovadaEdi.Adesao.Veiculo.CategoriaConfirmada,
                    ContagemDivergenciaCategoriaConfirmada =
                        _request.PassagemAprovadaEdi.Adesao.Veiculo.ContagemDivergenciaCategoriaConfirmada,
                    ContagemConfirmacaoCategoria =
                        _request.PassagemAprovadaEdi.Adesao.Veiculo.ContagemConfirmacaoCategoria,
                    DataConfirmacaoCategoria = _request.PassagemAprovadaEdi.Adesao.Veiculo.DataConfirmacaoCategoria,
                }
            }
            ;

            if (_request?.PassagemAprovadaEdi?.Adesao?.ConfiguracaoAdesao != null && (_request?.PassagemAprovadaEdi?.Adesao?.ConfiguracaoAdesao.Categoria.Id ?? 0) > 0)
            {
                _passagemAprovadaEdiDto.ConfiguracaoAdesao = new ConfiguracaoAdesaoDto
                {
                    CategoriaId = _request.PassagemAprovadaEdi.Adesao.ConfiguracaoAdesao.Categoria.Id.TryToInt(),
                    Id          = _request.PassagemAprovadaEdi.Adesao.ConfiguracaoAdesao.Id.TryToInt(),
                }
            }
            ;
        }