Exemplo n.º 1
0
        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;
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 6
0
        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"));
        }