private void treePhongBan_AfterSelect(object sender, TreeViewEventArgs e) { #region mỗi lần chọn node thì lấy ID node hiện tại và tất cả node con m_listIDPhongBan.Clear(); if (e.Node.FirstNode != null) { XL.GetIDNodeAndChildNode(e.Node, ref m_listIDPhongBan); } else { var temp = ((cPhongBan)e.Node.Tag); if (temp.ChoPhep) { m_listIDPhongBan.Add(temp.ID); } } e.Node.Expand(); #endregion #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 XL.KhoiTaoDSNV_ChamCong(m_DSNV, m_listIDPhongBan, this.m_DSPhg); XL.TaoTableDSNV(m_DSNV, m_Bang_DSNV); #region tạo datasourcr cho autocomplete var Source = new AutoCompleteStringCollection(); Source.AddRange((from nv in m_DSNV select nv.TenNV.ToUpperInvariant()).ToArray()); tbSearch.AutoCompleteSource = AutoCompleteSource.CustomSource; tbSearch.AutoCompleteMode = AutoCompleteMode.SuggestAppend; tbSearch.AutoCompleteCustomSource = Source; #endregion var dataView = dgrdDSNVTrgPhg.DataSource as DataView; if (dataView != null) { dataView.RowFilter = string.Empty; } m_Bang_TongHopXemCong.Rows.Clear(); m_Bang_GioKDQD.Rows.Clear(); m_Bang_GioThieuCheck.Rows.Clear(); m_Bang_ThK_TreSom.Rows.Clear(); checkAll_GridDSNV.Checked = false; }
private void treePhongBan_AfterSelect(object sender, TreeViewEventArgs e) { #region lấy id ds phòng ban và phòng ban con được chọn m_listIDPhongBan.Clear(); if (e.Node.FirstNode != null) { XL.GetIDNodeAndChildNode(e.Node, ref m_listIDPhongBan); } else { var temp = ((cPhongBan)e.Node.Tag); if (temp.ChoPhep) { m_listIDPhongBan.Add(temp.ID); } } e.Node.Expand(); #endregion #region kiểm tra kết nối csdl, mất kết nối thì thoát if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false) { ACMessageBox.Show(Resources.Text_MatKetNoiCSDL, Resources.Caption_Loi, 2000); Close(); return; } #endregion XL.KhoiTaoDSNV_ChamCong(m_DSNV, m_listIDPhongBan, m_DSPhg); XL.TaoTableDSNV(m_DSNV, m_Bang_DSNV); #region set datasource for autocomplete var Source = new AutoCompleteStringCollection(); Source.AddRange((from nv in m_DSNV select nv.TenNV.ToUpperInvariant()).ToArray()); tbSearch.AutoCompleteSource = AutoCompleteSource.CustomSource; tbSearch.AutoCompleteMode = AutoCompleteMode.Suggest; tbSearch.AutoCompleteCustomSource = Source; #endregion var dataView = dgrdDSNVTrgPhg.DataSource as DataView; if (dataView != null) { dataView.RowFilter = string.Empty; } checkAll_GridDSNV.Checked = false; }
private void treePhongBan_AfterSelect(object sender, TreeViewEventArgs 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, 3000); Close(); return; } #endregion #region mỗi lần chọn node thì lấy ID node hiện tại và tất cả node con m_listIDPhongBan.Clear(); if (e.Node.FirstNode != null) { XL.GetIDNodeAndChildNode(e.Node, ref m_listIDPhongBan); } else { var temp = ((cPhongBan)e.Node.Tag); if (temp.ChoPhep) { m_listIDPhongBan.Add(temp.ID); } } e.Node.Expand(); #endregion XL.KhoiTaoDSNV_ChamCong(m_DSNV, m_listIDPhongBan, m_DSPhg); XL.TaoTableDSNV(m_DSNV, m_Bang_DSNV); var dataView = dgrdDSNVTrgPhg.DataSource as DataView; if (dataView != null) { dataView.RowFilter = string.Empty; } checkAll_GridDSNV.Checked = false; }
private void XuatBBChamCong(object sender, WaitWindowEventArgs e) { string filePath = e.Arguments[0].ToString(); string tenNVLapBieu = e.Arguments[1].ToString(); string tenTrgBP = e.Arguments[2].ToString(); DateTime thang = (DateTime)e.Arguments[3]; List <cPhongBan> dsphongban = (List <cPhongBan>)e.Arguments[4]; var tongCongKoTinhCV = 0f; var congTinhLuong = 0f; var congKOtinhLuong = 0f; try //general try catch { List <WarningMessage> warningMessages = new List <WarningMessage>(); #region lấy thông tin từ csdl và khỏi tạo nv DateTime ngaydauthang = MyUtility.FirstDayOfMonth(dtpThang.Value), ngaycuoithang = MyUtility.LastDayOfMonth(dtpThang.Value); var tableKetcongNgay = DAO.LayKetcongNgay(ngaydauthang, ngaycuoithang); var tableKetcongCa = DAO.LayKetcongCa(ngaydauthang, ngaycuoithang); var tableXPVang = DAO.LayTableXPVang(ngaydauthang, ngaycuoithang); var tableNgayLe = DAO.DocNgayLe(ngaydauthang, ngaycuoithang); var tableDSNVChiCongnhatThang = DAO.LayTableCongNhat(ngaydauthang); var dsnv = new List <cUserInfo>(); XL.KhoiTaoDSNV_ChamCong(dsnv, (from p in dsphongban select p.ID).ToList(), dsphongban); // khởi tạo tất cả nhân viên tính công, bao gồm cả công nhật ngày(nv chính thức) và công nhật tháng /* * List<cPhongBan> dsphongban = new List<cPhongBan>(); * // đưa về root node trước khi thực hiện * var root = treePhongBan.TopNode; * GetTopLevelNode(ref root);// mỗi lần duyệt node sẽ làm root node chuyển về parent của node cuối nên phải trả về node gốc để duyệt từ đầu * while (root.PrevNode != null) root = root.PrevNode; * GetNode_DuocThaotac_CheckKetcong(root, dsphongban); */ #endregion // xác định công chuẩn của tháng var congChuanThang = XL.TinhCongChuanCuaThang(ngaydauthang); #region //load cong phu cap tung ngay cho tat ca nv, ke ca cong nhat, rieng truong hop cong nhat se xu ly ngay ben duoi try { foreach (var nv in dsnv) { nv.ThongKeThang = new ThongKeCong_PC(); nv.DSNgayCong = new List <cNgayCong>(); nv.DSVang = new List <cLoaiVang>(); for (DateTime indexNgay = ngaydauthang; indexNgay <= ngaycuoithang; indexNgay = indexNgay.AddDays(1d)) { XL.LoadNgayCong(nv.MaCC, nv.DSNgayCong, indexNgay, tableKetcongNgay, tableKetcongCa); } //load ds xp vắng //XL.LoadDSXPVang(nv.MaCC, nv.DSNgayCong, tableXPVang); //XL.LoadNgayLe(nv.DSNgayCong, tableNgayLe); XL.LoadDSXPVang_Le(nv.MaCC, tableXPVang, tableNgayLe, nv.DSVang); //info trường hợp nhân viên công nhật sẽ được xử lý bên dưới XL.PhanPhoi_DSVang7(nv.DSVang, nv.DSNgayCong); XL.LoadThongtinLamViecCongNhat(nv.MaCC, ref nv.NgayBDCongnhat, ref nv.NgayKTCongnhat, ref nv.LoaiCN, nv.DSNgayCong, tableDSNVChiCongnhatThang); } var soNgayChuNhat = XL.DemSoNgayNghiChunhat(ngaydauthang, true, false); var soNgayThu7 = XL.DemSoNgayNghiChunhat(ngaydauthang, false, true); //v 4.0.0.1 int soNgayChamCongx2 = 0, soNgayNghiAnhHuongCongx2 = 0; foreach (var nv in dsnv) { XL.ThongKeThang(ref nv.ThongKeThang, nv.DSNgayCong, nv.NgayBDCongnhat, nv.NgayKTCongnhat, nv.LoaiCN, out soNgayChamCongx2, out soNgayNghiAnhHuongCongx2); // tính công chờ việc: 1.nv công nhật ko cv. 2. nv mới chính thức thì chỉ giữ công cv khai báo if (nv.LoaiCN == LoaiCongNhat.NVCongNhat) // nhân viên làm công nhật, công cv tự động, khai báo = 0 { nv.ThongKeThang.CongCV_Auto = 0f; nv.ThongKeThang.CongCV_KB = 0f; } else { if (nv.LoaiCN == LoaiCongNhat.NVChinhThuc) // nhân viên chính thức { congTinhLuong = (nv.ThongKeThang.TongNgayLV4008 + nv.ThongKeThang.Phep + nv.ThongKeThang.Le //ver4.0.0.8 + nv.ThongKeThang.H_CT_PT); congKOtinhLuong = nv.ThongKeThang.TongTruCongTreVR + nv.ThongKeThang.TongTruCongSomVR + nv.ThongKeThang.TreSom_KoDuBuCong + nv.ThongKeThang.BHXH + nv.ThongKeThang.PTDT + nv.ThongKeThang.NghiRo; //ko có nv.ThongKeThang.CongCV_KB tongCongKoTinhCV = congTinhLuong + congKOtinhLuong; /* * tongCongKoTinhCV = (nv.ThongKeThang.TongNgayLV4008 + nv.ThongKeThang.TongTruCongTreVR+nv.ThongKeThang.TongTruCongSomVR + nv.ThongKeThang.TreSom_KoDuBuCong + nv.ThongKeThang.Phep + nv.ThongKeThang.Le //ver4.0.0.8 + nv.ThongKeThang.BHXH + nv.ThongKeThang.H_CT_PT + nv.ThongKeThang.PTDT + nv.ThongKeThang.NghiRo + nv.ThongKeThang.CongCV_KB);//DANGLAM */ nv.ThongKeThang.CongCV_Auto = congChuanThang - tongCongKoTinhCV; if (nv.ThongKeThang.CongCV_Auto < 0f) { nv.ThongKeThang.CongCV_Auto = 0f; } } else // nhân viên chính thức vừa công nhật thì công cv_auto =0, công cv khai báo ko đổi { nv.ThongKeThang.CongCV_Auto = 0f; } } nv.ThongKeThang.CongCV = nv.ThongKeThang.CongCV_Auto + nv.ThongKeThang.CongCV_KB; if (XL.KiemTraDieuKienCongCVAuto_VuotNguong(nv.ThongKeThang.CongCV_Auto, soNgayThu7, soNgayChuNhat)) { warningMessages.Add( new WarningMessage { MaCC = nv.MaCC, MaNV = nv.MaNV, TenNV = nv.TenNV, NoiDung = string.Format( "Có số công chờ việc được tính tự động [{0}] công theo quy định vượt quá [{1}] ngày thứ Bảy trong tháng.", nv.ThongKeThang.CongCV_Auto.ToString("#0.0#"), soNgayThu7) }); } if (XL.KiemTraDieuKienChamCongx2(congChuanThang, congTinhLuong, soNgayChuNhat, soNgayChamCongx2, soNgayNghiAnhHuongCongx2) == 1) { warningMessages.Add( new WarningMessage { MaCC = nv.MaCC, MaNV = nv.MaNV, TenNV = nv.TenNV, NoiDung = string.Format( "Chấm công làm việc ngày nghỉ hàng tuần chưa đúng quy định ([{0}] ngày nghỉ >= [{1}] ngày chủ nhật).", soNgayNghiAnhHuongCongx2, soNgayChuNhat) }); } else if (XL.KiemTraDieuKienChamCongx2(congChuanThang, congTinhLuong, soNgayChuNhat, soNgayChamCongx2, soNgayNghiAnhHuongCongx2) == 2) { warningMessages.Add( new WarningMessage { MaCC = nv.MaCC, MaNV = nv.MaNV, TenNV = nv.TenNV, NoiDung = string.Format( "Chấm công làm việc ngày nghỉ hàng tuần chưa đúng quy định ([{0}] ngày chấm công làm việc ngày nghỉ hàng tuần + [{1}] ngày nghỉ > [{2}] ngày chủ nhật).", soNgayChamCongx2, soNgayNghiAnhHuongCongx2, soNgayChuNhat) }); } else if (XL.KiemTraDieuKienChamCongx2(congChuanThang, congTinhLuong, soNgayChuNhat, soNgayChamCongx2, soNgayNghiAnhHuongCongx2) == 3) { warningMessages.Add( new WarningMessage { MaCC = nv.MaCC, MaNV = nv.MaNV, TenNV = nv.TenNV, NoiDung = string.Format( "Nhân viên có [{0}] công làm việc vượt [{1}] ngày công chuẩn của tháng.", congTinhLuong.ToString("#0.0#"), congChuanThang.ToString("")) }); } } } catch (Exception ex) { lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex); } #endregion using (var p = new ExcelPackage()) { //2. xuat bb bang ket cong thang #region ghi sheet bang ket cong thang trinh ky p.Workbook.Worksheets.Add("BangKetCong"); var ws = p.Workbook.Worksheets["BangKetCong"]; ws.Name = "BangKetCong"; //Setting Sheet's name XL.ExportSheetBangKetcongThang(ws, MyUtility.FirstDayOfMonth(dtpThang.Value), MyUtility.LastDayOfMonth(dtpThang.Value), dsnv, tenNVLapBieu, tenTrgBP, XL2.PC30, XL2.PC50, XL2.PCTCC3, XL2.PC100, XL2.PC160, XL2.PC200, XL2.PC290); //info dsnv kết công bộ phận gồm cả nv công nhật, chính thức, vừa chính thức vừa công nhật khác với bảng lương #endregion //3. xuat bb chi tiết kết công #region ghi sheet chi tiết kết công p.Workbook.Worksheets.Add("ChiTietKetCong"); ws = p.Workbook.Worksheets["ChiTietKetCong"]; ws.Name = "ChiTietKetCong"; //Setting Sheet's name XL.ExportSheetBangChiTietKetCong(ws, MyUtility.FirstDayOfMonth(dtpThang.Value), MyUtility.LastDayOfMonth(dtpThang.Value), dsnv, XL2.PC30, XL2.PC50, XL2.PCTCC3, XL2.PC100, XL2.PC160, XL2.PC200, XL2.PC290); #endregion //4. xuất bb lưu ý nếu có if (warningMessages.Count > 0) { p.Workbook.Worksheets.Add("LUUY"); ws = p.Workbook.Worksheets["LUUY"]; ws.Name = "LuuY"; //Setting Sheet's name ws.Cells.Style.Font.Name = "Times New Roman"; ws.Cells.Style.Font.Size = 12; int top = 1, left = 1; int ir = top, ic = left; XL.FormatCell_T(ws, ref ir, ref ic, "Mã NV", plusCol: 1); XL.FormatCell_T(ws, ref ir, ref ic, "Tên NV", plusCol: 1); XL.FormatCell_T(ws, ref ir, ref ic, "Nội dung lưu ý", plusCol: 1, plusRow: 1); foreach (WarningMessage message in warningMessages) { ic = left; XL.FormatCell_W(ws, ref ir, ref ic, message.MaNV, colWidth: (int)L.MANV, plusCol: 1); XL.FormatCell_W(ws, ref ir, ref ic, message.TenNV, colWidth: (int)L.HOTEN, plusCol: 1); XL.FormatCell_W(ws, ref ir, ref ic, message.NoiDung, colWidth: 60, plusCol: 1, plusRow: 1); } } Byte[] bytes = p.GetAsByteArray(); XL.XuatFileExcel(filePath, bytes, "frm_KetCongBoPhan XuatBBChamCong "); } if (warningMessages.Count > 0) { MessageBox.Show("Vui lòng xem lại các cảnh báo của quá trình kết công trong sheet lưu ý.", Resources.Caption_ThongBao); } } catch (Exception ex) //general try catch { lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex); MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } }
public void ThucHienKetCong(object sender, WaitWindowEventArgs e) { #region string TemplateShiftParams = @"Ca: [{0}]; ID: [{1}]; Onn: [{2}]; Off: [{3}]; BD_NDVao: [{4}]; KT_NDVao: [{5}]; BD_NDRa: [{6}]; KT_NDRa: [{7}]; CPTre: [{8}]ph: [{9}]; CPSom: [{10}]ph: [{11}]; AfterOT: [{12}]ph: [{13}]; LunchMin: [{14}]; WKTime: [{15}]; WKDay: [{16}]; DayCount: [{17}]; QuaDem: [{18}]; CaMoRong: [{19}]; CaTuDo: [{20}]; TachCaDem: [{21}];"; string templateThongTinCa = @"Thông tin ca [{10}] (ký hiệu [{11}]): Vào ca lúc [{0}], Ra ca lúc [{1}], Ca [{2}], Ca làm việc [{3}] tiếng, được nghỉ trưa [{4}] phút, tính [{5}] công, cho phép trễ [{6}] phút, ra sớm [{7}] phút, thời gian làm thêm tối thiểu [{8}] phút, [{9}] qua xác nhận quản lý"; string shiftParams = string.Empty, thongtinCa = string.Empty; #endregion DateTime thang = (DateTime)e.Arguments[0]; List <cPhongBan> dsphongban = (List <cPhongBan>)e.Arguments[1]; #region lấy ngày BD và kết thúc DateTime ngaydauthang = MyUtility.FirstDayOfMonth(thang), ngaycuoithang = MyUtility.LastDayOfMonth(thang); var ngayBD_Bef2D = ngaydauthang.AddDays(-2d); var ngayKT_Aft2D = ngaycuoithang.AddDays(2d); #endregion try //general try catch { // khởi tạo các nhân viên chấm công thuộc phòng ban check kết công (được thao tác) và tính toán công, phụ cấp XL.KhoiTaoDSNV_ChamCong(m_DSNV, (from cPhongBan item in dsphongban select item.ID).ToList(), dsphongban); XL.XemCong_v08(m_DSNV, ngayBD_Bef2D, ngayKT_Aft2D); // sau khi tính công xong thì cập nhật lại xử lý các trường hợp công nhật var tableCongNhat = DAO.LayTableCongNhat(thang); foreach (DataRow row in tableCongNhat.Rows) { int macc = (int)row["UserEnrollNumber"]; DateTime ngayBD = (DateTime)row["NgayBatDau"]; DateTime ngayKT = (DateTime)row["NgayKetThuc"]; var nv = m_DSNV.Find(o => o.MaCC == macc); //tìm nv , ko tìm thấy thì tiếp tục if (nv == null) { continue; } //duyệt qua các ngày công để set lại phụ cấp, xoá hết các ds vắng float CongCongnhat = 0f; foreach (var ngayCong in nv.DSNgayCong.Where(o => o.Ngay >= ngayBD && o.Ngay <= ngayKT)) { ngayCong.PhuCaps = new PhuCap(); ngayCong.QuaDem = false; ngayCong.DSVang.Clear(); CongCongnhat += ngayCong.TongCong_4008; } // cập nhật số ngày công công nhật xuống csdl int kq1 = SqlDataAccessHelper.ExecNoneQueryString(" update DSNVChiCongNhatThang set SoNgayCong = @SoNgayCong where UserEnrollNumber= @UserEnrollNumber", new string[] { "@SoNgayCong", "@UserEnrollNumber" }, new object[] { CongCongnhat, macc }); //info ko cần log if (kq1 == 0) { MessageBox.Show(Resources.Text_CoLoi); } } // xoá bỏ các kết công cũ của tháng (nếu có) để ghi kết công mới cho tháng int kq = DAO.DelKetCongCa_Ngay(ngaydauthang, ngaycuoithang, (from nv in m_DSNV select nv.MaCC).ToList()); //bool flagError = false; foreach (var nv in m_DSNV) { foreach (var ngayCong in nv.DSNgayCong.Where(item => item.Ngay >= ngaydauthang && item.Ngay <= ngaycuoithang)) { foreach (var CIO in ngayCong.DSVaoRa) { int kq1 = 0; if (CIO.HaveINOUT < 0) { kq1 = DAO.InsKetCongCa(nv.MaCC, ngayCong.Ngay, (CIO.Vao != null) ? (DateTime?)CIO.Vao.Time : null, (CIO.Raa != null) ? (DateTime?)CIO.Raa.Time : null, null, string.Empty, false, false, false, false, false, //ver 4.0.0.4 VaoTreLaCV, RaSomLaCV false, false, false, 0f, false, 0f, //ver 4.0.0.8@BuGioTre, @BuGioSom, @BuPhepTre, @CongBuPhepTre, @BuPhepSom, @CongBuPhepSom, 0f, 0f, 0f, 0f, 0f, 0f, //ver 4.0.0.8 CongTrongCa, CongNgoaiCa, TruCongTreVR, TruCongSomVR, TruCongTreBu, TruCongSomBu, 0, false, string.Empty, null, null, null, null, null, null, null, null, string.Empty, string.Empty, CIO.HaveINOUT, 0f); } else { #region tạo shiftParams var sp = CIO.ThuocCa; shiftParams = string.Format(TemplateShiftParams, sp.Code, sp.ID, sp.Duty.Onn.ToString(@"d\ hh\:mm"), sp.Duty.Off.ToString(@"d\ hh\:mm"), sp.NhanDienVao.Onn.ToString(@"d\ hh\:mm"), sp.NhanDienVao.Off.ToString(@"d\ hh\:mm"), sp.NhanDienRaa.Onn.ToString(@"d\ hh\:mm"), sp.NhanDienRaa.Off.ToString(@"d\ hh\:mm"), sp.LateeMin.Minutes, sp.chophepTreTS.ToString(@"d\ hh\:mm"), sp.EarlyMin.Minutes, sp.chophepSomTS.ToString(@"d\ hh\:mm"), sp.AfterOTMin.Minutes, sp.batdaulamthemTS.ToString(@"d\ hh\:mm"), sp.LunchMin.Minutes, sp.WorkingTimeTS.TotalMinutes.ToString("#####"), sp.Workingday.ToString("0.0"), sp.DayCount, Convert.ToInt32(sp.QuaDem), Convert.ToInt32(sp.IsExtended), Convert.ToInt32(sp.Is_CaTuDo), Convert.ToInt32(sp.TachCaDem)); thongtinCa = string.Format(templateThongTinCa, sp.Duty.Onn.ToString(@"d\ hh\:mm"), sp.Duty.Off.ToString(@"d\ hh\:mm"), sp.Code, sp.WorkingTimeTS.TotalMinutes.ToString("#####"), sp.LunchMin.Minutes, sp.Workingday.ToString("0.0#"), sp.LateeMin.Minutes, sp.EarlyMin.Minutes, Convert.ToInt32(sp.AfterOTMin.TotalMinutes), CIO.DaXN ? "đã" : "chưa", sp.Code, sp.KyHieuCC); #endregion kq1 = DAO.InsKetCongCa(nv.MaCC, ngayCong.Ngay, CIO.Vao.Time, CIO.Raa.Time, CIO.ThuocCa.ID, CIO.ThuocCa.Code, CIO.DaXN, CIO.DuyetChoPhepVaoTre, CIO.DuyetChoPhepRaSom, CIO.VaoTreTinhCV, CIO.RaaSomTinhCV, //ver 4.0.0.4 CIO.ChoBuGioTre, CIO.ChoBuGioSom, CIO.ChoBuPhepTre, CIO.BuCongPhepTreCongDon, CIO.ChoBuPhepSom, CIO.BuCongPhepSomCongDon, //ver 4.0.0.8 CIO.CongTrongCa, CIO.CongNgoaiCa, CIO.TruCongTreVR, CIO.TruCongSomVR, CIO.TruCongTreBu, CIO.TruCongSomBu, //ver 4.0.0.8 CIO.OTMin, CIO.QuaDem, CIO.ThuocCa.KyHieuCC, CIO.TG.GioLamViec, CIO.TG.LamThem, CIO.TG.LamBanDem, CIO.TG.GioThuc, CIO.TG.VaoTre, CIO.TG.RaaSom, CIO.TD.BD_LV, CIO.TD.KT_LV, thongtinCa, shiftParams, CIO.HaveINOUT, CIO.Cong); } } if (ngayCong.DSVaoRa.Count != 0) { int kq2 = DAO.InsKetCongNgay(nv.MaCC, ngayCong.Ngay, ngayCong.TongCong_4008, /*ngayCong.TongNgayLVtest*/ 0f, ngayCong.PhuCaps._TongPC, //ver4.0.0.1 //ver 4.0.0.8 ngayCong.TongCong_4008,TongNgayLV=0f ngayCong.PhuCaps._30_dem, ngayCong.PhuCaps._50_TC, ngayCong.PhuCaps._100_TCC3, ngayCong.PhuCaps._100_LVNN_Ngay, ngayCong.PhuCaps._150_LVNN_Dem, ngayCong.PhuCaps._200_LeTet_Ngay, ngayCong.PhuCaps._250_LeTet_Dem, ngayCong.PhuCaps._Cus, ngayCong.TG.GioLamViec, ngayCong.TG.LamThem, ngayCong.TG.LamBanDem, ngayCong.TG.GioThuc, ngayCong.QuaDem, ngayCong.CongDinhMucDuoi8Tieng, ngayCong.CongTichLuy, ngayCong.TruCongTreVR, ngayCong.TruCongSomVR, //ver 4.0.0.8 ngayCong.TruCongTreBu, ngayCong.TruCongSomBu, ngayCong.CongBuPhepTre, ngayCong.CongBuPhepSom //ver 4.0.0.8 ); } //tbd fix lỗi phụ cấp công tác những ngày ko có làm việc else { if (ngayCong.DSVang.Count != 0) { int kq2 = DAO.InsKetCongNgay(nv.MaCC, ngayCong.Ngay, ngayCong.TongCong_4008, /*ngayCong.TongNgayLVtest*/ 0f, ngayCong.PhuCaps._TongPC, //ver4.0.0.1 //ver 4.0.0.8 ngayCong.TongCong_4008,TongNgayLV=0f ngayCong.PhuCaps._30_dem, ngayCong.PhuCaps._50_TC, ngayCong.PhuCaps._100_TCC3, ngayCong.PhuCaps._100_LVNN_Ngay, ngayCong.PhuCaps._150_LVNN_Dem, ngayCong.PhuCaps._200_LeTet_Ngay, ngayCong.PhuCaps._250_LeTet_Dem, ngayCong.PhuCaps._Cus, ngayCong.TG.GioLamViec, ngayCong.TG.LamThem, ngayCong.TG.LamBanDem, ngayCong.TG.GioThuc, ngayCong.QuaDem, ngayCong.CongDinhMucDuoi8Tieng, ngayCong.CongTichLuy, ngayCong.TruCongTreVR, ngayCong.TruCongSomVR, //ver 4.0.0.8 ngayCong.TruCongTreBu, ngayCong.TruCongSomBu, ngayCong.CongBuPhepTre, ngayCong.CongBuPhepSom //ver 4.0.0.8 ); } } } } // sau khi ghi kết công thì cập nhật tình trạng kết công (đã kết công), đồng thời ghi log đã kết công DAO.UpdInsKetCongBoPhan(ngaydauthang, (from cPhongBan item in dsphongban select item).ToList()); } catch (Exception ex) //general try catch { lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex); MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } }
// hàm xử lý ----------------------------------------------------------------------------- private void treePhongBan_AfterSelect(object sender, TreeViewEventArgs e) { try //general try catch { #region get ID node hiện tại và các node con m_listIDPhongBan.Clear(); if (e.Node.FirstNode != null) { XL.GetIDNodeAndChildNode(e.Node, ref m_listIDPhongBan); } else { var temp = ((cPhongBan)e.Node.Tag); if (temp.ChoPhep) { m_listIDPhongBan.Add(temp.ID); } } e.Node.Expand(); #endregion #region mất kết nối csdl thì thoát form if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false) { ACMessageBox.Show(Resources.Text_MatKetNoiCSDL, Resources.Caption_Loi, 4000); Close(); return; } #endregion #region lấy ngày BD và kết thúc, ngày điểm danh 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 ngaydiemdanh = dtpNgay.Value.Date; DateTime ngayBD_bef2D = ngaydiemdanh.AddDays(-2d); DateTime ngayKT_Aft2D = ngaydiemdanh.AddDays(2d); #endregion // lấy dsnv tất cả nv thuộc các phòng ban được chọn XL.KhoiTaoDSNV_ChamCong(m_DSNV, m_listIDPhongBan, m_DSPhg); //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 int SoNVDangLamViec, SoNVDaRaVe, SoNVKoHienDien, SoNVVang_LyDo, SoNVNghi; try { //logic điểm danh ngày được input, truyền thêm datetime.Now để xác định nếu trong vòng 24h kể từ hiện tại trở về trước, nếu vào ko ra thì vẫn còn làm việc // nếu vào ko ra trên 24h nghĩa là ngày đó quên chấm công XL.DiemDanh_v08(m_DSNV, ngayBD_bef2D, ngayKT_Aft2D, ngaydiemdanh, DateTime.Now); m_BangCTDiemDanh.Rows.Clear(); XL.TaoTableDiemDanh(m_DSNV, m_BangCTDiemDanh, ngaydiemdanh, out SoNVDangLamViec, out SoNVDaRaVe, out SoNVKoHienDien, out SoNVVang_LyDo, out SoNVNghi); } catch (Exception exception) { lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), exception); MessageBox.Show(Resources.Text_MatKetNoiCSDL, Resources.Caption_Loi); GC.Collect(); return; } //4. xử lý dữ liệu để đưa lên lưới tổng hợp tbTongSoNV.Text = m_DSNV.Count.ToString(); tbSoNVDangLamViec.Text = SoNVDangLamViec.ToString(); tbSoNVDaRaVe.Text = SoNVDaRaVe.ToString(); tbSoNVVang.Text = SoNVKoHienDien.ToString(); tbVangLyDo.Text = SoNVVang_LyDo.ToString(); tbVangNghi.Text = SoNVNghi.ToString(); dgrdTongHop.DataSource = m_BangCTDiemDanh; } catch (Exception ex) //general try catch { lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex); MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi); } }