Le temps saisi n'est pas le temps facturé : il s'arrondit, s'exclut parfois, se compare à un budget, et se valorise à un coût horaire qui change dans l'année.
Dix-huit modules communautaires traitent cette traduction — celle qui transforme des lignes de saisie en marge d'affaire.
Résumé
Cinq modules traitent la facturation du temps : l'arrondi des durées facturées selon un paramétrage, l'exclusion manuelle d'une ligne, le rattachement d'une ligne à une facture déjà émise — le cas de la facture d'avance —, la planification de dates et d'affectations depuis le devis, et la propagation analytique entre tâche et feuilles de temps.
Quatre traitent les coûts et les budgets : l'historique du coût horaire avec date d'effet, un onglet Budgets sur le projet confronté au réalisé, des étiquettes analytiques automatiques par employé, et la génération de temps depuis les opportunités CRM.
Le reste améliore la saisie et l'analyse : une vue calendrier, le jour de la semaine calculé, l'ordre antéchronologique des lignes, la création en haut de liste, une description destinée au client distincte de l'interne, la saisie depuis le portail, un rapport configurable exportable, et deux modules sur les congés convertis en temps.
L'essentiel
- L'arrondi des durées facturées, paramétré — la demi-heure commencée.
- L'exclusion manuelle d'une ligne de la facturation.
- Le rattachement d'une ligne à une facture déjà émise, pour les acomptes.
- L'historique du coût horaire avec date d'effet : la marge passée reste juste.
- Un onglet Budgets sur le projet, confronté au réalisé.
- Une description destinée au client, distincte de la description interne.
- La saisie de temps depuis le portail, pour les intervenants externes.
- Un rapport de temps configurable et exportable.
Ce que ces modules ajoutent à l'instance
| Famille | Modules | Nombre |
|---|---|---|
| Facturation du temps | sale_timesheet_rounded, sale_timesheet_line_exclude, sale_timesheet_invoice_link, sale_timesheet_timeline, project_task_analytic_propagation | 5 |
| Coûts et budgets | hr_employee_cost_history, sale_timesheet_budget, hr_timesheet_employee_analytic_tag, crm_timesheet | 4 |
| Saisie | hr_timesheet_calendar, hr_timesheet_day_week, hr_timesheet_date_order_desc, hr_timesheet_editable_top, hr_timesheet_name_customer, hr_timesheet_portal | 6 |
| Analyse et congés | hr_timesheet_report, project_timesheet_holidays_dynamic_description, project_timesheet_holidays_editable | 3 |
Un menu ajouté : Feuilles de temps ▸ Analyse ▸ Assistant de rapport de feuille de temps.
Du temps saisi au temps facturé
Un consultant saisit 1 h 47. Le client est facturé 2 heures — ou 1 h 45, ou 1 h 30, selon la convention. Cette conversion existe dans tous les contrats de prestation, et nulle part dans Odoo : la durée saisie part telle quelle sur la facture.
sale_timesheet_roundedarrondit automatiquement les durées utilisées pour la facturation, selon un paramétrage défini au niveau voulu.sale_timesheet_line_excludeajoute une case non facturable sur une ligne précise, pour l'exclure manuellement — complément du marquage par type de temps.sale_timesheet_invoice_linkpermet de rattacher une ligne de temps à une facture déjà émise, y compris émise par avance. C'est le cas du forfait facturé au début, consommé ensuite.sale_timesheet_timelinepermet de planifier dates et affectations directement sur les lignes d'un devis de service.project_task_analytic_propagationmaintient les comptes analytiques de la tâche et de ses feuilles de temps synchronisés.
Le troisième résout un problème structurel du forfait : Odoo lie la facturation à la consommation, alors que le forfait facture d'abord. Sans ce rattachement, le temps consommé reste « à facturer » indéfiniment.
L'exclusion par type de temps, plus systématique, est traitée dans feuilles de temps : saisie et validation.
Les coûts, et le budget
hr_employee_cost_historyconserve l'historique des coûts horaires d'un employé, avec une date d'effet. Sans lui, modifier un coût horaire recalcule toute l'histoire : une affaire close l'an dernier change de marge parce qu'on a augmenté un salaire ce mois-ci.
C'est un module de fiabilité comptable autant que de gestion : la marge d'un exercice clos ne doit pas bouger.
| Module | Ce qu'il apporte |
|---|---|
sale_timesheet_budget | Un onglet Budgets sur le projet : des lignes budgétaires libres confrontées au réalisé |
hr_timesheet_employee_analytic_tag | Des étiquettes analytiques définies sur l'employé, appliquées automatiquement à ses lignes |
crm_timesheet | La saisie de temps depuis les opportunités CRM, avec contrôle de temps |
Le dernier mesure ce que personne ne mesure : le temps d'avant-vente. Combien d'heures pour obtenir cette affaire ? La réponse change la façon de qualifier les opportunités suivantes.
Le budget analytique plus complet est traité dans planifier, consommer, facturer.
Saisir plus facilement
hr_timesheet_calendarajoute une vue calendrier : on saisit son temps sur un planning plutôt que dans une liste.hr_timesheet_date_order_descaffiche les saisies les plus récentes en premier — l'ordre dans lequel on travaille.hr_timesheet_editable_topfait apparaître la nouvelle ligne en haut de la liste.hr_timesheet_day_weekajoute le jour de la semaine comme critère de recherche et de regroupement.hr_timesheet_name_customerajoute une description destinée au client, distincte de la description interne.hr_timesheet_portalpermet à des utilisateurs du portail de saisir, modifier et supprimer leurs propres lignes depuis le site.
La description destinée au client est le pendant, sur la ligne de temps, de la double description déjà rencontrée sur les tâches : « reprise du correctif bâclé la semaine dernière » décrit le travail, et ne doit pas figurer sur la facture.
La saisie depuis le portail ouvre un usage précis : les intervenants externes — sous-traitants, free-lances — qui doivent déclarer leur temps sans avoir de licence utilisateur interne.
Analyser, et traiter les congés
hr_timesheet_report ajoute un assistant de rapport entièrement configurable : choix des colonnes, du regroupement, de la période, avec export tableur.
C'est l'outil que réclament les responsables : le rapport standard répond à une question, l'assistant répond aux leurs — par client, par type de temps, par collaborateur, sur la période voulue.
Les congés convertis en temps
project_timesheet_holidays_dynamic_descriptionutilise la description de la demande de congé comme description de la ligne de temps générée.project_timesheet_holidays_editablerend ces lignes modifiables, alors qu'elles sont en lecture seule par défaut.
Les deux répondent au même besoin : les congés génèrent des lignes de temps, et ces lignes doivent rester lisibles et corrigeables — ne serait-ce que pour rattraper une demi-journée mal convertie.
La gestion des congés et des jours fériés est traitée dans la fiche RH.
Limites connues
- L'arrondi doit correspondre au contrat : arrondir à la demi-heure sans fondement contractuel est contestable.
- L'exclusion manuelle demande une règle : sans elle, chacun exclut selon son appréciation.
- L'historique de coût ne reconstitue pas le passé : installé après coup, il part de la date d'installation.
- La saisie portail ouvre un accès externe : à encadrer comme tout accès portail.
- Les lignes de congé modifiables peuvent diverger de la demande d'origine : c'est le but, et cela demande une discipline.
- Le rapport configurable dépend du moteur d'export tableur du dépôt
reporting-engine.
Identité technique
Les dix-huit modules viennent du dépôt OCA timesheet, branche 18.0, en licences AGPL-3 et LGPL-3 selon le module. Plusieurs dépendent de sale_timesheet, du contrôle de temps du dépôt project, ou des congés ; le rapport s'appuie sur le moteur d'export tableur.
Le dépôt timesheet est désormais entièrement couvert : 34 modules en deux fiches — saisie et validation et celle-ci.
Questions fréquentes
Peut-on arrondir les durées facturées ?
Oui : sale_timesheet_rounded arrondit automatiquement les durées utilisées pour la facturation, selon un paramétrage. C'est la convention de tout contrat de prestation — la demi-heure commencée —, et elle n'existe pas dans Odoo, où la durée saisie part telle quelle sur la facture. L'arrondi doit évidemment correspondre au contrat.
Comment facturer un forfait payé d'avance ?
sale_timesheet_invoice_link permet de rattacher une ligne de temps à une facture déjà émise. Odoo lie la facturation à la consommation, alors que le forfait facture d'abord : sans ce rattachement, le temps consommé reste « à facturer » indéfiniment.
Que se passe-t-il quand on augmente le coût horaire d'un employé ?
Sans module, toute l'histoire est recalculée : une affaire close l'an dernier change de marge. hr_employee_cost_history conserve l'historique des coûts avec leur date d'effet, ce qui fige la marge des exercices passés. Installé après coup, il part de sa date d'installation.
Peut-on écrire une description différente pour le client ?
Oui, avec hr_timesheet_name_customer, qui ajoute une description destinée au client distincte de l'interne. « Reprise du correctif bâclé la semaine dernière » décrit utilement le travail et n'a pas sa place sur une facture.
Des intervenants externes peuvent-ils saisir leur temps ?
hr_timesheet_portal permet à des utilisateurs du portail de saisir, modifier et supprimer leurs propres lignes depuis le site — sans licence utilisateur interne. C'est l'usage des sous-traitants et des free-lances, à encadrer comme tout accès portail.
Se faire accompagner
La marge d'une affaire de services dépend de trois paramètres que personne ne vérifie : l'arrondi appliqué, le coût horaire retenu, et ce qui a été exclu de la facturation. Les trois se règlent en une journée et changent le résultat affiché de plusieurs points.
Nous commençons donc par le coût horaire et son historique — c'est lui qui fausse rétroactivement toutes les analyses —, puis par l'arrondi, qui doit correspondre au contrat. Voir les prestations d'Atalios Consulting, notre méthode ou demander un rappel.
Pour aller plus loin
- Feuilles de temps : saisie, validation et types de temps
- Planifier, consommer, facturer : projets et matières
- Les services et la facturation récurrente avec Odoo
En résumé
La traduction du temps saisi en marge d'affaire : arrondi conforme au contrat, lignes exclues, forfait rattaché à sa facture d'avance, et coût horaire historisé pour que la marge des exercices clos cesse de bouger. Parlons de la marge de vos affaires.