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); }
/// <summary> /// Registra la actividad en la Base de datos /// </summary> /// <param name="Actividad">Objeto de actividad</param> /// <param name="calcular_valores_agregados">Determina si debe calcular los valores agregados</param> /// <returns>TRUE si guardó con éxito, FALSE en caso de error</returns> 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 VALUES (: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 VALUES (: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); }
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; } }
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); }