private Decimal ObterValoreMes(int?ano, int?mes, List <EfaturamentoAgrupadoDto> efaturamentoAgrupadoDtoLista, EfaturamentoAgrupadoDto efaturamentoAgrupadoDto) { decimal valorMes = 0; var efaturamentoAgrupadoDtoMes = efaturamentoAgrupadoDtoLista.Find(e => e.IdCelula == efaturamentoAgrupadoDto.IdCelula && e.IdCliente == efaturamentoAgrupadoDto.IdCliente && e.IdServico == efaturamentoAgrupadoDto.IdServico && e.Ano == ano && e.Mes == mes ); if (efaturamentoAgrupadoDtoMes != null) { valorMes = (efaturamentoAgrupadoDtoMes.ValorRecorrente + efaturamentoAgrupadoDtoMes.ValorRecorrenteNao + efaturamentoAgrupadoDtoMes.ValorRecorrenteNovasVendas - efaturamentoAgrupadoDtoMes.ValorRecorrentePerdas - efaturamentoAgrupadoDtoMes.ValorRecorrenteMultas //+ efaturamentoAgrupadoDtoMes.ValorRecorrenteRepactuacao Não faz Parte //+ efaturamentoAgrupadoDtoMes.ValorRecorrenteRepactuacaoRetro ); } return(valorMes); }
private decimal?ObterValorPercentual(EfaturamentoAgrupadoDto efaturamentoAgrupadoDto) { if (efaturamentoAgrupadoDto.ValorRecorrenteRepactuacao > 0 && efaturamentoAgrupadoDto.ValorRecorrente > 0) { var valorDividir = efaturamentoAgrupadoDto.ValorRecorrente + efaturamentoAgrupadoDto.ValorRecorrenteNao + efaturamentoAgrupadoDto.ValorRecorrenteNovasVendas - efaturamentoAgrupadoDto.ValorRecorrentePerdas; if (valorDividir > 0) { var valorPercentual = (efaturamentoAgrupadoDto.ValorRecorrenteRepactuacao / valorDividir) * 100; return(valorPercentual); } } return(null); }
public void RealizarMigracao() { List <ForecastET> forecasts = new List <ForecastET>(); List <ForecastET> forecastsPorAno = new List <ForecastET>(); var connectionStringEacesso = _connectionStrings.Value.EacessoConnection; using (IDbConnection dbConnection = new SqlConnection(connectionStringEacesso)) { dbConnection.Open(); var listaAno = ObterEfaturamentoAnos(dbConnection); listaAno.ForEach(ano => { var efaturamentoAgrupadoDtoLista = ObterEfaturamentoAgrupadoDto(dbConnection, ano).ToList(); foreach (var efaturamentoAgrupadoDto in efaturamentoAgrupadoDtoLista) { List <EfaturamentoAgrupadoDto> efaturamentoAgrupadoDtoGrupoLista = new List <EfaturamentoAgrupadoDto>(); try { var efaturamentoAgrupadoDtoGrupoExiste = forecastsPorAno.Any(e => e.IdCelula == efaturamentoAgrupadoDto.IdCelula && e.IdCliente == efaturamentoAgrupadoDto.IdCliente && e.IdServico == efaturamentoAgrupadoDto.IdServico && e.NrAno == ano ); if (!efaturamentoAgrupadoDtoGrupoExiste) { efaturamentoAgrupadoDtoGrupoLista = efaturamentoAgrupadoDtoLista.FindAll(e => e.IdCelula == efaturamentoAgrupadoDto.IdCelula && e.IdCliente == efaturamentoAgrupadoDto.IdCliente && e.IdServico == efaturamentoAgrupadoDto.IdServico && e.Ano == ano ); if (efaturamentoAgrupadoDtoGrupoLista != null && efaturamentoAgrupadoDtoGrupoLista.Count > 0) { var efaturamentoAgrupadoDtoGrupo = new EfaturamentoAgrupadoDto { IdCelula = efaturamentoAgrupadoDtoGrupoLista.First().IdCelula, IdCliente = efaturamentoAgrupadoDtoGrupoLista.First().IdCliente, IdServico = efaturamentoAgrupadoDtoGrupoLista.First().IdServico, Ano = efaturamentoAgrupadoDtoGrupoLista.First().Ano, ValorRecorrente = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrente), ValorRecorrenteNao = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrenteNao), ValorRecorrenteNovasVendas = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrenteNovasVendas), ValorRecorrentePerdas = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrentePerdas), ValorRecorrenteMultas = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrenteMultas), ValorRecorrenteRepactuacao = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrenteRepactuacao), ValorRecorrenteRepactuacaoRetro = efaturamentoAgrupadoDtoGrupoLista.Sum(x => x.ValorRecorrenteRepactuacaoRetro), }; var forecastET = new ForecastET { IdCelula = efaturamentoAgrupadoDtoGrupo.IdCelula, IdCliente = efaturamentoAgrupadoDtoGrupo.IdCliente, IdServico = efaturamentoAgrupadoDtoGrupo.IdServico, NrAno = efaturamentoAgrupadoDtoGrupo.Ano, DataAplicacaoReajuste = ObterDataAplicacaoReajuste(dbConnection, efaturamentoAgrupadoDtoGrupo.IdCelula, efaturamentoAgrupadoDtoGrupo.IdCliente, efaturamentoAgrupadoDtoGrupo.IdServico, ano), DataReajusteRetroativo = ObterDataReajusteRetroativo(dbConnection, efaturamentoAgrupadoDtoGrupo.IdCelula, efaturamentoAgrupadoDtoGrupo.IdCliente, efaturamentoAgrupadoDtoGrupo.IdServico, ano), //IdStatus = 0, //TODO EM BRANCO Usuario = "Eacesso", DataAlteracao = DateTime.Now, //DescricaoJustificativa = "Teste de migração", ValorForecast = new ValorForecast { VlPercentual = ObterValorPercentual(efaturamentoAgrupadoDtoGrupo), ValorJaneiro = ObterValoreMes(ano, 1, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorFevereiro = ObterValoreMes(ano, 2, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorMarco = ObterValoreMes(ano, 3, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorAbril = ObterValoreMes(ano, 4, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorMaio = ObterValoreMes(ano, 5, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorJunho = ObterValoreMes(ano, 6, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorJulho = ObterValoreMes(ano, 7, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorAgosto = ObterValoreMes(ano, 8, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorSetembro = ObterValoreMes(ano, 9, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorOutubro = ObterValoreMes(ano, 10, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorNovembro = ObterValoreMes(ano, 11, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), ValorDezembro = ObterValoreMes(ano, 12, efaturamentoAgrupadoDtoLista, efaturamentoAgrupadoDto), Usuario = "Eacesso", DataAlteracao = DateTime.Now } }; adicionarValorTotal(forecastET); //TODO Data de Aniversário para vir em branco //forecastET.DataAniversario = ObterDataAniversario(forecastET); forecastsPorAno.Add(forecastET); } } } catch (Exception ex) { var erroMsg = "IdCelula:" + efaturamentoAgrupadoDtoGrupoLista.First().IdCelula.ToString() + " IdCliente: " + efaturamentoAgrupadoDtoGrupoLista.First().IdCliente.ToString() + " IdServico:" + efaturamentoAgrupadoDtoGrupoLista.First().IdServico.ToString(); AdicionarLogGenerico(ex, "Erro ao migrar dados FORECAST ano:" + ano.ToString(), erroMsg); continue; } } _forecastRepository.AdicionarRange(forecastsPorAno); _unitOfWork.Commit(); forecastsPorAno = new List <ForecastET>(); }); dbConnection.Close(); } }