예제 #1
0
        public SlaListaNelaEdiValidator(DbConnectionDataSource dbSysReadOnly, DbConnectionDataSource dbSysFallBack, PassagemPendenteEDI passagemPendenteEdi)
        {
            _dataSourceConectSysReadOnly = dbSysReadOnly;
            _dataSourceFallBack          = dbSysFallBack;
            _passagemPendenteEdi         = passagemPendenteEdi;
            _validatorRuleSet            = new GenericValidator <PassagemPendenteEDI>();

            var obterConveniado = new ObterConveniadoQuery(_dataSourceConectSysReadOnly,
                                                           _dataSourceFallBack);

            _conveniado = obterConveniado.Execute(_passagemPendenteEdi.Conveniado.CodigoProtocolo);
        }
예제 #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));
                }
            }
        }