private void btnXacNhan_Click(object sender, EventArgs e) { #region lấy dữ liệu từ form DataGridView tmpDatagrid = dgrdGioCoLamThem; DataGridViewRow tmpSelectedRow = tmpDatagrid.SelectedRows[0]; DataRowView rowView = tmpSelectedRow.DataBoundItem as DataRowView; int tmpUserEnrollNumber = (int)rowView["UserEnrollNumber"]; DateTime tmpOldChkInTime = (DateTime)rowView["TimeStrVao"]; DateTime tmpOldChkOutTime = (DateTime)rowView["TimeStrRa"]; cUserInfo tmpNV = fListNVChk.Find(item => item.UserEnrollNumber == tmpUserEnrollNumber); cChkInOut tmpOldChkINOUT = tmpNV.DSVaoRa.Find(item => (item.HaveINOUT > 0) && item.Vao.TimeStr == tmpOldChkInTime && item.Raa.TimeStr == tmpOldChkOutTime); cShift tmpOldShift = tmpOldChkINOUT.ThuocCa; if (lbCheckINOUT.Tag == null) { AutoClosingMessageBox.Show("lbCheckINOUT.Tag == null", "Error", 1000); return; } cShift tmpNewShift = (cShift)cbChonCa.SelectedItem; cChkInOut tmpNewChkINOUT = (cChkInOut)lbCheckINOUT.Tag; // lúc tính công chưa có gán THUOCCA lại nên ở đây phải gán lại tmpNewChkINOUT.ThuocCa = tmpNewShift; int tmpNewShiftID = tmpNewShift.ShiftID; // shiftID của DSCa mở rộng int tmpTre = int.Parse(lbTre.Tag.ToString()); TimeSpan tmpTreTS = new TimeSpan(0, tmpTre, 0); int tmpSom = int.Parse(lbSom.Tag.ToString()); TimeSpan tmpSomTS = new TimeSpan(0, tmpSom, 0); int tmpSoPhutTreSom = int.Parse(tbTreSom.Tag.ToString()); // > 0 nếu (chấm tay < 8h => ra sớm), đúng ca nhưng có vào trễ ra sớm TimeSpan tmpSoPhutTreSomTS = new TimeSpan(0, tmpSoPhutTreSom, 0); int tmpSoPhutOLaiThem = int.Parse(tbOLaiThem.Tag.ToString()); TimeSpan tmpSoPhutOLaiThemTS = new TimeSpan(0, tmpSoPhutOLaiThem, 0); bool tmpIsOT = checkXacNhanLamThem.Checked; int tmpSoPhutLamThem = (tmpIsOT) ? (int)numPhutTinhLamThem.Value : 0; TimeSpan tmpSoPhutLamThemTS = new TimeSpan(0, tmpSoPhutLamThem, 0); #endregion bool pTinhPC150 = checkTinhPC150.Checked; if (tmpNewShift.OnnDutyTS > ThamSo._20h00 && tmpNewShift.Workingday > 1f) { cChkInOut[] arrCIO = XL.TachGio2Ca3Va1(tmpNV.DSCa, tmpNewChkINOUT, tmpNewChkINOUT.ThuocCa); XL.TinhCongTheoCa(arrCIO[0], arrCIO[0].ThuocCa); XL.TinhCongTheoCa(arrCIO[1], arrCIO[1].ThuocCa); XL.BUS_TachCaVaXacNhan(tmpNV, tmpOldChkINOUT, arrCIO, tmpIsOT, tmpSoPhutLamThem, tmpSoPhutLamThemTS, pTinhPC150); XL.XemCong(new List <cUserInfo>() { tmpNV }, fNgayBD, fNgayKT); } else { XL.BUS_XacNhan(tmpNV, tmpOldChkINOUT, tmpNewChkINOUT, tmpIsOT, tmpSoPhutLamThem, tmpSoPhutLamThemTS, pTinhPC150); XL.XemCong(new List <cUserInfo>() { tmpNV }, fNgayBD, fNgayKT); } LoadDataGrid(); }