private void dgrdGioKDQD_SelectionChanged(object sender, EventArgs e)
        {
            // mỗi lần chọn 1 row thì load dữ liệu vào các group thêm xóa sửa
            if (dgrdGioKDQD.SelectedRows.Count == 0)               // trường hợp này xảy ra sau khi gán dataSource tức load lần đầu hay reload
            //reset từng  group

            {
                chkGioVao.Checked = false;
                chkGioRaa.Checked = false;
                MyUtility.ClearControlText(tbCa_Them, tbGioCu_Suaa, tbCa_Suaa, tbGioCu_Xoaa, tbGioCuu_ChuyenDoi);
                tbCa_Them.Tag = null;
                tbCa_Suaa.Tag = null;
                //không row nào được chọn thì disable button, ko cho thực hiện thao tác
                MyUtility.EnableDisableControl(false, btnThem, btnXoaa, btnSuaa, btnChuyenDoi, btnChonCa_Them, btnChonCa_Suaa);
                return;
            }

            //chuyển từ dataGridViewRow sang DataRowView sang DataRow
            var row = (DataRowView)(dgrdGioKDQD.SelectedRows[0]).DataBoundItem;
            var CIO = (row["cCheckInOut"] != DBNull.Value) ? (cCheckInOut)row["cCheckInOut"] : null;

            //2. lấy dữ liệu và load group
            var ngayCong = (row["cNgayCong"] != DBNull.Value) ? (cNgayCong)row["cNgayCong"] : null;
            var chk      = (row["cCheck"] != DBNull.Value) ? (cCheck)row["cCheck"] : null;

            LoadGroup_Them(ngayCong.Ngay, CIO);
            LoadGroup_Suaa(ngayCong, CIO, chk);
            LoadGroup_Xoaa(chk);
        }
 private void LoadGroup_Them(DateTime ngay, cCheckInOut CIO)
 {
     MyUtility.EnableDisableControl(true, btnChonCa_Them, btnThem);            //vì thêm giờ ko cần xác định giờ cũ, chỉ insert data nên mặc định cho phép enable
     MyUtility.ClearControlText(tbCa_Them, tbGhichu_Them);
     tbCa_Them.Tag             = (CIO == null || CIO.HaveINOUT < 0) ? null : CIO.ThuocCa;
     tbCa_Them.Text            = (CIO == null || CIO.HaveINOUT < 0) ? string.Empty : CIO.ThuocCa.Code;
     chkGioVao.Checked         = (CIO != null && CIO.HaveINOUT == -2);
     chkGioRaa.Checked         = (CIO != null && CIO.HaveINOUT == -1);
     dtpVao_Them.Value         = new DateTime(ngay.Year, ngay.Month, ngay.Day, 0, 0, 1);
     dtpRaa_Them.Value         = new DateTime(ngay.Year, ngay.Month, ngay.Day, 0, 0, 1);
     cbLyDo_Them.SelectedIndex = 0;
 }
 private void LoadGroup_Xoaa(cCheck check)
 {
     if (check == null)             // check null thì reset group
     {
         MyUtility.ClearControlText(tbGioCuu_ChuyenDoi, tbGioCu_Xoaa, tbGhiChu_Xoaa);
         cbLyDo_Xoaa.SelectedIndex = 0;
         MyUtility.EnableDisableControl(false, btnChuyenDoi, btnXoaa);
     }
     else              // check ko null
     {
         tbGioCu_Xoaa.Text         = tbGioCuu_ChuyenDoi.Text = ((check.MachineNo % 2 == 1) ? "Vào" : "Ra") + " " + check.Time.ToString("H:mm ddd d/M", Application.CurrentCulture);
         cbLyDo_Xoaa.SelectedIndex = 0;
         tbGhiChu_Xoaa.Text        = string.Empty;
         MyUtility.EnableDisableControl(true, btnChuyenDoi, btnXoaa);
     }
 }
        private void ResetDataOfControl()
        {
            //chú ý ko xóa tag của button Chọn ca
            lbGioLV.Tag           = null;
            lbGioCheckVT.Tag      = null;
            lbVaoTre.Tag          = null;
            lbRaaSom.Tag          = null;
            lbOLaiChuaXN.Tag      = null;
            lbCurrentCIO.Tag      = null;       // ẩn ko hiển thị text
            lbCurrentNgayCong.Tag = null;       // ẩn ko hiển thị text
            timeEditXacNhanOT.Tag = null;

            MyUtility.CheckedCheckBox(false, checkChoPhepTre, checkChoPhepSom, checkVaoTreTinhCV, checkRaaSomTinhCV, checkXNLamThem);
            MyUtility.ClearControlText(lbGioLV, lbGioCheckVT, lbVaoTre, lbRaaSom, lbOLaiChuaXN, tbThongTinKhac, cbXNLyDo, tbXNGhiChu);

            timeEditXacNhanOT.Time = DateTime.Today.Date;             //reset về timezero 0:00
        }
 void clearAllField()
 {
     MyUtility.ClearControlText(new Control[]
     {
         textBoxShiftcode, maskedTextBoxVao, maskedTextBoxRaa, textBoxWKTime, maskedTextBoxWKDay,
         textBoxMoTa, textBoxKyhieu,
         maskedTextBoxBDLunch, maskedTextBoxKTLunch
     });
     numOnnInn.Value           = 0;
     numCutInn.Value           = 0;
     numOnnOut.Value           = 0;
     numCutOut.Value           = 0;
     numLateGrace.Value        = 0;
     numEarlyGrace.Value       = 0;
     numAfterOT.Value          = 0;
     lbShiftID.Tag             = null;
     checkBoxTachCaDem.Checked = false;
     checkBoxEnable.Checked    = false;
     checkBoxCaMR.Checked      = false;
     // 2 combobox
     comboBoxCaTruoc.DataSource = null;
     comboBoxCaSau.DataSource   = null;
 }
