Ejemplo n.º 1
0
        protected void imgBtnEdit_Click(object sender, ImageClickEventArgs e)
        {
            GridViewRow row = (GridViewRow)((ImageButton)sender).NamingContainer;

            _ID.Text = GridViewObras.DataKeys[row.RowIndex].Values["Id"].ToString();

            currentId = Convert.ToInt32(GridViewObras.DataKeys[row.RowIndex].Values["Id"].ToString());

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

            BindControles(poadetalle);

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

            if (obra == null)
            {
                HabilitarDesHabilitarControles(true);
            }
            else
            {
                HabilitarDesHabilitarControles(false);
            }


            divEdicion.Style.Add("display", "block");
            divBtnNuevo.Style.Add("display", "none");
            divMsg.Style.Add("display", "none");
            _Accion.Text = "A";

            ClientScript.RegisterStartupScript(this.GetType(), "script01", "fnc_ocultarDivObraAnterior();", true);
            ClientScript.RegisterStartupScript(this.GetType(), "script02", "fnc_ocultarDivDatosConvenio();", true);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            uow = new UnitOfWork(Session["IdUser"].ToString());

            poadetalleId  = Utilerias.StrToInt(Request.QueryString["poadetalleId"].ToString());
            enproyectopoa = Convert.ToBoolean(Request.QueryString["EnProyecto"]);

            if (enproyectopoa)
            {
                divlinkPOAFinanciamiento.Style.Add("display", "block");
                divlinkPOAAjustadoFinanciamiento.Style.Add("display", "none");
            }
            else
            {
                divlinkPOAFinanciamiento.Style.Add("display", "none");
                divlinkPOAAjustadoFinanciamiento.Style.Add("display", "block");
            }

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

            obraNumero      = poadetalle.Numero;
            obraDescripcion = poadetalle.Descripcion;

            unidadpresupuestalId = Utilerias.StrToInt(Session["UnidadPresupuestalId"].ToString());
            ejercicioId          = Utilerias.StrToInt(Session["EjercicioId"].ToString());


            if (!IsPostBack)
            {
                BindearDropDownList();
                BindGrid();
            }
        }
Ejemplo n.º 3
0
        protected void imgBtnEliminar_Click(object sender, ImageClickEventArgs e)
        {
            //Se busca el ID de la fila seleccionada
            GridViewRow row = (GridViewRow)((ImageButton)sender).NamingContainer;
            string      msg = "Se ha eliminado correctamente";

            currentId = Utilerias.StrToInt(GridViewObras.DataKeys[row.RowIndex].Value.ToString());

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

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

            if (obra != null)
            {
                divEdicion.Style.Add("display", "none");
                divBtnNuevo.Style.Add("display", "block");
                divMsg.Style.Add("display", "block");

                lblMensajes.Text = String.Format("La obra {0} no puede eliminarse porque ya tiene asignado financiamientos.", poadetalle.Numero);

                return;
            }



            uow.POADetalleBusinessLogic.Delete(poadetalle);
            uow.SaveChanges();

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

                this.GridViewObras.DataBind();
            }
            else
            {
                divEdicion.Style.Add("display", "none");
                divBtnNuevo.Style.Add("display", "block");
                divMsg.Style.Add("display", "block");

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

                lblMensajes.Text = msg;
            }
        }
Ejemplo n.º 4
0
        public static object AddRecord(RegistroObra registro)
        {

            UnitOfWork uow = new UnitOfWork(HttpContext.Current.Session["IdUser"].ToString());

            int unidadpresupuestalId = Utilerias.StrToInt(HttpContext.Current.Session["UnidadPresupuestalId"].ToString());
            int ejercicioId = Utilerias.StrToInt(HttpContext.Current.Session["EjercicioId"].ToString());
          
            DataAccessLayer.Models.POA poa = uow.POABusinessLogic.Get(p => p.UnidadPresupuestalId == unidadpresupuestalId & p.EjercicioId == ejercicioId).FirstOrDefault();
            POADetalle poadetalle = null;          

            if (poa == null)
            {
                poa = new DataAccessLayer.Models.POA();
                poa.UnidadPresupuestalId = unidadpresupuestalId;
                poa.EjercicioId = ejercicioId;
            }


            Obra obra = new Obra();

            obra.Numero = registro.Numero;
            obra.Descripcion = registro.Descripcion;
            obra.MunicipioId = registro.MunicipioId;
            obra.LocalidadId = registro.LocalidadId;
            obra.CriterioPriorizacionId = registro.CriterioPriorizacionId;
            obra.Convenio = registro.Convenio;
            obra.AperturaProgramaticaId = registro.AperturaProgramaticaId;
            obra.AperturaProgramaticaUnidadId = registro.UnidadMedidaId;
            obra.CantidadUnidades = registro.CantidadUnidades;
            obra.NumeroBeneficiarios = registro.NumeroBeneficiarios;
            obra.Empleos = registro.Empleos;
            obra.Jornales = registro.Jornales;
            obra.SituacionObraId = registro.SituacionObraId;
            obra.NumeroAnterior = registro.NumeroAnterior;
            obra.ImporteLiberadoEjerciciosAnteriores = registro.ImporteLiberadoEjerciciosAnteriores;
            obra.ModalidadObra = (enumModalidadObra)registro.ModalidadEjecucionId;

            if(registro.FuncionalidadId==0)
            {
                obra.FuncionalidadId =null;
            }else
            {
                obra.FuncionalidadId =registro.FuncionalidadId;
            };

            if (registro.EjeId == 0)
            {
                obra.EjeId = null;
            }
            else
            {
                obra.EjeId = registro.EjeId;
            };

            if (registro.PlanSectorialId == 0)
            {
                obra.PlanSectorialId = null;
            }
            else
            {
                obra.PlanSectorialId = registro.PlanSectorialId;
            };

            if (registro.ModalidadPVDId == 0)
            {
                obra.ModalidadId = null;
            }
            else
            {
                obra.ModalidadId = registro.ModalidadPVDId;
            };

            if (registro.ProgramaPVDId == 0)
            {
                obra.ProgramaId = null;
            }
            else
            {
                obra.ProgramaId = registro.ProgramaPVDId;
            };

            if (registro.GrupoBeneficiarioId == 0)
            {
                obra.GrupoBeneficiarioId = null;
            }
            else
            {
                obra.GrupoBeneficiarioId = registro.GrupoBeneficiarioId;
            };
      

            //Crear un poadetalle para una nueva obra

                    poadetalle = new POADetalle();
                    poadetalle.Numero = obra.Numero;
                    poadetalle.Descripcion = obra.Descripcion;
                    poadetalle.MunicipioId = obra.MunicipioId;
                    poadetalle.LocalidadId = obra.LocalidadId;                
                    poadetalle.CriterioPriorizacionId = obra.CriterioPriorizacionId;
                    poadetalle.Convenio = obra.Convenio;
                    poadetalle.AperturaProgramaticaId = obra.AperturaProgramaticaId;
                    poadetalle.AperturaProgramaticaMetaId = obra.AperturaProgramaticaMetaId;
                    poadetalle.AperturaProgramaticaUnidadId = obra.AperturaProgramaticaUnidadId;
                    poadetalle.NumeroBeneficiarios = obra.NumeroBeneficiarios;
                    poadetalle.CantidadUnidades = obra.CantidadUnidades;
                    poadetalle.Empleos = obra.Empleos;
                    poadetalle.Jornales = obra.Jornales;

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


                    poadetalle.SituacionObraId = obra.SituacionObraId;
                    poadetalle.NumeroAnterior = obra.NumeroAnterior;
                    poadetalle.ImporteLiberadoEjerciciosAnteriores = obra.ImporteLiberadoEjerciciosAnteriores;
                    poadetalle.ModalidadObra = obra.ModalidadObra;               
                    poadetalle.Observaciones = obra.Observaciones;
                    poadetalle.Extemporanea = true;
                    poadetalle.POA = poa;                

                    obra.POA = poa;
                    obra.POADetalle = poadetalle;                  
                        
            
            uow.ObraBusinessLogic.Insert(obra);

            uow.SaveChanges();

            return uow.GetResult();

        }
