Documentation13 min de lecture

Projets, rôles et feuilles de temps dans Odoo Community

Neuf modules OCA complètent la gestion de projet d'Odoo 18 Community — dont `hr_timesheet_sheet` (18.0.1.3.2) qui ajoute une feuille de temps périodique en grille croisée avec cycle de validation, et deux modules qui **restaurent des fonctions retirées du cœur d'Odoo depuis la version 8**. Ce que chacun apporte, et le seul réglage qui décide de la fiabilité de vos temps.

Planification de projet et suivi du temps passé par les équipes

Dans une entreprise de services, tout se joue sur l'écart entre les heures vendues et les heures passées. Odoo sait enregistrer des heures ; il ne sait pas, nativement, les faire valider, les chronométrer, ni dire qui tient quel rôle sur un projet.

Neuf modules comblent ces manques. Deux d'entre eux méritent une mention particulière : ils restaurent des fonctions présentes dans Odoo 8 et retirées depuis.

Résumé

Neuf modules pour que le temps passé devienne une donnée fiable : une feuille périodique en grille croisée soumise à validation, un chronomètre, la détection des chevauchements, des rôles de projet et un statut d'avancement.

Deux d'entre eux restaurent des fonctions retirées d'Odoo depuis la version 8. Et le module le plus petit est le plus décisif : sale_timesheet_line_exclude ajoute une case « non facturable » qui n'existe pas nativement — sans elle, les heures offertes ne sont pas saisies du tout, et la marge devient immesurable.

L'essentiel

  • hr_timesheet_sheet : une feuille de temps périodique en grille croisée (date × projet/tâche), soumise à validation — 126 champs, 7 menus.
  • project_timesheet_time_control : un chronomètre Démarrer / Reprendre / Arrêter, qui enregistre l'heure exacte et non seulement le jour.
  • hr_timesheet_begin_end : heures de début et de fin par ligne, avec détection des chevauchements pour un même employé.
  • project_role : un catalogue de rôles métier et des affectations, au niveau du projet ou de la société.
  • sale_timesheet_line_exclude : une case « non facturable » par ligne — une fonction qui n'existe pas nativement.
  • project_task_default_stage et project_task_stage_state restaurent des fonctions retirées d'Odoo depuis la version 8.

Ce que ces modules ajoutent à l'instance

ModuleModèles créésChampsMenusVersion
hr_timesheet_sheet3126718.0.1.3.2
project_role249218.0.1.0.1
project_timesheet_time_control122118.0.1.0.7
project_status113118.0.1.0.0
project_timeline04018.0.1.0.1
hr_timesheet_begin_end04018.0.1.0.2
sale_timesheet_line_exclude03018.0.1.0.0
project_task_default_stage02018.0.1.0.1
project_task_stage_state02018.0.1.0.0

Les quatre derniers tiennent en deux à quatre champs : ce sont des corrections de détail, et ce sont souvent elles qui débloquent un usage. Le premier, à l'inverse, est un domaine entier — un cycle de soumission et de validation périodique.

hr_timesheet_sheet : la feuille de temps avec validation

C'est le module le plus structurant de cette fiche, et il répond à un besoin précis : un cycle formel de soumission et de validation, plutôt que des lignes de temps libres.

  • Chaque employé saisit ses heures par période — jour, semaine ou mois, configurable — dans une grille croisée date × projet/tâche.
  • Il soumet sa feuille à validation.
  • Un réviseur l'approuve ou la refuse. Selon la politique configurée, ce réviseur est un officier RH, un manager RH ou un manager des feuilles de temps.

Feuille de temps en grille croisée : les dates en colonnes, les projets et tâches en lignes, et les heures à l'intersection
Feuille de temps en grille croisée : les dates en colonnes, les projets et tâches en lignes, et les heures à l'intersection

La grille croisée est ce qui change l'expérience de saisie. Saisir vingt lignes de temps une par une décourage ; remplir une matrice de la semaine se fait en deux minutes. Elle s'appuie sur le module technique web_widget_x2many_2d_matrix.

