protected void Button_HABILITAR_SUBIDA_MASIVA_Click(object sender, EventArgs e)
    {
        Ocultar(Acciones.Inicio);
        Mostrar(Acciones.SubidaMasiva);

        Button_CANCELAR_SUBIDA_MASIVA.Focus();
    }
    protected void Button_CONFIRMAR_INFO_aRCHIVP_PLANO_Click(object sender, EventArgs e)
    {
        Session.Remove("listaRegistrosAcoset");

        List <acoset> listaRegistros = new List <acoset>();
        acoset        _acosetParaLista;

        Boolean verificador = true;
        String  filaArchivo = null;

        String[] filaArchivoArray;

        Int32 contadorRegistrosTotales    = 0;
        Int32 contadorRegistrosProcesados = 0;

        DataTable tablaErrores = InicializarTablaErrores();
        DataRow   filaError;

        parametro _parametro           = new parametro(Session["idEmpresa"].ToString());
        DataTable tablaEntidadesAcoset = _parametro.ObtenerParametrosPorTabla(tabla.PARAMETROS_ENTIDAD_ACOSET);
        Boolean   datoCorrecto         = true;

        DataTable tablaTipDocs = _parametro.ObtenerParametrosPorTabla(tabla.PARAMETROS_TIP_DOC_ID);

        if (FileUpload_ARCHIVO_PLANO.HasFile == true)
        {
            using (StreamReader reader = new StreamReader(FileUpload_ARCHIVO_PLANO.PostedFile.InputStream))
            {
                while ((filaArchivo = reader.ReadLine()) != null)
                {
                    contadorRegistrosTotales += 1;

                    filaArchivoArray = filaArchivo.Split(';');

                    _acosetParaLista = new acoset(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

                    verificador = true;

                    if (filaArchivoArray.Length == 6)
                    {
                        _acosetParaLista.ACTIVO    = true;
                        _acosetParaLista.APELLIDOS = filaArchivoArray[0].ToUpper();

                        datoCorrecto = false;
                        foreach (DataRow filaEntidad in tablaEntidadesAcoset.Rows)
                        {
                            if (filaEntidad["CODIGO"].ToString().Trim().ToUpper() == filaArchivoArray[5].ToUpper())
                            {
                                datoCorrecto = true;
                                break;
                            }
                        }
                        if (datoCorrecto == true)
                        {
                            _acosetParaLista.ENTIDAD_REPORTA = filaArchivoArray[5].ToUpper();
                        }
                        else
                        {
                            filaError = tablaErrores.NewRow();

                            filaError["TIPO_ERROR"] = ErroresSubidaMasiva.ERROR_ENTIDAD_REPORTA.ToString();
                            filaError["LINEA"]      = contadorRegistrosTotales.ToString();
                            filaError["MENSAJE"]    = "El nombre de la entidad que reporta no es correcto.";

                            tablaErrores.Rows.Add(filaError);

                            verificador = false;
                        }

                        _acosetParaLista.MOTIVO_ESTADO     = null;
                        _acosetParaLista.NOMBRES           = filaArchivoArray[1].ToUpper();
                        _acosetParaLista.NUM_DOC_IDENTIDAD = filaArchivoArray[3].ToUpper();
                        _acosetParaLista.OBS_ACOSET        = filaArchivoArray[4].ToUpper();
                        _acosetParaLista.REGISTRO          = 0;

                        datoCorrecto = false;
                        foreach (DataRow filaTipoDoc in tablaTipDocs.Rows)
                        {
                            if (filaTipoDoc["CODIGO"].ToString().ToUpper() == filaArchivoArray[2].ToUpper())
                            {
                                datoCorrecto = true;
                                break;
                            }
                        }
                        if (datoCorrecto == true)
                        {
                            _acosetParaLista.TIP_DOC_IDENTIDAD = filaArchivoArray[2].ToUpper();
                        }
                        else
                        {
                            filaError = tablaErrores.NewRow();

                            filaError["TIPO_ERROR"] = ErroresSubidaMasiva.ERROR_TIP_DOC_IDENTIDAD.ToString();
                            filaError["LINEA"]      = contadorRegistrosTotales.ToString();
                            filaError["MENSAJE"]    = "El tipo de documento de identidad no es correcto.";

                            tablaErrores.Rows.Add(filaError);

                            verificador = false;
                        }
                    }
                    else
                    {
                        filaError = tablaErrores.NewRow();

                        filaError["TIPO_ERROR"] = ErroresSubidaMasiva.ERROR_ESTRUCTURA_ARCHIVO.ToString();
                        filaError["LINEA"]      = contadorRegistrosTotales.ToString();
                        filaError["MENSAJE"]    = "La línea no tiene la estructura correcta: (APELLIDOS ; NOMBRES ; TIP_DOC_IDENTIDAD ; NUM_DOC_IDENTIDAD ; MOTIVO_REPORTE ; ENTIDAD_REPORTA).";

                        tablaErrores.Rows.Add(filaError);

                        verificador = false;
                    }

                    if (verificador == true)
                    {
                        listaRegistros.Add(_acosetParaLista);

                        contadorRegistrosProcesados += 1;
                    }
                }
            }

            if (tablaErrores.Rows.Count > 0)
            {
                Panel_GRILLA_ERRORES_SUBIDA_MASIVA.Visible  = true;
                Panel_FILEUPLOAD_ARCHIVO_PLANO.Visible      = true;
                Button_CONFIRMAR_INFO_aRCHIVP_PLANO.Visible = true;
                Button_CANCELAR_SUBIDA_MASIVA.Visible       = true;

                Button_GUARDAR_REGISTROS_MASIVOS.Visible = false;
                Panel_INFO_DATOS_SUBIDA_MASIVA.Visible   = false;

                GridView_ERRORES_SUBIDA_MASIVA.DataSource = tablaErrores;
                GridView_ERRORES_SUBIDA_MASIVA.DataBind();

                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El archivo contiene errores y no puede ser procesado, por favor revise la lista de errores.", Proceso.Error);

                Session.Remove("listaRegistrosAcoset");

                Button_CANCELAR_SUBIDA_MASIVA.Focus();
            }
            else
            {
                Session["listaRegistrosAcoset"] = listaRegistros;

                Panel_GRILLA_ERRORES_SUBIDA_MASIVA.Visible  = false;
                Panel_FILEUPLOAD_ARCHIVO_PLANO.Visible      = true;
                Button_CONFIRMAR_INFO_aRCHIVP_PLANO.Visible = false;
                Button_CANCELAR_SUBIDA_MASIVA.Visible       = true;
                Button_GUARDAR_REGISTROS_MASIVOS.Visible    = true;
                Panel_INFO_DATOS_SUBIDA_MASIVA.Visible      = true;

                Label_NUM_REGISTROS_ARCHIVO.Text = contadorRegistrosProcesados.ToString();

                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El archivo fue verificado, y cumple con las especificaciones, puede continuar con el cargue masivo de egistros Acoset", Proceso.Correcto);

                Button_CANCELAR_SUBIDA_MASIVA.Focus();
            }
        }
        else
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "ERROR: Por favor seleccione el archivo con la información de los registros Acoset.", Proceso.Error);

            Session.Remove("listaRegistrosAcoset");

            Button_CANCELAR_SUBIDA_MASIVA.Focus();
        }
    }