Ejemplo n.º 5
0
        protected override void Seed(DataAccessLayer.Models.Contexto context)
        {
            //  This method will be called after migrating to the latest version.

            //  You can use the DbSet<T>.AddOrUpdate() helper extension method
            //  to avoid creating duplicate seed data. E.g.
            //
            //    context.People.AddOrUpdate(
            //      p => p.FullName,
            //      new Person { FullName = "Andrew Peters" },
            //      new Person { FullName = "Brice Lambson" },
            //      new Person { FullName = "Rowan Miller" }
            //    );
            //

            context.Usuarios.AddOrUpdate(

                new Usuario {
                Id = 1, Login = "******", Password = "******", Nombre = "Usuario de SEDARPA", Activo = true
            },
                new Usuario {
                Id = 2, Login = "******", Password = "******", Nombre = "Usuario de IIEV", Activo = true
            },
                new Usuario {
                Id = 3, Login = "******", Password = "******", Nombre = "Usuario de INVERBIO", Activo = true
            }
                );



            context.Ejercicios.AddOrUpdate(

                new Ejercicio {
                Id = 1, Año = 2009, Activo = false
            },
                new Ejercicio {
                Id = 2, Año = 2010, Activo = false
            },
                new Ejercicio {
                Id = 3, Año = 2011, Activo = false
            },
                new Ejercicio {
                Id = 4, Año = 2012, Activo = false
            },
                new Ejercicio {
                Id = 5, Año = 2013, Activo = false
            },
                new Ejercicio {
                Id = 6, Año = 2014, Activo = true
            },
                new Ejercicio {
                Id = 7, Año = 2015, Activo = false
            },
                new Ejercicio {
                Id = 8, Año = 2016, Activo = false
            }
                );

            context.UnidadesPresupuestales.AddOrUpdate(

                new UnidadPresupuestal {
                Id = 1, Clave = "102S11001", Abreviatura = "SEDARPA", Nombre = "Secretaria de Desarrollo Agropecuario, Rural y Pesca", Orden = 1
            },
                new UnidadPresupuestal {
                Id = 2, Clave = "104C80803", Abreviatura = "IIEV", Nombre = "Instituto de Espacios Educativos", Orden = 2
            },
                new UnidadPresupuestal {
                Id = 3, Clave = "104S80801", Abreviatura = "COBAEV", Nombre = "Colegio de Bachilleres del Estado de Veracruz", Orden = 3
            }

                );

            UnidadPresupuestal sedarpa = context.UnidadesPresupuestales.Local.FirstOrDefault(u => u.Clave == "102S11001");

            sedarpa.DetalleSubUnidadesPresupuestales.Add(new UnidadPresupuestal {
                Id = 4, Clave = "102S80808", Abreviatura = "CODEPAP", Nombre = "Consejo de desarrollo del Papaloapan", Orden = 1
            });
            sedarpa.DetalleSubUnidadesPresupuestales.Add(new UnidadPresupuestal {
                Id = 5, Clave = "102S80809", Abreviatura = "INVERBIO", Nombre = "Instituto Veracruzano de Bioenergéticos", Orden = 2
            });



            Usuario usedarpa  = context.Usuarios.Local.FirstOrDefault(u => u.Login == "sedarpa");
            Usuario uiiev     = context.Usuarios.Local.FirstOrDefault(u => u.Login == "iiev");
            Usuario uinverbio = context.Usuarios.Local.FirstOrDefault(u => u.Login == "inverbio");

            usedarpa.DetalleUnidadesPresupuestales.Add(new UsuarioUnidadPresupuestal {
                UnidadPresupuestalId = 1
            });
            uiiev.DetalleUnidadesPresupuestales.Add(new UsuarioUnidadPresupuestal {
                UnidadPresupuestalId = 2
            });
            uinverbio.DetalleUnidadesPresupuestales.Add(new UsuarioUnidadPresupuestal {
                UnidadPresupuestalId = 5
            });



            context.Municipios.AddOrUpdate(
                new Municipio {
                Id = 1, Clave = "M001", Nombre = "Acajete", Orden = 1
            },
                new Municipio {
                Id = 2, Clave = "M002", Nombre = "Acatlán", Orden = 2
            },
                new Municipio {
                Id = 3, Clave = "M003", Nombre = "Acayucan", Orden = 3
            },
                new Municipio {
                Id = 4, Clave = "M004", Nombre = "Actopan", Orden = 4
            }
                );

            context.TiposLocalidad.AddOrUpdate(
                new TipoLocalidad {
                Id = 1, Clave = "TL001", Nombre = "Poblado urbano", Orden = 1
            },
                new TipoLocalidad {
                Id = 2, Clave = "TL002", Nombre = "Poblado rural", Orden = 2
            },
                new TipoLocalidad {
                Id = 3, Clave = "TL003", Nombre = "Colonia popular", Orden = 3
            },
                new TipoLocalidad {
                Id = 4, Clave = "TL004", Nombre = "Poblado indígena", Orden = 4
            }
                );

            context.SituacionesObra.AddOrUpdate(
                new SituacionObra {
                Id = 1, Clave = "SO001", Nombre = "Nueva", Orden = 1
            },
                new SituacionObra {
                Id = 2, Clave = "SO002", Nombre = "Proceso (Concluir financieramente)", Orden = 2
            },
                new SituacionObra {
                Id = 3, Clave = "SO003", Nombre = "Proceso (Concluir fisica y financieramente)", Orden = 3
            }

                );


            context.Fondos.AddOrUpdate(
                new Fondo {
                Id = 1, Clave = "F010", Abreviatura = "FORTAMUNDF", Nombre = "Fondo de Aportaciones para el Fortalecimiento de los Municipios y Demarcaciones Territoriales del Distrito Federal", Orden = 1
            },
                new Fondo {
                Id = 2, Clave = "F020", Abreviatura = "FAIS", Nombre = "Fondo para la Infraestructura Social", Orden = 2
            },
                new Fondo {
                Id = 3, Clave = "F030", Abreviatura = "Otros", Nombre = "Otros fondos", Orden = 3
            }
                );

            Fondo fais = context.Fondos.Local.FirstOrDefault(f => f.Clave == "F010");

            fais.DetalleSubFondos.Add(new Fondo {
                Id = 4, Clave = "F011", Abreviatura = "FISE", Nombre = "Fondo para la Infraestructura Social Estatal", Orden = 1
            });
            fais.DetalleSubFondos.Add(new Fondo {
                Id = 5, Clave = "F012", Abreviatura = "FISM", Nombre = "Fondo para la Infraestructura Social Municipal ", Orden = 2
            });

            context.ModalidadesFinanciamiento.AddOrUpdate(
                new ModalidadFinanciamiento {
                Id = 1, Clave = "MF001", Nombre = "Actual", Orden = 1
            },
                new ModalidadFinanciamiento {
                Id = 2, Clave = "MF002", Nombre = "Remanente", Orden = 2
            },
                new ModalidadFinanciamiento {
                Id = 3, Clave = "MF003", Nombre = "Intereses", Orden = 3
            },
                new ModalidadFinanciamiento {
                Id = 4, Clave = "MF004", Nombre = "Prestamo", Orden = 4
            }
                );

            context.AperturaProgramaticaUnidades.AddOrUpdate(
                new AperturaProgramaticaUnidad {
                Id = 1, Clave = "APU001", Nombre = "Planta", Orden = 1
            },
                new AperturaProgramaticaUnidad {
                Id = 2, Clave = "APU002", Nombre = "Pozo", Orden = 2
            },
                new AperturaProgramaticaUnidad {
                Id = 3, Clave = "APU003", Nombre = "Tanque", Orden = 3
            },
                new AperturaProgramaticaUnidad {
                Id = 4, Clave = "APU004", Nombre = "Metro lineal", Orden = 4
            },
                new AperturaProgramaticaUnidad {
                Id = 5, Clave = "APU005", Nombre = "Sistema", Orden = 5
            },
                new AperturaProgramaticaUnidad {
                Id = 6, Clave = "APU006", Nombre = "Obra", Orden = 6
            },
                new AperturaProgramaticaUnidad {
                Id = 7, Clave = "APU007", Nombre = "Pozo", Orden = 7
            },
                new AperturaProgramaticaUnidad {
                Id = 8, Clave = "APU008", Nombre = "Olla", Orden = 8
            }

                );

            context.AperturaProgramaticaBeneficiarios.AddOrUpdate(
                new AperturaProgramaticaBeneficiario {
                Id = 1, Clave = "APB001", Nombre = "Persona", Orden = 1
            },
                new AperturaProgramaticaBeneficiario {
                Id = 2, Clave = "APB002", Nombre = "Productor", Orden = 2
            },
                new AperturaProgramaticaBeneficiario {
                Id = 3, Clave = "APB003", Nombre = "Familia", Orden = 3
            },
                new AperturaProgramaticaBeneficiario {
                Id = 4, Clave = "APB004", Nombre = "Alumno", Orden = 4
            }

                );

            context.AperturaProgramatica.AddOrUpdate(
                new AperturaProgramatica {
                Id = 1, Clave = "SC", Nombre = "Agua y saneamiento (Agua potable)", Orden = 1, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 2, Clave = "SD", Nombre = "Agua y saneamiento (Drenaje)", Orden = 2, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 3, Clave = "SE", Nombre = "Urbanización municipal", Orden = 3, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 4, Clave = "SG", Nombre = "Electrificación", Orden = 4, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 5, Clave = "SO", Nombre = "Salud", Orden = 5, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 6, Clave = "SJ", Nombre = "Educación", Orden = 6, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 7, Clave = "SH", Nombre = "Vivienda", Orden = 7, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 8, Clave = "UB", Nombre = "Caminos rurales", Orden = 8, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 9, Clave = "IR", Nombre = "Infraestructura productiva rural", Orden = 9, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 10, Clave = "UM", Nombre = "Equipamiento urbano", Orden = 10, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 11, Clave = "PE", Nombre = "Protección y preservación ecológica", Orden = 11, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 12, Clave = "BE", Nombre = "Bienes muebles", Orden = 12, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 13, Clave = "BI", Nombre = "Bienes inmuebles", Orden = 13, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 14, Clave = "PM", Nombre = "Planeación municipal", Orden = 14, EjercicioId = 6, Nivel = 1
            },
                new AperturaProgramatica {
                Id = 15, Clave = "SB", Nombre = "Estímulos a la educación", Orden = 15, EjercicioId = 6, Nivel = 1
            }
                );

            AperturaProgramatica sc = context.AperturaProgramatica.Local.FirstOrDefault(ap => ap.Clave == "SC");

            sc.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 16, Clave = "01", Nombre = "Rehabilitación", Orden = 1, EjercicioId = 6, Nivel = 2
            });
            sc.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 17, Clave = "02", Nombre = "Ampliación", Orden = 2, EjercicioId = 6, Nivel = 2
            });
            sc.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 18, Clave = "03", Nombre = "Construcción", Orden = 3, EjercicioId = 6, Nivel = 2
            });
            sc.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 19, Clave = "04", Nombre = "Mantenimiento", Orden = 4, EjercicioId = 6, Nivel = 2
            });
            sc.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 20, Clave = "05", Nombre = "Equipamiento", Orden = 5, EjercicioId = 6, Nivel = 2
            });
            sc.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 21, Clave = "06", Nombre = "Sustitución", Orden = 6, EjercicioId = 6, Nivel = 2
            });

            AperturaProgramatica sc_rehabilitacion = context.AperturaProgramatica.Local.FirstOrDefault(ap => ap.Id == 16);

            sc_rehabilitacion.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 22, Clave = "a", Nombre = "Planta potabilizadora", Orden = 1, EjercicioId = 6, Nivel = 3
            });
            sc_rehabilitacion.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 23, Clave = "b", Nombre = "Pozo profundo de agua potable", Orden = 2, EjercicioId = 6, Nivel = 3
            });
            sc_rehabilitacion.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 24, Clave = "c", Nombre = "Deposito o tanque de agua potable", Orden = 3, EjercicioId = 6, Nivel = 3
            });
            sc_rehabilitacion.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 25, Clave = "d", Nombre = "Linea de conducción", Orden = 4, EjercicioId = 6, Nivel = 3
            });
            sc_rehabilitacion.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 26, Clave = "e", Nombre = "Red de agua potable", Orden = 5, EjercicioId = 6, Nivel = 3
            });
            sc_rehabilitacion.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 27, Clave = "f", Nombre = "Sistema integral de agua potable", Orden = 6, EjercicioId = 6, Nivel = 3
            });
            sc_rehabilitacion.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 28, Clave = "g", Nombre = "Carcamo", Orden = 7, EjercicioId = 6, Nivel = 3
            });
            sc_rehabilitacion.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 29, Clave = "h", Nombre = "Norias", Orden = 8, EjercicioId = 6, Nivel = 3
            });
            sc_rehabilitacion.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 30, Clave = "i", Nombre = "Pozo artesiano", Orden = 9, EjercicioId = 6, Nivel = 3
            });
            sc_rehabilitacion.DetalleSubElementos.Add(new AperturaProgramatica {
                Id = 31, Clave = "j", Nombre = "Olla de captación de agua pluvial", Orden = 10, EjercicioId = 6, Nivel = 3
            });

            AperturaProgramatica sc_rehabilitacion_plantapotabilizadora = context.AperturaProgramatica.Local.FirstOrDefault(ap => ap.Id == 22);

            sc_rehabilitacion_plantapotabilizadora.DetalleMetas.Add(new AperturaProgramaticaMeta {
                AperturaProgramaticaUnidadId = 8, AperturaProgramaticaBeneficiarioId = 1
            });



            var list = from año in context.Años.Local
                       from mf in context.ModalidadesFinanciamiento.Local
                       from f in context.Fondos.Local
                       select new { año, mf, f };

            foreach (var item in list)
            {
                context.Financiamientos.Add(new Financiamiento {
                    Año = item.año, ModalidadFinanciamiento = item.mf, Fondo = item.f
                });
            }


            context.Funcionalidad.AddOrUpdate(
                new Funcionalidad {
                Id = 1, Clave = "F001", Descripcion = "Gobierno", Orden = 1, Nivel = 1
            },
                new Funcionalidad {
                Id = 2, Clave = "F002", Descripcion = "Desarrollo Social", Orden = 2, Nivel = 1
            },
                new Funcionalidad {
                Id = 3, Clave = "F003", Descripcion = "Desarrollo Económico", Orden = 3, Nivel = 1
            }
                );

            Funcionalidad fgobierno            = context.Funcionalidad.Local.FirstOrDefault(f => f.Clave == "F001");
            Funcionalidad fdesarrollosocial    = context.Funcionalidad.Local.FirstOrDefault(f => f.Clave == "F002");
            Funcionalidad fdesarrolloeconomico = context.Funcionalidad.Local.FirstOrDefault(f => f.Clave == "F003");

            fgobierno.DetalleSubElementos.Add(new Funcionalidad {
                Id = 4, Clave = "F004", Descripcion = "Legislación", Orden = 1, Nivel = 2
            });
            fgobierno.DetalleSubElementos.Add(new Funcionalidad {
                Id = 5, Clave = "F005", Descripcion = "Fiscalización", Orden = 2, Nivel = 2
            });
            fgobierno.DetalleSubElementos.Add(new Funcionalidad {
                Id = 6, Clave = "F006", Descripcion = "Justicia", Orden = 3, Nivel = 2
            });

            fdesarrollosocial.DetalleSubElementos.Add(new Funcionalidad {
                Id = 7, Clave = "F007", Descripcion = "Protección ambiental", Orden = 1, Nivel = 2
            });
            fdesarrollosocial.DetalleSubElementos.Add(new Funcionalidad {
                Id = 8, Clave = "F008", Descripcion = "Vivienda y servicios a la comunidad", Orden = 2, Nivel = 2
            });
            fdesarrollosocial.DetalleSubElementos.Add(new Funcionalidad {
                Id = 9, Clave = "F009", Descripcion = "Salud", Orden = 3, Nivel = 2
            });

            fdesarrolloeconomico.DetalleSubElementos.Add(new Funcionalidad {
                Id = 10, Clave = "F010", Descripcion = "Asuntos económicos, comerciales y laborales en general", Orden = 1, Nivel = 2
            });
            fdesarrolloeconomico.DetalleSubElementos.Add(new Funcionalidad {
                Id = 11, Clave = "F011", Descripcion = "Agropecuaria, silvicultura, pesca y caza", Orden = 2, Nivel = 2
            });
            fdesarrolloeconomico.DetalleSubElementos.Add(new Funcionalidad {
                Id = 12, Clave = "F012", Descripcion = "Combustible y energía", Orden = 3, Nivel = 2
            });

            Funcionalidad flegislacion   = context.Funcionalidad.Local.FirstOrDefault(f => f.Clave == "F004");
            Funcionalidad ffiscalizacion = context.Funcionalidad.Local.FirstOrDefault(f => f.Clave == "F005");
            Funcionalidad fjusticia      = context.Funcionalidad.Local.FirstOrDefault(f => f.Clave == "F006");

            flegislacion.DetalleSubElementos.Add(new Funcionalidad {
                Id = 13, Clave = "F013", Descripcion = "Legislación", Orden = 1, Nivel = 3
            });
            ffiscalizacion.DetalleSubElementos.Add(new Funcionalidad {
                Id = 14, Clave = "F014", Descripcion = "Fiscalización", Orden = 1, Nivel = 3
            });

            fjusticia.DetalleSubElementos.Add(new Funcionalidad {
                Id = 15, Clave = "F015", Descripcion = "Impartición de Justicia", Orden = 1, Nivel = 3
            });
            fjusticia.DetalleSubElementos.Add(new Funcionalidad {
                Id = 16, Clave = "F016", Descripcion = "Procuración de Justicia", Orden = 2, Nivel = 3
            });
            fjusticia.DetalleSubElementos.Add(new Funcionalidad {
                Id = 17, Clave = "F017", Descripcion = "Reclusión y readaptación social", Orden = 3, Nivel = 3
            });
            fjusticia.DetalleSubElementos.Add(new Funcionalidad {
                Id = 18, Clave = "F018", Descripcion = "Derechos humanos", Orden = 4, Nivel = 3
            });


            context.Eje.AddOrUpdate(
                new Eje {
                Id = 1, Clave = "A", Descripcion = "Construir el presente: Un mejor futuro para todos", Orden = 1, Nivel = 1
            },
                new Eje {
                Id = 2, Clave = "B", Descripcion = "Economía fuerte para el progreso de la gente", Orden = 2, Nivel = 1
            },
                new Eje {
                Id = 3, Clave = "C", Descripcion = "Un Veracruz sustentable", Orden = 3, Nivel = 1
            },
                new Eje {
                Id = 4, Clave = "D", Descripcion = "Gobierno y administración eficientes y transparentes", Orden = 4, Nivel = 1
            }

                );

            Eje ejeA = context.Eje.Local.FirstOrDefault(e => e.Clave == "A");

            ejeA.DetalleSubElementos.Add(new Eje {
                Id = 5, Clave = "A005", Descripcion = "Combatir rezagos para salir adelante", Orden = 1, Nivel = 2
            });
            ejeA.DetalleSubElementos.Add(new Eje {
                Id = 6, Clave = "A006", Descripcion = "El valor de la civilización indígena", Orden = 2, Nivel = 2
            });
            ejeA.DetalleSubElementos.Add(new Eje {
                Id = 7, Clave = "A007", Descripcion = "La familia veracruzana", Orden = 3, Nivel = 2
            });
            ejeA.DetalleSubElementos.Add(new Eje {
                Id = 8, Clave = "A008", Descripcion = "Igualdad de género", Orden = 4, Nivel = 2
            });
            ejeA.DetalleSubElementos.Add(new Eje {
                Id = 9, Clave = "A009", Descripcion = "Juventud: oportunidad y compromiso", Orden = 5, Nivel = 2
            });


            context.PlanSectorial.AddOrUpdate(
                new PlanSectorial {
                Id = 1, Clave = "A", Descripcion = "Programa Veracruzano de Desarrollo Agropecuario, Rural, Forestal y Pesca.", Orden = 1, Nivel = 1
            },
                new PlanSectorial {
                Id = 2, Clave = "B", Descripcion = "Programa Veracruzano de Salud.", Orden = 2, Nivel = 1
            },
                new PlanSectorial {
                Id = 3, Clave = "C", Descripcion = "Programa Veracruzano de Asistencia Social.", Orden = 3, Nivel = 1
            },
                new PlanSectorial {
                Id = 4, Clave = "D", Descripcion = "Programa Veracruzano de Educación.", Orden = 4, Nivel = 1
            }

                );

            context.Modalidad.AddOrUpdate(
                new Modalidad {
                Id = 1, Clave = "M001", Descripcion = "Subsidios: Sector Social y Privado o Entidades Federativas y Municipios", Orden = 1, Nivel = 1
            },
                new Modalidad {
                Id = 2, Clave = "M002", Descripcion = "Desempeño de las Funciones", Orden = 2, Nivel = 1
            },
                new Modalidad {
                Id = 3, Clave = "M003", Descripcion = "Administrativos y de Apoyo", Orden = 3, Nivel = 1
            },
                new Modalidad {
                Id = 4, Clave = "M004", Descripcion = "Programas de Gasto Federalizado (Gobierno Federal)", Orden = 4, Nivel = 1
            }
                );

            Modalidad mSubsidios = context.Modalidad.Local.FirstOrDefault(m => m.Clave == "M001");

            mSubsidios.DetalleSubElementos.Add(new Modalidad {
                Id = 5, Clave = "S", Descripcion = "Sujetos a Reglas de Operación", Orden = 1, Nivel = 2
            });
            mSubsidios.DetalleSubElementos.Add(new Modalidad {
                Id = 6, Clave = "U", Descripcion = "Otros Subsidios", Orden = 2, Nivel = 2
            });


            context.Programa.AddOrUpdate(
                new Programa {
                Id = 1, Clave = "010", Descripcion = "Formación y Orientación Educativa", Tipo = "A.I.", Objetivo = "Contribuir al desarrollo de las tareas de los alumnos, padres y profesores dentro del ámbito específico de los centros escolares.", Orden = 1
            },
                new Programa {
                Id = 2, Clave = "011", Descripcion = "Centros de Desarrollo Infantil", Tipo = "A.I.", Objetivo = "Brindar servicios de cuidado, salud, alimentación y estimulación a los hijos de las trabajadoras de la Secretaría de Educación de Veracruz de edades comprendidas entre 45 días y 5 años 11 meses.", Orden = 2
            },
                new Programa {
                Id = 3, Clave = "012", Descripcion = "Educación Básica Nivel Preescolar", Tipo = "A.I.", Objetivo = "Atender y apoyar desde edades tempranas a los menores para favorecer el desarrollo de sus potencialidades y capacidades, lo que permitirá un mejordesarrollo personal y social.", Orden = 3
            }

                );

            context.GrupoBeneficiario.AddOrUpdate(
                new GrupoBeneficiario {
                Id = 1, Clave = "A", Nombre = "Adulto Mayor", Orden = 1
            },
                new GrupoBeneficiario {
                Id = 2, Clave = "B", Nombre = "Alumno", Orden = 2
            },
                new GrupoBeneficiario {
                Id = 3, Clave = "C", Nombre = "Artesano", Orden = 3
            },
                new GrupoBeneficiario {
                Id = 4, Clave = "D", Nombre = "Artista", Orden = 4
            },
                new GrupoBeneficiario {
                Id = 5, Clave = "E", Nombre = "Contribuyente", Orden = 5
            },
                new GrupoBeneficiario {
                Id = 6, Clave = "F", Nombre = "Damnificado", Orden = 6
            }

                );

            context.CriterioPriorizacion.AddOrUpdate(
                new CriterioPriorizacion {
                Id = 1, Clave = "CP001", Nombre = "Terminación de obra", Orden = 1
            },
                new CriterioPriorizacion {
                Id = 2, Clave = "CP002", Nombre = "Obras y acciones en PARIPASSU", Orden = 2
            },
                new CriterioPriorizacion {
                Id = 3, Clave = "CP003", Nombre = "Obras y acciones nuevas", Orden = 3
            },
                new CriterioPriorizacion {
                Id = 4, Clave = "CP004", Nombre = "Estudios y proyectos", Orden = 4
            },
                new CriterioPriorizacion {
                Id = 5, Clave = "CP005", Nombre = "Obras y acciones nuevas que en el mismo ejercicio contemplen los proyectos", Orden = 5
            }
                );

            POA poa = new POA {
                Id = 1, UnidadPresupuestalId = 1, EjercicioId = 6
            };

            POADetalle poadetalle = new POADetalle();

            poadetalle.Consecutivo     = 1;
            poadetalle.Numero          = "102S110012014001";
            poadetalle.Descripcion     = "Demolicion manual de cimentación de concreto armado con varilla de acero. Incluye: retiro de material a zona de acopio a 1ra estación de 20m.";
            poadetalle.MunicipioId     = 1;
            poadetalle.Localidad       = "Alguna localidad en Acajete";
            poadetalle.TipoLocalidadId = 1;
            poadetalle.SituacionObraId = 1;
            poadetalle.ModalidadObra   = enumModalidadObra.Contrato;
            poadetalle.EsAccion        = false;
            poadetalle.ImporteTotal    = 12348700;
            poadetalle.ImporteLiberadoEjerciciosAnteriores = 10200000;
            poadetalle.ImportePresupuesto         = 15000000;
            poadetalle.AperturaProgramaticaId     = 22;
            poadetalle.AperturaProgramaticaMetaId = 1;
            poadetalle.NumeroBeneficiarios        = 25;
            poadetalle.CantidadUnidades           = 17;
            poadetalle.Empleos                = 10;
            poadetalle.Jornales               = 15;
            poadetalle.FuncionalidadId        = 16;
            poadetalle.EjeId                  = 5;
            poadetalle.PlanSectorialId        = 1;
            poadetalle.ModalidadId            = 5;
            poadetalle.ProgramaId             = 1;
            poadetalle.GrupoBeneficiarioId    = 2;
            poadetalle.CriterioPriorizacionId = 1;

            poa.Detalles.Add(poadetalle);

            context.POA.Add(poa);


            Obra obra = new Obra();

            obra.Numero                     = "102S110012014001";
            obra.Descripcion                = "Demolicion manual de cimentación de concreto armado con varilla de acero. Incluye: retiro de material a zona de acopio a 1ra estación de 20m.";
            obra.MunicipioId                = 1;
            obra.Localidad                  = "Alguna localidad en Acajete";
            obra.TipoLocalidadId            = 1;
            obra.SituacionObraId            = 1;
            obra.ModalidadObra              = enumModalidadObra.Contrato;
            obra.FechaInicio                = new DateTime(2014, 01, 30);
            obra.FechaTermino               = new DateTime(2014, 09, 16);
            obra.EsAccion                   = false;
            obra.ImporteTotal               = 12348700;
            obra.AperturaProgramaticaId     = 22;
            obra.AperturaProgramaticaMetaId = 1;
            obra.NumeroBeneficiarios        = 25;
            obra.CantidadUnidades           = 18;
            obra.Empleos                    = 10;
            obra.Jornales                   = 15;
            obra.FuncionalidadId            = 16;
            obra.EjeId                  = 5;
            obra.PlanSectorialId        = 1;
            obra.ModalidadId            = 5;
            obra.ProgramaId             = 1;
            obra.GrupoBeneficiarioId    = 2;
            obra.CriterioPriorizacionId = 1;

            obra.POADetalle = poadetalle;

            context.Obras.Add(obra);

            context.SaveChanges();

            CrearTriggers(context);
        }
