Пример #1
0
        public static decimal calcularCosto(Subcomponente subcomponente)
        {
            decimal costo = decimal.Zero;

            try
            {
                List <Producto>  productos   = ProductoDAO.getProductosBySubComponente(subcomponente.id);
                List <Actividad> actividades = ActividadDAO.GetActividadesPorObjeto(subcomponente.id, 2);
                if ((productos != null && productos.Count > 0) || (actividades != null && actividades.Count > 0))
                {
                    if (productos != null)
                    {
                        foreach (Producto producto in productos)
                        {
                            costo += Decimal.Add(costo, producto.costo ?? default(decimal));
                        }
                    }

                    if (actividades != null && actividades.Count > 0)
                    {
                        foreach (Actividad actividad in actividades)
                        {
                            costo += Decimal.Add(costo, actividad.costo ?? default(decimal));
                        }
                    }
                }
                else
                {
                    PlanAdquisicion pa = PlanAdquisicionDAO.getPlanAdquisicionByObjeto(2, subcomponente.id);
                    if (pa != null)
                    {
                        List <PlanAdquisicionPago> lstpagos = PlanAdquisicionPagoDAO.getPagosByPlan(Convert.ToInt32(pa.id));
                        if (lstpagos != null && lstpagos.Count > 0)
                        {
                            decimal pagos = decimal.Zero;
                            foreach (PlanAdquisicionPago pago in lstpagos)
                            {
                                pagos += Decimal.Add(pagos, pago.pago ?? default(decimal));
                            }
                            costo = pagos;
                        }
                        else
                        {
                            costo = pa.montoContrato;
                        }
                    }
                    else
                    {
                        costo = subcomponente.costo ?? default(decimal);
                    }
                }
            }
            catch (Exception e)
            {
                CLogger.write("16", "Subcomponente.class", e);
            }

            return(costo);
        }
