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(); }
private void btnXacNhan_Click(object sender, EventArgs e) { #region lấy dữ liệu từ form currRowIndex = dgrdGioCoLamThem.SelectedRows[0].Index; numPhutTinhLamThem.Update(); int tmpSoPhutLamThem = (checkXacNhanLamThem.Checked) ? Convert.ToInt32(numPhutTinhLamThem.Value) : 0; int iUserEnrollNumber = currNV.UserEnrollNumber; cShift tmpNewShift = cbChonCa.SelectedItem as cShift; if (tmpNewShift == null) { return; } // lúc tính công chưa có gán THUOCCA lại nên ở đây phải gán lại #endregion bool pTinhPC150 = checkTinhPC150.Checked; if (tmpNewShift.OnnDutyTS > ThamSo._20h00 && tmpNewShift.Workingday > 1f) { cChkInOut[] arrCIO = XL.TachGio2Ca3Va1(currNV.DSCa, tmpCurrChkINOUT, tmpNewShift); DAL.ThemGioChoNV(iUserEnrollNumber, arrCIO[0].Raa.TimeStr, false, arrCIO[0].Raa.MachineNo, ThamSo.currUserID, "", "tách giờ ca 3&1, ca 3&1A"); DAL.ThemGioChoNV(iUserEnrollNumber, arrCIO[1].Vao.TimeStr, true, arrCIO[1].Vao.MachineNo, ThamSo.currUserID, "", "tách giờ ca 3&1, ca 3&1A"); XL.BUS_XacNhan(iUserEnrollNumber, arrCIO[0].ThuocCa, pTinhPC150, 0, arrCIO[0]); // vì ca 3 ko có làm thêm nên 0 XL.BUS_XacNhan(iUserEnrollNumber, arrCIO[1].ThuocCa, pTinhPC150, tmpSoPhutLamThem, arrCIO[1]); // vì ca 1 mới có làm thêm XL.XemCong(currNV, m_DSNV, fNgayBD, fNgayKT); } else { XL.BUS_XacNhan(iUserEnrollNumber, tmpNewShift, pTinhPC150, tmpSoPhutLamThem, tmpCurrChkINOUT); XL.XemCong(currNV, m_DSNV, fNgayBD, fNgayKT); } LoadDataGrid(); }