Limite répertoriée, et elle est documentée avec honnêteté par le dépôt : la grille est limitée à 1 million de cellules, à cause d'une limitation du paramètre de limite des vues liste, qui ne peut pas être défini dynamiquement. La valeur par défaut d'Odoo — 40 enregistrements — était trop petite, et la communauté a retenu 1 million, « qui devrait suffire dans la majorité des scénarios ».

Autrement dit : ce n'est pas une limite que vous rencontrerez, mais c'est le genre de précision qui distingue une documentation d'une plaquette.

Les menus se trouvent sous Feuilles de temps : « À approuver », « Feuille de présence », « Lignes des feuilles de temps », « My Timesheets ». Voir la marge par mission en société de services.

Le chronomètre, et la précision des heures

Deux modules travaillent la même matière par deux angles différents, et le choix entre eux n'est pas indifférent.

project_timesheet_time_controlhr_timesheet_begin_end
PrincipeUn chronomètre : Démarrer / Reprendre / ArrêterDeux champs heure de début et heure de fin
Ce qu'il enregistreL'instant précis du démarrage (heure et minute)La plage horaire complète
Où sont les boutonsFeuilles de temps, fiches Projet et fiches Tâche—
Contrôle—Cohérence début / fin / durée, détection des chevauchements
UsageChronométrer en temps réelTracer des plages horaires précises

Le chronomètre sert la qualité de la mesure : un temps saisi le vendredi soir est une estimation, un temps chronométré est une mesure. Sur une activité facturée au temps, l'écart entre les deux est l'essentiel de la marge.

La détection des chevauchements de hr_timesheet_begin_end sert autre chose : la vraisemblance. Elle attrape l'employé qui a déclaré deux activités sur la même heure — par erreur le plus souvent, et c'est une erreur qu'on ne voit pas autrement.

Limite répertoriée sur le module de chronomètre : le dépôt souhaite le renommer hr_timesheet_time_control et le déplacer vers le dépôt timesheet. C'est une réorganisation à venir, à connaître parce qu'elle changera le nom du module à une version ultérieure.

sale_timesheet_line_exclude : une case qui manque à Odoo

Celui-ci tient en trois champs et comble un manque que le dépôt documente précisément.

Le cas : une facturation « à la tâche ». La tâche est facturable, donc toutes les heures saisies dessus partent en facturation. Sauf qu'une entrée de temps précise ne doit parfois pas être refacturée — un geste commercial, une reprise, du temps interne.

Cette fonctionnalité n'existe pas nativement dans Odoo — le module cite le ticket odoo/odoo#31043 à l'appui.

Le module ajoute donc une case « Non-billable » sur la ligne de feuille de temps, qui l'exclut manuellement de la facturation liée au bon de commande, même si la tâche ou le contrat est normalement facturable. Il crée aussi un groupe de droits, ce qui permet de restreindre qui peut cocher cette case.

C'est le genre de module de trois champs qui décide de l'adoption d'un dispositif entier : sans lui, un chef de projet qui veut offrir deux heures doit modifier la tâche, ou renoncer à les saisir — et des heures non saisies, c'est une marge qu'on ne mesure plus.

Les rôles de projet, et le statut

project_role : qui fait quoi, au-delà du responsable

Odoo donne un champ « Responsable » à un projet. Dans une équipe de cinq personnes avec des rôles distincts — chef de projet, référent technique, interlocuteur client — c'est insuffisant.

project_role introduit un catalogue de rôles métier et un système d'affectations :

  • Les rôles se définissent au niveau de la société ou en partagé global.
  • Les affectations se font par projet, ou au niveau de la société — une affectation par défaut potentiellement héritée par tous les projets.

Catalogue des rôles de projet : chaque rôle métier défini au niveau de la société ou en partagé global
Catalogue des rôles de projet : chaque rôle métier défini au niveau de la société ou en partagé global

