private void btnSuaGio_Click(object sender, EventArgs e) { IsReload = true; DataRowView row = dgrdTongHop.SelectedRows[0].DataBoundItem as DataRowView; if (row == null) { return; } int iUserEnrollNumber = (int)row["UserEnrollNumber"]; cUserInfo tmpNV = flstDSNVChk.Find(o => o.UserEnrollNumber == iUserEnrollNumber); DateTime tmpOldVao = (row["TimeStrVao"] != DBNull.Value) ? (DateTime)row["TimeStrVao"] : DateTime.MinValue; DateTime tmpOldRaa = (row["TimeStrRa"] != DBNull.Value) ? (DateTime)row["TimeStrRa"] : DateTime.MinValue; DateTime tmpNgayCong = (DateTime)row["TimeStrNgay"]; cNgayCong ngayCong = tmpNV.DSNgayCong.Find(o => o.NgayCong == tmpNgayCong); cChkInOut old_CIO = row["obj"] as cChkInOut; if (ngayCong.HasCheck == false || (tmpOldVao == DateTime.MinValue && tmpOldRaa == DateTime.MinValue)) { old_CIO = null; } else if (tmpOldVao == DateTime.MinValue) { old_CIO = ngayCong.DSVaoRa.Find(o => o.HaveINOUT < 0 && o.Raa.TimeStr == tmpOldRaa); } else if (tmpOldRaa == DateTime.MinValue) { old_CIO = ngayCong.DSVaoRa.Find(o => o.HaveINOUT < 0 && o.Vao.TimeStr == tmpOldVao); } else { old_CIO = ngayCong.DSVaoRa.Find(o => o.HaveINOUT > 0 && o.Vao.TimeStr == tmpOldVao && o.Raa.TimeStr == tmpOldRaa); } if (old_CIO != null && old_CIO.GetType() == typeof(cChkInOut_V)) { MessageBox.Show("Không thể sửa giờ đã được xác nhận.", "Thông báo"); return; } string Lydo = string.Empty; if (cbLyDo_Sua.SelectedItem == null) { Lydo = cbLyDo_Sua.Text; } else if (cbLyDo_Sua.SelectedItem != null) { Lydo = (string)cbLyDo_Sua.SelectedItem; } if (checkVao_Sua.Checked) { dtpVao_Sua.Update(); cChk tmpCheck = old_CIO.Vao; if (DAL.SuaGioChoNV(iUserEnrollNumber, tmpCheck.TimeStr, dtpVao_Sua.Value.Add(new TimeSpan(0, 0, 1)), true, tmpCheck.Source, tmpCheck.MachineNo, ThamSo.currUserID, Lydo, tbGhiChu_Sua.Text) == false) { MessageBox.Show("Không sửa được giờ cho nhân viên. Vui lòng thử lại.", "Lỗi"); } } if (checkRa_Sua.Checked) { dtpRa_Sua.Update(); cChk tmpCheck = old_CIO.Raa; if (DAL.SuaGioChoNV(iUserEnrollNumber, tmpCheck.TimeStr, dtpRa_Sua.Value, false, tmpCheck.Source, tmpCheck.MachineNo, ThamSo.currUserID, Lydo, tbGhiChu_Sua.Text) == false) { MessageBox.Show("Không sửa được giờ cho nhân viên. Vui lòng thử lại.", "Lỗi"); } } try { XL.XemCong(tmpNV, fNgayBD, fNgayKT); loadTable(); } catch (Exception) { MessageBox.Show("Mất kết nối đến máy chủ. Vui lòng thử lại sau.", "Lỗi"); return; } GC.Collect(); }
private void LoadTabThemGio(cUserInfo tmpNV, DateTime tmpNgayCong, cChkInOut old_CIO) { DateTime tmpVao, tmpRa; if (old_CIO == null) { tmpVao = tmpRa = DateTime.MinValue; } else { tmpVao = old_CIO.Vao == null ? DateTime.MinValue : old_CIO.Vao.TimeStr; tmpRa = old_CIO.Raa == null ? DateTime.MinValue : old_CIO.Raa.TimeStr; } tbTenNV_Them.Text = tmpNV.UserFullName; cbLyDo_Them.SelectedIndex = 0; cbLyDo_Them.Text = string.Empty; tbGhiChu_Them.Text = string.Empty; if (tmpVao == DateTime.MinValue) // ko có giờ vào, cho phép input giờ vào { dtpVao_Them.ValueChanged -= dtp_Them_OnValueChanged; cbCaVao_Them.SelectedIndexChanged -= cbCa_Them_OnSelectedIndexChanged; dtpVao_Them.Value = tmpNgayCong; checkVao_Them.Checked = true; dtpVao_Them.ValueChanged += dtp_Them_OnValueChanged; cbCaVao_Them.SelectedIndexChanged += cbCa_Them_OnSelectedIndexChanged; } else // ko cho phép input { dtpVao_Them.ValueChanged -= dtp_Them_OnValueChanged; cbCaVao_Them.SelectedIndexChanged -= cbCa_Them_OnSelectedIndexChanged; checkVao_Them.Checked = false; dtpVao_Them.Value = tmpVao; dtpVao_Them.ValueChanged += dtp_Them_OnValueChanged; cbCaVao_Them.SelectedIndexChanged += cbCa_Them_OnSelectedIndexChanged; } if (tmpRa == DateTime.MinValue) // ko có giờ ra, cho phép input giờ ra { dtpRa_Them.ValueChanged -= dtp_Them_OnValueChanged; cbCaRa_Them.SelectedIndexChanged -= cbCa_Them_OnSelectedIndexChanged; dtpRa_Them.Value = tmpNgayCong; checkRa_Them.Checked = true; dtpRa_Them.ValueChanged += dtp_Them_OnValueChanged; cbCaRa_Them.SelectedIndexChanged += cbCa_Them_OnSelectedIndexChanged; } else { dtpRa_Them.ValueChanged -= dtp_Them_OnValueChanged; cbCaRa_Them.SelectedIndexChanged -= cbCa_Them_OnSelectedIndexChanged; checkRa_Them.Checked = false; dtpRa_Them.Value = tmpRa; dtpRa_Them.ValueChanged += dtp_Them_OnValueChanged; cbCaRa_Them.SelectedIndexChanged += cbCa_Them_OnSelectedIndexChanged; } }
private void btnDiemDanh_Click(object sender, EventArgs e) { //1. lấy dữ liệu từ form #region lấy ngày BD và kết thúc, và update lại Ngày BD = 1 ngày trước 31/08 12:00 AM, ngày KT là 1 ngày sau ngay 1 23:59:59 dtpNgay.Update(); DateTime ngayBD = dtpNgay.Value.Date; ngayBD = ngayBD.AddDays(-1d); DateTime ngayKT = ngayBD.AddDays(2d).Subtract(new TimeSpan(0, 0, 1)); #endregion //-----------BUG [KHÔNG PHẢI BUG] CHỈ TÔ MÀU ĐỂ CHÚ Ý] bắt buộc EndEdit thao tác trên Grid rồi mới thực hiện xử lý tác vụ //2. lấy danh sách nhân viên check if (flstDSNVDiemDanh == null) { flstDSNVDiemDanh = new List <cUserInfo>(); } else { flstDSNVDiemDanh.Clear(); } LayDSNVXemCong(fTableDSNVTrongPhong, flstDSNVDiemDanh, flstDSNV); //3. lấy dữ liệu chấm công của các nhân viên //[CHÚ Ý] ngày bắt đầu và kết thúc đã cộng trừ thêm 1 ngày trước sau ở bở trên try { XL.XemCong(flstDSNVDiemDanh, ngayBD, ngayKT); } catch (Exception exception) { log.Info(exception); MessageBox.Show("Mất kết nối đến máy chủ. Vui lòng thử lại sau.", "Lỗi"); GC.Collect(); return; } //4. xử lý dữ liệu để đưa lên lưới tổng hợp DataTable tableCTDiemDanh = dgrdTongHop.DataSource as DataTable; if (tableCTDiemDanh == null) { tableCTDiemDanh = XL.TaoCauTrucDataTable( new[] { "UserEnrollNumber", "UserFullName", "TimeStrVao1", "TimeStrRa1", "TimeStrVao2", "TimeStrRa2", "TimeStrVao3", "TimeStrRa3", "ShiftID1", "ShiftID2", "ShiftID3", "Ca", "TrangThai" }, new[] { typeof(int), typeof(string), typeof(DateTime), typeof(DateTime), typeof(DateTime), typeof(DateTime), typeof(DateTime), typeof(DateTime), typeof(int), typeof(int), typeof(int), typeof(string), typeof(string), }); } else { tableCTDiemDanh.Rows.Clear(); } int SoNVDangLamViec = 0, SoNVDaRaVe = 0, SoNVVang = 0; foreach (var nhanvien in flstDSNVDiemDanh) { DataRow row = tableCTDiemDanh.NewRow(); row["UserEnrollNumber"] = nhanvien.UserEnrollNumber; row["UserFullName"] = nhanvien.UserFullName; cNgayCong ngayCong = nhanvien.DSNgayCong[1]; //nếu có check thì khỏi ghi vắng string ChuoiCa = string.Empty; string ChuoiTrangThai = string.Empty; if (ngayCong.HasCheck) { for (int i = 0; i < ngayCong.DSVaoRa.Count; i++) { if (i >= 3) { break; } row["TimeStrVao" + (i + 1)] = (ngayCong.DSVaoRa[i].Vao != null) ? ngayCong.DSVaoRa[i].Vao.TimeStr : (object)DBNull.Value; row["TimeStrRa" + (i + 1)] = (ngayCong.DSVaoRa[i].Raa != null) ? ngayCong.DSVaoRa[i].Raa.TimeStr : (object)DBNull.Value; if (ngayCong.DSVaoRa[i].HaveINOUT > 0) { ChuoiCa += ngayCong.DSVaoRa[i].ThuocCa.ShiftCode + "; "; } else if (ngayCong.DSVaoRa[i].HaveINOUT == -1) { ChuoiCa += "KV; "; } else if (ngayCong.DSVaoRa[i].HaveINOUT == -2) { ChuoiCa += "KR; "; } } cChkInOut lastCIO1 = ngayCong.DSVaoRa[ngayCong.DSVaoRa.Count - 1]; // xét vào ra cuối để ghi trạng thái if (lastCIO1.HaveINOUT == -2) { ChuoiTrangThai = "Đang làm việc; "; SoNVDangLamViec++; } else if (lastCIO1.HaveINOUT > 0 || lastCIO1.HaveINOUT == -1) { ChuoiTrangThai = "Đã ra về; "; SoNVDaRaVe++; } } else // không có check, kiểm tra có khai báo vắng ko, nếu có thì ghi { SoNVVang++; ChuoiCa = string.Empty; if (ngayCong.DSVang != null && ngayCong.DSVang.Count != 0) { foreach (var loaiVang in ngayCong.DSVang) { ChuoiTrangThai += "Vắng " + loaiVang.KyHieu + "; "; } } else { ChuoiTrangThai = "Vắng"; } } row["Ca"] = ChuoiCa; row["TrangThai"] = ChuoiTrangThai; tableCTDiemDanh.Rows.Add(row); } tbTongSoNV.Text = flstDSNVDiemDanh.Count.ToString(); tbSoNVDangLamViec.Text = SoNVDangLamViec.ToString(); tbSoNVDaRaVe.Text = SoNVDaRaVe.ToString(); tbSoNVVang.Text = SoNVVang.ToString(); dgrdTongHop.DataSource = tableCTDiemDanh; }
private void LoadTabSuaGio(cUserInfo tmpNV, DateTime tmpNgayCong, cChkInOut old_CIO) { DateTime tmpVao, tmpRa; if (old_CIO == null) { tmpVao = tmpRa = DateTime.MinValue; } else { tmpVao = old_CIO.Vao == null ? DateTime.MinValue : old_CIO.Vao.TimeStr; tmpRa = old_CIO.Raa == null ? DateTime.MinValue : old_CIO.Raa.TimeStr; } tbTenNV_Sua.Text = tmpNV.UserFullName; cbLyDo_Sua.SelectedIndex = 0; cbLyDo_Sua.Text = string.Empty; tbGhiChu_Sua.Text = string.Empty; if (tmpVao != DateTime.MinValue) // có giờ vào, cho phép input giờ vào { checkVao_Sua.Enabled = true; // có giờ, cho phép input dtpVao_Sua.ValueChanged -= dtp_Sua_OnValueChanged; cbCaVao_Sua.SelectedIndexChanged -= cbCa_Sua_OnSelectedIndexChanged; dtpVao_Sua.Value = tmpVao; checkVao_Sua.Checked = false; dtpVao_Sua.ValueChanged += dtp_Sua_OnValueChanged; cbCaVao_Sua.SelectedIndexChanged += cbCa_Sua_OnSelectedIndexChanged; } else // ko cho phép input { dtpVao_Sua.ValueChanged -= dtp_Sua_OnValueChanged; cbCaVao_Sua.SelectedIndexChanged -= cbCa_Sua_OnSelectedIndexChanged; checkVao_Sua.Checked = false; checkVao_Sua.Enabled = false; // ko có giờ vào nên ko thể input dtpVao_Sua.Value = tmpNgayCong; dtpVao_Sua.ValueChanged += dtp_Sua_OnValueChanged; cbCaVao_Sua.SelectedIndexChanged += cbCa_Sua_OnSelectedIndexChanged; } if (tmpRa != DateTime.MinValue) // có giờ ra, cho phép input giờ ra { checkRa_Sua.Enabled = true; // có giờ , cho phép input dtpRa_Sua.ValueChanged -= dtp_Sua_OnValueChanged; cbCaRa_Sua.SelectedIndexChanged -= cbCa_Sua_OnSelectedIndexChanged; dtpRa_Sua.Value = tmpRa; checkRa_Sua.Checked = false; dtpRa_Sua.ValueChanged += dtp_Sua_OnValueChanged; cbCaRa_Sua.SelectedIndexChanged += cbCa_Sua_OnSelectedIndexChanged; } else { dtpRa_Sua.ValueChanged -= dtp_Sua_OnValueChanged; cbCaRa_Sua.SelectedIndexChanged -= cbCa_Sua_OnSelectedIndexChanged; checkRa_Sua.Checked = false; checkRa_Sua.Enabled = false; // ko co gio ra, ko cho phep sua dtpRa_Sua.Value = tmpNgayCong; dtpRa_Sua.ValueChanged += dtp_Sua_OnValueChanged; cbCaRa_Sua.SelectedIndexChanged += cbCa_Sua_OnSelectedIndexChanged; } }
private void LoadTabThemGio(cUserInfo tmpNV, DateTime tmpNgayCong, cChkInOut old_CIO) { DateTime tmpVao, tmpRa; if (old_CIO == null) { tmpVao = tmpRa = DateTime.MinValue; } else { tmpVao = old_CIO.Vao == null ? DateTime.MinValue : old_CIO.Vao.TimeStr; tmpRa = old_CIO.Raa == null ? DateTime.MinValue : old_CIO.Raa.TimeStr; } tbTenNV_Them.Text = tmpNV.UserFullName; cbLyDo_Them.SelectedIndex = 0; cbLyDo_Them.Text = string.Empty; tbGhiChu_Them.Text = string.Empty; if (tmpVao == DateTime.MinValue) // ko có giờ vào, cho phép input giờ vào { checkVao_Them.Enabled = true; checkVao_Them.Checked = true; dtpVao_Them.Enabled = true; dtpVao_Them.ValueChanged -= dtp_Them_OnValueChanged; dtpVao_Them.Value = tmpNgayCong; dtpVao_Them.ValueChanged += dtp_Them_OnValueChanged; cbCaVao_Them.Enabled = true; LoadComboBoxThem(cbCaVao_Them, tmpNV.DSCa); } else // ko cho phép input //checkVao_Them.Enabled = false; //new 3/3/2014 { checkVao_Them.Checked = false; //dtpVao_Them.Enabled = false;//new 3/3/2014 dtpVao_Them.ValueChanged -= dtp_Them_OnValueChanged; dtpVao_Them.Value = tmpVao; cbCaVao_Them.Enabled = false; LoadComboBoxThem(cbCaVao_Them, tmpNV.DSCa); //new 3/3/2014->old://LoadComboBoxThem(cbCaVao_Them, null); } if (tmpRa == DateTime.MinValue) // ko có giờ ra, cho phép input giờ ra { checkRa_Them.Enabled = true; checkRa_Them.Checked = true; dtpRa_Them.Enabled = true; dtpRa_Them.ValueChanged -= dtp_Them_OnValueChanged; dtpRa_Them.Value = tmpNgayCong; dtpRa_Them.ValueChanged += dtp_Them_OnValueChanged; cbCaRa_Them.Enabled = true; LoadComboBoxThem(cbCaRa_Them, tmpNV.DSCa); } else { //checkRa_Them.Enabled = false;//new 3/3/2014 checkRa_Them.Checked = false; //dtpRa_Them.Enabled = false;//new 3/3/2014 dtpRa_Them.ValueChanged -= dtp_Them_OnValueChanged; dtpRa_Them.Value = tmpRa; cbCaRa_Them.Enabled = false; LoadComboBoxThem(cbCaRa_Them, tmpNV.DSCa); //new 3/3/2014 ->old://LoadComboBoxThem(cbCaRa_Them, null); } }