public ActionResult GetComputeBackPayList([DataSourceRequest] DataSourceRequest request, Can_ComputeBackPaySearchModel model) { string status = string.Empty; string note = "Tổng Hợp Trả Lại Tiền Ăn "; var baseService = new BaseService(); var dataComputes = GetListData<Can_ComputeBackPayModel, Can_ComputeBackPayModel, Can_ComputeBackPaySearchModel>(request, model, ConstantSql.hrm_can_sp_get_ComputeBackPay, ref status); var computeBackPayModels = new List<Can_ComputeBackPayModel>(); if (dataComputes.Any() && model != null && model.MonthYear.HasValue) { var month = model.MonthYear.Value.Month; var year = model.MonthYear.Value.Year; var backPays = baseService.GetAllUseEntity<Can_BackPayEntity>(ref status).Where(p => p.MonthYear.HasValue && p.MonthYear.Value.Year == year && p.MonthYear.Value.Month == month).ToList(); foreach (var canComputeBackPayModel in dataComputes) { var backPay = backPays.Where(p => p.ProfileID == canComputeBackPayModel.ProfileID && p.MealAllowanceTypeSettingID == canComputeBackPayModel.MealAllowanceTypeSettingID).FirstOrDefault(); #region Thêm mới vào Can_BackPay if (backPay == null) { var backPayEntity = new Can_BackPayEntity { ProfileID = canComputeBackPayModel.ProfileID, MonthYear = model.MonthYear, MealAllowanceTypeSettingID = canComputeBackPayModel.MealAllowanceTypeSettingID }; if (canComputeBackPayModel.IsFullPay.HasValue && canComputeBackPayModel.IsFullPay.Value) { //neu isFullPay => cap nhat count , amount backPayEntity.Count = (int?)canComputeBackPayModel.Total; backPayEntity.Amount = (canComputeBackPayModel.Amount * canComputeBackPayModel.Total); } else { //neu ko la isFullPay => cap nhat CountByFomular,AmountByFomular backPayEntity.CountByFomular = (int?)ComputeAmountBackPay(canComputeBackPayModel.Total); backPayEntity.AmountByFomular = canComputeBackPayModel.Amount * ComputeAmountBackPay(canComputeBackPayModel.Total); } //add backPayEntity.Note = note + canComputeBackPayModel.MonthYear; baseService.Add<Can_BackPayEntity>(backPayEntity); backPays.Add(backPayEntity); } #endregion #region Chỉnh sửa Can_BackPay else { //edit //neu isFullPay => cap nhat count , amount //neu ko la isFullPay => cap nhat CountByFomular,AmountByFomular if (canComputeBackPayModel.IsFullPay.HasValue && canComputeBackPayModel.IsFullPay.Value) { //neu isFullPay => cap nhat count , amount backPay.Count = (int?)canComputeBackPayModel.Total; backPay.Amount = canComputeBackPayModel.Amount * canComputeBackPayModel.Total; } else { //neu ko la isFullPay => cap nhat CountByFomular,AmountByFomular backPay.CountByFomular = (int?)ComputeAmountBackPay(canComputeBackPayModel.Total); backPay.AmountByFomular = canComputeBackPayModel.Amount * ComputeAmountBackPay(canComputeBackPayModel.Total); } if (!string.IsNullOrEmpty(backPay.Note)) { canComputeBackPayModel.Note = backPay.Note; } backPay.Note = note + canComputeBackPayModel.MonthYear; baseService.Edit<Can_BackPayEntity>(backPay); } #endregion } #region List hiển thị var profileIds = dataComputes.Select(p => p.ProfileID).ToList(); var modelSearch = new Can_BackPaySearchModel(); modelSearch.ProfileName = null; modelSearch.DateFrom = null; modelSearch.DateTo = null; var datas = GetListData<Can_BackPayModel, Can_BackPayEntity, Can_BackPaySearchModel>(request, modelSearch, ConstantSql.hrm_can_sp_get_BackPay, ref status); computeBackPayModels = datas.Where(p => p.MonthYear.HasValue && p.MonthYear.Value.Year == year && p.MonthYear.Value.Month == month) .Select(p => new Can_ComputeBackPayModel { ProfileName = p.ProfileName, MonthYear = p.MonthYear.HasValue ? p.MonthYear.Value.ToString("MM-yyyy") : string.Empty, Note = p.Note, Amount = p.Amount ?? 0, MealAllowanceTypeSettingID = p.MealAllowanceTypeSettingID, Type = p.MealAllowanceTypeName, CountByFomular = ComputeAmountBackPay(p.CountByFomular ?? 0), AmountByFomular = p.AmountByFomular, Summary = ComputeAmountBackPay(p.CountByFomular ?? 0) + (p.Count ?? 0), Total = p.Count ?? 0 }) .ToList(); request.Page = 1; var dataSourceResult = computeBackPayModels.ToDataSourceResult(request); dataSourceResult.Total = computeBackPayModels.Count() <= 0 ? 0 : datas.FirstOrDefault().TotalRow; return Json(dataSourceResult); #endregion } return Json(null); #region Phân Trang #endregion // return Json(computeBackPayModels.ToDataSourceResult(request)); }
public ActionResult GetBackPayList([DataSourceRequest] DataSourceRequest request, Can_BackPaySearchModel backpaySearchModel) { string status = string.Empty; var result = GetListData<Can_BackPayModel, Can_BackPayEntity, Can_BackPaySearchModel>(request, backpaySearchModel, ConstantSql.hrm_can_sp_get_BackPay, ref status); if (backpaySearchModel.IsExport) { var fullPath = ExportService.Export(result, backpaySearchModel.ValueFields.Split(',')); return Json(fullPath); } #region Phân Trang request.Page = 1; var dataSourceResult = result.ToDataSourceResult(request); dataSourceResult.Total = result.Count() <= 0 ? 0 : result.FirstOrDefault().TotalRow; return Json(dataSourceResult); #endregion //return Json(result.ToDataSourceResult(request)); }