Affectations d'un projet : chaque utilisateur rattaché au rôle qu'il tient sur ce projet
Affectations d'un projet : chaque utilisateur rattaché au rôle qu'il tient sur ce projet

L'héritage depuis la société est le détail qui rend le module utilisable : on déclare une fois que telle personne est référente technique par défaut, et chaque nouveau projet en hérite.

project_status : l'avancement, distinct de l'étape

Odoo a des étapes (stages) pour les tâches. project_status ajoute un statut de projet — distinct — pour suivre l'avancement global : Pending, In Progress, Complete.

Il se présente sous forme de barre de statut cliquable sur la fiche projet, avec regroupement Kanban par statut et filtres de recherche dédiés. C'est la vue dont a besoin une direction : non pas où en sont les tâches, mais où en sont les projets.

Deux fonctions restaurées depuis Odoo 8

Ces deux modules sont instructifs au-delà de leur taille : ils documentent ce que l'éditeur a retiré.

ModuleCe qu'il restaureRetiré depuis
project_task_default_stageLa possibilité de marquer des étapes de tâche comme « par défaut », automatiquement proposées à chaque nouveau projetOdoo 8.0
project_task_stage_stateUn champ « State » sur les étapes, qui applique automatiquement un état de tâche quand elle entre dans l'étapeOdoo 8.0

Le premier répond à un besoin de standardisation : sans lui, chaque nouveau projet démarre avec les étapes par défaut d'Odoo, et il faut les refaire à la main pour imposer un cycle de vie commun — analyse, spécification, développement, recette.

Le second synchronise l'état Kanban d'une tâche avec son étape, sans intervention de l'utilisateur. Sans lui, une tâche déplacée dans « Terminé » garde l'état qu'elle avait, et les deux informations divergent.

C'est le même motif que account_fiscal_year, qui restaure un modèle déplacé vers l'Enterprise en version 14 : la communauté reprend ce qui disparaît. Voir les sept conforts de facturation et Odoo Community ou Enterprise.

project_timeline : la vue chronologique

Un module de quatre champs qui ajoute une vue Chronologie aux écrans Projets et Tâches, fournie par le module technique web_timeline.

Ce qu'elle montre : les projets et les tâches d'une équipe sur un axe temporel, avec leurs dates planifiées et leurs dépendances. C'est la vue de planification de charge qui manque à Odoo Community.

Son prérequis est sa principale contrainte : elle n'a de sens que si les tâches portent des dates planifiées. Sur un backlog sans dates, la chronologie est vide — et c'est le cas le plus fréquent avant un travail de cadrage.

Dans quel ordre les déployer

OrdreModulePourquoi
1project_task_default_stageStandardiser le cycle de vie avant de créer les projets
2project_timesheet_time_controlLa qualité de la mesure du temps, dès le premier jour
3sale_timesheet_line_excludeSans elle, les heures non facturables ne sont pas saisies
4project_role + project_statusQuand l'équipe dépasse quelques personnes
5hr_timesheet_sheetQuand un cycle de validation formel devient nécessaire
6project_timelineQuand les tâches portent des dates
7hr_timesheet_begin_endSi les plages horaires précises comptent

L'ordre 3 est celui qu'on sous-estime : sans la case « non facturable », un chef de projet qui veut offrir des heures ne les saisit pas. Et des heures non saisies font disparaître l'information la plus utile de toute cette fiche — l'écart entre heures vendues et heures passées.

Identité technique

ModuleDépôt OCADépend de
project_roleprojectmail, project
project_statusprojectproject
project_task_default_stageprojectproject
project_task_stage_stateprojectproject
project_timelineprojectproject, web_timeline
project_timesheet_time_controlprojecthr_timesheet
hr_timesheet_begin_endtimesheethr_timesheet
hr_timesheet_sheettimesheethr_timesheet, sale_timesheet, web_widget_x2many_2d_matrix
sale_timesheet_line_excludetimesheetsale_timesheet

Tous sous licence AGPL-3, branche 18.0. Le dépôt project compte 66 modules documentés, timesheet 33. Ils font partie de notre pack services (81 modules), au-delà du socle commun.

Questions fréquentes

Odoo Community permet-il de faire valider les feuilles de temps ?

Pas nativement : les lignes de temps sont libres. hr_timesheet_sheet ajoute un cycle formel — saisie par période dans une grille croisée, soumission, puis approbation ou refus par un réviseur (officier RH, manager RH ou manager des feuilles de temps, selon la politique configurée).

Chronomètre ou heures de début et de fin : lequel choisir ?

Le chronomètre (project_timesheet_time_control) sert la qualité de la mesure : un temps chronométré est une mesure, un temps saisi le vendredi est une estimation. Les heures de début et de fin (hr_timesheet_begin_end) servent la vraisemblance, grâce à la détection des chevauchements. Les deux peuvent cohabiter.

Comment ne pas facturer certaines heures d'une tâche facturable ?

Avec sale_timesheet_line_exclude, qui ajoute une case « Non-billable » par ligne de feuille de temps. Cette fonction n'existe pas nativement dans Odoo — le module cite le ticket odoo/odoo#31043. Sans elle, les heures offertes ne sont souvent pas saisies du tout, ce qui fausse la marge.

Pourquoi deux modules restaurent-ils des fonctions d'Odoo 8 ?

Parce que l'éditeur les a retirées. project_task_default_stage rétablit les étapes marquées « par défaut » proposées à chaque nouveau projet, et project_task_stage_state le champ « State » sur les étapes, qui synchronise l'état d'une tâche avec son étape. C'est le même motif que account_fiscal_year, déplacé vers l'Enterprise en version 14.

La vue chronologie est vide, pourquoi ?

Parce que les tâches ne portent pas de dates planifiées : project_timeline affiche les projets et tâches sur un axe temporel à partir de ces dates. Sur un backlog non cadré, la vue est vide — ce n'est pas un défaut du module mais l'absence de la donnée qu'il représente.

Se faire accompagner

Un seul réglage décide de la fiabilité de tout ce dispositif : la maille de saisie du temps. Une saisie hebdomadaire à la demi-journée est tenue ; une saisie quotidienne au quart d'heure produit des données inventées le vendredi soir. Et la case « non facturable » conditionne que les heures offertes soient saisies du tout.

Nous posons la maille avec les équipes, installons le chronomètre là où la mesure compte, et construisons l'indicateur qui résume tout : la part des heures saisies qui finissent sur une facture. Voir les prestations d'Atalios Consulting ou demander un rappel.

Pour aller plus loin

En résumé

Neuf modules pour que le temps passé devienne une donnée fiable : une feuille périodique validée, un chronomètre, la détection des chevauchements, et une case « non facturable » qui n'existe pas dans Odoo. Deux d'entre eux restaurent des fonctions retirées depuis la version 8. Parlons de vos feuilles de temps.

Documentation OCAServicesPilotage

Partager

Fiches connexes

Relevés bancaires et pièces comptables sur un bureau
Relevé sur une instance Odoo 18 Community, le module OCA `account_reconcile_oca` (dépôt `account-reconcile`, version 18.0.1.1.14, licence AGPL-3) ajoute 2 modèles, 87 champs et 17 vues : il remplace le lettrage limité de la Community par deux écrans dédiés, bancaire et par compte. Ce qu'il ajoute à l'instance, où le trouver, ses quatre cas d'usage et ses limites connues.
Lire la suite
Documentation OCA, Comptabilité
Relevé bancaire et suivi des opérations sur un bureau
Odoo a retiré l'import de relevés bancaires de son édition Community à partir de la version 14 : les 3 modules OCA `account_statement_import_file` (18.0.1.0.3, LGPL-3), `_camt` et `_ofx` le rétablissent, avec la détection des transactions déjà importées. Comment ils s'articulent, ce que CAMT apporte de plus qu'OFX, et le piège du fichier sans IBAN.
Lire la suite
Documentation OCA, Comptabilité