/// <summary> /// Loads the employee from CSVF ile. /// </summary> /// <returns>The employee from CSV File.</returns> /// <param name="viewModel">View model.</param> private IEnumerable <Employee> LoadEmployeeFromCSVFile(PaySlipViewModel viewModel) { var stream = viewModel.EmployeeSalaryFile.OpenReadStream(); IEnumerable <Employee> employees = _employeeCsvHelper.ReadFromCsvFile <Employee>(stream).ToList(); return(employees); }
public async Task <IActionResult> PutPaySlip(string id, PaySlipViewModel paySlip) { if (string.Compare(paySlip.Id, id) != 0) { throw new Exception(string.Format("Id và Id của phiếu chi không giống nhau!")); } try { await Task.Run(() => { paySlip.DateModified = DateTime.Now; _payslipService.Update(paySlip); _payslipService.SaveChanges(); return(Ok()); }); } catch (DbUpdateConcurrencyException) { if (!PaySlipExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
/// <summary> /// Creates the pay slip view. /// </summary> /// <param name="payroll">The payroll.</param> /// <param name="employee">The employee.</param> /// <returns></returns> /// <exception cref="ArgumentNullException">payroll</exception> public IPaySlipViewModel CreatePaySlipView(IPayroll payroll, IPayScale payScale, decimal taxRate, IList <IPayScaleBenefit> payScaleBenefits, ICompanyDetail companyDetail, IDigitalFile companyLogo, IEmployee employee, ILevel level, IGrade grade, IList <IPayrollEmployeeReward> rewardCollection, IList <IPayrollEmployeeDeduction> employeeDeductionCollection, IList <IPayrollEmployeeLoan> loanCollection, decimal pensionContribution, decimal spouseConsolidation, decimal childrenConsolidation, decimal consolidationTaxRelief, decimal taxableIncome) { if (payroll == null) { throw new ArgumentNullException(nameof(payroll)); } var viewModel = new PaySlipViewModel { CompanyDetail = companyDetail, Payroll = payroll, Employee = employee, Loan = loanCollection, Reward = rewardCollection, EmployeeDeduction = employeeDeductionCollection, Level = level, Grade = grade, PayScale = payScale, PayScaleCollection = payScaleBenefits, CompanyLogo = companyLogo, TaxRate = taxRate, PensionContribution = pensionContribution, Dependant = spouseConsolidation, Children = childrenConsolidation, TaxCollation = consolidationTaxRelief, TaxationAmount = taxableIncome, }; return(viewModel); }
public PaySlipViewModel GetPaySlip(PaySlipBindingModel model) { #region Negative values validations if (model.AnnualSalary <= 0) { throw new Exception("Salary should be positive value"); } if (model.SuperRate < 0) { throw new Exception("Super Rate should be positive value"); } #endregion var annualSalary = model.AnnualSalary; var grossIncome = annualSalary.CalculateGrossIncome(); var incomeTax = annualSalary.GetTaxSlabAmount(); var netIncome = (grossIncome - incomeTax).RoundOffDoller(); var superAmount = (grossIncome * model.SuperRate / 100).RoundOffDoller(); var viewModel = new PaySlipViewModel { Name = $"{model.FirstName} {model.LastName}", NetIncome = netIncome, GrossIncome = grossIncome, IncomeTax = incomeTax, PayPeriod = model.StartDate, SuperAmount = superAmount }; return(viewModel); }
public IActionResult Index(PaySlipViewModel viewModel) { if (viewModel.EmployeeSalaryFile == null) { viewModel.MessageLevel = "danger"; viewModel.ErrorMessage = $"please select file first"; return(View(viewModel)); } IEnumerable <Employee> employees = null; try { employees = LoadEmployeeFromCSVFile(viewModel); } catch (Exception e) { _logger.LogInformation($"Parse employee csv file failure: {e.Message}"); viewModel.MessageLevel = "danger"; viewModel.ErrorMessage = $"Parse CSV file {viewModel.EmployeeSalaryFile.FileName} failure"; return(View(viewModel)); } if (employees == null) { return(View(viewModel)); } try { viewModel.Employees = employees.Select(employee => new EmployeeViewModel(employee)); } catch (Exception e) { _logger.LogInformation($"Transfer employee failure: {e.Message}"); return(View(viewModel)); } try { GeneratePaySlip(employees, viewModel); CachePaySlipsToSession(viewModel); } catch (Exception e) { _logger.LogInformation($"Generate Pay Slip error: {e.Message}"); return(View(viewModel)); } viewModel.MessageLevel = "success"; viewModel.ErrorMessage = "Generate pay slip success"; return(View(viewModel)); }
public bool Update(PaySlipViewModel payslipVm) { try { var payslip = Mapper.Map <PaySlipViewModel, PaySlip>(payslipVm); _payslipRepository.Update(payslip); return(true); } catch { return(false); } }
public async Task <ActionResult <PaySlipViewModel> > PostPaySlip(PaySlipViewModel paySlip) { if (paySlip != null) { try { await Task.Run(() => { paySlip.DateCreated = DateTime.Now; _payslipService.Add(paySlip); _payslipService.SaveChanges(); return(Ok("Thêm phiếu chi thành công!")); }); } catch { throw new Exception(string.Format("Lỗi khi thêm dữ liệu")); } } return(CreatedAtAction("GetPaySlip", new { id = paySlip.Id }, paySlip)); }
public bool Add(PaySlipViewModel payslipVm) { try { var payslip = Mapper.Map <PaySlipViewModel, PaySlip>(payslipVm); payslip.Id = TextHelper.RandomNumber(10); _payslipRepository.Add(payslip); SaveChanges(); if (payslip.PaySlipTypeId == 1) // =1 là loại chi tạm ứng { var Tamung = payslip.Total; // tiền tạm ứng if (!string.IsNullOrEmpty(payslip.ReceivePersonnelId)) // mã nv khác rỗng { var timeSheet = _context.Timesheets.Where(x => x.Month == payslip.Date.Month && x.Year == payslip.Date.Year && x.PersonnelId == payslip.ReceivePersonnelId).SingleOrDefault(); timeSheet.AdvancePayment += Tamung; // update tạm ứng trong chấm công timeSheet.TotalActualSalary = timeSheet.SalaryOfDay * Convert.ToDecimal(timeSheet.TotalWorkday) + timeSheet.Allowance + timeSheet.Bonus - timeSheet.AdvancePayment - timeSheet.InsurancePremiums; _context.Timesheets.Update(timeSheet); _context.SaveChanges(); } } return(true); } catch { return(false); } }
public void GeneratePaySlip(IEnumerable <Employee> employees, PaySlipViewModel viewModel) { IEnumerable <IPaySlip> PaySilps = _calculator.CalculatePaySlips(employees); viewModel.PaySilps = PaySilps.Select(paySlip => new PaySlipResultViewModel((PaySlip)paySlip)); }
public IActionResult Index() { var viewModel = new PaySlipViewModel(); return(View(viewModel)); }
private void CachePaySlipsToSession(PaySlipViewModel viewModel) { var bytes = PublicCsvHelper.EnumerableToCsvBytes(viewModel.PaySilps); HttpContext.Session.Set(PaySlipSessionKey, bytes); }
public IActionResult DownloadPaySlip(PaySlipViewModel viewModel) { var bytes = HttpContext.Session.Get(PaySlipSessionKey); return(File(bytes, "text/csv", "output.csv")); }