Ce que tu vas apprendre
Activer hr_timesheet
Module, prérequis projet allow_timesheets + account_id, trois entrées de saisie possibles.
Suivre avec les vues CE
Pivot, graph, calendrier, liste editable — sans grille hebdo EE mais avec les bons axes.
Contourner l'absence EE
Pas de workflow validation, pas de timer, pas de mobile offline — 3 patterns de contournement éprouvés.
1. Pourquoi compter les heures dès aujourd'hui
Dans une ESN qui pilote plusieurs missions en parallèle, la question revient chaque lundi matin : « Combien d'heures sur la mission Audit Réseau la semaine dernière ? ». Tant que le suivi se limite au compteur de tâches « En cours », la réponse n'arrive pas. Le kanban dit ce qui bouge, pas le volume horaire engagé — voir Tâches, dépendances & suivi en Odoo CE pour la fondation tâches.
Le verdict opérationnel tombe vite : à partir d'aujourd'hui, chaque consultant saisit ses heures jour par jour dans Odoo. Pas de feuille Excel parallèle, pas de fin de mois récapitulatif. Trois missions concurrentes — Audit Réseau, App Métier, Déploiement WiFi — passent sur une seule source de vérité. Reste à activer le module, apprendre la saisie, et être lucide sur ce que CE ne fait pas.
2. Activer hr_timesheet : prérequis projet
Le module Feuilles de temps (hr_timesheet) s'installe depuis le menu Applications. À l'installation, deux greffes : un onglet « Feuilles de temps » apparaît sur chaque fiche tâche, et le menu Feuilles de temps s'ajoute à la barre principale (analyse, saisie, configuration).
Deux prérequis projet conditionnent la saisie. Un, l'option allow_timesheets=True doit être cochée sur la fiche projet (case « Feuilles de temps » dans l'onglet Paramètres). Sans elle, le bouton de saisie reste masqué partout. Deux, le champ account_id (compte analytique) doit être renseigné — pour la fondation projet, voir Démarrer ses projets dans Odoo CE. Sans compte analytique, les heures se saisissent mais ne s'agrègent pas pour la facturation.
📖 Définition — Feuille de temps vs compte analytique
Une ligne timesheet (account.analytic.line) = 1 employé × 1 tâche × 1 durée × 1 date. Le compte analytique (account.analytic.account) derrière le projet agrège toutes les lignes pour la facturation et le reporting de marge.
Sur les trois missions de l'agence, les deux cases sont cochées et les comptes analytiques renseignés. Les démos qui suivent portent sur une semaine type de trois jours, du lundi au mercredi.
3. Saisir un temps : trois entrées possibles
Une ligne de feuille de temps en Odoo (account.analytic.line) se crée par trois chemins, tous équivalents en base mais distincts en ergonomie quotidienne.
Entrée 1 — Depuis la fiche tâche, onglet Feuilles de temps. C'est le chemin le plus naturel : le consultant ouvre la tâche sur laquelle il travaille, descend dans l'onglet dédié, ajoute une ligne. Les champs project_id, task_id, employee_id sont alimentés automatiquement — l'utilisateur est lié à son enregistrement employé, voir Les employés dans Odoo 19. Reste à saisir date, name et unit_amount. Le chef de mission technique crée par exemple deux lignes sur « Reconnaissance site Tiaret » : 4h le lundi (déplacement + premier relevé), 6h le mardi (cartographie complète). Le mercredi, il bascule sur « Rapport d'audit v1 » pour 6h supplémentaires.
Entrée 2 — Depuis la fiche projet, onglet Feuilles de temps. Variante utile quand la tâche n'existe pas encore, ou pour du transverse projet (réunion, préparation). Le champ task_id reste vide ou pointe sur une tâche générique « Pilotage ».
Entrée 3 — Depuis le menu Feuilles de temps → Mes feuilles de temps. Vue centralisée par consultant : le développeur senior y ajoute trois lignes successives — 4h lundi, 8h mardi, 4h mercredi sur « Setup environnement dev » de la mission App Métier. Format saisie en lot, idéal pour rattraper une demi-semaine en fin de mercredi soir.
effective_hours = 10h visible en pied. Champ unit_amount éditable inline.4. 🔵 Workflow CE vs validation EE
La validation manager des feuilles de temps nécessite Odoo Enterprise.
En Odoo 19 CE, chaque ligne timesheet passe directement en état « validé » dès sa création — hr_timesheet ne dispose d'aucun champ state (draft / submitted / approved) ni d'action action_validate. La workflow d'approbation manager est absente du code source CE.
Quatre fonctionnalités EE absentes du noyau Community :
Workflow validation draft → submitted → approved
Les consultants soumettent en fin de semaine, le manager valide ou rejette ligne par ligne. Aucun équivalent dans hr_timesheet CE.
Vue grille hebdomadaire (timesheet_grid)
Grille 7 colonnes lun→dim pour saisir une semaine entière sur une vue, avec totaux journaliers. Module EE uniquement.
Timer Start/Stop intégré
Chronomètre sur chaque tâche, démarrage en un clic, arrêt qui crée automatiquement la ligne timesheet. Widget EE uniquement.
Application mobile timesheet
Saisie offline depuis smartphone, synchronisation différée à la reconnexion réseau. App native EE absente de Community.
En CE, le contournement pragmatique tient en trois patterns : valider à voix le lundi matin lors du sprint hebdo, laisser une note Discuss sur le projet, ou ajouter un champ boolean custom validated_by_manager via un petit module métier.
5. Vues de suivi CE : pivot, graph, calendrier, liste
Quatre vues natives Community pilotent le suivi timesheet au quotidien — sans vue grille hebdo, mais avec les bons outils d'agrégation.
Pivot
Mesure unit_amount, axes employee × project × task. Le cœur du reporting hebdo.
Graph
Bar / Line / Pie, totaux heures par projet ou par consultant. Visuel comité de pilotage.
Calendrier
Champ date, vue jour/semaine/mois. Repère les jours sans saisie d'un coup d'œil.
Liste editable
Saisie inline, tri multi-colonnes, export Excel natif. Idéal pour la saisie en lot.
La responsable opérationnelle ouvre Feuilles de temps → Analyse, passe en vue Pivot : lignes = employee_id, mesure = unit_amount. Le tableau s'affiche : 16h pour le chef de mission technique, 16h pour le développeur senior, 10h pour la technicienne réseaux, et 0h pour les comptes système (Administrator) — total 42 heures sur la semaine pour les trois consultants. Pour creuser, il suffit d'ajouter project_id en colonne pour répartir mission par mission. La vue analytique remplit le rôle qu'aurait tenu une grille hebdo EE, à condition que la saisie reste régulière. F11·4 — Maîtriser la comptabilité analytique en CE ouvrira la mécanique des comptes analytiques.
unit_amount). Total = 42h pour les 3 consultants opérationnels. Boutons Mesures · Inverser axes · Recharger · Export Excel.6. Saisie en lot : list editable et raccourcis clavier
La vue liste de /odoo/timesheets se prête à la saisie de plusieurs jours d'affilée. Mode list editable activé par défaut sur le modèle account.analytic.line : un clic sur une cellule passe en édition inline, sans rechargement de page, sans bascule formulaire.
Le développeur senior saisit ses trois lignes du sprint dev en moins de deux minutes : clic « Nouveau », ligne 1 lundi sur la mission App Métier / « Setup environnement dev » / 4h. Tab jusqu'au champ suivant, Entrée pour passer à la ligne suivante. Ligne 2 mardi 8h, ligne 3 mercredi 4h. Total 16h saisies en flux continu, sans recharger la page.
💡 Astuce — Raccourcis clavier liste editable
Tab déplace le curseur de cellule en cellule, Maj+Tab recule. Entrée valide la ligne courante et passe à la suivante. Échap annule. Pour saisir une semaine complète : filtrer sur la période, trier par date, éditer du haut vers le bas.
La technicienne réseaux applique la même méthode pour ses 10 heures de la semaine sur la mission Audit Réseau (tâche Test débit fibre) — 3h, 5h, 2h sur la tâche « Test débit fibre ». L'export Excel natif est accessible en haut à droite pour archivage hors Odoo.
7. Lecture sprint hebdo — 42 heures, trois missions
Au sprint hebdo suivant, la direction ouvre la vue pivot préparée par la responsable opérationnelle : 42 heures cumulées sur la semaine. Le chef de mission technique pèse 16h sur l'Audit Réseau (reconnaissance + rapport v1). Le développeur senior pèse 16h sur l'App Métier (setup environnement dev). La technicienne réseaux pèse 10h sur l'Audit Réseau (tâche Test débit fibre).
| Rôle | Mission | Tâche | Lun | Mar | Mer | Total |
|---|---|---|---|---|---|---|
| Chef de mission technique | Audit Réseau | Reconnaissance site | 4h | 6h | — | 10h |
| Chef de mission technique | Audit Réseau | Rapport audit v1 | — | — | 6h | 6h |
| Développeur senior | App Métier | Setup environnement dev | 4h | 8h | 4h | 16h |
| Technicienne réseaux | Audit Réseau | Test débit fibre | 3h | 5h | 2h | 10h |
| Total semaine | 11h | 19h | 12h | 42h | ||
Le rituel de validation est verbal : la direction lit le pivot à haute voix, chaque consultant confirme ses heures, la responsable opérationnelle note dans le Discuss du projet le tag « heures semaine validées ». Pas de workflow draft → submitted → approved — la cadence hebdomadaire compense l'absence du circuit EE. L'article F11·5 — Facturer au temps & analyser la rentabilité projet ouvrira la transformation de ces 42 heures en facturation client via sale_timesheet.
8. Pièges & quatre alertes utiles
Quatre pièges récurrents en CE — anticipés, ils ne se rejouent pas. Trois alertes serveur action à activer pour fiabiliser le flux.
❌ Piège 1 — Tâche archivée
Une tâche avec active=False refuse toute création de timesheet — erreur silencieuse à la sauvegarde. Réactiver la tâche avant saisie, ou créer la ligne sur le projet sans tâche.
❌ Piège 2 — Employé archivé
Un consultant dont hr.employee.active=False ne peut plus saisir — l'écran retourne « Aucun employé associé à votre utilisateur ». Vérifier en premier l'état RH avant tout débogage timesheet.
❌ Piège 3 — allow_timesheets=False
Case décochée sur la fiche projet → bouton de saisie absent partout (onglet tâche, menu projet). Toujours cocher cette option à la création du projet, sinon la saisie devient invisible.
❌ Piège 4 — account_id manquant
Projet sans compte analytique = heures saisies mais non agrégeables pour la facturation. Sur les projets migrés depuis v17, vérifier systématiquement le champ « Compte analytique » de l'onglet Paramètres.
🔔 Trois alertes server action à activer
Alerte 1 — Rappel saisie hebdo. Scheduler vendredi 17h qui somme unit_amount sur 5 jours et notifie en Discuss les consultants sous 30h.
Alerte 2 — Tâche dépassée. Scheduler quotidien qui compare effective_hours à 1.2 × planned_hours et alerte le chef de mission au-delà.
Alerte 3 — Projet sans compte analytique. Scheduler hebdomadaire qui détecte allow_timesheets=True couplé à account_id vide et alerte la responsable opérationnelle. Ces trois automatismes compensent en grande partie l'absence du workflow EE — à condition de les câbler dès la mise en route du module.
Conclusion
Tu sors avec un module hr_timesheet activé, trois entrées de saisie maîtrisées, quatre vues de suivi et quatre pièges anticipés. Le rituel hebdomadaire — celui qu'une ESN met en place chaque lundi matin — compense l'absence du workflow draft / submitted / approved EE tant que l'équipe reste sous une dizaine de consultants. Au-delà, la grille hebdo, le timer et la validation manager EE deviennent vraiment décisifs. Pas avant.
Voir aussi dans ce hub Projet & Services
F11·3 — Feuilles de temps en Odoo CE
hr_timesheet — saisie, suivi, facturation.
Articles complémentaires
#58 — Les employés dans Odoo 19
Prérequis RH direct : employee_id sur la ligne timesheet est alimenté depuis la fiche employée.
#47 — La comptabilité dans Odoo 19
Contexte facturation, même niveau intermédiaire — utile en amont de F11·5.