private void btnKetLuong_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } XL.SaveSetting(lastTenNVLapBieuLuong: tbTenNVLapbieuLuong.Text); //nếu đã kết lương tháng này rồi thì ko cho kết lương, phải hủy kết lương trước #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(m_Thang.Date, MyUtility.LastDayOfMonth(m_Thang))) { MessageBox.Show(string.Format("Tháng {0} đã kết lương! Trường hợp muốn kết lương lại tháng này yêu cầu hủy kết lương tháng và thực hiện kết lương lại.", m_Thang.ToString("MM/yyyy")), Resources.Caption_ThongBao); return; } #endregion WaitWindow.Show(this.KetLuong, "Đang kết lương tháng. Bạn vui lòng đợi trong giây lát..."); saveFileDialog.ShowDialog(); if (saveFileDialog.FileName != string.Empty) { string saveFileName = saveFileDialog.FileName; WaitWindow.Show(this.XuatBBLuong, "Đang xuất bảng kết lương. Bạn vui lòng đợi...", new object[] { tbTenNVLapbieuLuong.Text, saveFileName }); } }
private void btnThucHien_Click(object sender, EventArgs e) { #region kiểm tra kết nối csdl , nếu mất kết nối thì đóng if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false) { ACMessageBox.Show(Resources.Text_MatKetNoiCSDL, Resources.Caption_Loi, 4000); Close(); return; } #endregion if (XL.Kiemtra(MyUtility.FirstDayOfMonth(dtpThang.Value), MyUtility.LastDayOfMonth(dtpThang.Value)) == false) { ACMessageBox.Show(string.Format("Tháng {0} chưa thực hiện kết lương.", dtpThang.Value.ToString("MM/yyyy")), Resources.Caption_ThongBao, 3000); return; } if (MessageBox.Show("Bạn muốn huỷ kết lương tháng " + dtpThang.Value.ToString("MM/yyyy"), Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } if (XL.HuyKetLuongThang(MyUtility.FirstDayOfMonth(dtpThang.Value))) { ACMessageBox.Show("Đã huỷ kết lương tháng " + dtpThang.Value.ToString("MM/yyyy"), Resources.Caption_ThongBao, 3000); } else { MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } Close(); }
private void btnThem_Capnhat_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(m_thang.Date, MyUtility.LastDayOfMonth(m_thang))) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "chỉnh sửa thu chi tháng", "thực hiện thao tác", ""), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion #region lấy thông tin từ form int?macc = (int?)lbUserEnrollNumber.Tag; if (macc == null) { ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000); return; } double tamung = 0d, thuchiKhac = 0d, luongDieuchinh = 0d; float mucDongBHXH = 0f; if (float.TryParse(tbMucDongBHXH.Text, out mucDongBHXH) == false) { ACMessageBox.Show("Mức đóng BHXH chưa hợp lệ. Vui lòng nhập lại.", Resources.Caption_Loi, 2000); return; } tamung = Convert.ToDouble(numTamUng.Value); thuchiKhac = Convert.ToDouble(numThuchiKhac.Value); luongDieuchinh = Convert.ToDouble(numLuongdieuchinh.Value); #endregion // thực hiện query int kq = DAO5.CapnhatThuchiThang((int)macc, m_thang, luongDieuchinh, tamung, thuchiKhac, mucDongBHXH); DAO5.GhiNhatKyThaotac("Thêm khoản thu chi tháng", string.Format("Thêm tạm ứng [{2}], lương điều chỉnh [{3}], mức đóng BHXH [{4}], thu chi khác [{5}] tháng [{0}]... cho 1 NV có mã chấm công [{1}]", m_thang.ToString("dd/MM/yyyy"), macc, tamung.ToString("###,###,###,###,###,##0"), luongDieuchinh.ToString("###,###,###,###,###,##0"), mucDongBHXH.ToString("#0.00"), thuchiKhac.ToString("###,###,###,###,###,##0")), maCC: macc); if (kq == 0) { MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } reloadGridDSThuChi(); }
private void btnXacNhanPC100_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(dtpNgayBD.Value.Date, dtpNgayKT.Value.Date)) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "xem công", "xác nhận phụ cấp", "xem công"), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion // xác định đang chọn datagrid nào để lấy các datarow của các datagrid đó DataGridView currDataGrid = XacDinhDataGridViewDangChon(); // lọc lấy các datarow được check, nếu không có row nào được check thì chế độ view all, ngược lại thì xem các ngày được check if (currDataGrid.SelectedRows.Count != 0) { var arrRecord = (from DataGridViewRow row in currDataGrid.SelectedRows select(((DataRowView)row.DataBoundItem).Row)).ToArray(); if (arrRecord.Length == 0) { return; } frm_XN_PC100 frm112 = new frm_XN_PC100 { StartPosition = FormStartPosition.CenterParent, m_arrRecd = arrRecord }; //frm112.Location = new Point((int)((Size.Width - frm112.Size.Width) / 2f), (int)((Size.Height - frm112.Size.Height) / 2f)); //frm112.m_DSNV = m_DSNV; frm112.ShowDialog(); // lấy dsnv đang chọn var listNV = (from DataGridViewRow dataGridViewRow in dgrdDSNVTrgPhg.Rows let rowView = dataGridViewRow.DataBoundItem as DataRowView where (rowView["check"] != DBNull.Value && (bool)rowView["check"]) select(cUserInfo) rowView["cUserInfo"]) .ToList(); if (frm112.IsReload) { Reload4DataGrid(listNV); } } }
private void btnThemXoaSuaDonGian_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(dtpNgayBD.Value.Date, dtpNgayKT.Value.Date)) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "xem công", "chỉnh sửa giờ chấm công", "xem công"), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion // xác định datagrid nào đang chọn thì lấy dòng SelectedRows[0] của datagrid đó DataGridView currDataGrid = XacDinhDataGridViewDangChon(); if (currDataGrid.SelectedRows.Count == 0) { return; } var arrRecord = ((DataRowView)((currDataGrid.SelectedRows[0]).DataBoundItem)).Row; // gọi form editTime và truyền dòng dữ liệu đang chọn sang cho form đó var frm1 = new frm_XemCT_GioCC { StartPosition = FormStartPosition.CenterParent, selectedRow = arrRecord }; frm1.ShowDialog(); #region // sau khi edit giờ chấm công xong thì reload lại và tô màu 2 dataGrid tổng hợp và giờ KDQD if (frm1.IsReload) { // lấy dsnv đang chọn var listNV = (from DataGridViewRow dataGridViewRow in dgrdDSNVTrgPhg.Rows let rowView = dataGridViewRow.DataBoundItem as DataRowView where (rowView["check"] != DBNull.Value && (bool)rowView["check"]) select(cUserInfo) rowView["cUserInfo"]) .ToList(); Reload4DataGrid(listNV); } #endregion }
private void btnXoa_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(new DateTime(dtpThang.Value.Year, dtpThang.Value.Month, 1), new DateTime(dtpThang.Value.Year, dtpThang.Value.Month, DateTime.DaysInMonth(dtpThang.Value.Year, dtpThang.Value.Month)))) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "khai báo vắng", "xoá khai báo vắng", ""), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion #region hỏi lại trước khi thực hiện if (MessageBox.Show(Resources.Text_XacNhanXoaKhaiBaoVang, Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } #endregion dgrdNgayVang.EndEdit(); dgrdNgayVang.Update(); var arrRecord = (from DataGridViewRow dataGridViewRow in dgrdNgayVang.SelectedRows select((DataRowView)dataGridViewRow.DataBoundItem)).ToList(); if (arrRecord.Count == 0) { return; } var kqThaotac = DAO.XoaNgayVangNV(arrRecord); if (kqThaotac == false) { MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } GC.Collect(); Thread.Sleep(20); btnLietKe.PerformClick(); }
private void btnXoaKBVang_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(dtpNgayBD.Value.Date, dtpNgayKT.Value.Date)) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "xem công", "xoá khai báo vắng", "xem công"), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion DataGridView currDataGrid = XacDinhDataGridViewDangChon(); if (MessageBox.Show("Xoá các khai báo vắng của nhân viên với các ngày được chọn?", Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } if (currDataGrid.SelectedRows.Count != 0) { IEnumerable <dynamic> arrRecord = (from DataGridViewRow row in currDataGrid.SelectedRows let rowViews = (DataRowView)row.DataBoundItem select new { MaCC = (int)rowViews["UserEnrollNumber"], NgayVang = (DateTime)rowViews["TimeStrNgay"] }).ToList(); if (arrRecord.Any() == false) { return; } string query = " delete from Absent where UserEnrollNumber = @UserEnrollNumber and TimeDate = @TimeDate "; foreach (dynamic obj in arrRecord) { int kq = SqlDataAccessHelper.ExecNoneQueryString( query, new string[] { "@UserEnrollNumber", "@TimeDate" }, new object[] { obj.MaCC, obj.NgayVang }); DAO.GhiNhatKyThaotac("Xoá các khai báo vắng trong ngày", string.Format("Xoá tất cả khai báo vắng của NV có mã chấm công [{0}] trong ngày [{1}]", (int)obj.MaCC, ((DateTime)obj.NgayVang).ToString("dd/MM/yyyy")), maCC: (int)obj.MaCC); } btnXem.PerformClick(); } }
private void btnCapNhat_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho cập nhật lương công nhật nếu tháng này đã đã kết lương if (XL.Kiemtra(m_thang, MyUtility.LastDayOfMonth(m_thang))) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "cập nhật thông tin làm việc công nhật", "cập nhật thông tin làm việc công nhật", ""), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion // lấy thông tin từ form var UserEnrollNumber = (lbUserEnrollNumber.Tag == null) ? -1 : (int)lbUserEnrollNumber.Tag; var DonGiaLuong = (int)numDonGiaLuong.Value; var TamUng = Convert.ToDouble(numTamUng.Value); #region update đơn giá lương , tạm ứng xuống csdl //info ko cần lưu thành tiền vì lúc lưu xuống đã tính thành tiền để có cơ sở tính lương, lúc lấy lên thì tính ra số tổng rồi mới xuất bb string query = @" update DSNVChiCongNhatThang set DonGiaLuong=@DonGiaLuong, TamUng=@TamUng where UserEnrollNumber=@UserEnrollNumber and Thang=@Thang "; int kq2 = SqlDataAccessHelper.ExecNoneQueryString(query, new string[] { "@DonGiaLuong", "@TamUng", "@UserEnrollNumber", "@Thang" }, new object[] { DonGiaLuong, TamUng, UserEnrollNumber, m_thang }); DAO.GhiNhatKyThaotac("Cập nhật lương công nhật và tạm ứng", string.Format("Cập nhật đơn giá lương công nhật [{1}], tạm ứng [{2}] cho NV có mã chấm công [{0}]", UserEnrollNumber, DonGiaLuong.ToString(Settings.Default.numFormatMoney), TamUng.ToString(Settings.Default.numFormatMoney)), maCC: UserEnrollNumber); #endregion // sau khi cập nhật thì reload lại var table = DAO.LayTableCongNhat(m_thang); dgrdDSLuongCongnhat.DataSource = table; dgrdDSLuongCongnhat.ClearSelection(); }
private void btnThemKBVang_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(dtpNgayBD.Value.Date, dtpNgayKT.Value.Date)) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "xem công", "khai báo vắng", "xem công"), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion // xác định đang chọn datagrid nào để lấy các datarow của các datagrid đó DataGridView currDataGrid = XacDinhDataGridViewDangChon(); if (currDataGrid.SelectedRows.Count != 0) { IEnumerable <dynamic> arrRecord = (from DataGridViewRow row in currDataGrid.SelectedRows let rowViews = (DataRowView)row.DataBoundItem select new { MaCC = (int)rowViews["UserEnrollNumber"], NgayVang = (DateTime)rowViews["TimeStrNgay"] }).ToList(); if (arrRecord.Any() == false) { return; } frm_KBVang_Nhanh frm = new frm_KBVang_Nhanh { StartPosition = FormStartPosition.CenterParent, listMaCC_NgayVang = arrRecord }; frm.ShowDialog(); if (frm.IsReload) { btnXem.PerformClick(); } } }
private void btnXoa_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(m_thang.Date, MyUtility.LastDayOfMonth(m_thang))) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "chỉnh sửa thu chi tháng", "thực hiện thao tác", ""), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion #region lấy thông tin từ form int?macc = (int?)lbUserEnrollNumber.Tag; if (macc == null) { ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000); return; } #endregion // thực hiện query int kq = SqlDataAccessHelper.ExecNoneQueryString( " delete from DSThuChiThang where Thang=@Thang and UserEnrollNumber=@UserEnrollNumber ", new string[] { "@Thang", "@UserEnrollNumber" }, new object[] { m_thang, macc }); DAO5.GhiNhatKyThaotac("Xoá khoản thu chi tháng", string.Format("Xoá tạm ứng, lương điều chỉnh, mức đóng BHXH, thu chi khác tháng [{0}]... của 1 NV có mã chấm công [{1}]", m_thang.ToString("dd/MM/yyyy"), macc), maCC: macc); if (kq == 0) { MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } reloadGridDSThuChi(); }
private void btnXuatBangChiTiet_Click(object sender, EventArgs e) { if (XL.Kiemtra(m_Thang.Date, MyUtility.LastDayOfMonth(m_Thang)) == false) { MessageBox.Show(string.Format("Tháng {0} chưa kết lương!", m_Thang.ToString("MM/yyyy")), Resources.Caption_ThongBao); return; } if (saveFileDialog.ShowDialog() == DialogResult.Cancel) { return; } if (saveFileDialog.FileName == string.Empty) { return; } string saveFileName = saveFileDialog.FileName; WaitWindow.Show(this.XuatBangChiTiet, "Đang xuất bảng chi tiết. Bạn vui lòng đợi...", saveFileName); }
private void btnChamCong_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } /* 1. lấy dsnv check, lấy tháng * */ string strChecked_ArrMaCC = checkedDSNV.EditValue.ToString(); List <int> arrMaCC = new List <int>(); strChecked_ArrMaCC.Split(',').ToList().ForEach(item => arrMaCC.Add(int.Parse(item))); DataTable tableArrMaCC = MyUtility.Array_To_DataTable("tableArrMaCC", arrMaCC); DateTime ngayDauThang = MyUtility.FirstDayOfMonth(dateNavigator1.DateTime); DateTime ngayCuoiThang = MyUtility.FirstDayOfMonth(dateNavigator1.DateTime); //kiểm tra tình trạng kết công XL.Kiemtra(ngayDauThang, ngayCuoiThang); this.ChamCong(tableArrMaCC, ngayDauThang); }
private void btnXoaTatcaDSThuchiThang_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(m_thang.Date, MyUtility.LastDayOfMonth(m_thang))) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "chỉnh sửa thu chi tháng", "thực hiện thao tác", ""), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion //xác nhận trước khi xóa string messContent = "Bạn muốn xóa tất cả danh sách thu chi tháng {0}?."; messContent = string.Format(messContent, m_thang.ToString("MM/yyyy")); if (MessageBox.Show(messContent, Resources.Caption_XacNhan) == DialogResult.No) { return; } // thực hiện query int kq = SqlDataAccessHelper.ExecNoneQueryString("delete from DSThuChiThang where thang=@Thang ", new string[] { "@Thang" }, new object[] { m_thang }); DAO5.GhiNhatKyThaotac("Xoá tất cả khoản thu chi tháng", string.Format("Xoá tạm ứng, lương điều chỉnh, mức đóng BHXH, thu chi khác của TẤT CẢ NV tháng [{0}]", m_thang.ToString("dd/MM/yyyy"))); if (kq == 0) { MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } reloadGridDSThuChi(); }
private void btnCapNhatVaoCSDL_Click(object sender, EventArgs e) { IsReload = true; if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(m_Thang.Date, MyUtility.LastDayOfMonth(m_Thang))) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "chỉnh sửa thu chi tháng", "thực hiện thao tác", ""), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion var table = dgrdDThuchiExcel.DataSource as DataTable; DateTime thang = m_Thang; var flagError = false; #region xác nhận trước khi thực hiện if ( MessageBox.Show(string.Format("Bạn muốn cập nhật cho tháng {0}?", thang.ToString("M/yyyy")), Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } #endregion if (table != null) { var tableTatCaNV = XL.LayDSNV(true); //tbd foreach (DataRow row in table.Rows) { #region lấy thông tin var userFullcode = row["UserFullCode"].ToString().TrimStart().TrimEnd().ToLower(); //var arrRows = tableTatCaNV.Select("UserFullCode = '" +userFullcode + "'","", DataViewRowState.CurrentRows); var resultRow = (tableTatCaNV.Rows.Cast <DataRow>().Where( dataRow => dataRow["UserFullCode"].ToString().TrimStart().TrimEnd().ToLower() == userFullcode)).SingleOrDefault(); if (resultRow == null) { continue; } var tenNV = resultRow["UserFullName"].ToString(); var UserEnrollNumber = (int)resultRow["UserEnrollNumber"]; var luongdieuchinh = (double)row["LuongDieuChinh"]; var tamung = (double)row["TamUng"]; var thuchikhac = (double)row["ThuChiKhac"]; var mucdongbhxhDouble = (double)row["MucDongBHXH"]; var mucdongbhxhFloat = Convert.ToSingle(mucdongbhxhDouble); #endregion var kq = DAO.CapnhatThuchiThang(UserEnrollNumber, thang, luongdieuchinh, tamung, thuchikhac, mucdongbhxhFloat); #region báo lỗi nếu ko cập nhật được if (kq == 0) { flagError = true; ACMessageBox.Show(string.Format("Xảy ra lỗi trong quá trình cập nhật tại vị trí nhân viên {0}, mã {1}.\nVui lòng thử lại.", tenNV, userFullcode), "Lỗi", 3000); break; } #endregion } if (flagError == false) { ACMessageBox.Show("Thực hiện thành công.", "Thông báo", 2000); } } }
private void btnThem_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } // lấy ngày check List <DateTime> DSNgayCheck = (from object item in checklistNgay.CheckedItems select(DateTime) item).ToList(); if (DSNgayCheck.Count == 0) { ACMessageBox.Show("Bạn chưa chọn ngày vắng", "Thông báo", 2000); return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(DSNgayCheck[0], DSNgayCheck[DSNgayCheck.Count - 1])) { MessageBox.Show(String.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "khai báo vắng", "khai báo vắng", "khai báo vắng"), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion #region hỏi lại trước khi thực hiện if (MessageBox.Show(Resources.Text_XacNhanThemKhaiVang, Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } #endregion //1. lấy dữ liệu từ form dtpThang.Update(); currMonth = dtpThang.Value; dgrdDSNVTrgPhg.EndEdit(); dgrdDSNVTrgPhg.Update(); BindingContext[dgrdDSNVTrgPhg.DataSource].EndCurrentEdit(); //2. lấy danh sách nhân viên check, nếu chưa có nv nào check thì thông báo var listMaCC_NV = (from DataGridViewRow dataGridViewRow in dgrdDSNVTrgPhg.Rows let row = (DataRowView)dataGridViewRow.DataBoundItem where (row["check"] != DBNull.Value && (bool)row["check"]) select((cUserInfo)row["cUserInfo"]).MaCC) .ToList(); if (listMaCC_NV.Count == 0) { ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000); return; } // lấy loại vắng if (cbLoaiVang.SelectedItem == null) { ACMessageBox.Show("Bạn chưa chọn loại vắng", "Thông báo", 2000); return; } var rowLV = cbLoaiVang.SelectedItem as DataRowView; var absentCode = rowLV["AbsentCode"].ToString(); float workingDay = 0f; if (rad2Gio.Checked) { workingDay = 0.25f; } else if (radNuaNgay.Checked) { workingDay = 0.5f; } else if (rad1ngay.Checked) { workingDay = 1f; } else { workingDay = 0f; } var workingTime = 0f; var phuCapString = maskedTextBox1.Text; var phuCapInt = 0; var phuCapFloat = 0f; if (int.TryParse(phuCapString, out phuCapInt) == false || phuCapString.Length < 3) { ACMessageBox.Show("Nhập phụ cấp chưa đúng định dạng.", Resources.Caption_Loi, 2000); return; } phuCapFloat = Convert.ToSingle(phuCapInt) / 100f; #region set working time tùy theo workingDay if (Math.Abs(workingDay - 0f) < 0.01f) { workingTime = 0f; } else if (Math.Abs(workingDay - 0.25f) < 0.01f) { workingTime = 2f; } else if (Math.Abs(workingDay - 0.5f) < 0.01f) { workingTime = 4f; } else if (Math.Abs(workingDay - 1f) < 0.01f) { workingTime = 8f; } #endregion if (Math.Abs(workingDay - 0.25f) < 0.01f) { if (!(absentCode.ToLower() == "p" || absentCode.ToLower() == "ro")) { ACMessageBox.Show("Chưa hỗ trợ vắng 2 tiếng ngoài phép và việc riêng.", "Chức năng chưa được hỗ trợ", 3000); return; } } var formatString = "[{0}] đã xin phép vắng [{1}] [{2}] ngày ngày [{3}]"; var tableVang = DAO.LietKeNgayVangChoNV(listMaCC_NV, DSNgayCheck.Min(), DSNgayCheck.Max()); if (tableVang.Rows.Count > 0) { List <Warning> listWarning = new List <Warning>(); foreach (var nv in listMaCC_NV) //duyệt từng nhân viên { foreach (var ngay in DSNgayCheck) // duyệt từng ngày check vắng của nhân viên { DateTime ngay1 = ngay; int nv1 = nv; var result = (from DataRow item in tableVang.Rows where (int)item["UserEnrollNumber"] == nv1 && (DateTime)item["TimeDate"] == ngay1 select item).ToList(); // lấy danh sách các xin phép vắng trong ngày xác định if (result.Any()) { // nếu có xin phép vắng thì ghi lại chuỗi các xin phép vắng đó var userfullname = result[0]["UserFullName"].ToString(); listWarning.AddRange(result.Select(row123 => new Warning() { CB = "Đã có xin phép vắng", ND = string.Format(formatString, userfullname, row123["AbsentCode"], ((float)row123["Workingday"]).ToString("0.0#"), ((DateTime)row123["TimeDate"]).ToString("dd/MM/yyyy")) })); } } } // hiện form cảnh báo, nếu xác nhận tiếp tục thì thực hiện , ko thì dừng frmWarning frm = new frmWarning { StartPosition = FormStartPosition.CenterParent }; frm.listWarning = listWarning; frm.ShowDialog(); if (frm.TiepTuc == false) { return; } } IEnumerable <dynamic> tempList = (from macc in listMaCC_NV from ngay in DSNgayCheck select new { MaCC = macc, NgayVang = ngay }); DAO.ThemNgayVang(tempList, workingDay, workingTime, phuCapFloat, absentCode); // sau khi thao tác xong thì clear check các ngày liệt kê lại chk2ExceptSat.Checked = false; chk2ExceptSun.Checked = false; for (int i = 0; i < checklistNgay.Items.Count; i++) { checklistNgay.SetItemChecked(i, false); } Thread.Sleep(20); btnLietKe.PerformClick(); }
private void btnThem_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } // lấy ngày check var ngayBD = dtpNgayBD.Value.Date; var ngayKT = dtpNgayKT.Value.Date; if (ngayBD > ngayKT) { MyUtility.Swap(ref ngayBD, ref ngayKT); } List <DateTime> DSNgayCheck = new List <DateTime>(); for (DateTime indexNgay = ngayBD; indexNgay <= ngayKT; indexNgay = indexNgay.AddDays(1d)) { DSNgayCheck.Add(indexNgay); } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(DSNgayCheck[0], DSNgayCheck[DSNgayCheck.Count - 1])) { MessageBox.Show(String.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "khai báo vắng", "khai báo vắng", "khai báo vắng"), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion #region hỏi lại trước khi thực hiện if (MessageBox.Show(Resources.Text_XacNhanThemKhaiVang, Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } #endregion // lấy loại vắng if (cbLoaiVang.SelectedItem == null) { ACMessageBox.Show("Bạn chưa chọn loại vắng", "Thông báo", 2000); return; } var rowLV = cbLoaiVang.SelectedItem as DataRowView; var absentCode = rowLV["AbsentCode"].ToString(); var workingDay = 1f; var workingTime = 8f; var formatString = "[{0}] đã xin phép vắng [{1}] [{2}] ngày ngày [{3}]"; var tableVang = DAO.LietKeNgayVangChoNV(listMaCC_NV, DSNgayCheck.Min(), DSNgayCheck.Max()); if (tableVang.Rows.Count > 0) { List <Warning> listWarning = new List <Warning>(); foreach (var nv in listMaCC_NV) //duyệt từng nhân viên { foreach (var ngay in DSNgayCheck) // duyệt từng ngày check vắng của nhân viên { DateTime ngay1 = ngay; int nv1 = nv; var result = (from DataRow item in tableVang.Rows where (int)item["UserEnrollNumber"] == nv1 && (DateTime)item["TimeDate"] == ngay1 select item).ToList(); // lấy danh sách các xin phép vắng trong ngày xác định if (result.Any()) { // nếu có xin phép vắng thì ghi lại chuỗi các xin phép vắng đó var userfullname = result[0]["UserFullName"].ToString(); listWarning.AddRange(result.Select(row123 => new Warning() { CB = "Đã có xin phép vắng", ND = string.Format(formatString, userfullname, row123["AbsentCode"], ((float)row123["Workingday"]).ToString("0.0#"), ((DateTime)row123["TimeDate"]).ToString("dd/MM/yyyy")) })); } } } // hiện form cảnh báo, nếu xác nhận tiếp tục thì thực hiện , ko thì dừng frmWarning frm = new frmWarning { listWarning = listWarning, WindowState = FormWindowState.Normal, StartPosition = FormStartPosition.CenterParent }; //Point temp = XL2.GetCenterLocation(this.MdiParent.Size.Width, this.MdiParent.Size.Height, frm.Size.Width, frm.Size.Height); //frm.Location = new Point(this.MdiParent.Location.X + temp.X, this.MdiParent.Location.Y + temp.Y); frm.ShowDialog(); if (frm.TiepTuc == false) { return; } } IsReload = true; IEnumerable <dynamic> listMaCC_NgayVang = (from macc in listMaCC_NV from ngay in DSNgayCheck select new { MaCC = macc, NgayVang = ngay }); List <Error> listError = new List <Error>(); XL.ThemNgayVang(listMaCC_NgayVang, workingDay, workingTime, 0f, absentCode, listError); if (listError.Count > 0) { frmError frm = new frmError { StartPosition = FormStartPosition.CenterParent, listError = listError }; frm.ShowDialog(); } Close(); }
private void btnThucHien_Click(object sender, EventArgs e) { if (XL2.KiemtraKetnoiCSDL() == false) { return; } #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương if (XL.Kiemtra(new DateTime(dtpThang.Value.Year, dtpThang.Value.Month, 1), new DateTime(dtpThang.Value.Year, dtpThang.Value.Month, DateTime.DaysInMonth(dtpThang.Value.Year, dtpThang.Value.Month)))) { MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "khai báo chấm công cho quản lý", "khai báo chấm công", ""), Resources.Caption_ThongBao, MessageBoxButtons.OK); return; } #endregion #region lấy và kiểm tra dsnv được chọn BindingContext[dgrdDSNVTrgPhg.DataSource].EndCurrentEdit(); //2. lấy danh sách nhân viên check, nếu chưa có nv nào check thì thông báo var listNV = (from DataGridViewRow dataGridViewRow in dgrdDSNVTrgPhg.Rows let rowView = dataGridViewRow.DataBoundItem as DataRowView where (rowView["check"] != DBNull.Value && (bool)rowView["check"]) select((cUserInfo)rowView["cUserInfo"])) .ToArray(); if (listNV.Length == 0) { ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000); // GC.Collect(); } #endregion #region lấy ds các ngày đã check var DSNgayCheck = (from object item in checklistNgay.CheckedItems select(DateTime) item).ToList(); if (DSNgayCheck.Count == 0) { ACMessageBox.Show("Bạn chưa chọn ngày làm việc.", "Thông báo", 2000); return; } #endregion #region lấy thông tin var ngay1 = DateTime.Today.Date; TimeSpan TimeSpanBD = dtpBDLam.Value.TimeOfDay; TimeSpan TimeSpanKT = dtpKTLam.Value.TimeOfDay; var timeBD = ngay1.Add(TimeSpanBD); var timeKT = ngay1.Add(TimeSpanKT); if (TimeSpanBD > TimeSpanKT) { timeKT = timeKT.AddDays(1d); } //var sophutOT = (checkXNLamThem.Checked && numSoPhutOT.Value > 0) ? (int)numSoPhutOT.Value : 0; TimeSpan OTCa = TimeSpan.Zero; //ver 4.0.0.4 if (checkXNLamThem.Checked && TimeSpan.TryParseExact(maskPhutTinhLamThem.Text, @"hh\:mm", CultureInfo.InvariantCulture, out OTCa) == false) { ACMessageBox.Show(Resources.Text_NhapThoiGianLamThemChuaHopLe, Resources.Caption_Loi, 2000); return; } var sophutOT = Convert.ToInt32(OTCa.TotalMinutes); //ver 4.0.0.4 var TinhPCTC = (checkTinhPC150.Checked); var bVaoTreLaCV = checkXNVaoTreTinhCV.Checked; //ver 4.0.0.4 var bRaaSomLaCV = checkXNRaaSomTinhCV.Checked; //ver 4.0.0.4 string lydo = (cbLyDo.SelectedItem != null) ? cbLyDo.SelectedItem.ToString() : cbLyDo.Text; string ghichu = tbGhiChu.Text; #endregion #region hỏi lại trước khi thực hiện if (MessageBox.Show(Resources.Text_XacNhanThemChamCongTayChoQL, Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No) { return; } #endregion try { var ca = (tbCa.Tag == null) ? null : (cCa)tbCa.Tag; foreach (var nv in listNV) { foreach (var ngay in DSNgayCheck) { DateTime TimeStrInn = ngay.Date.Add(TimeSpanBD); DateTime TimeStrOut = ngay.Date.Add(TimeSpanKT); if (TimeSpanBD > TimeSpanKT) { TimeStrOut = TimeStrOut.AddDays(1d); } if (ca.QuaDem && TimeSpanBD < TimeSpanKT && TimeSpanBD < XL2._04h30) { TimeStrInn = TimeStrInn.AddDays(1d); TimeStrOut = TimeStrOut.AddDays(1d); } /* * if (ca.ID == int.MinValue) * XL.TaoCaTuDo(ca, TimeStrInn, XL2._08gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1f, "8"); * else if (ca.ID == int.MinValue + 1) * XL.TaoCaTuDo(ca, TimeStrInn, XL2._12gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1.5f, "D"); */ if (ca.ID < int.MinValue + 100) { XL.TaoCaTuDo(ca, TimeStrInn); //ver 4.0.0.4 } bool match = XL.KiemtraThuocCa(TimeStrInn, TimeStrOut, ngay, ca); // trường hợp chỉ chấm công bình thường thì chỉ thêm giờ cho đơn giản // các trường hợp xác nhận làm thêm x phút thì chuyển sang xác nhận if (ca.ID < 0) { DAO.ThemGioChoNV(nv.MaCC, TimeStrInn, "I", 21, lydo, ghichu); DAO.ThemGioChoNV(nv.MaCC, TimeStrOut, "O", 22, lydo, ghichu); XL.XacNhan_CIO_A(nv.MaCC, TimeStrInn, TimeStrOut, ca, false, false, sophutOT, TinhPCTC, lydo, ghichu, bVaoTreLaCV, bRaaSomLaCV); } else if (ca.IsExtended || sophutOT > 0 || match == false) { // các trường hợp phải xác nhận là ca tự do, ca mở rộng, ca có làm thêm và giờ nhập ko nằm trong khoảng nhận diện if (ca.TachCaDem) { var timeOutCa3 = ngay.Add(ca.catruoc.Duty.Off); var timeInnCa1 = ngay.AddDays(1d).Add(ca.casauuu.Duty.Onn).Add(XL2._01giay); DAO.ThemGioChoNV(nv.MaCC, TimeStrInn, "I", 21, lydo, ghichu); DAO.ThemGioChoNV(nv.MaCC, timeOutCa3, "O", 22, "Hệ thống tự động thêm giờ đệm tách ca qua ngày", "Thực hiện tự động"); DAO.ThemGioChoNV(nv.MaCC, timeInnCa1, "I", 21, "Hệ thống tự động thêm giờ đệm tách ca qua ngày", "Thực hiện tự động"); DAO.ThemGioChoNV(nv.MaCC, TimeStrOut, "O", 22, lydo, ghichu); XL.XacNhan_CIO_A(nv.MaCC, TimeStrInn, timeOutCa3, ca.catruoc, false, false, 0, TinhPCTC, lydo, ghichu, bVaoTreLaCV, bRaaSomLaCV); //ver 4.0.0.4 XL.XacNhan_CIO_A(nv.MaCC, timeInnCa1, TimeStrOut, ca.casauuu, false, false, sophutOT, TinhPCTC, lydo, ghichu, bVaoTreLaCV, bRaaSomLaCV); //ver 4.0.0.4 } else { DAO.ThemGioChoNV(nv.MaCC, TimeStrInn, "I", 21, lydo, ghichu); DAO.ThemGioChoNV(nv.MaCC, TimeStrOut, "O", 22, lydo, ghichu); XL.XacNhan_CIO_A(nv.MaCC, TimeStrInn, TimeStrOut, ca, false, false, sophutOT, TinhPCTC, lydo, ghichu, bVaoTreLaCV, bRaaSomLaCV); //ver 4.0.0.4 } } else { DAO.ThemGioChoNV(nv.MaCC, TimeStrInn, "I", 21, lydo, ghichu); DAO.ThemGioChoNV(nv.MaCC, TimeStrOut, "O", 22, lydo, ghichu); } } } MyUtility.CheckedCheckBox(false, chkAllWKDays, chkAddSat, chkAddSun); //ver 4.0.0.4 ACMessageBox.Show("Đã thêm giờ chấm công cho quản lý.", Resources.Caption_ThongBao, 2000); } catch (Exception ex) { lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex); MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } }