public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var remuneracao = new ExcedenteDeRemuneracao(); serializer.Populate(reader, remuneracao); return(remuneracao); }
private void CorrecaoDeArredondamentoDeExcedente(IRemuneracao remuneracao, Dinheiro diferencaDeExcedente) { var remuneracaoLimitada = remuneracao as IRemuneracaoLimitada; IExcedenteDeRemuneracao excedente = remuneracaoLimitada.Excedentes.Last(); remuneracaoLimitada.RemoverExcedente(excedente); IExcedenteDeRemuneracao novoExcedente = new ExcedenteDeRemuneracao(remuneracaoLimitada, excedente.Limite, excedente.ValorBruto, valorExcedenteAoLimiteDestaRemuneracao: excedente.ValorExcedente + diferencaDeExcedente); remuneracaoLimitada.AdicionarExcedente(novoExcedente); }
private IRemuneracao AbaterRemuneracao(IRemuneracao rem, Dinheiro valorDoAbatimento, ILimiteDeRemuneracao limiteOriginario) { IExcedenteDeRemuneracao remuneracaoExcedente = new ExcedenteDeRemuneracao(rem, limiteOriginario, rem.ValorBruto, valorExcedenteAoLimiteDestaRemuneracao: valorDoAbatimento); IRemuneracao remuneracaoAposLimite = rem; if (rem is IRemuneracaoLimitada remuneracaoLimitada) { rem.ValorAjustado = new Dinheiro(rem.ValorBruto.Valor, rem.ValorBruto.Moeda); remuneracaoAposLimite = remuneracaoLimitada.AdicionarExcedente(remuneracaoExcedente); } else { remuneracaoLimitada = new RemuneracaoLimitada(remuneracaoAposLimite, valorBruto: remuneracaoAposLimite.ValorBruto); remuneracaoAposLimite = remuneracaoLimitada.AdicionarExcedente(remuneracaoExcedente); } return(remuneracaoAposLimite); }