Пример #2
0
        private static bool guardarProyectoBatch(List <List <Nodo> > listas)
        {
            bool ret = true;

            try
            {
                using (DbConnection db = new OracleContext().getConnection())
                {
                    for (int i = 0; i < listas.Count - 1; i++)
                    {
                        for (int j = 0; j < listas[i].Count; j++)
                        {
                            switch (listas[i][j].objeto_tipo)
                            {
                            case 0:
                                guardarProyecto((Proyecto)listas[i][j].objeto, false);
                                break;

                            case 1:
                                ComponenteDAO.guardarComponente((Componente)listas[i][j].objeto, false);
                                break;

                            case 2:
                                SubComponenteDAO.guardarSubComponente((Subcomponente)listas[i][j].objeto, false);
                                break;

                            case 3:
                                ProductoDAO.guardarProducto((Producto)listas[i][j].objeto, false);
                                break;

                            case 4:
                                SubproductoDAO.guardarSubproducto((Subproducto)listas[i][j].objeto, false);
                                break;

                            case 5:
                                ActividadDAO.guardarActividad((Actividad)listas[i][j].objeto, false);
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                ret = false;
                CLogger.write("20", "ProyectoDAO.class", e);
            }
            return(ret);
        }
Пример #3
0
        public static decimal calcularCosto(Proyecto proyecto)
        {
            decimal costo = decimal.Zero;

            try
            {
                List <Componente> componentes = ComponenteDAO.getComponentesPorProyecto(proyecto.id);
                List <Actividad>  actividades = ActividadDAO.GetActividadesPorObjeto(proyecto.id, 1);

                if ((componentes != null && componentes.Count > 0) || (actividades != null && actividades.Count > 0))
                {
                    foreach (Componente componente in componentes)
                    {
                        costo += componente.costo ?? default(decimal);
                    }

                    if (actividades != null && actividades.Count > 0)
                    {
                        foreach (Actividad actividad in actividades)
                        {
                            costo += actividad.costo ?? default(decimal);
                        }
                    }
                }
                else
                {
                    costo = proyecto.costo ?? default(decimal);
                }
            }
            catch (Exception e)
            {
                CLogger.write("16", "Proyecto.class", e);
            }

            return(costo);
        }
Пример #4
0
        public static bool actualizarNivelesPagos(String pagosString, PlanAdquisicion pa, string usuario, int objetoId, int objetoTipo)
        {
            bool ret = false;

            try
            {
                decimal bpagos      = decimal.Zero;
                bool    tiene_pagos = false;
                if (pagosString != null)
                {
                    JArray pagos = JArray.Parse(pagosString);
                    for (int j = 0; j < pagos.Count; j++)
                    {
                        JObject             objeto_pago = new JObject(new JProperty("fecha", pagos[j]), new JProperty("pago", pagos[j]));
                        DateTime            fechaPago   = (DateTime)objeto_pago["fecha"];
                        decimal             dpago       = (decimal)objeto_pago["pago"];
                        PlanAdquisicionPago pago        = new PlanAdquisicionPago();
                        pago.planAdquisicions  = pa;
                        pago.planAdquisicionid = pa.id;
                        pago.fechaPago         = fechaPago;
                        pago.pago          = dpago;
                        pago.usuarioCreo   = usuario;
                        pago.fechaCreacion = DateTime.Now;
                        pago.estado        = 1;

                        PlanAdquisicionPagoDAO.guardarPago(pago);
                        bpagos     += dpago;
                        tiene_pagos = true;
                    }
                }

                List <Actividad> actividades = ActividadDAO.GetActividadesPorObjeto(objetoId, objetoTipo);
                switch (objetoTipo)
                {
                case 3:
                    Producto           producto     = ProductoDAO.getProductoPorId(objetoId);
                    List <Subproducto> subproductos = SubproductoDAO.getSubproductosByProductoid(producto.id);
                    if (!(subproductos != null && subproductos.Count > 0) &&
                        !(actividades != null && actividades.Count > 0))
                    {
                        if (tiene_pagos)
                        {
                            producto.costo = bpagos;
                        }
                        else
                        {
                            producto.costo = pa.total;
                        }
                        ProductoDAO.guardarProducto(producto, true);
                    }
                    break;

                case 4:
                    Subproducto subproducto = SubproductoDAO.getSubproductoPorId(objetoId);
                    if (!(actividades != null && actividades.Count > 0))
                    {
                        if (tiene_pagos)
                        {
                            subproducto.costo = bpagos;
                        }
                        else
                        {
                            subproducto.costo = pa.total;
                        }
                        SubproductoDAO.guardarSubproducto(subproducto, true);
                    }
                    break;

                case 5:
                    Actividad actividad = ActividadDAO.GetActividadPorId(objetoId);
                    if (!(actividades != null && actividades.Count > 0))
                    {
                        if (tiene_pagos)
                        {
                            actividad.costo = bpagos;
                        }
                        else
                        {
                            actividad.costo = pa.total;
                        }
                        ActividadDAO.guardarActividad(actividad, true);
                    }
                    break;
                }

                ret = true;
            }
            catch (Exception e)
            {
                CLogger.write("50", "PlanAdquisicionDAO.class", e);
            }

            return(ret);
        }
Пример #5
0
        public static void actualizarCostoPlanificadoObjeto(PlanAdquisicion pa)
        {
            decimal ret        = decimal.Zero;
            int     objetoId   = Convert.ToInt32(pa.objetoId);
            int     objetoTipo = Convert.ToInt32(pa.objetoTipo);
            List <PlanAdquisicionPago> pagos       = PlanAdquisicionPagoDAO.getPagosByPlan(Convert.ToInt32(pa.id));
            List <Actividad>           actividades = ActividadDAO.GetActividadesPorObjeto(objetoId, objetoTipo);

            foreach (Actividad actividad in actividades)
            {
                ret += actividad.costo ?? default(decimal);
            }

            switch (objetoTipo)
            {
            case 0:
                Proyecto          proyecto    = ProyectoDAO.getProyecto(objetoId);
                List <Componente> componentes = ComponenteDAO.getComponentesPorProyecto(proyecto.id);
                if (componentes == null || componentes.Count == 0)
                {
                    if (actividades == null || actividades.Count == 0)
                    {
                        if (pagos != null && pagos.Count > 0)
                        {
                            foreach (PlanAdquisicionPago pago in pagos)
                            {
                                ret += pago.pago ?? default(decimal);
                            }
                        }
                        else
                        {
                            ret = pa.total ?? default(decimal);
                        }
                    }
                }
                else
                {
                    foreach (Componente cmp in componentes)
                    {
                        ret += cmp.costo ?? default(decimal);
                    }
                }
                proyecto.costo = ret;
                ProyectoDAO.guardarProyecto(proyecto, false);
                break;

            case 1:
                Componente           componente     = ComponenteDAO.getComponente(objetoId);
                List <Producto>      productos      = ProductoDAO.getProductosByComponente(componente.id);
                List <Subcomponente> subcomponentes = SubComponenteDAO.getSubComponentesPorComponente(componente.id);
                if (productos == null || productos.Count == 0 || subcomponentes == null || subcomponentes.Count == 0)
                {
                    if (actividades == null || actividades.Count == 0)
                    {
                        if (pagos != null && pagos.Count > 0)
                        {
                            foreach (PlanAdquisicionPago pago in pagos)
                            {
                                ret += pago.pago ?? default(decimal);
                            }
                        }
                        else
                        {
                            ret = pa.total ?? default(decimal);
                        }
                    }
                }
                else
                {
                    if (productos != null)
                    {
                        foreach (Producto prod in productos)
                        {
                            ret += prod.costo ?? default(decimal);
                        }
                    }
                    if (subcomponentes != null)
                    {
                        foreach (Subcomponente subcomponente in subcomponentes)
                        {
                            ret += subcomponente.costo ?? default(decimal);
                        }
                    }
                }
                componente.costo = ret;
                ComponenteDAO.guardarComponente(componente, false);
                break;

            case 3:
                Producto           producto     = ProductoDAO.getProductoPorId(objetoId);
                List <Subproducto> subproductos = SubproductoDAO.getSubproductosByProductoid(producto.id);
                if (subproductos == null || subproductos.Count == 0)
                {
                    if (actividades == null || actividades.Count == 0)
                    {
                        if (pagos != null && pagos.Count > 0)
                        {
                            foreach (PlanAdquisicionPago pago in pagos)
                            {
                                ret += pago.pago ?? default(decimal);
                            }
                        }
                        else
                        {
                            ret = pa.total ?? default(decimal);
                        }
                    }
                }
                else
                {
                    foreach (Subproducto subprod in subproductos)
                    {
                        ret += subprod.costo ?? default(decimal);
                    }
                }
                producto.costo = ret;
                ProductoDAO.guardarProducto(producto, false);
                break;

            case 4:
                Subproducto subproducto = SubproductoDAO.getSubproductoPorId(objetoId);
                if (actividades != null && actividades.Count > 0)
                {
                    subproducto.costo = ret;
                    SubproductoDAO.guardarSubproducto(subproducto, false);
                }
                break;

            case 5:
                Actividad actividad = ActividadDAO.GetActividadPorId(objetoId);
                if (actividades != null && actividades.Count > 0)
                {
                    actividad.costo = ret;
                    ActividadDAO.guardarActividad(actividad, false);
                }
                break;
            }
        }
Пример #6
0
        public static bool guardarActividad(Actividad Actividad, bool calcular_valores_agregados)
        {
            bool ret      = false;
            int  guardado = 0;

            try
            {
                using (DbConnection db = new OracleContext().getConnection())
                {
                    if (Actividad.id < 1)
                    {
                        int sequenceId = db.ExecuteScalar <int>("SELECT seq_actividad.nextval FROM DUAL");
                        Actividad.id = sequenceId;
                        guardado     = db.Execute("INSERT INTO ACTIVIDAD VALUES (:id, :nombre, :descripcion, :fechaInicio, :fechaFin, :porcentajeAvance, :usuarioCreo, " +
                                                  ":usuarioActualizo, :fechaCreacion, :fechaActualizacion, :estado, :actividadTipoid, :snip, :programa, :subprograma, :proyecto, :actividad, " +
                                                  ":obra, :objetoId, :objetoTipo, :duracion, :duracionDimension, :predObjetoId, :predObjetoTipo, :latitud, :longitud, :costo, :acumulacionCosto, " +
                                                  ":renglon, :ubicacionGeografica, :orden, :treePath, :nivel, :proyectoBase, :componenteBase, :productoBase, :fechaInicioReal, :fechaFinReal, " +
                                                  ":inversionNueva)", Actividad);

                        if (guardado > 0)
                        {
                            switch (Actividad.objetoTipo)
                            {
                            case 0:
                                Proyecto proyecto = ProyectoDAO.getProyecto(Convert.ToInt32(Actividad.objetoId));
                                Actividad.treepath = proyecto.treepath + "" + (10000000 + Actividad.id);
                                break;

                            case 1:
                                Componente componente = ComponenteDAO.getComponente(Convert.ToInt32(Actividad.objetoId));
                                Actividad.treepath = componente.treepath + "" + (10000000 + Actividad.id);
                                break;

                            case 2:
                                Subcomponente subcomponente = SubComponenteDAO.getSubComponente(Convert.ToInt32(Actividad.objetoId));
                                Actividad.treepath = subcomponente.treepath + "" + (10000000 + Actividad.id);
                                break;

                            case 3:
                                Producto producto = ProductoDAO.getProductoPorId(Convert.ToInt32(Actividad.objetoId));
                                Actividad.treepath = producto.treepath + "" + (10000000 + Actividad.id);
                                break;

                            case 4:
                                Subproducto subproducto = SubproductoDAO.getSubproductoPorId(Convert.ToInt32(Actividad.objetoId));
                                Actividad.treepath = subproducto.treepath + "" + (10000000 + Actividad.id);
                                break;

                            case 5:
                                Actividad actividad = ActividadDAO.getActividadPorId(Convert.ToInt32(Actividad.objetoId));
                                Actividad.treepath = actividad.treepath + "" + (10000000 + Actividad.id);
                                break;
                            }
                        }
                    }

                    guardado = db.Execute("UPDATE actividad SET nombre=:nombre, descripcion=:descripcion, fecha_inicio=:fechaInicio, fecha_fin=:fechaFin, porcentaje_avance=:porcentajeAvance, " +
                                          "usuario_creo=:usuarioCreo, usuario_actualizo=:usuarioActualizo, fecha_creacion=:fechaCreacion, fecha_actualizacion=:fechaActualizacion, " +
                                          "estado=:estado, actividad_tipoid=:actividadTipoid, snip=:snip, programa=:programa, subprograma=:subprograma, proyecto=:proyecto, actividad=:actividad, " +
                                          "obra=:obra, objeto_id=:objetoId, objeto_tipo=:objetoTipo, duracion=:duracion, duracion_dimension=:duracionDimension, pred_objeto_id=:predObjetoId, " +
                                          "pred_objeto_tipo=:predObjetoTipo, latitud=:latitud, longitud=:longitud, costo=:costo, acumulacion_costo=:acumulacionCosto, renglon=:renglon, " +
                                          "ubicacion_geografica=:ubicacionGeografica, orden=:orden, treePath=:treePath, nivel=:nivel, proyecto_base=:proyectoBase, componente_base=:componenteBase, " +
                                          "producto_base=:productoBase, fecha_inicio_real=:fechaInicioReal, fecha_fin_real=:fechaFinReal, inversion_nueva=:inversionNueva WHERE id=:id", Actividad);

                    if (guardado > 0)
                    {
                        ActividadUsuario au = new ActividadUsuario();
                        au.actividads    = Actividad;
                        au.actividadid   = Actividad.id;
                        au.usuario       = Actividad.usuarioCreo;
                        au.fechaCreacion = DateTime.Now;
                        au.usuarioCreo   = Actividad.usuarioCreo;

                        int existe = db.ExecuteScalar <int>("SELECT COUNT(*) FROM ACTIVIDAD_USUARIO WHERE actividadid=:id AND usuario=:usuario", new { id = au.actividadid, usuario = au.usuario });

                        if (existe > 0)
                        {
                            guardado = db.Execute("UPDATE ACTIVIDAD_USUARIO SET usuario_creo=:usuarioCreo, usuario_actualizo=:usuarioActualizo, fecha_creacion=:fechaCreacion, " +
                                                  "fecha_actualizacion=:fechaActualizacion WHERE actividadid=:actividadid AND usuario=:usuario", au);
                        }
                        else
                        {
                            guardado = db.Execute("INSERT INTO actividad_usuario(:actividadid, :usuario, :usuarioCreo, :usuarioActualizo, :fechaCreacion, :fechaActualizacion)", au);
                        }

                        if (guardado > 0 && !Actividad.usuarioCreo.Equals("admin"))
                        {
                            ActividadUsuario au_admin = new ActividadUsuario();
                            au_admin.actividads    = Actividad;
                            au_admin.actividadid   = Actividad.id;
                            au_admin.usuario       = "admin";
                            au_admin.fechaCreacion = DateTime.Now;
                            au.usuarioCreo         = Actividad.usuarioCreo;

                            existe = db.ExecuteScalar <int>("SELECT COUNT(*) FROM ACTIVIDAD_USUARIO WHERE actividadid=:id AND usuario=:usuario", new { id = au_admin.actividadid, usuario = au_admin.usuario });

                            if (existe > 0)
                            {
                                guardado = db.Execute("UPDATE ACTIVIDAD_USUARIO SET usuario_creo=:usuarioCreo, usuario_actualizo=:usuarioActualizo, fecha_creacion=:fechaCreacion, " +
                                                      "fecha_actualizacion=:fechaActualizacion WHERE actividadid=:actividadid AND usuario=:usuario", au_admin);
                            }
                            else
                            {
                                guardado = db.Execute("INSERT INTO actividad_usuario(:actividadid, :usuario, :usuarioCreo, :usuarioActualizo, :fechaCreacion, :fechaActualizacion)", au_admin);
                            }
                        }

                        if (calcular_valores_agregados)
                        {
                            ProyectoDAO.calcularCostoyFechas(Convert.ToInt32(Actividad.treepath.Substring(0, 8)) - 10000000);
                        }

                        ret = true;
                    }
                }
            }
            catch (Exception e)
            {
                CLogger.write("3", "ActividadDAO.class", e);
            }
            return(ret);
        }
Пример #7
0
        public static DateTime calcularFechaMaxima(Proyecto proyecto)
        {
            DateTime fechaActual = default(DateTime);

            try
            {
                List <Actividad> actividades = ActividadDAO.GetActividadesPorObjeto(proyecto.id, 1);
                if (actividades != null && actividades.Count > 0)
                {
                    DateTime fechaMaxima = new DateTime();
                    foreach (Actividad actividad in actividades)
                    {
                        if (fechaActual == null)
                        {
                            fechaActual = actividad.fechaFin;
                        }
                        else
                        {
                            fechaMaxima = actividad.fechaFin;

                            if (fechaActual < fechaMaxima)
                            {
                                fechaActual = fechaMaxima;
                            }
                        }
                    }
                }

                List <Componente> componentes = ComponenteDAO.getComponentesPorProyecto(proyecto.id);
                if (componentes != null && componentes.Count > 0)
                {
                    DateTime fechaMaxima = new DateTime();
                    foreach (Componente componente in componentes)
                    {
                        if (fechaActual == null)
                        {
                            fechaActual = componente.fechaFin ?? default(DateTime);
                        }
                        else
                        {
                            fechaMaxima = componente.fechaFin ?? default(DateTime);

                            if (fechaActual < fechaMaxima)
                            {
                                fechaActual = fechaMaxima;
                            }
                        }
                    }
                }
                else if (fechaActual == null)
                {
                    fechaActual = proyecto.fechaFin ?? default(DateTime);
                }
            }
            catch (Exception e)
            {
                CLogger.write("18", "Proyecto.class", e);
            }

            return(fechaActual);
        }
Пример #8
0
        public static List <TipoAdquisicion> getTipoAdquisicionPorObjeto(int objetoId, int objetoTipo)
        {
            List <TipoAdquisicion> ret = new List <TipoAdquisicion>();
            int cooperanteCodigo       = 0;

            switch (objetoTipo)
            {
            case 1:
                Componente componente = ComponenteDAO.getComponente(objetoId);
                Proyecto   proyecto   = ProyectoDAO.getProyecto(componente.proyectoid);
                Prestamo   prestamo   = PrestamoDAO.getPrestamoById(proyecto.prestamoid ?? default(int));
                cooperanteCodigo = prestamo.cooperantecodigo ?? default(int);
                break;

            case 2:
                Subcomponente subcomponente = SubComponenteDAO.getSubComponente(objetoId);
                proyecto         = ProyectoDAO.getProyectobyTreePath(subcomponente.treepath);
                prestamo         = PrestamoDAO.getPrestamoById(proyecto.prestamoid ?? default(int));
                cooperanteCodigo = subcomponente.componentes.proyectos.prestamos.cooperantes.codigo;
                break;

            case 3:
                Producto producto = ProductoDAO.getProductoPorId(objetoId);
                if (producto.componentes != null)
                {
                    cooperanteCodigo = producto.componentes.proyectos.prestamos.cooperantes.codigo;
                }
                else if (producto.subcomponentes != null)
                {
                    cooperanteCodigo = producto.subcomponentes.componentes.proyectos.prestamos.cooperantes.codigo;
                }
                break;

            case 4:
                Subproducto subproducto = SubproductoDAO.getSubproductoPorId(objetoId);
                if (subproducto.productos.componentes != null)
                {
                    cooperanteCodigo = subproducto.productos.componentes.proyectos.prestamos.cooperantes.codigo;
                }
                else if (subproducto.productos.subcomponentes != null)
                {
                    cooperanteCodigo = subproducto.productos.subcomponentes.componentes.proyectos.prestamos.cooperantes.codigo;
                }
                break;

            case 5:
                Actividad actividad = ActividadDAO.GetActividadPorId(objetoId);
                if (actividad.treepath != null)
                {
                    int proyectoId = Convert.ToInt32(actividad.treepath.Substring(0, 8)) - 10000000;
                    if (proyectoId != 0)
                    {
                        cooperanteCodigo = ProyectoDAO.getProyecto(proyectoId).prestamos.cooperantes.codigo;
                    }
                }
                break;
            }

            try
            {
                using (DbConnection db = new OracleContext().getConnection())
                {
                    String str_query = "SELECT * FROM TIPO_ADQUISICION ta WHERE ta.cooperantecodigo=:codigo AND ta.estado=1";
                    ret = db.Query <TipoAdquisicion>(str_query, new { codigo = cooperanteCodigo }).AsList <TipoAdquisicion>();
                }
            }
            catch (Exception e)
            {
                CLogger.write("4", "TipoAdquisicionDAO.class", e);
            }

            return(ret);
        }