public void TestPayslip() { var util = new PayslipUtil(); var empId = Guid.NewGuid(); var employee = new Employee() { Id = empId, FirstName = "Christopher", LastName = "Tso", AnnualSalary = 60050m }; var request = new PaySlipRequest() { EmployeeId = empId, PaymentStartDate = new DateTime(2019, 3, 1), SuperRate = 0.09m }; var taxRates = GetDefaultIncomeTaxRates(); var payslip = util.CreatePayslip(request, employee, taxRates); Assert.AreEqual(new DateTime(2019, 3, 31), payslip.PeriodEnd); Assert.AreEqual(Math.Floor(employee.AnnualSalary / 12), payslip.GrossIncome); // TODO: fix bug Assert.AreEqual(Math.Ceiling(3572 + 0.325m * (employee.AnnualSalary - 37000)) / 12, payslip.IncomeTax); Assert.AreEqual(payslip.GrossIncome - payslip.IncomeTax, payslip.NetIncome); Assert.AreEqual(Math.Floor(payslip.GrossIncome * request.SuperRate), payslip.Super); }
public async Task <IHttpActionResult> GetPaySlip([FromUri] PaySlipRequest request) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var x = await _paySlipCalculator.GetPaySlip(request); return(Ok(x)); }
public void SetUp() { _request = new PaySlipRequest { AnnualSalary = 10000, FirstName = "Shishira", LastName = "Mallasandra", SuperInterestRate = 9, PaymentStartDate = DateTime.Now }; }
public void SetUp() { _paySlipCalculator = new Mock <IPaySlipCalculator>(); _paySlipCalculator.Setup(x => x.GetPaySlip(It.IsAny <PaySlipRequest>())) .Returns(Task.FromResult(new PaySlipResponse())); _controller = new PaySlipController(_paySlipCalculator.Object); _request = new PaySlipRequest { AnnualSalary = 10000, FirstName = "Shishira", LastName = "Mallasandra", SuperInterestRate = 9, PaymentStartDate = DateTime.Now }; }
public Payslip CreatePayslip( PaySlipRequest request, Employee employee, IEnumerable <IncomeTaxRate> rates) { var payslip = new Payslip(); payslip.PeriodEnd = GetMonthEndDate(request.PaymentStartDate); payslip.GrossIncome = Math.Floor(employee.AnnualSalary / 12); payslip.IncomeTax = Math.Ceiling(CalculateTax(employee.AnnualSalary, rates) / 12); payslip.NetIncome = payslip.GrossIncome - payslip.IncomeTax; payslip.Super = Math.Floor(payslip.GrossIncome * request.SuperRate); return(payslip); }
public Task <PaySlipResponse> GetPaySlip(PaySlipRequest request) { var grossIncome = GetMonthly(request.AnnualSalary); var incomeTax = GetIncomeTax(request.AnnualSalary, request.PaymentStartDate); var response = new PaySlipResponse { Name = string.Format("{0} {1}", request.FirstName, request.LastName), GrossIncome = grossIncome, IncomeTax = incomeTax, NetIncome = grossIncome - incomeTax, SuperAmount = GetSuper(grossIncome, request.SuperInterestRate), PaymentPeriod = string.Format("01 {0} - {1} {2}", request.PaymentStartDate.ToString("MMMM"), DateTime.DaysInMonth(request.PaymentStartDate.Year, request.PaymentStartDate.Month), request.PaymentStartDate.ToString("MMMM")) }; return(Task.FromResult(response)); }