public Tuple <DateTime, decimal> Calculate(BvgPlan plan, BvgCalculationInput input) { int schlussalter = _calcSchlussalter.Calculate(plan, input); DateTime dateOfRetirement = _calcPensionierung.Calculate(plan, input); int rechnungsjahr = input.DateOfEintritt.Year; int bvgAlter = rechnungsjahr - input.DateOfBirth.Year; bool isPensionierungInRechnungsjahr = bvgAlter == schlussalter; var endOfYear = new DateTime(rechnungsjahr, 1, 1); if (isPensionierungInRechnungsjahr) { endOfYear = dateOfRetirement; } decimal aghEndeJahr = 0; if (bvgAlter >= plan.Eintrittsalter) { decimal schrumpPeriodeRechnungsjahr = (isPensionierungInRechnungsjahr ? dateOfRetirement.Month / 12m : 1m); decimal agsRechnungsjahr = _calcAltersgutschrift.Calculate(plan, input) * schrumpPeriodeRechnungsjahr; aghEndeJahr = agsRechnungsjahr + input.Altersguthaben * (1m + _constantsBvg.BvgZins * schrumpPeriodeRechnungsjahr); } return(Tuple.Create(endOfYear, aghEndeJahr)); }
public async Task <BvgCalculationResult> CalculateAsync(BvgPlan plan, BvgCalculationInput input) { BvgCalculationResult result = new BvgCalculationResult(); result.VersicherterLohn = _calcVersicherterLohn.Calculate(plan, input); result.Altersgutschrift = _calcAltersgutschrift.Calculate(plan, input); result.AlterguthabenEndeJahr = _calcAlterguthabenEndeJahr.Calculate(plan, input).Item2; result.Altersrente = 1000m; return(await Task.FromResult(result)); }