Exemple #1
0
        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;
        }
Exemple #2
0
        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);
        }