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);
            }
        }
Example #2
0
        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);
        }
Example #4
0
        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;
            }
        }
Example #5
0
        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
        }
Example #6
0
        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);
            }
        }