private void m_cmd_confirm_Click(object sender, EventArgs e)
 {
     try
     {
         if(m_rdb_luu_lai_toan_bo.Checked == true)
         {
             _confirm = ENUM_CONFIRM_LUU_BANG_LUONG.TINH_LAI_TOAN_BO;
             XtraMessageBox.Show("Bạn vừa chọn Option lưu lại toàn bộ bảng lương (Có nghĩa xóa bảng lương cũ, lưu bảng lương mới)","THÔNG BÁO");
         }
         else
         {
             if(m_chk_0_ghi_de.Checked == false && m_chk_1_ghi_moi.Checked == false)
             {
                 _confirm = ENUM_CONFIRM_LUU_BANG_LUONG.NONE;
                 XtraMessageBox.Show("Bạn vừa chọn Option: Không thao tác với dữ liệu (Có nghĩa không lưu dữ liệu vào phần mềm)", "THÔNG BÁO");
             }
             if(m_chk_0_ghi_de.Checked == false && m_chk_1_ghi_moi.Checked == true)
             {
                 _confirm = ENUM_CONFIRM_LUU_BANG_LUONG.CHUA_CO_THI_GHI_MOI_DA_CO_THI_KHONG_LAM_GI;
                 XtraMessageBox.Show("Bạn vừa chọn Option: Nhân viên chưa có trong bảng lương phần mềm thì thêm mới, " +
                                                                     "nhân viên đã có trong bảng lương phần mềm thì bỏ qua không lưu!", "THÔNG BÁO");
             }
             if(m_chk_0_ghi_de.Checked == true && m_chk_1_ghi_moi.Checked == false)
             {
                 _confirm = ENUM_CONFIRM_LUU_BANG_LUONG.CHUA_CO_THI_KHONG_LAM_GI_DA_CO_THI_GHI_DE;
                 XtraMessageBox.Show("Bạn vừa chọn Option: Nhân viên chưa có trong bảng lương phần mềm thì bỏ qua không lưu, " +
                                                                     "nhân viên đã có trong bảng lương phần mềm thì ghi đè!", "THÔNG BÁO");
             }
             if(m_chk_0_ghi_de.Checked == true && m_chk_1_ghi_moi.Checked == true)
             {
                 _confirm = ENUM_CONFIRM_LUU_BANG_LUONG.CHUA_CO_THI_GHI_MOI_DA_CO_THI_GHI_DE;
                 XtraMessageBox.Show("Bạn vừa chọn Option: Nhân viên chưa có trong bảng lương phần mềm thì ghi mới, " +
                                                                     "nhân viên đã có trong bảng lương phần mềm thì ghi đè!", "THÔNG BÁO");
             }
         }
         Close();
     }
     catch(Exception v_e)
     {
         CSystemLog_301.ExceptionHandle(v_e);
     }
 }
        private void save_data(ENUM_CONFIRM_LUU_BANG_LUONG ip_confirm_save)
        {
            SplashScreenManager.ShowForm(this, typeof(SplashScreen1), true, true, false);
            string v_str_msg = "";
            try
            {
                if(ip_confirm_save == ENUM_CONFIRM_LUU_BANG_LUONG.NONE)
                {
                    XtraMessageBox.Show("Bạn đã hủy thao tác!", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                if(!kiem_tra_du_lieu_nhan_vien_truoc_khi_luu())
                {
                    var v_dc_so_nv_khong_co_trong_csdl = m_lst_nhan_vien_khong_ton_tai.Count;
                    XtraMessageBox.Show("Có " + v_dc_so_nv_khong_co_trong_csdl + " mã nhân viên không có trong phần mềm. Bạn lưu danh sách vào nhé!");
                    xuat_excel_nhan_vien_chua_co_trong_csdl();
                    return;
                }
                //US_RPT_LUONG_V2 v_us_rpt_luong_v2 = new US_RPT_LUONG_V2();
                DTO_BANG_LUONG_V2 v_dto_bang_luong_v2 = new DTO_BANG_LUONG_V2();

                var v_i_row_count = m_grv_main.RowCount;
                if(ip_confirm_save == ENUM_CONFIRM_LUU_BANG_LUONG.NONE)
                {
                    XtraMessageBox.Show("Bảng lương chưa được lưu!", "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                if(ip_confirm_save == ENUM_CONFIRM_LUU_BANG_LUONG.TINH_LAI_TOAN_BO)
                {
                    TinhLuongQL.Instance.XoaToanBoBangLuong(lay_thang(), lay_nam());
                }

                int v_i_so_luong_ghi_moi = 0;
                int v_i_so_luong_ghi_de = 0;
                for(int v_i_row = 0; v_i_row < v_i_row_count; v_i_row++)
                {
                    v_dto_bang_luong_v2 = (DTO_BANG_LUONG_V2)m_grv_main.GetRow(v_i_row);
                    //v_us_rpt_luong_v2 = transfer_dto_2_us_object(v_dto_bang_luong_v2);

                    var v_bol_nv_co_trong_bang_luong_chua = TinhLuongQL.Instance.KiemTraNhanVienCoTrongBangLuongChua(v_dto_bang_luong_v2);
                    switch(ip_confirm_save)
                    {
                        case ENUM_CONFIRM_LUU_BANG_LUONG.TINH_LAI_TOAN_BO:
                            TinhLuongQL.Instance.InsertBanGhiLuongNhanVien(v_dto_bang_luong_v2);
                            v_i_so_luong_ghi_moi = v_i_so_luong_ghi_moi + 1;
                            break;
                        case ENUM_CONFIRM_LUU_BANG_LUONG.CHUA_CO_THI_GHI_MOI_DA_CO_THI_KHONG_LAM_GI:
                            if(!v_bol_nv_co_trong_bang_luong_chua)
                            {
                                TinhLuongQL.Instance.InsertBanGhiLuongNhanVien(v_dto_bang_luong_v2);
                                v_i_so_luong_ghi_moi = v_i_so_luong_ghi_moi + 1;
                            }
                            break;
                        case ENUM_CONFIRM_LUU_BANG_LUONG.CHUA_CO_THI_GHI_MOI_DA_CO_THI_GHI_DE:
                            if(!v_bol_nv_co_trong_bang_luong_chua)
                            {
                                TinhLuongQL.Instance.InsertBanGhiLuongNhanVien(v_dto_bang_luong_v2);
                                v_i_so_luong_ghi_moi = v_i_so_luong_ghi_moi + 1;
                            }
                            else
                            {
                                TinhLuongQL.Instance.ReplaceBanGhiLuongNhanVien(v_dto_bang_luong_v2);
                                v_i_so_luong_ghi_de = v_i_so_luong_ghi_de + 1;
                            }
                            break;
                        case ENUM_CONFIRM_LUU_BANG_LUONG.CHUA_CO_THI_KHONG_LAM_GI_DA_CO_THI_GHI_DE:
                            if(v_bol_nv_co_trong_bang_luong_chua)
                            {
                                TinhLuongQL.Instance.ReplaceBanGhiLuongNhanVien(v_dto_bang_luong_v2);
                                v_i_so_luong_ghi_de = v_i_so_luong_ghi_de + 1;
                            }
                            break;
                        default:
                            throw new Exception("Chưa gán giá trị cho ENUM_CONFIRM_LUU_BANG_LUONG!");

                    }
                    //m_prb.EditValue = (int)((decimal)v_i_row / (decimal)v_i_row_count * 100);
                    SplashScreenManager.Default.SendCommand(SplashScreen1.SplashScreenCommand.SetProgress, (int)((decimal)v_i_row / (decimal)v_i_row_count * 100));
                    //progressBarControl1.EditValue = (int)((decimal)v_i_row / (decimal)v_i_row_count * 100);
                }
                v_str_msg = "Lưu dữ liệu lương thành công. Có " + v_i_so_luong_ghi_moi + " bản ghi lương nhân viên mới, có " + v_i_so_luong_ghi_de + " bản ghi lương nhân viên ghi đè!";
            }
            catch(Exception)
            {
                throw;
            }
            finally
            {
                SplashScreenManager.CloseForm(false);
            }

            XtraMessageBox.Show(v_str_msg, "THÔNG BÁO", MessageBoxButtons.OK, MessageBoxIcon.Information);
            hien_thi_thong_tin_bang_luong();
        }