private void CargarValidadorPresupuesto(decimal ID_PRESUPUESTO)
    {
        presupuesto _presupuesto = new presupuesto(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaPresupuesto = _presupuesto.ObtenerPresupuestoPorId(ID_PRESUPUESTO);

        DataRow fila = tablaPresupuesto.Rows[0];

        RangeValidator_TextBox_PresupuestoAsignado.MinimumValue = "0";
        RangeValidator_TextBox_PresupuestoAsignado.MaximumValue = Convert.ToDecimal(fila["PRESUPUESTO"]).ToString();
    }
    private Boolean CargarPresupuestoAsignadoEjecutadoMes(Int32 MES)
    {
        ConfigurarAreaRseGlobal();

        Int32 ANIO = Convert.ToInt32(HiddenField_ANNO_SELECCIONADO.Value);
        Decimal ID_EMPRESA = Convert.ToDecimal(HiddenField_ID_EMPRESA_SELECCIONADA.Value);

        presupuesto _pres = new presupuesto(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaAsignadoEjecutadoMesAnio = _pres.ObtenerPresupuestoAsiganadoEjecutadoParaEmpresaAñoMesArea(ANIO, ID_EMPRESA, GLO_AREA_RSE_GLOBAL, MES);

        DataRow filaAsignadoEjecutadoMesAnio;
        Boolean correcto = true;

        Decimal asignado = 0;
        Decimal ejecutado = 0;

        if (tablaAsignadoEjecutadoMesAnio.Rows.Count <= 0)
        {
            if (_pres.MensajeError != null)
            {
                correcto = false;
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _pres.MensajeError, Proceso.Error);
            }

            asignado = 0;
            ejecutado = 0;
        }
        else
        {
            filaAsignadoEjecutadoMesAnio = tablaAsignadoEjecutadoMesAnio.Rows[0];

            asignado = Convert.ToDecimal (filaAsignadoEjecutadoMesAnio["PRESUPUESTO_ASIGNADO"]);
            ejecutado = Convert.ToDecimal(filaAsignadoEjecutadoMesAnio["PRESUPUESTO_EJECUTADO"]);
        }

        switch (MES)
        {
            case 1:
                TextBox_PresupuestoEneroAsignado.Text = asignado.ToString();
                TextBox_PresupuestoEneroEjecutado.Text = ejecutado.ToString();
                break;
            case 2:
                TextBox_PresupuestoFebreroAsignado.Text = asignado.ToString();
                TextBox_PresupuestoFebreroEjecutado.Text = ejecutado.ToString();
                break;
            case 3:
                TextBox_PresupuestoMarzoAsignado.Text = asignado.ToString();
                TextBox_PresupuestoMarzoEjecutado.Text = ejecutado.ToString();
                break;
            case 4:
                TextBox_PresupuestoAbrilAsignado.Text = asignado.ToString();
                TextBox_PresupuestoAbrilEjecutado.Text = ejecutado.ToString();
                break;
            case 5:
                TextBox_PresupuestoMayoAsignado.Text = asignado.ToString();
                TextBox_PresupuestoMayoEjecutado.Text = ejecutado.ToString();
                break;
            case 6:
                TextBox_PresupuestoJunioAsignado.Text = asignado.ToString();
                TextBox_PresupuestoJunioEjecutado.Text = ejecutado.ToString();
                break;
            case 7:
                TextBox_PresupuestoJulioAsignado.Text = asignado.ToString();
                TextBox_PresupuestoJulioEjecutado.Text = ejecutado.ToString();
                break;
            case 8:
                TextBox_PresupuestoAgostoAsignado.Text = asignado.ToString();
                TextBox_PresupuestoAgostoEjecutado.Text = ejecutado.ToString();
                break;
            case 9:
                TextBox_PresupuestoSeptiembreAsignado.Text = asignado.ToString();
                TextBox_PresupuestoSeptiembreEjecutado.Text = ejecutado.ToString();
                break;
            case 10:
                TextBox_PresupuestoOctubreAsignado.Text = asignado.ToString();
                TextBox_PresupuestoOctubreEjecutado.Text = ejecutado.ToString();
                break;
            case 11:
                TextBox_PresupuestoNoviembreAsignado.Text = asignado.ToString();
                TextBox_PresupuestoNoviembreEjecutado.Text = ejecutado.ToString();
                break;
            case 12:
                TextBox_PresupuestoDicimebreAsignado.Text = asignado.ToString();
                TextBox_PresupuestoDiciembreEjecutado.Text = ejecutado.ToString();
                break;
        }
        return correcto;
    }
    private void CargarPresupuestoEmpresaSeleccionada(Decimal ID_PRESUPUESTO, Decimal ID_EMPRESA)
    {
        HiddenField_ID_EMPRESA_SELECCIONADA.Value = ID_EMPRESA.ToString();
        HiddenField_ID_PRESUPUESTO_SELECCIONADO.Value = ID_PRESUPUESTO.ToString();

        ConfigurarAreaRseGlobal();

        Int32 ANIO = Convert.ToInt32(HiddenField_ANNO_SELECCIONADO.Value);

        presupuesto _pres = new presupuesto(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaHistorial = _pres.ObtenerHistPresupuestoPorIdPresupuesto(ID_PRESUPUESTO);

        if (tablaHistorial.Rows.Count <= 0)
        {
            if (_pres.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _pres.MensajeError, Proceso.Error);
            }

            Panel_HistorialDetallePresupuestoGeneral.Visible = false;

            GridView_HistorialEmpresaSeleccionada.DataSource = null;
            GridView_HistorialEmpresaSeleccionada.DataBind();
        }
        else
        {
            Panel_HistorialDetallePresupuestoGeneral.Visible = true;

            GridView_HistorialEmpresaSeleccionada.DataSource = tablaHistorial;
            GridView_HistorialEmpresaSeleccionada.DataBind();
        }

        Panel_DetallePorMes.Visible = true;

        CargarPresupuestoAsignadoEjecutadoMes(1);

        CargarPresupuestoAsignadoEjecutadoMes(2);

        CargarPresupuestoAsignadoEjecutadoMes(3);

        CargarPresupuestoAsignadoEjecutadoMes(4);

        CargarPresupuestoAsignadoEjecutadoMes(5);

        CargarPresupuestoAsignadoEjecutadoMes(6);

        CargarPresupuestoAsignadoEjecutadoMes(7);

        CargarPresupuestoAsignadoEjecutadoMes(8);

        CargarPresupuestoAsignadoEjecutadoMes(9);

        CargarPresupuestoAsignadoEjecutadoMes(10);

        CargarPresupuestoAsignadoEjecutadoMes(11);

        CargarPresupuestoAsignadoEjecutadoMes(12);
    }
    protected void GridView_DetallesPresupuestoGeneral_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int indexSeleccionado = Convert.ToInt32(e.CommandArgument);

        ConfigurarAreaRseGlobal();

        Decimal ID_PRESUPUESTO = Convert.ToDecimal(GridView_DetallesPresupuestoGeneral.DataKeys[indexSeleccionado].Values["ID_PRESUPUESTO"]);
        Int32 ANIO = Convert.ToInt32(HiddenField_ANNO_SELECCIONADO.Value);
        Decimal ID_EMPRESA = Convert.ToDecimal(GridView_DetallesPresupuestoGeneral.DataKeys[indexSeleccionado].Values["ID_EMPRESA"]);
        Decimal ID_PRES_GENERAL = Convert.ToDecimal(HiddenField_ID_PRES_GEN_SELECCIONADO.Value);
        Decimal MONTO_TOTAL_PRES_GEN = Convert.ToDecimal(HiddenField_MONTO_PRES_GEN_SELECCIONADO.Value);
        Decimal ASIGNADO_TOTAL_PRES_GEN = Convert.ToDecimal(HiddenField_ASIGNADO_PRES_GEN_SELECCIONADO.Value);
        Decimal EJECUTADO_TOTAL_PRES_GEN = Convert.ToDecimal(HiddenField_EJECUTADO_PRES_GEN_SELECCIONADO.Value);

        if (e.CommandName == "seleccionar")
        {
            if (ID_PRESUPUESTO <= 0)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La Empresa seleccionada aún no tiene asignado un presupuesto para el año: " + ANIO.ToString(), Proceso.Advertencia);
            }
            else
            {
                HiddenField_INDEX_GRID_DET_PRES_GEN.Value = indexSeleccionado.ToString();
                HiddenField_PAGE_GRID_DET_PRES_GEN.Value = GridView_DetallesPresupuestoGeneral.PageIndex.ToString();

                Ocultar(Acciones.PresupuestoEmpresaSeleccionado);
                Mostrar(Acciones.PresupuestoEmpresaSeleccionado);

                CargarPresupuestoEmpresaSeleccionada(ID_PRESUPUESTO, ID_EMPRESA);
            }
        }
        else
        {
            if (e.CommandName == "modificar")
            {
                HiddenField_FILA_SELECCIONADA_GRILLA_DET_PRES_GEN.Value = indexSeleccionado.ToString();

                HabilitarFila_GridView_DetallesPresupuestoGeneral(GridView_DetallesPresupuestoGeneral, indexSeleccionado);

                HiddenField_ACCION_GRILLA_DET_PRES_GEN.Value = AccionesGrilla.Modificar.ToString();
                HiddenField_FILA_SELECCIONADA_GRILLA_DET_PRES_GEN.Value = indexSeleccionado.ToString();

                HiddenField_ID_PRESUPUESTO_DET_PRES_GEN.Value = GridView_DetallesPresupuestoGeneral.DataKeys[indexSeleccionado].Values["ID_PRESUPUESTO"].ToString();

                TextBox textoPresupuesto = GridView_DetallesPresupuestoGeneral.Rows[indexSeleccionado].FindControl("TextBox_Presupuesto") as TextBox;
                HiddenField_PRESUPUESTO_DET_PRES_GEN.Value = Convert.ToDecimal(textoPresupuesto.Text).ToString();

                TextBox textoObservaciones = GridView_DetallesPresupuestoGeneral.Rows[indexSeleccionado].FindControl("TextBox_ObservacionesEmpresa") as TextBox;
                HiddenField_OBSERVACIONES_DET_PRES_GEN.Value = textoObservaciones.Text.Trim();

                ConfigurarBotonesEdicion_GridView_DetallesPresupuestoGeneral(GridView_DetallesPresupuestoGeneral, false, false, true, true);
                PermitirOprimirBotonesDeGuardadoYCancelarEnFilaSeleccionada_GridView_DetallesPresupuestoGeneral(GridView_DetallesPresupuestoGeneral, indexSeleccionado);

                Ocultar(Acciones.ModificarDetallePresGen);
            }
            else
            {
                if (e.CommandName == "cancelar")
                {
                    TextBox textoPresupuesto = GridView_DetallesPresupuestoGeneral.Rows[indexSeleccionado].FindControl("TextBox_Presupuesto") as TextBox;
                    textoPresupuesto.Text = Convert.ToDecimal(HiddenField_PRESUPUESTO_DET_PRES_GEN.Value).ToString();

                    TextBox textoObservaciones = GridView_DetallesPresupuestoGeneral.Rows[indexSeleccionado].FindControl("TextBox_ObservacionesEmpresa") as TextBox;
                    textoObservaciones.Text = HiddenField_OBSERVACIONES_DET_PRES_GEN.Value.Trim();

                    HiddenField_ACCION_GRILLA_DET_PRES_GEN.Value = AccionesGrilla.Ninguna.ToString();

                    InhabilitarFilasGrilla(GridView_DetallesPresupuestoGeneral, 4);

                    ConfigurarBotonesEdicion_GridView_DetallesPresupuestoGeneral(GridView_DetallesPresupuestoGeneral, true, true, false, false);
                }
                else
                {
                    if (e.CommandName == "guardar")
                    {
                        TextBox textoPresupuesto = GridView_DetallesPresupuestoGeneral.Rows[indexSeleccionado].FindControl("TextBox_Presupuesto") as TextBox;
                        TextBox textoAsignado = GridView_DetallesPresupuestoGeneral.Rows[indexSeleccionado].FindControl("TextBox_AsignadoEmpresa") as TextBox;
                        TextBox textoEjecutado = GridView_DetallesPresupuestoGeneral.Rows[indexSeleccionado].FindControl("TextBox_EjecutadoEmpresa") as TextBox;

                        TextBox textoObservaciones = GridView_DetallesPresupuestoGeneral.Rows[indexSeleccionado].FindControl("TextBox_ObservacionesEmpresa") as TextBox;

                        Decimal presupuesto = 0;
                        Decimal asignado = Convert.ToDecimal(textoAsignado.Text);
                        Decimal ejecutado = Convert.ToDecimal(textoEjecutado.Text);
                        Boolean correcto = true;

                        try
                        {
                            presupuesto = Convert.ToDecimal(textoPresupuesto.Text);
                        }
                        catch
                        {
                            correcto = false;
                            presupuesto = 0;
                        }

                        if (correcto == false)
                        {
                            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El presupuesto digitado no es un valor correcto.", Proceso.Advertencia);
                        }
                        else
                        {
                            if (presupuesto <= 0)
                            {
                                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El presupuesto digitado debe ser un valor mayor que cero (0).", Proceso.Advertencia);
                                correcto = false;
                            }
                            else
                            {
                                if ((asignado + ejecutado) > presupuesto)
                                {
                                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El presupuesto digitado no puede ser menor que el valor ya asignado actividades.", Proceso.Advertencia);
                                    correcto = false;
                                }
                                else
                                {
                                    if (textoObservaciones.Text.Trim().Length <= 0)
                                    {
                                        Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "Las observaciones o descripción es necesaria para poder continuar.", Proceso.Advertencia);
                                        correcto = false;
                                    }
                                    else
                                    {
                                        if (ID_PRESUPUESTO <= 0)
                                        {

                                            ASIGNADO_TOTAL_PRES_GEN = ASIGNADO_TOTAL_PRES_GEN + presupuesto;

                                            if (MONTO_TOTAL_PRES_GEN < (ASIGNADO_TOTAL_PRES_GEN + EJECUTADO_TOTAL_PRES_GEN))
                                            {
                                                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El presupuesto asignado a la empresa, sobrepasa el presupuesto general disponible para asignar.", Proceso.Advertencia);
                                                correcto = false;
                                            }
                                        }
                                        else
                                        {
                                            ASIGNADO_TOTAL_PRES_GEN = ASIGNADO_TOTAL_PRES_GEN - Convert.ToDecimal(HiddenField_PRESUPUESTO_DET_PRES_GEN.Value);

                                            ASIGNADO_TOTAL_PRES_GEN = ASIGNADO_TOTAL_PRES_GEN + presupuesto;

                                            if (MONTO_TOTAL_PRES_GEN < (ASIGNADO_TOTAL_PRES_GEN + EJECUTADO_TOTAL_PRES_GEN))
                                            {
                                                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El presupuesto asignado a la empresa, sobrepasa el presupuesto general disponible para asiganar.", Proceso.Advertencia);
                                                correcto = false;
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        if (correcto == true)
                        {
                            if (ID_PRESUPUESTO <= 0)
                            {
                                presupuesto _pres = new presupuesto(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

                                Decimal ID_PRESUPUESTO_NUEVO = _pres.AdicionarPresupuestoEmpresa(ID_EMPRESA, ANIO, presupuesto, textoObservaciones.Text.Trim(), GLO_AREA_RSE_GLOBAL, ID_PRES_GENERAL);

                                if (ID_PRESUPUESTO_NUEVO <= 0)
                                {
                                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _pres.MensajeError, Proceso.Error);
                                }
                                else
                                {
                                    Cargar_GridView_PresupuestosAnio();
                                    InhabilitarFilasGrilla(GridView_PresupuestosAnio, 4);
                                    ConfigurarBotonesEdicion_GridView_PresupuestosAnio(GridView_PresupuestosAnio, true, true, false, false);

                                    CargarPresupuestoGeneralSeleccionado(ID_PRES_GENERAL, ANIO, MONTO_TOTAL_PRES_GEN, ASIGNADO_TOTAL_PRES_GEN, EJECUTADO_TOTAL_PRES_GEN);

                                    HiddenField_ACCION_GRILLA_DET_PRES_GEN.Value = AccionesGrilla.Ninguna.ToString();

                                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El Presupuesto para el año: " + ANIO.ToString() + " fue procesado correctamente.", Proceso.Correcto);
                                }
                            }
                            else
                            {
                                presupuesto _pres = new presupuesto(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

                                Boolean resultado = _pres.ActualizarPresupuesto(ID_PRESUPUESTO, presupuesto, textoObservaciones.Text.Trim());

                                if (resultado == false)
                                {
                                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _pres.MensajeError, Proceso.Error);
                                }
                                else
                                {
                                    Cargar_GridView_PresupuestosAnio();
                                    InhabilitarFilasGrilla(GridView_PresupuestosAnio, 4);
                                    ConfigurarBotonesEdicion_GridView_PresupuestosAnio(GridView_PresupuestosAnio, true, true, false, false);

                                    CargarPresupuestoGeneralSeleccionado(ID_PRES_GENERAL, ANIO, MONTO_TOTAL_PRES_GEN, ASIGNADO_TOTAL_PRES_GEN, EJECUTADO_TOTAL_PRES_GEN);

                                    HiddenField_ACCION_GRILLA_DET_PRES_GEN.Value = AccionesGrilla.Ninguna.ToString();

                                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El Presupuesto para el año: " + ANIO.ToString() + " fue procesado correctamente.", Proceso.Correcto);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    protected void GridView_PresupuestosAnio_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int indexSeleccionado = Convert.ToInt32(e.CommandArgument);

        ConfigurarAreaRseGlobal();

        Decimal ID_PRES_GEN = Convert.ToDecimal(GridView_PresupuestosAnio.DataKeys[indexSeleccionado].Values["ID_PRES_GEN"]);
        Int32 ANIO = Convert.ToInt32(GridView_PresupuestosAnio.DataKeys[indexSeleccionado].Values["ANIO"]);
        Decimal MONTO = Convert.ToDecimal(GridView_PresupuestosAnio.DataKeys[indexSeleccionado].Values["MONTO"]);
        Int32 pagina = GridView_PresupuestosAnio.PageIndex;
        Decimal ASIGNADO = Convert.ToDecimal(GridView_PresupuestosAnio.DataKeys[indexSeleccionado].Values["ASIGNADO"]);
        Decimal EJECUTADO = Convert.ToDecimal(GridView_PresupuestosAnio.DataKeys[indexSeleccionado].Values["EJECUTADO"]);

        if (e.CommandName == "seleccionar")
        {
            if (ID_PRES_GEN <= 0)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El año seleccioando no se ha configurado.", Proceso.Advertencia);
            }
            else
            {
                HiddenField_INDEX_GRIDVIEW_PRES_GEN.Value = indexSeleccionado.ToString();
                HiddenField_PAGE_GRIDVIEW_PRES_GEN.Value = GridView_PresupuestosAnio.PageIndex.ToString();

                Ocultar(Acciones.PresGenSeleccionado);
                Mostrar(Acciones.PresGenSeleccionado);

                HiddenField_LETRA_PAGINACION_EMPRESA.Value = "A";

                CargarPresupuestoGeneralSeleccionado(ID_PRES_GEN, ANIO, MONTO, ASIGNADO, EJECUTADO);

            }
        }
        else
        {
            if (e.CommandName == "modificar")
            {
                HiddenField_FILA_SELECCIONADA_GRILLA_PRES_GEN.Value = indexSeleccionado.ToString();

                HabilitarFila_GridView_PresupuestosAnio(GridView_PresupuestosAnio, indexSeleccionado);

                HiddenField_ACCION_GRILLA_PRES_GEN.Value = AccionesGrilla.Modificar.ToString();
                HiddenField_FILA_SELECCIONADA_GRILLA_PRES_GEN.Value = indexSeleccionado.ToString();

                HiddenField_ID_PRES_GEN.Value = GridView_PresupuestosAnio.DataKeys[indexSeleccionado].Values["ID_PRES_GEN"].ToString();

                TextBox textoMonto = GridView_PresupuestosAnio.Rows[indexSeleccionado].FindControl("TextBox_Monto") as TextBox;
                HiddenField_MONTO_PRES_GEN.Value = Convert.ToDecimal(textoMonto.Text).ToString();

                TextBox textoDescripcion = GridView_PresupuestosAnio.Rows[indexSeleccionado].FindControl("TextBox_Descripcion") as TextBox;
                HiddenField_DESCRIPCION_PRES_GEN.Value = textoDescripcion.Text.Trim();

                ConfigurarBotonesEdicion_GridView_PresupuestosAnio(GridView_PresupuestosAnio, false, false, true, true);
                PermitirOprimirBotonesDeGuardadoYCancelarEnFilaSeleccionada_GridView_PresupuestosAnio(GridView_PresupuestosAnio, indexSeleccionado);

                Ocultar(Acciones.ModificarPreGen);
            }
            else
            {
                if (e.CommandName == "cancelar")
                {
                    TextBox textoMonto = GridView_PresupuestosAnio.Rows[indexSeleccionado].FindControl("TextBox_Monto") as TextBox;
                    textoMonto.Text = Convert.ToDecimal(HiddenField_MONTO_PRES_GEN.Value).ToString();

                    TextBox textoDescripcion = GridView_PresupuestosAnio.Rows[indexSeleccionado].FindControl("TextBox_Descripcion") as TextBox;
                    textoDescripcion.Text = HiddenField_DESCRIPCION_PRES_GEN.Value.Trim();

                    HiddenField_ACCION_GRILLA_PRES_GEN.Value = AccionesGrilla.Ninguna.ToString();

                    InhabilitarFilasGrilla(GridView_PresupuestosAnio, 4);

                    ConfigurarBotonesEdicion_GridView_PresupuestosAnio(GridView_PresupuestosAnio, true, true, false, false);
                }
                else
                {
                    if (e.CommandName == "guardar")
                    {
                        TextBox textoMonto = GridView_PresupuestosAnio.Rows[indexSeleccionado].FindControl("TextBox_Monto") as TextBox;

                        TextBox textoAsignado = GridView_PresupuestosAnio.Rows[indexSeleccionado].FindControl("TextBox_Asignado") as TextBox;

                        TextBox textoEjecutado = GridView_PresupuestosAnio.Rows[indexSeleccionado].FindControl("TextBox_Ejecutado") as TextBox;

                        TextBox textoDescripcion = GridView_PresupuestosAnio.Rows[indexSeleccionado].FindControl("TextBox_Descripcion") as TextBox;

                        Decimal monto = 0;
                        Decimal asignado = Convert.ToDecimal(textoAsignado.Text);
                        Decimal ejecutado = Convert.ToDecimal(textoEjecutado.Text);
                        Boolean correcto = true;

                        try
                        {
                            monto = Convert.ToDecimal(textoMonto.Text);
                        }
                        catch
                        {
                            correcto = false;
                            monto = 0;
                        }

                        if(correcto == false)
                        {
                            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El monto digitado no es un valor correcto.", Proceso.Advertencia);
                        }
                        else
                        {
                            if(monto <= 0)
                            {
                                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El monto digitado debe ser un valor mayor que cero (0).", Proceso.Advertencia);
                                correcto = false;
                            }
                            else
                            {
                                if((asignado + ejecutado) > monto)
                                {
                                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El monto digitado no puede ser menor que el valor ya ejecutado y asignado a actividades.", Proceso.Advertencia);
                                    correcto = false;
                                }
                                else
                                {
                                    if(textoDescripcion.Text.Trim().Length <= 0)
                                    {
                                        Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "Las observaciones o descripción es necesaria ára poder continuar.", Proceso.Advertencia);
                                        correcto = false;
                                    }
                                }
                            }
                        }

                        if (correcto == true)
                        {
                            if (ID_PRES_GEN <= 0)
                            {
                                presupuesto _pres = new presupuesto(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

                                Decimal ID_PRES_GEN_NUEVO = _pres.AdicionarPresupuestoGeneral(ANIO, GLO_AREA_RSE_GLOBAL, monto, textoDescripcion.Text.Trim());

                                if (ID_PRES_GEN_NUEVO <= 0)
                                {
                                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _pres.MensajeError, Proceso.Error);
                                }
                                else
                                {
                                    Ocultar(Acciones.Inicio);
                                    Mostrar(Acciones.Inicio);
                                    Cargar(Acciones.Inicio);

                                    HiddenField_ACCION_GRILLA_PRES_GEN.Value = AccionesGrilla.Ninguna.ToString();

                                    HiddenField_INDEX_GRIDVIEW_PRES_GEN.Value = "-1";
                                    HiddenField_PAGE_GRIDVIEW_PRES_GEN.Value = "0";

                                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El Presupuesto para el año: " + ANIO.ToString() + " fue procesado correctamente.", Proceso.Correcto);
                                }
                            }
                            else
                            {
                                presupuesto _pres = new presupuesto(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

                                Boolean resultado = _pres.ActualizarPresupuestoGeneral(ID_PRES_GEN, monto, textoDescripcion.Text.Trim());

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

                                    HiddenField_ACCION_GRILLA_PRES_GEN.Value = AccionesGrilla.Ninguna.ToString();

                                    HiddenField_INDEX_GRIDVIEW_PRES_GEN.Value = "-1";
                                    HiddenField_PAGE_GRIDVIEW_PRES_GEN.Value = "0";

                                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El Presupuesto para el año: " + ANIO.ToString() + " fue procesado correctamente.", Proceso.Correcto);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    protected void GridView_HistorialPresupuestoGeneral_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView_HistorialPresupuestoGeneral.PageIndex = e.NewPageIndex;

        Decimal ID_PRES_GEN = Convert.ToDecimal(HiddenField_ID_PRES_GEN_SELECCIONADO.Value);

        presupuesto _pres = new presupuesto(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaHistorial = _pres.ObtenerHistPresupuestoGeneral(ID_PRES_GEN);

        if (tablaHistorial.Rows.Count <= 0)
        {
            if (_pres.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _pres.MensajeError, Proceso.Error);
            }

            Panel_DatosPresupuestoAnioSeleccionado.Visible = false;
        }
        else
        {
            Panel_DatosPresupuestoAnioSeleccionado.Visible = true;

            GridView_HistorialPresupuestoGeneral.DataSource = tablaHistorial;
            GridView_HistorialPresupuestoGeneral.DataBind();
        }
    }
    private void Cargar_GridView_PresupuestosAnio()
    {
        DataTable tablaParaGrilla = new DataTable();

        Boolean correcto = true;

        ConfigurarAreaRseGlobal();

        presupuesto _pres = new presupuesto(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaPresupuestosGenerales = _pres.ObtenerPresupuestosGeneralesArea(GLO_AREA_RSE_GLOBAL);

        if (tablaPresupuestosGenerales.Rows.Count <= 0)
        {
            if (_pres.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _pres.MensajeError, Proceso.Error);

                correcto = false;
            }
            else
            {
                tablaParaGrilla = AdicionarAnioActual(tablaPresupuestosGenerales);
            }
        }
        else
        {
            if (UltimoAnioEnTabla(tablaPresupuestosGenerales) < DateTime.Now.Year)
            {
                tablaParaGrilla = AdicionarAnioActual(tablaPresupuestosGenerales);
            }
            else
            {
                tablaParaGrilla = tablaPresupuestosGenerales;
            }
        }

        if (correcto == true)
        {
            Cargar_GridView_PresupuestosAnio_DesdeDataTable(tablaParaGrilla);
        }
    }
    private void CargarPresupuestoGeneralSeleccionado(Decimal ID_PRES_GEN, Int32 ANIO, Decimal MONTO, Decimal ASIGNADO, Decimal EJECUTADO)
    {
        tools _tools = new tools();

        HiddenField_ID_PRES_GEN_SELECCIONADO.Value = ID_PRES_GEN.ToString();
        HiddenField_ANNO_SELECCIONADO.Value = ANIO.ToString();
        HiddenField_MONTO_PRES_GEN_SELECCIONADO.Value = MONTO.ToString();
        HiddenField_ASIGNADO_PRES_GEN_SELECCIONADO.Value = ASIGNADO.ToString();
        HiddenField_EJECUTADO_PRES_GEN_SELECCIONADO.Value = EJECUTADO.ToString();

        presupuesto _pres = new presupuesto(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaHistorial = _pres.ObtenerHistPresupuestoGeneral(ID_PRES_GEN);
        if (tablaHistorial.Rows.Count <= 0)
        {
            if (_pres.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _pres.MensajeError, Proceso.Error);
            }

            Panel_DatosPresupuestoAnioSeleccionado.Visible = false;
        }
        else
        {
            Panel_DatosPresupuestoAnioSeleccionado.Visible = true;

            GridView_HistorialPresupuestoGeneral.DataSource = tablaHistorial;
            GridView_HistorialPresupuestoGeneral.DataBind();
        }

        DataTable tablaPresupuestosEmpresas = null;

        if (HiddenField_ID_AREA.Value != Programa.Areas.GESTIONHUMANA.ToString())
        {
            tablaPresupuestosEmpresas = _pres.ObtenerPresupuestosEmpresasesPorPresGen(ID_PRES_GEN, ANIO, 0);
        }
        else
        {
            Decimal ID_EMPRESA = _tools.ObtenerIdEmpleadorPorSession(Convert.ToInt32(Session["idEmpresa"]));
            tablaPresupuestosEmpresas = _pres.ObtenerPresupuestosEmpresasesPorPresGen(ID_PRES_GEN, ANIO, ID_EMPRESA);
        }

        HiddenField_INDEX_GRID_DET_PRES_GEN.Value = "-1";
        HiddenField_PAGE_GRID_DET_PRES_GEN.Value = "0";

        if (tablaPresupuestosEmpresas.Rows.Count <= 0)
        {
            if (_pres.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _pres.MensajeError, Proceso.Error);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontró información de empresa y presupuestos para el año seleccionado.", Proceso.Advertencia);
            }

            GridView_DetallesPresupuestoGeneral.PageIndex = 0;
            GridView_DetallesPresupuestoGeneral.DataSource = null;
            GridView_DetallesPresupuestoGeneral.DataBind();

            Panel_DetallesPresupuestoGeneral.Visible = false;
        }
        else
        {
            Panel_DetallesPresupuestoGeneral.Visible = true;

            Cargar_GridView_DetallesPresupuestoGeneral_DesdeDataTable(tablaPresupuestosEmpresas);

            InhabilitarFilasGrilla(GridView_DetallesPresupuestoGeneral, 4);
            ConfigurarBotonesEdicion_GridView_DetallesPresupuestoGeneral(GridView_DetallesPresupuestoGeneral, true, true, false, false);
        }
    }