Ejemplo n.º 6
0
        public void BindControles(POADetalle poadetalle)
        {
            txtNumero.Value             = poadetalle.Numero;
            txtDescripcion.Value        = poadetalle.Descripcion;
            cddlMunicipio.SelectedValue = poadetalle.MunicipioId.ToString();
            cddlLocalidad.SelectedValue = poadetalle.LocalidadId.ToString();

            if (poadetalle.AperturaProgramaticaUnidadId != null)
            {
                ddlUnidadMedida.SelectedValue = poadetalle.AperturaProgramaticaUnidadId.ToString();
            }

            ddlCriterioPriorizacion.SelectedValue = poadetalle.CriterioPriorizacionId.ToString();
            txtNombreConvenio.Value = poadetalle.Convenio;

            cddlPrograma.SelectedValue       = poadetalle.AperturaProgramatica.Parent.ParentId.ToString();
            cddlSubprograma.SelectedValue    = poadetalle.AperturaProgramatica.ParentId.ToString();
            cddlSubsubprograma.SelectedValue = poadetalle.AperturaProgramaticaId.ToString();
            cddlMeta.SelectedValue           = poadetalle.AperturaProgramaticaMetaId.ToString();


            txtNumeroBeneficiarios.Value   = poadetalle.NumeroBeneficiarios.ToString();
            txtCantidadUnidades.Value      = poadetalle.CantidadUnidades.ToString();
            txtEmpleos.Value               = poadetalle.Empleos.ToString();
            txtJornales.Value              = poadetalle.Jornales.ToString();
            ddlSituacionObra.SelectedValue = poadetalle.SituacionObraId.ToString();

            ddlModalidad.SelectedIndex = 0;

            if (poadetalle.ModalidadObra != null)
            {
                ddlModalidad.SelectedValue = ((int)poadetalle.ModalidadObra).ToString();
            }

            txtNumeroAnterior.Value = poadetalle.NumeroAnterior;
            txtImporteLiberadoEjerciciosAnteriores.Value = poadetalle.ImporteLiberadoEjerciciosAnteriores.ToString();
            txtImporteTotal.Value  = poadetalle.ImporteTotal.ToString();
            txtObservaciones.Value = poadetalle.Observaciones;

            if (poadetalle.FuncionalidadId != null)
            {
                cddlFuncionalidadNivel1.SelectedValue = poadetalle.Funcionalidad.Parent.ParentId.ToString();
                cddlFuncionalidadNivel2.SelectedValue = poadetalle.Funcionalidad.ParentId.ToString();
                cddlFuncionalidadNivel3.SelectedValue = poadetalle.FuncionalidadId.ToString();
            }

            if (poadetalle.EjeId != null)
            {
                ddlEje.SelectedValue = poadetalle.EjeId.ToString();
            }

            if (poadetalle.ModalidadId != null)
            {
                cddlModalidadAgrupador.SelectedValue = poadetalle.Modalidad.ParentId.ToString();
                cddlModalidadElemento.SelectedValue  = poadetalle.ModalidadId.ToString();
            }

            if (poadetalle.PlanSectorialId != null)
            {
                ddlPlanSectorial.SelectedValue = poadetalle.PlanSectorialId.ToString();
            }

            if (poadetalle.ProgramaId != null)
            {
                ddlProgramaPresupuesto.SelectedValue = poadetalle.ProgramaId.ToString();
            }

            if (poadetalle.GrupoBeneficiarioId != null)
            {
                ddlGrupoBeneficiario.SelectedValue = poadetalle.GrupoBeneficiarioId.ToString();
            }
        }
