public IList <EmployeePayrollPerCompany> GeneratePayrollGrossPayByDateRange(DateTime payrollDate, DateTime payrollStartDate, DateTime payrollEndDate) { var employeePayrollItems = _employeePayrollItemService.GetByDateRange(payrollDate, payrollDate); var employeePayrollList = new List <EmployeePayrollPerCompany>(); if (employeePayrollItems != null && employeePayrollItems.Count() > 0) { //Hold last payroll processed EmployeePayrollPerCompany tempEmployeePayroll = null; DateTime today = DateTime.Now; EmployeePayrollItemPerCompany lastPayrollItem = employeePayrollItems.Last(); foreach (EmployeePayrollItemPerCompany item in employeePayrollItems) { //If should create new entry if (tempEmployeePayroll == null || //First iteration tempEmployeePayroll.Employee.EmployeeId != item.EmployeeId || //Diff employee tempEmployeePayroll.CompanyId != item.CompanyId) //Dif company { if (tempEmployeePayroll != null) { //Save last employeePayroll entry if for different employee _employeePayrollRepository.Add(tempEmployeePayroll); employeePayrollList.Add(tempEmployeePayroll); } Employee employee = _employeeService.GetById(item.EmployeeId); EmployeePayrollPerCompany employeePayroll = new EmployeePayrollPerCompany { Employee = employee, CutOffStartDate = payrollStartDate, CutOffEndDate = payrollEndDate, PayrollGeneratedDate = today, PayrollDate = payrollDate, TotalGross = item.TotalAmount, TotalNet = item.TotalAmount, TaxableIncome = item.TotalAmount, CompanyId = item.CompanyId }; tempEmployeePayroll = employeePayroll; } else { //Update last entry tempEmployeePayroll.TotalGross += item.TotalAmount; tempEmployeePayroll.TotalNet += item.TotalAmount; tempEmployeePayroll.TaxableIncome += item.TotalAmount; } //If last iteration save if (item.Equals(lastPayrollItem)) { _employeePayrollRepository.Add(tempEmployeePayroll); employeePayrollList.Add(tempEmployeePayroll); } } //Commit _unitOfWork.Commit(); } MapItemsToPayroll(employeePayrollItems, employeePayrollList); return(employeePayrollList); }
public void Update(EmployeePayrollPerCompany employeePayroll) { _employeePayrollRepository.Update(employeePayroll); }