public List <clsTinhLuong_DTO> lsBangLuong(int Nam, int Thang, string MaPhong)
        {
            clsBangLuong_DAO daoBangLuong = new clsBangLuong_DAO();
            DataTable        BangLuong    = daoBangLuong.layBangLuong(Nam, Thang, MaPhong); //bảng lương theo tháng, của phòng nào đó

            if (BangLuong.Rows.Count == 0)                                                  // tiền lương chưa được tính
            {
                TinhLuongTheoBangCong(Nam, Thang, MaPhong);
            }
            else
            {
                for (int i = 0; i < BangLuong.Rows.Count; i++)
                {
                    //nếu null khoong cho gán
                    clsTinhLuong_DTO Luong = new clsTinhLuong_DTO();
                    DataRow          r     = BangLuong.Rows[i];
                    Luong.MaNV                = r["MANV"].ToString();
                    Luong.HoTen               = r["HO"].ToString() + " " + r["TEN"].ToString();
                    Luong.SoNgayDiLam         = (int)r["SONGAYDILAM"];
                    Luong.SoNgayNghiCoPhep    = (int)r["SONGAYNGHICOPHEP"];
                    Luong.SoNgayNghiKhongPhep = (int)r["SONGAYNGHIKHONGPHEP"];
                    Luong.TongThuNhap         = (double)r["TONGTHUNHAP"];
                    Luong.BHXH                = (double)r["BHXH"];
                    Luong.BHYT                = (double)r["BHYT"];
                    Luong.BHTN                = (double)r["BHTN"];
                    Luong.TienLuong           = (double)r["TIENLUONG"];
                    lsBangLuongTheoBangCong.Add(Luong);
                }
            }
            return(lsBangLuongTheoBangCong);
        }
        public void TinhLuongTheoBangCong(int Nam, int Thang, string MaPhong)
        {
            clsTinhLuong_DAO daoTinhLuong = new clsTinhLuong_DAO();
            DataTable        BangChamCong = daoTinhLuong.LayBangChamCong(Nam, Thang, MaPhong);

            //nếu bảng chấm công có tồn tại
            if (BangChamCong.Rows.Count > 0)
            {
                clsQuyDinhLuong_BUS busQDL = new clsQuyDinhLuong_BUS();
                clsQuyDinhLuong_DTO QDL    = busQDL.LayQuyDinhLuong();
                int soNgayTrongThang       = DateTime.DaysInMonth(Nam, Thang);
                for (int i = 0; i < BangChamCong.Rows.Count; i++)
                {
                    clsTinhLuong_DTO Luong  = new clsTinhLuong_DTO();
                    DataRow          r      = BangChamCong.Rows[i];
                    string           MaNV   = r["MANV"].ToString();
                    float            HSCV   = daoTinhLuong.LayHeSoLuongTheoCongViec(MaNV);
                    float            HSBC   = daoTinhLuong.LayHeSoLuongTheoBangCap(MaNV);
                    int SoNgayDiLam         = 0; //số ngày đi làm
                    int SoNgayNghiKhongPhep = 0; //số ngày nghỉ không phép
                    int SoNgayNghiCoPhep    = 0; //số ngày nghủ có phép
                    int SoNgayChuNhat       = 0; //số ngày cn
                    for (int j = 2; j < soNgayTrongThang + 2; j++)
                    {
                        if (r[j].ToString() != "CN")
                        {
                            if (r[j].ToString() == "K")
                            {
                                SoNgayNghiKhongPhep++;
                            }
                            else if (r[j].ToString() == "P")
                            {
                                SoNgayNghiCoPhep++;
                            }
                            else
                            {
                                string gc = r[j].ToString();
                                SoNgayDiLam++;    //số ngày đi làm
                            }
                        }
                        else
                        {
                            SoNgayChuNhat++;
                        }
                    }

                    //if (SoNgayNghiCoPhep > 3)
                    //    SoNgayDiLam = SoNgayDiLam - (SoNgayNghiCoPhep - 3);// nghỉ 3 bữa có phép sẽ trừ 1 ngày đi làm
                    int    ngayCongChuan    = soNgayTrongThang - SoNgayChuNhat;
                    float  LuongCoBan       = ((float)QDL.LuongToiThieu * HSBC * HSCV);   //Bc: bằng cấp, CV: bậc công việc
                    float  TongThuNhap      = (LuongCoBan) / ngayCongChuan * SoNgayDiLam; //DL là số ngày đi làm
                    double LuongDongBaoHiem = TongThuNhap * (QDL.BHYT + QDL.BHXH + QDL.BHTN);
                    double LuongThucTe      = TongThuNhap - LuongDongBaoHiem;
                    Luong.MaNV                = MaNV;
                    Luong.HoTen               = r["HO"].ToString() + " " + r["TEN"].ToString();
                    Luong.SoNgayDiLam         = SoNgayDiLam;
                    Luong.SoNgayNghiCoPhep    = SoNgayNghiCoPhep;
                    Luong.SoNgayNghiKhongPhep = SoNgayNghiKhongPhep;
                    Luong.TongThuNhap         = TongThuNhap;
                    Luong.BHXH                = TongThuNhap * QDL.BHXH;
                    Luong.BHYT                = TongThuNhap * QDL.BHYT;
                    Luong.BHTN                = TongThuNhap * QDL.BHTN;
                    Luong.TienLuong           = LuongThucTe;
                    Luong.Thang               = Thang;
                    Luong.Nam = Nam;
                    lsBangLuongTheoBangCong.Add(Luong);
                }
                //lưu bảng lương vào Database
                clsBangLuong_BUS busLuuBangLuong = new clsBangLuong_BUS();
                busLuuBangLuong.LuuBangLuong(lsBangLuongTheoBangCong);
            }
            //#endregion
        }