Ejemplo n.º 7
0
        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            string msg = "Se ha guardado correctamente";


            unidadpresupuestalId = Utilerias.StrToInt(Session["UnidadPresupuestalId"].ToString());
            ejercicioId          = Utilerias.StrToInt(Session["EjercicioId"].ToString());

            DataAccessLayer.Models.POA poa = uow.POABusinessLogic.Get(p => p.UnidadPresupuestalId == unidadpresupuestalId & p.EjercicioId == ejercicioId).FirstOrDefault();
            POADetalle poadetalle          = null;

            if (poa == null)
            {
                poa = new DataAccessLayer.Models.POA();
                poa.UnidadPresupuestalId = unidadpresupuestalId;
                poa.EjercicioId          = ejercicioId;
            }

            if (_Accion.Text.Equals("N"))
            {
                poadetalle = new POADetalle();
            }
            else
            {
                currentId  = Convert.ToInt32(_ID.Text);
                poadetalle = uow.POADetalleBusinessLogic.GetByID(currentId);
                msg        = "Se ha actualizado correctamente";
            }

            poadetalle.Numero      = txtNumero.Value;
            poadetalle.Descripcion = txtDescripcion.Value;
            poadetalle.MunicipioId = Utilerias.StrToInt(ddlMunicipio.SelectedValue);
            poadetalle.LocalidadId = Utilerias.StrToInt(ddlLocalidad.SelectedValue);

            poadetalle.CriterioPriorizacionId = Utilerias.StrToInt(ddlCriterioPriorizacion.SelectedValue);

            //Garantizar que se limpie correctamente el campo Nombre del Convenio

            switch (poadetalle.CriterioPriorizacionId)
            {
            case 2:

                break;

            default:

                txtNombreConvenio.Value = String.Empty;
                break;
            }


            poadetalle.Convenio = txtNombreConvenio.Value;

            poadetalle.AperturaProgramaticaId       = Utilerias.StrToInt(ddlSubsubprograma.SelectedValue);
            poadetalle.AperturaProgramaticaMetaId   = null;
            poadetalle.AperturaProgramaticaUnidadId = Utilerias.StrToInt(ddlUnidadMedida.SelectedValue);


            poadetalle.NumeroBeneficiarios = Utilerias.StrToInt(txtNumeroBeneficiarios.Value.ToString().Replace(",", null));
            poadetalle.CantidadUnidades    = Utilerias.StrToInt(txtCantidadUnidades.Value.ToString().Replace(",", null));
            poadetalle.Empleos             = Utilerias.StrToInt(txtEmpleos.Value.ToString().Replace(",", null));
            poadetalle.Jornales            = Utilerias.StrToInt(txtJornales.Value.ToString().Replace(",", null));

            //Los campos relativos al Plan Veracruzano de Desarrollo, son opcionales

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


            if (ddlSubFuncion.SelectedIndex > 0)
            {
                poadetalle.FuncionalidadId = Utilerias.StrToInt(ddlSubFuncion.SelectedValue);
            }

            if (ddlEje.SelectedIndex > 0)
            {
                poadetalle.EjeId = Utilerias.StrToInt(ddlEje.SelectedValue);
            }

            if (ddlPlanSectorial.SelectedIndex > 0)
            {
                poadetalle.PlanSectorialId = Utilerias.StrToInt(ddlPlanSectorial.SelectedValue);
            }

            if (ddlModalidadElemento.SelectedIndex > 0)
            {
                poadetalle.ModalidadId = Utilerias.StrToInt(ddlModalidadElemento.SelectedValue);
            }

            if (ddlProgramaPresupuesto.SelectedIndex > 0)
            {
                poadetalle.ProgramaId = Utilerias.StrToInt(ddlProgramaPresupuesto.SelectedValue);
            }

            if (ddlGrupoBeneficiario.SelectedIndex > 0)
            {
                poadetalle.GrupoBeneficiarioId = Utilerias.StrToInt(ddlGrupoBeneficiario.SelectedValue);
            }


            poadetalle.SituacionObraId = Utilerias.StrToInt(ddlSituacionObra.SelectedValue);

            //Garantizar que se limpien correctamente los campos Numero anterior e Importe Liberado

            switch (poadetalle.SituacionObraId)
            {
            case 3:
            case 4:

                break;

            default:

                txtNumeroAnterior.Value = String.Empty;
                txtImporteLiberadoEjerciciosAnteriores.Value = "0";
                break;
            }


            poadetalle.ModalidadObra  = (enumModalidadObra)Convert.ToInt32(ddlModalidad.SelectedValue);
            poadetalle.ImporteTotal   = Utilerias.StrToDecimal(txtImporteTotal.Value.ToString());
            poadetalle.NumeroAnterior = txtNumeroAnterior.Value;
            poadetalle.ImporteLiberadoEjerciciosAnteriores = Utilerias.StrToDecimal(txtImporteLiberadoEjerciciosAnteriores.Value.ToString());
            poadetalle.Observaciones = txtObservaciones.InnerText;
            poadetalle.Extemporanea  = false;

            if (_Accion.Text.Equals("N"))
            {
                poadetalle.POA = poa;
                uow.POADetalleBusinessLogic.Insert(poadetalle);
            }
            else
            {
                uow.POADetalleBusinessLogic.Update(poadetalle);
            }

            uow.SaveChanges();

            if (uow.Errors.Count == 0)
            {
                // Esto solo es necesario para recargar en memoria
                // los cambios que se realizan mediante un trigger
                uow = null;
                uow = new UnitOfWork();

                //Este gridview usa un enlace de Modelo, por esto No requiere
                //asignar nuevamente su propiedad Datasource
                //vease método GridViewObras_GetData
                this.GridViewObras.DataBind();


                divEdicion.Style.Add("display", "none");
                divBtnNuevo.Style.Add("display", "block");
            }
            else
            {
                divMsg.Style.Add("display", "block");

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

                lblMensajes.Text = msg;
            }
        }
        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;
            }
        }