예제 #6
0
        private void dgrdDSLuongCongnhat_SelectionChanged(object sender, EventArgs e)
        {
            if (dgrdDSLuongCongnhat.SelectedRows.Count == 0)
            {
                MyUtility.ClearControlText(tbTenNV, tbMaNV, tbPhongBan, tbChucvu, tbCong);
                lbUserEnrollNumber.Tag = null;
                numDonGiaLuong.Value   = 0;
                numTamUng.Value        = 0;
                btnCapNhat.Enabled     = false;            // ko chọn dòng nào--> ko fill thông tin, disable btnCapnhat
                return;
            }

            btnCapNhat.Enabled = true;            // có chọn dòng, enable btnCapnhat
            // lấy dòng được chọn
            DataRowView selectedRow = (DataRowView)(dgrdDSLuongCongnhat.SelectedRows[0]).DataBoundItem;

            if (selectedRow == null)
            {
                return;
            }

            //fill thông tin nhân viên công nhật của dòng được chọn
            tbTenNV.Text            = selectedRow["UserFullName"].ToString();
            tbMaNV.Text             = selectedRow["UserFullCode"].ToString();
            lbUserEnrollNumber.Tag  = selectedRow["UserEnrollNumber"];
            lbUserEnrollNumber.Text = ((int)selectedRow["UserEnrollNumber"]).ToString();
            tbPhongBan.Text         = selectedRow["TenPhong"].ToString();
            tbPhongBan.Tag          = (selectedRow["IDPhong"] != DBNull.Value) ? (int)selectedRow["IDPhong"] : -1;
            tbChucvu.Text           = selectedRow["ChucVu"].ToString();
            tbCong.Text             = ((float)selectedRow["SoNgayCong"]).ToString("00.00");
            var dongiaLuong = (selectedRow["DonGiaLuong"] == DBNull.Value) ? 0 : (int)selectedRow["DonGiaLuong"];
            var tamung      = (selectedRow["TamUng"] == DBNull.Value) ? 0d : Convert.ToDouble(selectedRow["TamUng"]);

            numDonGiaLuong.Value = dongiaLuong;
            numTamUng.Value      = Convert.ToDecimal(tamung);
        }
        private void LoadGroup_Suaa(cNgayCong ngayCong, cCheckInOut cio, cCheck check)
        {
            if (check == null)
            {
                MyUtility.ClearControlText(tbGioCu_Suaa, tbCa_Suaa, tbGhiChu_Suaa);
                tbCa_Suaa.Tag = null;
                MyUtility.EnableDisableControl(false, btnChonCa_Suaa, btnSuaa);                // ko tồn tại giờ cũ nên ko cho sửa, chuyển đổi
                cbLyDo_Suaa.SelectedIndex = 0;
            }
            else
            {
                // xem xét check là CIO_V hay CIO_A, CIO_A cho sửa, CIO_V ko cho sửa, trong CIO_A coi có phải là check đệm giữa ca ko
                tbGioCu_Suaa.Text = ((check.MachineNo % 2 == 1) ? "Vào" : "Ra") + " " + check.Time.ToString("H:mm ddd d/M");

                dtpGioMoi_Sua.Value       = new DateTime(check.Time.Year, check.Time.Month, check.Time.Day, check.Time.Hour, check.Time.Minute, check.Time.Second);
                tbCa_Suaa.Tag             = (cio == null || cio.HaveINOUT < 0) ? null : cio.ThuocCa;
                tbCa_Suaa.Text            = (cio == null || cio.HaveINOUT < 0) ? string.Empty : cio.ThuocCa.Code;
                cbLyDo_Suaa.SelectedIndex = 0;
                tbGhiChu_Suaa.Text        = string.Empty;

                //tồn tại giờ cũ nên cho phép sửa
                MyUtility.EnableDisableControl(true, btnChonCa_Suaa, btnSuaa);
            }
        }
        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            string maNV  = tbMaNV.Text;
            string hoten = tbHoTenNV.Text.TrimEnd('?', '.', ',');

            string[] words    = hoten.Split(' ');
            string   ten      = (words.Last(item => item != string.Empty));
            int      gioitinh = (radNam.Checked) ? 0 : 1;
            int      maCC;

            if (int.TryParse(tbMaCC.Text, out maCC) == false)
            {
                ACMessageBox.Show("Mã chấm công phải là số hợp lệ.", Resources.Caption_Loi, 2000);
                return;
            }
            string   tenCC = tbUserEnrollName.Text;
            string   mathetu = tbMaTheTu.Text;
            DateTime ngayvaolam = dtpNgayVaoLam.Value.Date;
            int      idchucvu = (int)cbChucVu.SelectedValue;
            int      idphong = (int)cbPhongBan.SelectedValue;
            string   tenphong = (cbPhongBan.SelectedItem != null) ? cbPhongBan.SelectedItem.ToString() : cbPhongBan.SelectedText;
            int      idlichtrinh = (int)cbLichTrinh.SelectedValue;
            string   tenLichTrinh = (cbLichTrinh.SelectedItem != null) ? cbLichTrinh.SelectedItem.ToString() : cbLichTrinh.SelectedText;
            float    hslcb, hslcv, hsbhxhcongthem;

            if (float.TryParse(tbHSLCB.Text, out hslcb) == false ||
                float.TryParse(tbHSLCV.Text, out hslcv) == false ||
                float.TryParse(tbHSBHXHCongThem.Text, out hsbhxhcongthem) == false)
            {
                ACMessageBox.Show(Resources.Text_HeSoLCB_CV_BHXH_ChuaHopLe, Resources.Caption_Loi, 2000);
                return;
            }
            bool userEnabled = checkUserEnabled.Checked;

            if (mode == 1)
            {
                var tableKiemTraTonTai = SqlDataAccessHelper.ExecuteQueryString(
                    "select * from UserInfo where UserEnrollNumber = @UserEnrollNumber",
                    new string[] { "@UserFullCode", "@UserEnrollNumber" },
                    new object[] { maNV, maCC });
                if (tableKiemTraTonTai.Rows.Count > 0)
                {
                    ACMessageBox.Show("Mã nhân viên hoặc mã chấm công đã tồn tại trong CSDL. Vui lòng chọn mã khác.", Resources.Caption_Loi, 2000);
                    return;
                }
            }
            #region xác nhận trước khi lưu
            if (MessageBox.Show(Resources.Text_XacNhanLuuThongTinNV, Resources.Caption_XacNhan, MessageBoxButtons.OKCancel) == DialogResult.Cancel)
            {
                return;
            }
            #endregion

            #region execute query

            int kq1 = SqlDataAccessHelper.ExecNoneQueryString(
                @" UPDATE UserInfo Set 
								UserFullCode = @UserFullCode, UserFullName = @UserFullName, UserLastName = @UserLastName, UserEnrollName = @UserEnrollName,
								  UserCardNo = @UserCardNo, UserHireDay = @UserHireDay, UserIDTitle = @IDChucVu, UserSex = @UserSex, 
								  UserEnabled = @UserEnabled, UserIDD = @UserIDD, SchID = @SchID, 
								  HeSoLuongCB = @HeSoLuongCB, HeSoLuongSP = @HeSoLuongSP, HSBHCongThem = @HSBHCongThem

								where UserEnrollNumber = @UserEnrollNumber

							if ( @@ROWCOUNT = 0 )  
							INSERT INTO UserInfo (  UserFullCode,  UserFullName,  UserLastName,  UserEnrollNumber,  UserEnrollName,
									UserCardNo,  UserHireDay,  UserIDTitle,  UserSex,  UserPrivilege,  UserEnabled,
									UserIDD,  SchID,  HeSoLuongCB,  HeSoLuongSP,  HSBHCongThem,  
									PushCardID,  UserPW, UserGroup, UserTZ) 
							VALUES (  @UserFullCode,  @UserFullName,  @UserLastName,  @UserEnrollNumber,  @UserEnrollName,
									  @UserCardNo,  @UserHireDay,  @IDChucVu,  @UserSex,  @UserPrivilege,  @UserEnabled,
									  @UserIDD,  @SchID,  @HeSoLuongCB,  @HeSoLuongSP,  @HSBHCongThem,  
									  @PushCardID,  @UserPW, @UserGroup, @UserTZ )"                                    ,
                new string[] {
                "@UserFullCode", "@UserFullName", "@UserLastName", "@UserEnrollNumber", "@UserEnrollName",
                "@UserCardNo", "@UserHireDay", "@IDChucVu", "@UserSex",
                "@UserEnabled", "@UserIDD", "@SchID",
                "@HeSoLuongCB", "@HeSoLuongSP", "@HSBHCongThem",
                "@UserPrivilege", "@PushCardID", "@UserPW", "@UserGroup", "@UserTZ"
            },
                new object[] {
                maNV, hoten, ten, maCC, tenCC,
                mathetu, ngayvaolam, idchucvu, gioitinh,
                userEnabled, idphong, idlichtrinh,
                hslcb, hslcv, hsbhxhcongthem,
                0, "[0000000000]", string.Empty, 1, "0000000000000000",
            });
            string noidung =
                @"Lưu thông tin nhân viên có mã chấm công [{0}], mã nhân viên [{1}], hệ số lương cơ bản [{2}], hệ số lương sản phẩm [{3}], hệ số bảo hiểm cộng thêm cho lãnh đạo [{4}], tình trạng hoạt động [{5}], phòng ban [{6}], lịch trình [{7}]";
            DAO5.GhiNhatKyThaotac("Lưu thông tin nhân viên", string.Format(noidung,
                                                                           maCC, maNV, hslcb.ToString("0.00"), hslcv.ToString("0.00"), hsbhxhcongthem.ToString("0.00"), userEnabled, tenphong, tenLichTrinh), maCC: maCC);

            #endregion
            if (checkLamCongnhat.Enabled && checkLamCongnhat.Checked)
            {
                var ngayBD        = dtpNgayBDCongnhat.Value.Date;
                var ngayKT        = dtpNgayKTCongnhat.Value.Date;
                var laNVChinhthuc = checkNVChinhThuc.Checked;
                if (ngayBD > ngayKT)                 // hoán vị ngày bắt đầu kết thúc nếu bị ngược
                {
                    var temp = ngayBD;
                    ngayKT = ngayBD;
                    ngayBD = temp;
                }
                //thực hiện tách nếu làm công nhật ngày bd và kt là nhiều tháng liên tiếp
                List <DateTime> arrNgayBD, arrNgayKT;
                XL2.TachThang(ngayBD, ngayKT, out arrNgayBD, out arrNgayKT);
                for (int i = 0; i < arrNgayBD.Count; i++)
                {
                    int kq2 = DAO5.UpdIns_ThuChiNVCongNhat(new DateTime(arrNgayBD[i].Year, arrNgayBD[i].Month, 1), maCC, idphong, tenphong, arrNgayBD[i], arrNgayKT[i], 0, 0d, laNVChinhthuc);
                    if (kq2 == 0)
                    {
                        MessageBox.Show(Resources.Text_CoLoi);
                        break;
                    }
                }
            }

            if (kq1 == 0)
            {
                MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi);
            }
            else
            {
                IsReload = true;
                if (mode == 1)
                {
                    ACMessageBox.Show("Thêm nhân viên thành công.", Resources.Caption_ThongBao, 2000);
                    MyUtility.ClearControlText(tbMaNV, tbHoTenNV, tbMaCC, tbUserEnrollName);
                    radNam.Checked            = true;
                    tbMaTheTu.Text            = "0000000000";
                    tbHSLCB.Text              = "000";
                    tbHSLCV.Text              = "000";
                    tbHSBHXHCongThem.Text     = "000";
                    cbChucVu.SelectedIndex    = 0;
                    cbPhongBan.SelectedIndex  = 0;
                    cbLichTrinh.SelectedIndex = 0;
                    checkUserEnabled.Checked  = true;
                }
                else
                {
                    Close();
                }
            }
        }
        private void dgrdGioCoLamThem_SelectionChanged(object sender, EventArgs e)
        {
            if (dgrdGioCoLamThem.SelectedRows.Count == 0)
            {
                #region reset layout

                MyUtility.ClearControlText(tbTTTenNV, tbTTGioVao, tbTTGioRaa,
                                           tbTTThuocCa, tbTTGioLam, tbTTTongGio, tbTTTreSom,
                                           tbTTOLaiThem, tbTTLamThem,
                                           tbXNCa, tbXNGioLam,
                                           tbXNTre, tbXNSom, tbXN_OLaiThem);

                MyUtility.CheckedCheckBox(false, checkTTChoPhepTre, checkTTChoPhepSom, checkTTTinhPC50,
                                          checkXNChoPhepTre, checkXNChoPhepSom, checkXNLamThem, checkXNTinhPC50,
                                          checkTTVaoTreTinhCV, checkTTRaaSomTinhCV, checkXNVaoTreTinhCV, checkXNRaaSomTinhCV);//ver 4.0.0.4

                //numPhutTinhLamThem.Value = 0;
                maskPhutTinhLamThem.Text = "00:00";                //ver 4.0.0.4
                maskPhutTinhLamThem.Tag  = TimeSpan.Zero;          //ver 4.0.0.4

                #endregion
                MyUtility.EnableDisableControl(false,
                                               btnXacNhan, btnDoiCa,                                           // ngoài reset layout thì disable nút xác nhận, nút sửa để tránh ấn nhầm gây lỗi
                                               checkXNChoPhepTre, checkXNChoPhepSom, checkXNLamThem, checkXNTinhPC50, numPhutTinhLamThem,
                                               maskPhutTinhLamThem, checkXNVaoTreTinhCV, checkXNRaaSomTinhCV); //ver 4.0.0.4
            }
            else if (dgrdGioCoLamThem.SelectedRows.Count == 1)
            {
                MyUtility.EnableDisableControl(true,
                                               btnXacNhan, btnDoiCa,
                                               checkXNChoPhepTre, checkXNChoPhepSom, checkXNTinhPC50, checkXNLamThem, numPhutTinhLamThem,
                                               maskPhutTinhLamThem, checkXNVaoTreTinhCV, checkXNRaaSomTinhCV); //ver 4.0.0.4
                var dataRowView = dgrdGioCoLamThem.SelectedRows[0].DataBoundItem as DataRowView;
                var nhanvien    = dataRowView["cUserInfo"] as cUserInfo;
                var CIO         = dataRowView["cCheckInOut"] as cCheckInOut;
                var ngaycong    = dataRowView["cNgayCong"] as cNgayCong;

                #region fill phần thông tin CIO
                //DateTime ngaydangchon = CIO.ThuocNgayCong;
                tbTTTenNV.Text              = nhanvien.TenNV;
                tbTTGioVao.Text             = (CIO.Vao != null) ? CIO.Vao.Time.ToString("H:mm d/M") : string.Empty;
                tbTTGioRaa.Text             = (CIO.Raa != null) ? CIO.Raa.Time.ToString("H:mm d/M") : string.Empty;
                tbTTThuocCa.Text            = CIO.CIOCodeFull();
                tbTTGioLam.Text             = (CIO.HaveINOUT == 0) ? CIO.TG.GioLamViec5.ToString(@"h\gmm\p") : string.Empty;
                tbTTTongGio.Text            = (CIO.HaveINOUT == 0) ? CIO.TG.GioThucTe5.ToString(@"h\gmm\p") : string.Empty;
                tbTTTreSom.Text             = (CIO.HaveINOUT == 0) ? (CIO.TG.VaoTre + CIO.TG.RaaSom).ToString(@"h\gmm\p") : string.Empty;
                tbTTOLaiThem.Text           = (CIO.HaveINOUT == 0) ? CIO.TG.OLai.ToString(@"h\gmm\p") : string.Empty;
                tbTTLamThem.Text            = (CIO.DaXN) ? CIO.TG.SoPhutLamThem5.ToString(@"h\gmm\p") : string.Empty;
                checkTTChoPhepTre.Checked   = CIO.DuyetChoPhepVaoTre;
                checkTTChoPhepSom.Checked   = CIO.DuyetChoPhepRaSom;
                checkTTTinhPC50.Checked     = ngaycong.TinhPC50;
                checkTTVaoTreTinhCV.Checked = CIO.VaoTreTinhCV;                //ver 4.0.0.4
                checkTTRaaSomTinhCV.Checked = CIO.RaaSomTinhCV;                //ver 4.0.0.4
                #endregion

                #region fill phần xác nhận CIO

                tbXNCa.Text        = CIO.CIOCodeFull();
                tbXNCa.Tag         = (CIO.HaveINOUT == 0) ? CIO.ThuocCa : null;
                tbXNGioLam.Text    = (CIO.HaveINOUT == 0) ? CIO.TG.GioLamViec5.ToString(@"h\gmm\p") : string.Empty;
                tbXNTre.Text       = (CIO.HaveINOUT == 0) ? CIO.TG.VaoTre.ToString(@"h\gmm\p") : string.Empty;
                tbXNSom.Text       = (CIO.HaveINOUT == 0) ? CIO.TG.RaaSom.ToString(@"h\gmm\p") : string.Empty;
                tbXN_OLaiThem.Text = (CIO.HaveINOUT == 0) ? CIO.TG.OLai.ToString(@"h\gmm\p") : string.Empty;
                //numPhutTinhLamThem.Maximum = (CIO.HaveINOUT == 0) ? Convert.ToInt32(CIO.TG.OLai.TotalMinutes) : 0;
                //numPhutTinhLamThem.Value = (CIO.HaveINOUT == 0) ? (Convert.ToInt32(CIO.TG.OLai.TotalMinutes) / 10) * 10 : 0;
                maskPhutTinhLamThem.Tag     = (CIO.TG.OLai == null) ? TimeSpan.Zero : CIO.TG.OLai;               //ver 4.0.0.4
                maskPhutTinhLamThem.Text    = (CIO.TG.OLai == null) ? "00:00" : CIO.TG.OLai.ToString(@"hh\:mm"); //ver 4.0.0.4
                checkXNChoPhepTre.Checked   = CIO.DuyetChoPhepVaoTre;
                checkXNChoPhepSom.Checked   = CIO.DuyetChoPhepRaSom;
                checkXNLamThem.Checked      = false;
                checkXNTinhPC50.Checked     = false;
                checkXNVaoTreTinhCV.Checked = CIO.VaoTreTinhCV;                //ver 4.0.0.4
                checkXNRaaSomTinhCV.Checked = CIO.RaaSomTinhCV;                //ver 4.0.0.4
                tbXNGhiChu.Text             = string.Empty;

                #endregion
            }
            else               // chế độ xác nhận hàng loạt
            {
                MyUtility.EnableDisableControl(true,
                                               btnXacNhan, btnDoiCa,
                                               checkXNChoPhepTre, checkXNChoPhepSom, checkXNTinhPC50, checkXNLamThem, numPhutTinhLamThem,
                                               maskPhutTinhLamThem, checkXNVaoTreTinhCV, checkXNRaaSomTinhCV); //ver 4.0.0.4
                var dataRowView = dgrdGioCoLamThem.SelectedRows[0].DataBoundItem as DataRowView;
                var nhanvien    = dataRowView["cUserInfo"] as cUserInfo;
                var CIO         = dataRowView["cCheckInOut"] as cCheckInOut;
                var ngaycong    = dataRowView["cNgayCong"] as cNgayCong;

                #region fill thông tin CIO
                tbTTTenNV.Text              = nhanvien.TenNV;
                tbTTGioVao.Text             = (CIO.Vao != null) ? CIO.Vao.Time.ToString("H:mm d/M") : string.Empty;
                tbTTGioRaa.Text             = (CIO.Raa != null) ? CIO.Raa.Time.ToString("H:mm d/M") : string.Empty;
                tbTTThuocCa.Text            = CIO.CIOCodeFull();
                tbTTGioLam.Text             = (CIO.HaveINOUT == 0) ? CIO.TG.GioLamViec5.ToString(@"h\gmm\p") : string.Empty;
                tbTTTongGio.Text            = (CIO.HaveINOUT == 0) ? CIO.TG.GioThucTe5.ToString(@"h\gmm\p") : string.Empty;
                tbTTTreSom.Text             = (CIO.HaveINOUT == 0) ? (CIO.TG.VaoTre + CIO.TG.RaaSom).ToString(@"h\gmm\p") : string.Empty;
                tbTTOLaiThem.Text           = (CIO.HaveINOUT == 0) ? CIO.TG.OLai.ToString(@"h\gmm\p") : string.Empty;
                tbTTLamThem.Text            = (CIO.DaXN) ? CIO.TG.SoPhutLamThem5.ToString(@"h\gmm\p") : string.Empty;
                checkTTChoPhepTre.Checked   = CIO.DuyetChoPhepVaoTre;
                checkTTChoPhepSom.Checked   = CIO.DuyetChoPhepRaSom;
                checkTTTinhPC50.Checked     = ngaycong.TinhPC50;
                checkTTVaoTreTinhCV.Checked = CIO.VaoTreTinhCV;                //ver 4.0.0.4
                checkTTRaaSomTinhCV.Checked = CIO.RaaSomTinhCV;                //ver 4.0.0.4

                #endregion

                #region fill phần xác nhận CIO
                var listCIO = (from DataGridViewRow dataGridViewRow in dgrdGioCoLamThem.SelectedRows
                               let row = (DataRowView)dataGridViewRow.DataBoundItem
                                         select(cCheckInOut) row["cCheckInOut"]).ToList();

                var distinctShift   = (from cio in listCIO where cio.HaveINOUT == 0 select cio.ThuocCa).Distinct().ToList();
                var distinctList_KR = listCIO.Where(item => item.HaveINOUT == -1).ToList();
                var distinctList_KV = listCIO.Where(item => item.HaveINOUT == -2).ToList();

                // phần ca làm việc
                if (distinctShift.Count == 1)
                {
                    tbXNCa.Tag  = distinctShift[0];
                    tbXNCa.Text = distinctShift[0].Code;
                }
                else
                {
                    tbXNCa.Tag  = null;
                    tbXNCa.Text = string.Empty;
                }

                // phần giờ làm, ra trễ, về sớm, ở lại cần xn
                MyUtility.ClearControlText(tbXNGioLam, tbXNTre, tbXNSom, tbXN_OLaiThem);
                //numPhutTinhLamThem.Value = 0;
                //numPhutTinhLamThem.Maximum = 840;
                maskPhutTinhLamThem.Text = "00:00";                //ver 4.0.0.4
                maskPhutTinhLamThem.Tag  = XL2._16gio;             //ver 4.0.0.4

                MyUtility.CheckedCheckBox(false, checkXNChoPhepTre, checkXNChoPhepSom, checkXNLamThem, checkXNTinhPC50,
                                          checkXNVaoTreTinhCV, checkXNRaaSomTinhCV);//ver 4.0.0.4
                tbXNGhiChu.Text = string.Empty;


                #endregion
            }
        }