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); }
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)); } } }