public PersonReport(IPensionAgeCalc pensionAgeCalc, IIncomeTaxCalculator incomeTaxCalculator, Person person, DateTime now, DateTime?givenRetirementDate, IAssumptions assumptions, decimal monthlySpending, ITaxSystem taxSystem) { Person = person; StatePensionDate = pensionAgeCalc.StatePensionDate(person.Dob, person.Sex); PrivatePensionDate = pensionAgeCalc.PrivatePensionDate(StatePensionDate, person.Dob); TargetRetirementDate = givenRetirementDate; var salaryAfterDeductions = person.EmployeeContribution.SubtractContribution(person.Salary); var taxResult = incomeTaxCalculator.TaxFor(salaryAfterDeductions); var taxResultWithRental = incomeTaxCalculator.TaxFor(salaryAfterDeductions, rentalIncome: person.RentalPortfolio.RentalIncome()); NationalInsuranceBill = Convert.ToInt32(taxResult.NationalInsurance); IncomeTaxBill = Convert.ToInt32(taxResult.IncomeTax); RentalTaxBill = Convert.ToInt32(taxResultWithRental.TotalTaxFor(IncomeType.RentalIncome)); TakeHomeSalary = Convert.ToInt32(taxResult.AfterTaxIncome); TakeHomeRentalIncome = Convert.ToInt32(person.RentalPortfolio.TotalNetIncome() - RentalTaxBill); SalarySteps = SetupSalarySteps(person, now).ToList(); var niContributingYearsSoFar = NiContributingYearsCalc.CalculateContributingYearsSoFar(person, MonthlySalaryAfterDeductionsAt(now), now, taxSystem); var mode = givenRetirementDate.HasValue ? StepType.GivenDate : StepType.CalcMinimum; StepReport = new StepsReport(person, niContributingYearsSoFar, mode, now, assumptions, monthlySpending, PrivatePensionDate, taxSystem); _take25 = assumptions.Take25; }
public TaxResultDto TaxFor(int payeSalary) { var taxResult = _taxCalculator.TaxFor(payeSalary); var calcIncomeTax = new TaxResultDto(); calcIncomeTax.TaxResultItems.Add(new TaxResultItemDto { Amount = taxResult.IncomeTax.ToString(CultureInfo.InvariantCulture), Description = "Income Tax" }); calcIncomeTax.TaxResultItems.Add(new TaxResultItemDto { Amount = taxResult.NationalInsurance.ToString(CultureInfo.InvariantCulture), Description = "National Ins." }); calcIncomeTax.TaxResultItems.Add(new TaxResultItemDto { Amount = taxResult.TotalTax.ToString(CultureInfo.InvariantCulture), Description = "Total", IsTotal = true }); return(calcIncomeTax); }