Documentation9 min de lecture

Facturer le temps : arrondis, exclusions, budgets et rapports

Dix-huit modules OCA du dépôt `timesheet` relient le temps saisi à ce qu'il coûte et à ce qu'il rapporte dans Odoo 18 Community : `sale_timesheet_rounded` **arrondit automatiquement les durées facturées** selon un paramétrage, et `hr_employee_cost_history` conserve l'**historique des changements de coût horaire** d'un employé, avec leur date d'effet. Les seize autres, de l'exclusion d'une ligne de facturation au rapport de temps configurable.

Travail de facturation et de lettrage comptable sur un poste de travail

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

FamilleModulesNombre
Facturation du tempssale_timesheet_rounded, sale_timesheet_line_exclude, sale_timesheet_invoice_link, sale_timesheet_timeline, project_task_analytic_propagation5
Coûts et budgetshr_employee_cost_history, sale_timesheet_budget, hr_timesheet_employee_analytic_tag, crm_timesheet4
Saisiehr_timesheet_calendar, hr_timesheet_day_week, hr_timesheet_date_order_desc, hr_timesheet_editable_top, hr_timesheet_name_customer, hr_timesheet_portal6
Analyse et congéshr_timesheet_report, project_timesheet_holidays_dynamic_description, project_timesheet_holidays_editable3

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_rounded arrondit automatiquement les durées utilisées pour la facturation, selon un paramétrage défini au niveau voulu.
  • sale_timesheet_line_exclude ajoute une case non facturable sur une ligne précise, pour l'exclure manuellement — complément du marquage par type de temps.
  • sale_timesheet_invoice_link permet 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_timeline permet de planifier dates et affectations directement sur les lignes d'un devis de service.
  • project_task_analytic_propagation maintient 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_history conserve 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.

ModuleCe qu'il apporte
sale_timesheet_budgetUn onglet Budgets sur le projet : des lignes budgétaires libres confrontées au réalisé
hr_timesheet_employee_analytic_tagDes étiquettes analytiques définies sur l'employé, appliquées automatiquement à ses lignes
crm_timesheetLa 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_calendar ajoute une vue calendrier : on saisit son temps sur un planning plutôt que dans une liste.
  • hr_timesheet_date_order_desc affiche les saisies les plus récentes en premier — l'ordre dans lequel on travaille.
  • hr_timesheet_editable_top fait apparaître la nouvelle ligne en haut de la liste.
  • hr_timesheet_day_week ajoute le jour de la semaine comme critère de recherche et de regroupement.
  • hr_timesheet_name_customer ajoute une description destinée au client, distincte de la description interne.
  • hr_timesheet_portal permet à 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_description utilise la description de la demande de congé comme description de la ligne de temps générée.
  • project_timesheet_holidays_editable rend 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

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.

Documentation OCAServicesFacturation

Partager

Fiches connexes

Équipe au travail sur des ordinateurs portables autour d'une table
Le module OCA `account_invoice_en16931` (dépôt `fr-einvoicing`, version 18.0.1.0.0, licence AGPL-3) est le socle qui fabrique le fichier de facture électronique conforme à la norme européenne **EN 16931** : Factur-X (PDF/A-3 avec XML CII embarqué), XML UBL, XML CII ou PDF accompagné d'un UBL — et il ajoute des **contrôles bloquants à la validation** d'une facture client. Les quatre modules qui s'y greffent pour la France, et ce que le socle ne fait pas.
Lire la suite
Documentation OCA, Facturation électronique
Réunion d'approbation autour d'un document de travail
Relevé sur une instance Odoo 18 Community, le module OCA `base_tier_validation` (dépôt `server-ux`, version 18.0.3.5.1, licence AGPL-3) ajoute 1 modèle, 101 champs et 3 menus, mais ne s'active sur aucun document métier par lui-même : il lui faut un module d'implémentation. C'est le point qui surprend le plus — voici ce qu'il fait réellement, et comment le mettre en service.
Lire la suite
Documentation OCA, Odoo