private async Task <EntregaFixaProcessada> TransformaEntregaBancoEmFixaPreProcessada(IEntrega ent) { if (ent is IEntregaFixa) { EntregaFixa entFixa = (EntregaFixa)ent; string YYYY = entFixa.DataDaEfetivacao.Year.ToString(); while (YYYY.Length < 4) { YYYY = "0" + YYYY; } string MM = entFixa.DataDaEfetivacao.Month.ToString(); while (MM.Length < 2) { MM = "0" + MM; } string competencia = YYYY + MM; Competencia[] comp = await _gerenciadoFinanceiro.ConverteStringEmCompetenciasAsync(new string[] { competencia }); EntregaFixaProcessada converted = new EntregaFixaProcessada(entFixa.DataDaEfetivacao, comp[0], entFixa.Executor); converted.Id = entFixa.Id; converted.IdRegra = entFixa.IdRegra; converted.SalvaNoBanco = entFixa.SalvaNoBanco; converted.Vinculacao = entFixa.Vinculacao; converted.Serie = entFixa.Serie; return(converted); } throw new InvalidOperationException("Tentativa de converter entrega nao fixa em entrega fixa"); }
private IEnumerable <EntregaFixaProcessada> GeraTodasRecorrenciasDeUmaRegra(IEnumerable <Competencia> competencias = null, ParametrosDeRegraDeRemuneracao regraFixa = null) { PeriodoSimples periodo = competencias.ObtemPeriodoQueCompreendeTodasAsCompetencias(); DateTime inicio = periodo.Inicio; DateTime fim = periodo.Fim; dynamic idMoeda = regraFixa.ParametrosExtras.Dinheiro["Moeda"]["Id"]; decimal valor = decimal.Parse(regraFixa.ParametrosExtras.Dinheiro["Valor"].ToString()); Moeda moeda = Moeda.Obtem(idMoeda.ToString()); Dinheiro valorRegra = new Dinheiro(valor, moeda); JsonSerializerSettings settingsSerializer = new JsonSerializerSettings() { ContractResolver = new JsonContractResolverDeModelosBase() }; //Dinheiro valorRegra = JsonConvert.DeserializeObject<Dinheiro>(regraFixa.ParametrosExtras.Dinheiro.ToString(), settingsSerializer); Recorrencia <DateTime> rec = JsonConvert.DeserializeObject <Recorrencia <DateTime> >(regraFixa.ParametrosExtras.Recorrencia.ToString(), settingsSerializer); rec.Atual = regraFixa.Vigencia.Inicio; DateTime dataReferencia = rec.Atual; Dictionary <int, DateTime> datasDoPeriodo = new Dictionary <int, DateTime>(); Recorrencia <DateTime> atual = rec; while (dataReferencia <= fim) { datasDoPeriodo.Add(atual.Serie, dataReferencia); atual = atual.ProximoNaRecorrencia; dataReferencia = atual.Atual; } atual = rec.AnteriorNaRecorrencia; dataReferencia = atual.Atual; List <EntregaFixaProcessada> entregas = new List <EntregaFixaProcessada>(); foreach (KeyValuePair <int, DateTime> data in datasDoPeriodo) { foreach (Competencia comp in competencias) { if (comp.Contem(data.Value)) { EntregaFixaProcessada ent = new EntregaFixaProcessada(data.Value, comp); ent.Serie = data.Key; ent.IdRegra = regraFixa.Id; entregas.Add(ent); break; } } } return(entregas); }
private async Task <IEnumerable <EntregaFixaProcessada> > TransformaEntregaBancoEmFixaPreProcessada(IEnumerable <IEntrega> entregasFixasDasRegrasNoBanco) { if (entregasFixasDasRegrasNoBanco == null || entregasFixasDasRegrasNoBanco.Count() == 0) { return(new List <EntregaFixaProcessada>()); } List <EntregaFixaProcessada> entPreProcs = new List <EntregaFixaProcessada>(); foreach (IEntrega ent in entregasFixasDasRegrasNoBanco) { EntregaFixaProcessada converted = await TransformaEntregaBancoEmFixaPreProcessada(ent); entPreProcs.Add(converted); } return(entPreProcs); }