private void Guardar()
    {
        String NOMBRES           = TextBox_NOMBRES.Text.ToUpper().Trim();
        String APELLIDOS         = TextBox_APELLIDOS.Text.ToUpper().Trim();
        String TIP_DOC_IDENTIDAD = DropDownList_TIP_DOC.SelectedValue;
        String NUM_DOC_IDENTIDAD = TextBox_NUM_DOC.Text.ToUpper().Trim();

        String OBS_ACOSET = TextBox_MOTIVO_REPORTE.Text.Trim().ToUpper();

        String ENTIDAD_REPORTA = DropDownList_ENTIDAD_REPORTA.SelectedValue;

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

        Decimal REGISTRO = _acoset.AdicionarRegAcoset(APELLIDOS, NOMBRES, TIP_DOC_IDENTIDAD, NUM_DOC_IDENTIDAD, OBS_ACOSET, ENTIDAD_REPORTA);

        if (REGISTRO == 0)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _acoset.MensajeError, Proceso.Error);
        }
        else
        {
            Cargar(REGISTRO);

            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El numero de identificación: " + NUM_DOC_IDENTIDAD + " fue registrado correctamente en la Base de datos ACOSET.", Proceso.Correcto);
        }
    }
    protected void Button_GUARDAR_REGISTROS_MASIVOS_Click(object sender, EventArgs e)
    {
        List <acoset> listaRegistrosAcoset = new List <acoset>();

        try
        {
            listaRegistrosAcoset = (List <acoset>)(Session["listaRegistrosAcoset"]);
        }
        catch
        {
            listaRegistrosAcoset = new List <acoset>();
        }

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

        Boolean verificador = _acoset.AdicionarRegAcosetMasivo(listaRegistrosAcoset);

        if (verificador == false)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _acoset.MensajeError, Proceso.Error);
        }
        else
        {
            Ocultar(Acciones.Inicio);
            Desactivar(Acciones.Inicio);
            Mostrar(Acciones.Inicio);
            Cargar(Acciones.Inicio);

            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La carga masiva de reportes Acoset fue realizada correctamente. Se procesaron " + listaRegistrosAcoset.Count.ToString() + " registros correctamente.", Proceso.Correcto);
        }
    }
    private void Buscar()
    {
        Ocultar(Acciones.Inicio);
        Mostrar(Acciones.Busqueda);

        String datosCapturados = HiddenField_FILTRO_DATO.Value;
        String campo           = HiddenField_FILTRO_DROP.Value;

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

        DataTable tablaResultadosBusqueda = new DataTable();

        if (DropDownList_BUSCAR.SelectedValue == "NOMBRES")
        {
            tablaResultadosBusqueda = _acoset.ObtenerRegAcosetPorNombre(datosCapturados);
        }
        else
        {
            if (DropDownList_BUSCAR.SelectedValue == "APELLIDOS")
            {
                tablaResultadosBusqueda = _acoset.ObtenerRegAcosetPorApellido(datosCapturados);
            }
            else
            {
                if (DropDownList_BUSCAR.SelectedValue == "NUM_DOC_IDENTIDAD")
                {
                    tablaResultadosBusqueda = _acoset.ObtenerRegAcosetPorNumeroID(datosCapturados);
                }
            }
        }

        if (tablaResultadosBusqueda.Rows.Count <= 0)
        {
            if (_acoset.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _acoset.MensajeError, Proceso.Error);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La busqueda no arrojó resultados.", Proceso.Advertencia);
            }

            Panel_RESULTADOS_GRID.Visible = false;
        }
        else
        {
            GridView_RESULTADOS_BUSQUEDA.DataSource = tablaResultadosBusqueda;
            GridView_RESULTADOS_BUSQUEDA.DataBind();
        }
    }
    private void Modificar()
    {
        Decimal REGISTRO  = Convert.ToDecimal(HiddenField_REGISTRO_ACOSET.Value);
        String  APELLIDOS = TextBox_APELLIDOS.Text.Trim().ToUpper();
        String  NOMBRES   = TextBox_NOMBRES.Text.Trim().ToUpper();

        String TIP_DOC_IDENTIDAD = DropDownList_TIP_DOC.SelectedValue;
        String NUM_DOC_IDENTIDAD = TextBox_NUM_DOC.Text.Trim();

        String ENTIDAD_REPORTA = DropDownList_ENTIDAD_REPORTA.SelectedValue;

        String OBS_ACOSET = TextBox_MOTIVO_REPORTE.Text.Trim().ToUpper();

        Boolean ACTIVO = true;

        if (DropDownList_ESTADO_REGISTRO.SelectedValue == "False")
        {
            ACTIVO = false;
        }

        String MOTIVO_ESTADO = null;

        if (String.IsNullOrEmpty(TextBox_MOTIVO_ESTADO.Text) == false)
        {
            MOTIVO_ESTADO = TextBox_MOTIVO_ESTADO.Text.Trim().ToUpper();
        }

        acoset  _acoset     = new acoset(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        Boolean verificador = _acoset.ActualizarAcoset(REGISTRO, APELLIDOS, NOMBRES, TIP_DOC_IDENTIDAD, NUM_DOC_IDENTIDAD, OBS_ACOSET, ENTIDAD_REPORTA, ACTIVO, MOTIVO_ESTADO);

        if (verificador == false)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _acoset.MensajeError, Proceso.Error);
        }
        else
        {
            Cargar(REGISTRO);

            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El registro Acoset asociado al número de identificación: " + NUM_DOC_IDENTIDAD + " fue modificado correctamente.", Proceso.Correcto);
        }
    }
    private void Cargar(Decimal REGISTRO)
    {
        HiddenField_REGISTRO_ACOSET.Value = REGISTRO.ToString();

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

        DataTable tablaRegistro = _acoset.ObtenerRegAcosetPorRegistro(Convert.ToInt32(REGISTRO));

        if (tablaRegistro.Rows.Count <= 0)
        {
            Ocultar(Acciones.Inicio);
            Mostrar(Acciones.Inicio);
            Desactivar(Acciones.Inicio);
            Cargar(Acciones.Inicio);

            if (_acoset.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _acoset.MensajeError, Proceso.Error);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontró información del registro especificado.", Proceso.Error);
            }
        }
        else
        {
            Ocultar(Acciones.Inicio);
            Mostrar(Acciones.CargarRegistro);
            Desactivar(Acciones.Inicio);

            DataRow filaRegistro = tablaRegistro.Rows[0];

            cargar_informacion_registro_control(filaRegistro);

            cargar_datos_personales(filaRegistro);
        }
    }
    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();
        }
    }