Cálculo automático de porcentaje para tareas madres y porcentaje de avance de proyecto en web2project

9 mayo, 2011 at 11:39

Llevo varios años utilizando sistemas de gestión de proyectos y uno de los sistemas libres que más me gusta el DotProject , sin embargo el poco movimiento que ha tenido en los últimos años me ha hecho moverme a una de sus variantes, Web2project.

Web2project es un clon mejorado de Dorproject, tiene varios plugins publicados que incrementan notablemente las capacidades del sistema. Sin embargo posee algunos detalles que se podrían considerar como críticos por algún project manager.

Una problemática que me ha dejado bastante intranquilo es que actualmente en web2project no se calcula automáticamente el porcentaje de avance de las tareas madres cuando una tarea hija es modificada. Es decir si una tarea contiene 4 subtareas, es lógico que el porcentaje de avance cambie si una de sus subtareas lo hace. De la misma forma si una subtarea de una tarea cambia, es lógico que el porcentaje de avance total del proyecto también lo haga, cosa que actualmente no sucede.

Para solucionar este problema, hemos implementado un trigger, que se preocupa de verificar los % de avance de cada tarea madre cada vez que una tarea hija sufre cambios. de esta forma el % de avance total del proyecto siempre indicará el valor correcto del momento.

Dejo a continuación los códigos SQL que implementan la función que calcula el nuevo porcentaje y el código del Trigger que se mantendrá atento cuando se realicen cambios.

//*****************************************
// FUNCION QUE CALCULA EL NUEVO PORCENTAJE
//*****************************************
CREATE FUNCTION new_percent (id_tarea int) RETURNS decimal(6,2)
BEGIN
DECLARE salida decimal(6,2);

SELECT
CAST(
round(
IF(
( SELECT COUNT(stasks.task_id)
FROM ((`tasks` AS stasks))
WHERE stasks.task_id <> tasks.task_id
AND stasks.task_parent = tasks.task_id
) = 0,
task_percent_complete,
( SELECT ifnull(SUM(stasks.task_percent_complete),0)/if(COUNT(stasks.task_id)=0,1,COUNT(stasks.task_id))
FROM ((`tasks` AS stasks))
WHERE stasks.task_id <> tasks.task_id
AND stasks.task_parent = tasks.task_id
)
),2)
AS DECIMAL(6,2)
)
AS X into salida
FROM ((`tasks` AS tasks))
where task_id = id_tarea;
RETURN salida;
END

//*****************************************
// Trigger
//*****************************************

CREATE TRIGGER update_task AFTER UPDATE ON tasks
FOR EACH ROW
BEGIN

update tasks set task_percent_complete = round(new_percent(task_id),0);
END

espero les sea útil.

OnePoint Project una alternativa libre para la gestión de proyectos, el reemplazante de Gantt Project

24 junio, 2010 at 05:44

En la asignatura de gestión de proyectos  que curso en la universidad estamos modificando parte del famoso programa de gestión de proyectos «Gantt Proyect»  ya llevo bastantes horas descifrando de que va el desarrollo de este software y la verdad es que me deprimió un poco el ver el estado del proyecto en si.

Gantt Project si bien es uno de  los software de gestión de proyectos bajo licencia libre más conocido nunca me gustó personalmente, prefería OpenProj que tiene un aspecto mucho más simple y limpio. Pero el detalle que tienen ambos software es que ambos están quedando obsoletos o bien su desarrollo de plano está frenado, el caso cercano es ahora Gantt Proyect que luego de buscar por mil partes por más información para realizar sobre el modificaciones he deducido tras  un correo de uno de sus propios desarrolladores el estado actual del proyecto (está frenado). He comprobado esto posteriormente en el sitio http://www.ohloh.net un sitio en el cual pueden verse estadísticas en base a sourceforge del proyecto y el panorama es decepcionante más de cerca de 2 años sin actualizaciones importantes, En el mismo sitio leo de parte de un colaborador la recomendación de migrar hacia OnePoint Project que es justamente lo que pretendo mostrar en este post.

onepoint_0

OnePoint Project es originalmente un software comercial para manejo de proyectos, pero tiene una versión libre bajo licencia Apache y otras, disponible libremente aqui: http://sourceforge.net/projects/opproject , la verdad de las cosas es que la versión libre es más que suficiente para proyectos simples y se nota bastante la superioridad frente a otras soluciones para la gestión de proyectos de licencia libre. Las principales ventajas que he visualizado en una primera mirada a este proyecto son:

  1. Compatible con microsoft project
  2. Versión para escritorio y servidor
  3. Múltiples bases de datos
  4. Desarrollo activo
  5. Versionado
  6. Manejo de objetivos
  7. Monitoreo, Control y Reportes.
  8. Multiplataforma

El modelo de negocio de la empresa que respalda el desarrollo de la versión libre es además bastante escalable como puede leerse en el FAQ del sitio comercial. OnePoint Project es sin duda una buena opción a considerar al momento de realizar desarrollos sobre software de planificación libres o simplemente para un uso gratuito de una herramienta similar a microsoft project con similares o quizás mejores características.