private void frm_ChamCongTay_Load(object sender, EventArgs e) { if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false) { AutoClosingMessageBox.Show("Mất kết nối với CSDL. Vui lòng thử lại sau.", "Lỗi", 2000); this.Close(); return; } dtpBDLam.ValueChanged += dtp_ValueChanged; dtpKTLam.ValueChanged += dtp_ValueChanged; dtpNgay.ValueChanged += dtpNgay_ValueChanged; m_DSCa = new List <cCaAbs>(XL.DSCa); cCaTuDo tmp = new cCaTuDo { ID = 0, Code = "--" }; cCaTuDo ca8tieng = new cCaTuDo { ID = int.MinValue, Code = "Ca8h", LunchMin = TimeSpan.Zero, WorkingTimeTS = XL2._08gio, Workingday = 1f, AfterOTMin = XL2.LamThemAfterOT }; cCaTuDo cadai = new cCaTuDo { ID = int.MinValue + 1, Code = "CaDài 12h", LunchMin = TimeSpan.Zero, WorkingTimeTS = XL2._12gio, Workingday = 1.5f, AfterOTMin = XL2.LamThemAfterOT }; m_DSCa.Insert(0, cadai); m_DSCa.Insert(0, ca8tieng); m_DSCa.Insert(0, tmp); cbCa.ValueMember = "ID"; cbCa.DisplayMember = "Code"; cbCa.DataSource = m_DSCa; cbCa.SelectionChangeCommitted += cbCa_SelectionChangeCommitted; tbGioLam.TextChanged += tbGioLam_TextChanged; DataTable tablePhong = DAL.LayDSPhong(XL2.currUserID); if (tablePhong.Rows.Count == 0) { AutoClosingMessageBox.Show("Bạn chưa được phân quyền thao tác.", "Thông báo", 2000); return; } //2. lấy dữ liệu phòng ban được phép thao tác và load treePhongBan : xoá dữ liệu trước và load treePhongBan.Nodes.Clear(); loadTreePhgBan(treePhongBan, tablePhong); // đăng ký sự kiện cho tree và chọn topNode treePhongBan.AfterSelect += treePhongBan_AfterSelect; treePhongBan.SelectedNode = treePhongBan.TopNode; }
private void dgrdGioCoLamThem_SelectionChanged(object sender, EventArgs e) { if (dgrdGioCoLamThem.SelectedRows.Count == 0) { #region reset layout tbTenNV.Text = string.Empty; tbGioVao.Text = string.Empty; tbGioRaa.Text = string.Empty; tbThuocCa.Text = string.Empty; tbGioLam.Text = string.Empty; tbTongGio.Text = string.Empty; tbTreSom.Text = string.Empty; tbOLaiThem_ThongTin.Text = string.Empty; tbLamThem.Text = string.Empty; checkThongTinChoPhepTinhPC50.Checked = false; checkThongTinTreSomTinhCV.Checked = false; cbXNChonCa.DataSource = null; cbXNChonCa.ValueMember = "ID"; // do mỗi lần set null dataSource thì value member và code sẽ bị xóa cbXNChonCa.DisplayMember = "Code"; tbXNGioLam.Text = string.Empty; tbXNTreSom.Text = string.Empty; tbXN_OLaiThem.Text = string.Empty; checkXacNhanLamThem.Checked = false; checkXacNhanLamThem.Enabled = false; numPhutTinhLamThem.Value = 0; numPhutTinhLamThem.Enabled = false; #endregion // ngoài reset layout thì disable nút xác nhận để tránh ấn nhầm gây lỗi btnXacNhan.Enabled = false; return; } else if (dgrdGioCoLamThem.SelectedRows.Count == 1) { btnXacNhan.Enabled = true; var dataRowView = dgrdGioCoLamThem.SelectedRows[0].DataBoundItem as DataRowView; var nhanvien = dataRowView["cUserInfo"] as cUserInfo; var CIO = dataRowView["cChkInOut"] as cChkInOut; var ngaycong = dataRowView["cNgayCong"] as cNgayCong; #region fill thông tin CIO DateTime TimeStrVao = CIO.Vao.Time; DateTime TimeStrRaa = CIO.Raa.Time; DateTime ngaydangchon = CIO.ThuocNgayCong; tbTenNV.Text = nhanvien.TenNV; tbGioVao.Text = TimeStrVao.ToString("H:mm d/M"); tbGioRaa.Text = TimeStrRaa.ToString("H:mm d/M"); tbThuocCa.Text = CIO.ThuocCa.Code; tbGioLam.Text = CIO.TG.GioLamTrongNgay.TotalHours.ToString("#0.0#"); tbTongGio.Text = CIO.TG.GioThuc.TotalHours.ToString("#0.0#"); tbTreSom.Text = (CIO.TG.VaoTre + CIO.TG.RaaSom).TotalMinutes.ToString("###0"); tbOLaiThem_ThongTin.Text = (CIO.GetType() == typeof(cChkInOut_A)) ? CIO.TG.OLai.TotalMinutes.ToString("###0") : "0"; tbLamThem.Text = (CIO.GetType() == typeof(cChkInOut_V)) ? CIO.TG.OTCa.TotalMinutes.ToString("###0") : "0"; checkThongTinChoPhepTinhPC50.Checked = ngaycong.TinhPC50; checkThongTinTreSomTinhCV.Checked = CIO.TreSomTinhCV; //tbd //checkBox1.Checked = CIO.TreSomTinhCV; #endregion // xét xem nếu chọn đang chọn nhiều row là chế độ hàng loạt // 4. load ds chọn ca, tạo thêm 2 ca tự do và ca dài var dsCaChon = new List <cCaAbs>(nhanvien.LichTrinhLV.DSCaMoRong); var caKDQD = new cCaTuDo { ID = int.MinValue, Code = "Ca8h" }; var CaDaiA = new cCaTuDo { ID = int.MinValue + 1, Code = "CaDài 12h" }; XL.TaoCaTuDo(caKDQD, TimeStrVao, XL2._08gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1f, "8"); XL.TaoCaTuDo(CaDaiA, TimeStrVao, XL2._12gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1.5f, "D"); // loại bỏ những ca chắc chắn ko xảy ra: ra ca < check vào 30ph. check ra < vào ca 30ph dsCaChon.RemoveAll(item => ( CIO.TG.GioThuc.TotalHours < (item.WorkingTimeTS.TotalHours / 3d) || TimeStrVao.TimeOfDay < XL2._04h30 || // xem [140515_3] TimeStrRaa <ngaydangchon.Add(item.OnnTS).Add(XL2._30phut) || TimeStrVao> ngaydangchon.Add(item.OffTS).Subtract(XL2._30phut))); // sau khi loại bỏ mới thêm 2 ca tự do vào dsCaChon.Insert(0, caKDQD); dsCaChon.Insert(1, CaDaiA); cbXNChonCa.DataSource = dsCaChon; cbXNChonCa.Update(); cbXNChonCa.SelectedItem = (from a in dsCaChon where a.ID == CIO.ThuocCa.ID select a).FirstOrDefault(); cbChonCa_SelectionChangeCommitted(cbXNChonCa, new EventArgs()); } else // chế độ xác nhận hàng loạt { btnXacNhan.Enabled = true; var dataRowView = dgrdGioCoLamThem.SelectedRows[0].DataBoundItem as DataRowView; var nhanvien = dataRowView["cUserInfo"] as cUserInfo; var CIO = dataRowView["cChkInOut"] as cChkInOut; var ngaycong = dataRowView["cNgayCong"] as cNgayCong; #region fill thông tin CIO DateTime TimeStrVao = CIO.Vao.Time; DateTime TimeStrRaa = CIO.Raa.Time; DateTime ngaydangchon = CIO.ThuocNgayCong; tbTenNV.Text = nhanvien.TenNV; tbGioVao.Text = TimeStrVao.ToString("H:mm d/M"); tbGioRaa.Text = TimeStrRaa.ToString("H:mm d/M"); tbThuocCa.Text = CIO.ThuocCa.Code; tbGioLam.Text = CIO.TG.GioLamTrongNgay.TotalHours.ToString("#0.0#"); tbTongGio.Text = CIO.TG.GioThuc.TotalHours.ToString("#0.0#"); tbTreSom.Text = (CIO.TG.VaoTre + CIO.TG.RaaSom).TotalMinutes.ToString("###0"); tbOLaiThem_ThongTin.Text = (CIO.GetType() == typeof(cChkInOut_A)) ? CIO.TG.OLai.TotalMinutes.ToString("###0") : "0"; tbLamThem.Text = (CIO.GetType() == typeof(cChkInOut_V)) ? CIO.TG.OTCa.TotalMinutes.ToString("###0") : "0"; checkThongTinChoPhepTinhPC50.Checked = ngaycong.TinhPC50; checkThongTinTreSomTinhCV.Checked = CIO.TreSomTinhCV; #endregion tbXNGioLam.Text = string.Empty; tbXNTreSom.Text = string.Empty; tbXN_OLaiThem.Text = string.Empty; numPhutTinhLamThem.Value = 0; numPhutTinhLamThem.Maximum = 840; IEnumerable <DataGridViewRow> dataGridViewRows = dgrdGioCoLamThem.SelectedRows.Cast <DataGridViewRow>(); var dataRows = from x in dataGridViewRows select((DataRowView)x.DataBoundItem).Row; var dsCa = ((from row in dataRows from ca in ((cUserInfo)row["cUserInfo"]).LichTrinhLV.DSCa select ca)).Distinct().ToList(); var caKDQD = new cCaTuDo { ID = int.MinValue, Code = "Ca8h" }; var CaDaiA = new cCaTuDo { ID = int.MinValue + 1, Code = "CaDài 12h" }; dsCa.Insert(0, caKDQD); dsCa.Insert(1, CaDaiA); cbXNChonCa.DataSource = dsCa; checkTinhPC50.Checked = true; // mặc định check tính pc 50% theo nhân viên phòng nào checkXacNhanTreSomTinhCV.Checked = false; // mặc định ko check tresomtinhCV cbXNChonCa.Update(); } }