public IEnumerable <Payslip> GeneratePayslips(IFormFile file) { var payslips = new List <Payslip>(); using (var reader = new StreamReader(file.OpenReadStream())) { while (!reader.EndOfStream) { var line = reader.ReadLine(); var cells = line.Split(','); decimal annualSalary; decimal superRate; if (this.IsFormFileDataValid(cells, out annualSalary, out superRate)) { var firstName = cells[0]; var lastName = cells[1]; var paymentStartDate = cells[4]; var payslip = new Payslip(); payslip.Name = _taxCalculatorService.GetFullName(firstName, lastName); payslip.PayPeriod = paymentStartDate; payslip.GrossIncome = _taxCalculatorService.CalculateGrossIncome(annualSalary); payslip.IncomeTax = _taxCalculatorService.CalculateIncomeTax(annualSalary); payslip.NetIncome = _taxCalculatorService.CalculateNetIncome(payslip.GrossIncome, payslip.IncomeTax); payslip.Super = _taxCalculatorService.CalculateSuper(payslip.GrossIncome, superRate); payslips.Add(payslip); } } } return(payslips); }
public void CalculateIncomeTax_ForZeroSalary_ReturnsZero() { //Arrange //Act var tax = _taxCalculator.CalculateIncomeTax(0, CalculationFrequency.Monthly); //Assert Assert.AreEqual(0, tax); }
public PayslipInfo GeneratePayslipForEmployee(EmployeeInformation data) { if (!data.IsModelValid()) { return null; } var payslip = new PayslipInfo { Name = string.Concat(data.EmployeeFirstName, " ", data.EmployeeLastName), GrossIncome = ((decimal)(data.AnnualSalary / (int)data.PayslipFrequency)).RoundToNearestInt(), IncomeTax = _taxCalculator.CalculateIncomeTax(data.AnnualSalary, data.PayslipFrequency), PayPeriod = data.PayPeriod }; payslip.Super = ((decimal)(payslip.GrossIncome * data.SuperRate / 100)).RoundToNearestInt(); return payslip; }
public PaySlip GeneratePaySlip(Employee employee) { if (employee == null) { throw new Exception("Employee details is not setup"); } var paySlip = new PaySlip { Name = string.Concat(employee.FirstName, " ", employee.LastName), GrossIncome = Math.Round((decimal)employee.AnnualSalary / 12, MidpointRounding.AwayFromZero), IncomeTax = _taxCalculatorService.CalculateIncomeTax(employee.AnnualSalary), PayPeriod = employee.PayPeriod }; paySlip.Super = Math.Round(paySlip.GrossIncome * employee.SuperRate); paySlip.NetIncome = paySlip.GrossIncome - paySlip.IncomeTax; return(paySlip); }
public Payslip GeneratePaySlip(Employee employee) { ValidateEmployeeDetails(employee); var result = new Payslip() { FirstName = employee.FirstName, LastName = employee.LastName, AnnualSalary = employee.AnnualSalary, SuperRate = employee.SuperRate, PayPeriod = employee.PayPeriod }; result.IncomeTax = _taxCalculatorService.CalculateIncomeTax(employee.AnnualSalary); result.NetIncome = result.GrossIncome - result.IncomeTax; result.Super = Math.Round(result.GrossIncome * decimal.Parse(result.SuperRate.Substring(0, result.SuperRate.IndexOf('%'))) / 100); return(result); }
public IActionResult CalculateIncomeTax(IncomeTaxVM incomeTaxVM) { if (!ModelState.IsValid) { TempData["SaveResult"] = "Error"; return(Redirect("Home/Index")); } var result = _taxCalculatorService.CalculateIncomeTax(incomeTaxVM.Map()); if (result == true) { TempData["SaveResult"] = "Success"; } else { TempData["SaveResult"] = "Error"; } return(Redirect("Home/Index")); }