Time tracker – gestion de son temps sur un projet
Voila bientot 3h que je cherchais déséspérement un outil de type time tracker open source en PHP, sans succès. Pourtant mes besoins étaient simple:
- Pouvoir spécifier des projets
- Pouvoir spécifier des catégories par projets
- A partir de ces informations pouvoir ajouter des temps de travails (début – fin)
- Avoir un récapitulatif global
J’ai vu et tester toutes sortes d’outils. allant de la gestion de projet complète, mais sans time tracker, a des outils payants… Sans succès
. puis, j’ai eu une lueur d’espoir… Je suis tombé sur WR Time Tracker ! Enfin un outil parfaitement adapté à mon besoin. Ni une ni 2, je le télécharge, et l’installe, et… Ca ne fonctionne pas… Enfin si, ca fonctionne, mais problème avec les catégories, impossible de les créer, et donc pas moyen d’enregistrer…
Bon, après tout, je suis développeur, et cet outil fait exactement ce que j’ai besoin… Direction le code, pour debugguer. Après 1/2h de bataille, il se trouve qu’il y a simplement une inversion dans l’ordre des tables de la requête SQL, dans 2 fichiers distinct. Une petite modification, et tou refonctionne parfaitement.
resources/mytime_lib.php (autour de la ligne 77, dans la fonction Get_Activity_List):
$sel_str = “select a.a_id, a.a_name, a.a_project_id, p.p_id from activity_status_list asl, activities a left join projects p on (a.a_project_id=p.p_id and p.p_status=1) where a.a_manager_id = $user_manager_id and asl.asl_id = a.a_status and asl.asl_hidden = 0 order by a.a_name”;
if (!$user_manager_id) {
$sel_str = “select a.a_id, a.a_name, a.a_project_id, p.p_id from activity_status_list asl, activities a left join projects p on (a.a_project_id=p.p_id and p.p_status=1) where a.a_manager_id = $user_id and asl.asl_id = a.a_status and asl.asl_hidden = 0 order by a.a_name”;
resources/activity_lib.php (autour de la ligne 16, dans la fonction Fill_Activity_List)
$sth = $db->prepare(“select a.a_id, a.a_name, p.p_name
from activity_status_list asl, activities a left join projects p on (a.a_project_id=p.p_id and p.p_status=1)
where a.a_manager_id = $user_id and asl.asl_id = a.a_status and asl.asl_hidden = 0
order by a.a_name”);
A titre d’explication, dans le code original, la requete affichais:
from activities a, activity_status_list asl left join projects p on (a.a_project_id=p.p_id and p.p_status=1)
cependant, Mysql tentait d’effectuer le left join sur activity_status_list, et perdait donc la connaissance de activities, qui est la table utilisée dans le ON du left join. Il signalait un champ inconnu, et la requete plantait. Cela ne pose peut être pas de problème dans certaines version de Mysql, mais dans la mienne (mysql Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (x86_64)), rien a faire.
Sinon, je suis super content de cet outil, et je le recommande a toutes personnes ayant besoin d’avoir un suivit de son temps de travail, pour facture un client, par exemple. C’est un outil simpl, rapide à utilser. Il permets de générer un récapitulatif, par date, par projet, et de l’envoyer par mail. Il utilise une gestion par manager, avec des utilisateurs dedans. Bref, un vrai bonheur, que je conseille vivement!
In: Informatique, Php, Programmation, Tutoriaux · Tagged with: erreur, Fill_Activity_List, gestion, Get_Activity_List, projet, sql, time, tracker, WR

on July 6, 2009 at 18:02
Permalink
Bonjour,
Est-ce que cet outil permet de donner à ses clients un accès en consultation afin qu’ils puissent voir où l’on en est d’une tache? Ou le nombre d’heures passées etc…
Merci