protected void btnBorrar_Click(object sender, EventArgs e)
        {
            string msg = "Se ha eliminado correctamente";

            int currentId = Convert.ToInt32(ViewState["currentId"]);

            ObraFinanciamiento obrafinanciamiento = uow.ObraFinanciamientoBusinessLogic.GetByID(currentId);


            uow.ObraFinanciamientoBusinessLogic.Delete(obrafinanciamiento);
            uow.SaveChanges();

            if (uow.Errors.Count == 0)
            {
                divBtnNuevo.Style.Add("display", "block");
                BindGrid();
            }
            else
            {
                divMsg.Style.Add("display", "block");

                msg = string.Empty;
                foreach (string cad in uow.Errors)
                {
                    msg += cad;
                }

                lblMensajes.Text = msg;
            }
        }
        protected void imgBtnEdit_Click(object sender, ImageClickEventArgs e)
        {
            ViewState["titulo"] = "Modificando financiamiento de obra";
            ViewState["accion"] = "A";

            GridViewRow row = (GridViewRow)((ImageButton)sender).NamingContainer;

            ViewState["currentId"] = GridViewObraFinanciamiento.DataKeys[row.RowIndex].Values["Id"].ToString();

            currentId = Convert.ToInt32(ViewState["currentId"]);

            ObraFinanciamiento obrafinanciamiento = uow.ObraFinanciamientoBusinessLogic.GetByID(currentId);

            BindearDropDownList();
            BindControles(obrafinanciamiento);

            divMsg.Style.Add("display", "none");

            ClientScript.RegisterStartupScript(this.GetType(), "script01", "fnc_MostrarPanelEditar();", true);
        }
        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            string msg = String.Empty;

            poadetalleId = Utilerias.StrToInt(Request.QueryString["poadetalleId"].ToString());

            POADetalle poadetalle = uow.POADetalleBusinessLogic.GetByID(poadetalleId);

            Obra obra = uow.ObraBusinessLogic.Get(o => o.POADetalleId == poadetalleId).FirstOrDefault();

            if (obra == null)
            {
                obra                              = new Obra();
                obra.Numero                       = poadetalle.Numero;
                obra.Descripcion                  = poadetalle.Descripcion;
                obra.MunicipioId                  = poadetalle.MunicipioId;
                obra.Localidad                    = poadetalle.Localidad;
                obra.CriterioPriorizacionId       = poadetalle.CriterioPriorizacionId;
                obra.Convenio                     = poadetalle.Convenio;
                obra.AperturaProgramaticaId       = poadetalle.AperturaProgramaticaId;
                obra.AperturaProgramaticaMetaId   = poadetalle.AperturaProgramaticaMetaId;
                obra.AperturaProgramaticaUnidadId = poadetalle.AperturaProgramaticaUnidadId;
                obra.NumeroBeneficiarios          = poadetalle.NumeroBeneficiarios;
                obra.CantidadUnidades             = poadetalle.CantidadUnidades;
                obra.Empleos                      = poadetalle.Empleos;
                obra.Jornales                     = poadetalle.Jornales;

                obra.SituacionObraId = poadetalle.SituacionObraId;
                obra.NumeroAnterior  = poadetalle.NumeroAnterior;
                obra.ImporteLiberadoEjerciciosAnteriores = poadetalle.ImporteLiberadoEjerciciosAnteriores;

                obra.FuncionalidadId     = poadetalle.FuncionalidadId;
                obra.EjeId               = poadetalle.EjeId;
                obra.PlanSectorialId     = poadetalle.PlanSectorialId;
                obra.ModalidadId         = poadetalle.ModalidadId;
                obra.ProgramaId          = poadetalle.ProgramaId;
                obra.GrupoBeneficiarioId = poadetalle.GrupoBeneficiarioId;


                obra.ModalidadObra = poadetalle.ModalidadObra;
                obra.Observaciones = poadetalle.Observaciones;

                obra.POAId        = poadetalle.POAId;
                obra.POADetalleId = poadetalle.Id;

                uow.ObraBusinessLogic.Insert(obra);
            }


            //Superamos el techo financiero?

            int tfupId = Utilerias.StrToInt(ddlTechoFinancieroUnidadPresupuestal.SelectedValue);

            TechoFinancieroUnidadPresupuestal tfup = uow.TechoFinancieroUnidadPresuestalBusinessLogic.GetByID(tfupId);


            if (ViewState["accion"].Equals("N"))
            {
                var ofinanciamiento = uow.ObraFinanciamientoBusinessLogic.Get(of => of.ObraId == obra.Id & of.TechoFinancieroUnidadPresupuestalId == tfupId).FirstOrDefault();

                if (ofinanciamiento != null)
                {
                    uow.Errors.Add("El importe para este fondo ya fue asignado, intente modificarlo");
                }
                else if (tfup.GetImporteAsignado() + Convert.ToDecimal(txtImporte.Text) > tfup.Importe)
                {
                    uow.Errors.Add("El importe que intenta asignar más el importe asignado (" + tfup.GetImporteAsignado(currentId).ToString("C2") + "),superan el techo financiero (" + tfup.Importe.ToString("c2") + ") para el fondo seleccionado.");
                }
            }
            else
            {
                currentId = Convert.ToInt32(ViewState["currentId"]);

                if (tfup.GetImporteAsignado(currentId) + Convert.ToDecimal(txtImporte.Text) > tfup.Importe)
                {
                    uow.Errors.Add("El importe que intenta asignar más el importe asignado (" + tfup.GetImporteAsignado(currentId).ToString("C2") + "),superan el techo financiero (" + tfup.Importe.ToString("c2") + ") para el fondo seleccionado.");
                }
            }



            if (uow.Errors.Count > 0)
            {
                divMsg.Style.Add("display", "block");

                msg = string.Empty;
                foreach (string cad in uow.Errors)
                {
                    msg += cad;
                }

                lblMensajes.Text = msg;

                return;
            }


            ObraFinanciamiento obrafinanciamiento;


            if (ViewState["accion"].Equals("N"))
            {
                obrafinanciamiento = new ObraFinanciamiento();
                obrafinanciamiento.TechoFinancieroUnidadPresupuestalId = Utilerias.StrToInt(ddlTechoFinancieroUnidadPresupuestal.SelectedValue);
                obrafinanciamiento.Importe = Convert.ToDecimal(txtImporte.Text);

                obra.DetalleFinanciamientos.Add(obrafinanciamiento);
            }
            else
            {
                currentId          = Convert.ToInt32(ViewState["currentId"]);
                obrafinanciamiento = uow.ObraFinanciamientoBusinessLogic.GetByID(currentId);
                obrafinanciamiento.TechoFinancieroUnidadPresupuestalId = Utilerias.StrToInt(ddlTechoFinancieroUnidadPresupuestal.SelectedValue);
                obrafinanciamiento.Importe = Convert.ToDecimal(txtImporte.Text);
            }


            uow.SaveChanges();

            if (uow.Errors.Count == 0)
            {
                divBtnNuevo.Style.Add("display", "block");
                divMsg.Style.Add("display", "none");

                BindearDropDownList();
                BindGrid();


                //ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "script01", "fnc_OcultarPanelEditar();", false);

                //Forzar un postback para actualizar gridview de financiamientos de la obra
                Response.Redirect(Request.Url.ToString());
            }
            else
            {
                divMsg.Style.Add("display", "block");

                msg = string.Empty;
                foreach (string cad in uow.Errors)
                {
                    msg += cad;
                }

                lblMensajes.Text = msg;
            }
        }
 public void BindControles(ObraFinanciamiento obrafinanciamiento)
 {
     ddlTechoFinancieroUnidadPresupuestal.SelectedValue = obrafinanciamiento.TechoFinancieroUnidadPresupuestalId.ToString();
     txtImporte.Text = obrafinanciamiento.Importe.ToString();
 }