private void loadTreeSubNode(ref TreeNode ParentNode, int idPhongBanTrucThuoc, IOrderedEnumerable <DataRow> dsphongban, cPhongBan PhongTrucThuoc, List <cPhongBan> DSTatCaPhong) { IOrderedEnumerable <DataRow> childsDR = dsphongban.Where(item => (int)item["RelationID"] == idPhongBanTrucThuoc).ToList().OrderBy(item => (int)item["ViTri"]); foreach (DataRow dataRow in childsDR) { var enable = (bool)(dataRow["Enable"]); var string1 = enable == false ? "[Disable]" : string.Empty; var string2 = dataRow["Description"].ToString(); var phongCon = new cPhongBan { TrucThuoc = PhongTrucThuoc, Phong = new ID_Description { ID = (int)dataRow["IDDepartment"], Description = string2 }, LevelID = (int)dataRow["LevelID"], ViTri = (int)dataRow["ViTri"], Enable = (bool)dataRow["Enable"] }; TreeNode child = new TreeNode { Text = string1 + string2, Tag = phongCon }; ParentNode.Nodes.Add(child); DSTatCaPhong.Add(phongCon); loadTreeSubNode(ref child, (int)dataRow["IDDepartment"], dsphongban, phongCon, DSTatCaPhong); } }
private static void GetListNode_Thaotac(TreeNode root, List <cPhongBan> dsPhongduocThaotac, ref List <TreeNode> nodes) { if (root == null) { return; } // nếu currNode được phép thao tác thì add current node for (int i = 0; i < dsPhongduocThaotac.Count; i++) { cPhongBan phongDuocThaotac = dsPhongduocThaotac[i]; cPhongBan phongDangXet = (cPhongBan)root.Tag; if (phongDangXet.ID == phongDuocThaotac.ID) { phongDangXet.ChoPhep = true; nodes.Add(root); } } if (root.Nodes.Count > 0) { // nếu có node con thì add các node con thoả điều kiện for (int i = 0; i < root.Nodes.Count; i++) { TreeNode node = root.Nodes[i]; GetListNode_Thaotac(node, dsPhongduocThaotac, ref nodes); } } // ko có node con thì dừng }
private TreeView loadTreePhgBan(TreeView tvDSPhongBan) { // load các phòng ban Enable được phép thao tác theo tài khoản hiện tại và sắp xếp theo vị trí tvDSPhongBan.Nodes.Clear(); DataTable tableDSPhong = SqlDataAccessHelper.ExecSPQuery(SPName6.DeptPrivilege_DocPhongBanThaoTacV6.ToString(), new SqlParameter("@UserID", GlobalVariables.CurrentUserID), new SqlParameter("@ChoPhepThaoTac", true), new SqlParameter("@RelationDeptEnable", true)); var allPhongDR = (from DataRow row in tableDSPhong.Rows select row).OrderBy(s => (int)s["ViTri"]); // xác định root node là Node luôn có RelationID = 0(IDCha = 0 tức là gốc ko có cha nữa) // nếu ko tìm được node root này thì thoát form var relationID_0_DR = allPhongDR.Where(o => (int)o["RelationID"] == 0).ToList().OrderBy(s => (int)s["ViTri"]); if (!relationID_0_DR.Any()) { return(null); } // sau khi xác định root thì lần lượt load từng subNode vào và gán tag là dataRow phòng m_AllPhong = new List <cPhongBan>(); foreach (var dataRow in relationID_0_DR) { var string2 = dataRow["Description"].ToString(); var phongROOT = new cPhongBan { TrucThuoc = null, Phong = new ID_Description { ID = (int)dataRow["IDDepartment"], Description = string2 }, LevelID = (int)dataRow["LevelID"], ViTri = (int)dataRow["ViTri"], Enable = (bool)dataRow["Enable"] }; TreeNode parentNode = new TreeNode { Text = string2, Tag = phongROOT }; tvDSPhongBan.Nodes.Add(parentNode); m_AllPhong.Add(phongROOT); loadTreeSubNode(ref parentNode, (int)dataRow["IDDepartment"], allPhongDR /*TatcaPhongban*/, phongROOT, m_AllPhong); } return(tvDSPhongBan); }
public static void KhoiTaoDSPhongBan(List <cPhongBan> phongBans) { phongBans.Clear(); DataTable table = DAO5.LayDSTatCaPhongBan(); phongBans.AddRange(from DataRow row in table.Rows select new cPhongBan { ID = (int)row["ID"], Ten = row["Description"].ToString(), ViTri = (row["ViTri"] != DBNull.Value) ? (int)row["ViTri"] : int.MaxValue, // các phòng chưa được set thứ tự thì nằm bên dưới idParent = (int)row["RelationID"], //info ở đây sẽ ko xảy ra TH = null vì từ csdl sẽ ko null nhưng vẫn làm đúng, chỉ group phòng ban theo nv là bị null ChoPhep = false }); foreach (cPhongBan phong in phongBans) { cPhongBan parent = phongBans.FirstOrDefault(item => item.ID == phong.idParent); // info idparent = 0 nghĩa là node gốc phong.parent = parent; } }
public static void GetIDNodeAndChildNode(TreeNode root, ref List <int> listID) { if (root == null) { return; } cPhongBan phong = (cPhongBan)root.Tag; if (phong != null && phong.ChoPhep) { listID.Add(phong.ID); } if (root.Nodes.Count > 0) { foreach (TreeNode node in root.Nodes) { GetIDNodeAndChildNode(node, ref listID); } } // xuốn đến đây tương đương root.Nodes.Count== 0; return }
private void ChuanBiDuLieuXuatLuong(List <cUserInfo> dsnv, DateTime ngaydauthang, DateTime ngaycuoithang, DataTable tableKetLuongThang, DataTable tableKetcongNgay, DataTable tableKetcongCa, DataTable tableXPVang, DataTable tableNgayLe, DataTable tableDSNVChiCongnhatThang) { #region lấy dữ liệu kết lương để xuất //var tableKetLuongThang = DAO.LayKetLuongThang(ngaydauthang); //var tableThongsoKetluongThang = DAO.LayThongsoKetluongThang(ngaydauthang); //var tableDSNVChiCongnhatThang = DAO.LayTableCongNhat(ngaydauthang); //var tableTongLuongCongnhat = SqlDataAccessHelper.ExecuteQueryString( // @"select CAST(SUM (SoNgayCong*DonGiaLuong) as float) from DSNVChiCongNhatThang where Thang=@Thang", // new string[] { "@Thang" }, new object[] { ngaydauthang }); //var tongLuongCongnhat = (tableTongLuongCongnhat.Rows[0][0] != DBNull.Value) ? (double)tableTongLuongCongnhat.Rows[0][0] : 0d; //var tongLuongDieuchinh = (from DataRow row in tableKetLuongThang.Rows // let luongdieuchinh = (row["LuongDieuChinh"] != DBNull.Value) // ? (double)row["LuongDieuChinh"] // : 0d // select luongdieuchinh).Sum(); //var tableKetcongNgay = DAO.LayKetcongNgay(ngaydauthang, ngaycuoithang); //var tableKetcongCa = DAO.LayKetcongCa(ngaydauthang, ngaycuoithang); //var tableXPVang = DAO.LayTableXPVang(ngaydauthang, ngaycuoithang); //var tableNgayLe = DAO.DocNgayLe(ngaydauthang, ngaycuoithang); #endregion #region tái tạo lại danh sách phòng ban của thời điểm kết lương để biết nv thuộc group phòng ban nào tại thời điểm kết lương var dsphongban = (from DataRow row in tableKetLuongThang.Rows group row by new cPhongBan { ID = (int)row["IDPhong"], Ten = row["TenPhong"].ToString(), ViTri = (int)row["ViTriPhong"], idParent = (int)row["RelationIDDept"] } into @group orderby @group.Key.ViTri select @group.Key).ToList(); foreach (var item in dsphongban) { // mỗi item tương ứng 1 phòng ban int?idParent = item.idParent; if (idParent != null) { cPhongBan parent = dsphongban.Find(o => o.ID == idParent); // info trường hợp idParent == 0 --> ko có phòng id=0 --> parent = null item.parent = parent; } } #endregion foreach (DataRow row in tableKetLuongThang.Rows) //info chỉ lấy các nhân viên chính thức, vừa chính thức vừa công nhật, thiếu các nv công nhật { cUserInfo nv = new cUserInfo(); nv.MaCC = (int)row["UserEnrollNumber"]; 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); } XL.LoadDSXPVang_Le(nv.MaCC, tableXPVang, tableNgayLe, nv.DSVang); XL.PhanPhoi_DSVang7(nv.DSVang, nv.DSNgayCong); //kiểm tra nv đó có làm công nhật ko ? tìm nv chính thức trong dsnv công nhật // vì bảng kết lương chỉ bao gồm các nhân viên chính thức , các nhân viên công nhật ko chính thức sẽ ko có trong này XL.LoadThongtinLamViecCongNhat(nv.MaCC, ref nv.NgayBDCongnhat, ref nv.NgayKTCongnhat, ref nv.LoaiCN, nv.DSNgayCong, tableDSNVChiCongnhatThang); #region lấy thông tin cá nhân nv, phòng ban tổng công, phụ cấp, lương cơ bản, lương sản phẩm ... để xuất nv.MaNV = row["UserFullCode"].ToString(); //col 1 nv.TenNV = row["UserFullName"].ToString(); nv.HeSo = new HeSo { LuongCB = (float)row["HSLCB"], LuongCV = (float)row["HSLCV"], BHCongThem_ChoGD_PGD = (float)row["HSBHCongThem"], LCBTT17 = (float)row["HSLCBTT17"], PCCVTT17 = (float)row["HSPCCV"], PCDHTT17 = (float)row["HSPCDH"], PCTNTT17 = (float)row["HSPCTN"] }; nv.PhongBan = dsphongban.Find(o => o.ID == (int)row["IDPhong"]); nv.IDChucVu = (int)row["IDChucVu"]; nv.ChucVu = row["ChucVu"].ToString(); nv.ThongKeThang.Cong = (float)row["TongCong"]; nv.ThongKeThang.Le = (float)row["TongLe"]; nv.ThongKeThang.Phep = (float)row["TongPhep"]; nv.ThongKeThang.H_CT_PT = (float)row["TongH_CT_PT"]; nv.ThongKeThang.NgayQuaDem = (int)row["TongQuaDem"]; nv.ThongKeThang.CongCV = (float)row["TongCongCV"]; nv.ThongKeThang.BHXH = (float)row["TongBHXH"]; nv.ThongKeThang.NghiRo = (float)row["TongRo"]; nv.ThongKeThang.PTDT = (float)row["TongPTDT"]; //DANGLAM nv.ThongKeThang.SoNgayNghiRO_NguyenNgay = (int)row["ViecRiengKoComTrua"]; //ver 4.0.0.8 nv.ThongKeThang.PhuCaps._30_dem = (float)row["TongPCDem"]; nv.ThongKeThang.PhuCaps._50_TC = (float)row["TongPCTC"]; nv.ThongKeThang.PhuCaps._100_TCC3 = (float)row["TongPCTC_Dem"]; nv.ThongKeThang.PhuCaps._100_LVNN_Ngay = (float)row["TongPC200"]; nv.ThongKeThang.PhuCaps._150_LVNN_Dem = (float)row["TongPC260"]; nv.ThongKeThang.PhuCaps._200_LeTet_Ngay = (float)row["TongPC300"]; nv.ThongKeThang.PhuCaps._250_LeTet_Dem = (float)row["TongPC390"]; nv.ThongKeThang.PhuCaps._Cus = (float)row["TongPCCus"]; nv.ThongKeThang.PhuCaps._TongPC = (float)row["TongPC"]; // tính toán dưới sql = tổng các loại phụ cấp, ko lưu dưới csdl nv.chiTietLuong.LCB_Theo.CongThucTe = (double)row["LuongCB_TheoCongThucTe"]; nv.chiTietLuong.LCB_Theo.CheDoNghi = (double)row["LuongCB_TheoCheDoNghi"]; nv.chiTietLuong.LCB_Theo.CongCV = (double)row["LuongCB_TheoCongCV"]; nv.chiTietLuong.LCB_Theo.PhuCap = (double)row["PCLuongCB"]; // với 4 chi tiết lương này có thể tính được các tổng LCB nv.chiTietLuong.LSP_Theo.CongThucTe = (double)row["LuongSP_TheoCongThucTe"]; nv.chiTietLuong.LSP_Theo.CheDoNghi = (double)row["LuongSP_TheoCheDoNghi"]; nv.chiTietLuong.LSP_Theo.PhuCap = (double)row["PCLuongSP"]; // với 2 chi tiết lương này có thể tính được các tổng LSP nv.chiTietLuong.LuongDieuChinh = (double)row["LuongDieuChinh"]; nv.chiTietLuong.KhauTru.TamUng = (double)row["TamUng"]; nv.chiTietLuong.MucDongBHXH = (float)row["MucDongBHXH"]; nv.chiTietLuong.KhauTru.BHXH = (double)row["KhauTruBHXH"]; nv.chiTietLuong.KhauTru.ThuChiKhac = (double)row["ThuChiKhac"]; nv.chiTietLuong.TienComTrua = (double)row["TienComTrua"]; nv.chiTietLuong.ThucLanh = (double)row["ThucLanh"]; #endregion dsnv.Add(nv); } }