/// <summary> /// Lay du lieu tu cham cong /// </summary> /// <param name="salaryInfo"></param> /// <param name="listEvents"></param> private void GetDataFromTimeSheet(SalaryBoardInfoModel salaryInfo, List <TimeSheetEventModel> listEvents) { // get event by record id var listEventByRecord = listEvents.Where(e => e.RecordId == salaryInfo.RecordId).ToList(); double?totalWork = 0.0; double?totalNormal = 0.0; double?totalWorkPaidLeave = 0.0; double?totalOverTime = 0.0; double?totalOverTimeDay = 0.0; double?totalOverTimeNight = 0.0; double?totalOverTimeHoliday = 0.0; double?totalOverTimeWeekend = 0.0; double?totalGoWorkC = 0.0; double?totalHolidayL = 0.0; double?totalLateM = 0.0; double?totalUnleaveK = 0.0; double?totalUnpaidLeaveP = 0.0; double?totalWorkFullDay = 0.0; if (listEventByRecord.Count > 0) { // var listTimeFullDay = listEventByRecord.Where(d => d.GroupSymbolGroup == Constant.TimesheetDayShift).ToList(); // over time var listOverTime = listEventByRecord.Where(d => d.GroupSymbolGroup == Constant.TimesheetOverTime); // over time day var listOverTimeDay = listEventByRecord.Where(d => d.GroupSymbolGroup == Constant.TimesheetOverTimeDay); // over time night var listOverTimeNight = listEventByRecord.Where(d => d.GroupSymbolGroup == Constant.TimesheetOverTimeNight); // over time holiday var listOverTimeHoliday = listEventByRecord.Where(d => d.GroupSymbolGroup == Constant.TimesheetOverTimeHoliday); // over time weekend var listOverTimeWeekend = listEventByRecord.Where(d => d.GroupSymbolGroup == Constant.TimesheetOverTimeWeekend); // paid leaveday var listWorkLeaveDay = listEventByRecord.Where(d => d.GroupSymbolGroup == Constant.TimesheetLeave); // go work var listGoWork = listEventByRecord.Where(d => d.GroupSymbolGroup == Constant.TimesheetGoWork); // holiday var listHoliday = listEventByRecord.Where(d => d.GroupSymbolGroup == Constant.TimesheetHoliday); // late var listLate = listEventByRecord.Where(d => d.GroupSymbolGroup == Constant.TimesheetLate); //unleave var listUnLeave = listEventByRecord.Where(d => d.GroupSymbolGroup == Constant.TimesheetUnLeave); //UnpaidLeave var listUnpaidLeave = listEventByRecord.Where(d => d.GroupSymbolGroup == Constant.TimesheetNotPaySalary); foreach (var itemEvent in listEventByRecord) { if (new[] { Constant.TimesheetUnLeave, Constant.TimesheetNotPaySalary }.All(x => x != itemEvent.GroupSymbolGroup)) { totalWork += itemEvent.WorkConvert; } } totalNormal = listTimeFullDay.Aggregate(totalNormal, (current, itemNormal) => current + itemNormal.WorkConvert); totalWorkPaidLeave = listWorkLeaveDay.Aggregate(totalWorkPaidLeave, (current, item) => current + item.WorkConvert); totalOverTime = listOverTime.Aggregate(totalOverTime, (current, item) => current + item.TimeConvert); totalOverTimeDay = listOverTimeDay.Aggregate(totalOverTimeDay, (current, item) => current + item.TimeConvert); totalOverTimeNight = listOverTimeNight.Aggregate(totalOverTimeNight, (current, item) => current + item.TimeConvert); totalOverTimeHoliday = listOverTimeHoliday.Aggregate(totalOverTimeHoliday, (current, item) => current + item.TimeConvert); totalOverTimeWeekend = listOverTimeWeekend.Aggregate(totalOverTimeWeekend, (current, item) => current + item.TimeConvert); totalGoWorkC = listGoWork.Aggregate(totalGoWorkC, (current, item) => current + item.WorkConvert); totalLateM = listLate.Aggregate(totalLateM, (current, item) => current + 1); totalUnleaveK = listUnLeave.Aggregate(totalUnleaveK, (current, item) => current + item.WorkConvert); totalHolidayL = listHoliday.Aggregate(totalHolidayL, (current, item) => current + item.WorkConvert); totalUnpaidLeaveP = listUnpaidLeave.Aggregate(totalUnpaidLeaveP, (current, item) => current + item.WorkConvert); foreach (var item in listTimeFullDay) { if (item.SymbolCode == Constant.SymbolFullDay) { totalWorkFullDay += item.WorkConvert; } } } //Tổng ngày công thực tế salaryInfo.WorkActualDay = Math.Round(totalWork.Value, 2); //Tổng ngày công thường salaryInfo.WorkNormalDay = Math.Round(totalNormal.Value, 2); //Tổng công nghỉ phép hưởng lương salaryInfo.WorkPaidLeave = Math.Round(totalWorkPaidLeave.Value, 2); //Tổng công thêm giờ salaryInfo.OverTime = Math.Round(totalOverTime.Value, 2); //Tổng tăng ca ngày salaryInfo.OverTimeDay = Math.Round(totalOverTimeDay.Value, 2); //Tổng tăng ca đêm salaryInfo.OverTimeNight = Math.Round(totalOverTimeNight.Value, 2); //Tổng tăng ca ngày lễ salaryInfo.OverTimeHoliday = Math.Round(totalOverTimeHoliday.Value, 2); //Tổng tăng ca cuối tuần salaryInfo.OverTimeWeekend = Math.Round(totalOverTimeWeekend.Value, 2); //Tổng công không phép salaryInfo.WorkUnLeave = Math.Round(totalUnleaveK.Value, 2); //Tổng công công tác salaryInfo.WorkGoWork = Math.Round(totalGoWorkC.Value, 2); //Tổng công trễ salaryInfo.WorkLate = Math.Round(totalLateM.Value, 2); //Tổng công nghỉ phép không hưởng lương salaryInfo.WorkUnpaidLeave = Math.Round(totalUnpaidLeaveP.Value, 2); //Tổng nghỉ lễ salaryInfo.WorkHoliday = Math.Round(totalHolidayL.Value, 2); //Tổng công X salaryInfo.WorkFullDay = Math.Round(totalWorkFullDay.Value, 2); }
/// <summary> /// lay du lieu luong co dinh /// </summary> /// <param name="item"></param> /// <param name="salaryInfo"></param> private static void GetDataFromSalary(TimeSheetCodeModel item, SalaryBoardInfoModel salaryInfo) { //Edit data salary EditDataSalary(item.RecordId, salaryInfo); }
/// <summary> /// Insert or Update Catalog /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void InsertOrUpdate(object sender, DirectEventArgs e) { var payrollModel = new PayrollModel(); // check id if (!string.IsNullOrEmpty(hdfSalaryBoardListId.Text) && Convert.ToInt32(hdfSalaryBoardListId.Text) > 0) { var result = PayrollController.GetById(Convert.ToInt32(hdfSalaryBoardListId.Text)); if (result != null) { payrollModel = result; } } // set new props if (!string.IsNullOrEmpty(hdfConfigId.Text)) { payrollModel.ConfigId = Convert.ToInt32(hdfConfigId.Text); } if (!string.IsNullOrEmpty(hdfMonth.Text)) { payrollModel.Month = Convert.ToInt32(hdfMonth.Text); } if (!string.IsNullOrEmpty(hdfYear.Text)) { payrollModel.Year = Convert.ToInt32(hdfYear.Text); } payrollModel.Title = txtName.Text; payrollModel.Code = txtCode.Text; payrollModel.Description = txtNote.Text; if (payrollModel.Id > 0) { payrollModel.EditedDate = DateTime.Now; payrollModel.EditedBy = CurrentUser.User.UserName; // update var resultModel = PayrollController.Update(payrollModel); // check if payroll code exists if (resultModel != null) { // show success message Dialog.ShowNotification("Lưu thành công"); wdSetting.Hide(); ResetForm(); } else { Dialog.ShowNotification("Mã bảng lương đã tồn tại"); } } else { payrollModel.CreatedDate = DateTime.Now; payrollModel.CreatedBy = CurrentUser.User.UserName; payrollModel.EditedDate = DateTime.Now; payrollModel.EditedBy = CurrentUser.User.UserName; // create payroll var resultModel = PayrollController.Create(payrollModel); // check if payroll code exists if (resultModel != null) { // init list var listEvents = GetAllEvents(resultModel, true); // create salaryBoardInfo foreach (var employee in chkEmployeeRowSelection.SelectedRows) { var salaryInfo = new SalaryBoardInfoModel(new hr_SalaryBoardInfo()) { RecordId = Convert.ToInt32(employee.RecordID), SalaryBoardId = resultModel.Id, CreatedDate = DateTime.Now, EditedDate = DateTime.Now }; //Lay tu timeSheet GetDataFromTimeSheet(salaryInfo, listEvents); //Lay tu sal_SalaryDecision EditDataSalary(salaryInfo.RecordId, salaryInfo); //create SalaryBoardInfoController.Create(salaryInfo); } // show success message Dialog.ShowNotification("Lưu thành công"); wdSetting.Hide(); ResetForm(); } else { Dialog.ShowNotification("Mã bảng lương đã tồn tại"); } } grdSalaryBoardList.Reload(); }