public clsQuyDinhLuong_DTO LayQuyDinhLuong()
        {
            SqlConnection       conn    = ThaoTacDuLieu.TaoVaMoKetNoi();
            string              sql     = "SELECT * FROM QUYDINHLUONG WHERE MAQD = 'QD1'";
            SqlCommand          cmd     = ThaoTacDuLieu.TaoDoiTuongTruyVan(sql, conn);
            SqlDataReader       dr      = cmd.ExecuteReader();
            clsQuyDinhLuong_DTO QuyDinh = new clsQuyDinhLuong_DTO();

            while (dr.Read())
            {
                if (!dr.IsDBNull(0))
                {
                    QuyDinh.MaQD = dr.GetString(0);
                }
                if (!dr.IsDBNull(1))
                {
                    QuyDinh.LuongToiThieu = dr.GetDecimal(1);
                }
                if (!dr.IsDBNull(2))
                {
                    QuyDinh.BHXH = dr.GetDouble(2);
                }
                if (!dr.IsDBNull(3))
                {
                    QuyDinh.BHYT = dr.GetDouble(3);
                }
                if (!dr.IsDBNull(4))
                {
                    QuyDinh.BHTN = dr.GetDouble(4);
                }
            }
            ThaoTacDuLieu.DongKetNoi(conn);
            return(QuyDinh);
        }
 private void btnCapNhat_Click(object sender, EventArgs e)
 {
     try
     {
         clsQuyDinhLuong_DTO QuyDinh = new clsQuyDinhLuong_DTO();
         clsQuyDinhLuong_BUS BUS     = new clsQuyDinhLuong_BUS();
         QuyDinh.LuongToiThieu = Convert.ToInt32(txtLuongCoBan.Text.Replace(",", ""));
         QuyDinh.BHXH          = Convert.ToDouble(nudBHXH_NV.Value / 100);
         QuyDinh.BHYT          = Convert.ToDouble(nudBHYT_NV.Value / 100);
         QuyDinh.BHTN          = Convert.ToDouble(nudBHTT_NV.Value / 100);
         if (BUS.CapNhatQuyDinhLuong(QuyDinh))
         {
             MessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
             clsNhatKy_BUS BUSNK = new clsNhatKy_BUS();
             BUSNK.ThemNhatKy(Program.NhanVien_Login.TaiKhoan, DateTime.Now, string.Format("{0} đã cập nhật quy định lương", Program.NhanVien_Login.TaiKhoan));
         }
         loadDuLieuLuong();
     }
     catch (FormatException fe)
     {
         MessageBox.Show("Vui lòng điền Lương tối thiểu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
     }
     catch (NullReferenceException ex)
     {
         MessageBox.Show("Vui lòng điền đầy đủ các trường", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
     }
 }
        public bool CapNhatQuyDinhLuong(clsQuyDinhLuong_DTO QuyDinh)
        {
            SqlConnection conn = ThaoTacDuLieu.TaoVaMoKetNoi();
            string        sql  = string.Format("UPDATE QUYDINHLUONG SET LUONGTOITHIEU = {0}, BHXH = {1},BHYT = {2}, BHTN = {3} WHERE MAQD = 'QD1'", QuyDinh.LuongToiThieu, QuyDinh.BHXH, QuyDinh.BHYT, QuyDinh.BHTN);
            SqlCommand    cmd  = ThaoTacDuLieu.TaoDoiTuongTruyVan(sql, conn);
            int           kq   = (int)cmd.ExecuteNonQuery();

            ThaoTacDuLieu.DongKetNoi(conn);
            return(kq > 0);
        }
        private void loadDuLieuLuong()
        {
            clsQuyDinhLuong_BUS BUS     = new clsQuyDinhLuong_BUS();
            clsQuyDinhLuong_DTO QuyDinh = BUS.LayQuyDinhLuong();
            //Giá trị mặc định
            int luong = Convert.ToInt32(QuyDinh.LuongToiThieu);

            txtLuongCoBan.Text = string.Format("{0:#,##0}", luong);
            formatPhanTram();
            nudBHYT_NV.Value = Convert.ToDecimal(QuyDinh.BHYT) * 100;
            nudBHXH_NV.Value = Convert.ToDecimal(QuyDinh.BHXH) * 100;
            nudBHTT_NV.Value = Convert.ToDecimal(QuyDinh.BHTN) * 100;
        }
        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
        }
        public bool CapNhatQuyDinhLuong(clsQuyDinhLuong_DTO QuyDinh)
        {
            clsQuyDinhLuong_DAO DAO = new clsQuyDinhLuong_DAO();

            return(DAO.CapNhatQuyDinhLuong(QuyDinh));
        }