Partie 3 · Projets, temps et connaissances
Plan de charge
Poser sur des semaines ce qui reste vraiment à faire, contre une capacité déclarée plutôt que devinée, et chiffrer ce qu'on ne sait pas placer au lieu de le cacher.
Un carnet de tâches dit combien d'heures sont inscrites. Il ne dit pas si elles tiennent, sur quelles semaines elles tombent, ni lesquelles sont du vrai travail. L'application Plan de charge comble exactement ces trois manques, et rien d'autre. Elle s'adresse à la personne qui porte plusieurs mandats en même temps et qui veut savoir, avec des chiffres plutôt qu'une impression, si elle en prend trop.
Ce module est publié mais absent de la démo Boréal : ce chapitre le décrit à partir de sa documentation et de ses écrans déclarés, sans capture (module publié, non illustré).
Vue d'ensemble#
Trois idées gouvernent tout le reste, et chacune répond à une façon de se tromper.
La capacité se déclare, elle ne se déduit pas. Les heures d'une feuille de temps ne sont pas du temps d'horloge. Sur une base réelle, plusieurs journées dépassent seize heures, parfois bien davantage : du travail assisté produit plusieurs heures dans la même heure. Diviser un carnet par « les heures que je saisis par semaine » rend donc une réponse fausse avec deux décimales. Le module mesure les candidats, les affiche côte à côte, et laisse une personne trancher.
Une charge dit d'où elle vient. Le champ des heures allouées d'Odoo a plusieurs sources : une estimation humaine, ou une quantité vendue convertie par son unité de mesure. Une ligne d'abonnement annuel vendue en « Année » appartient à la catégorie du temps de travail et devient des milliers d'heures que personne n'a estimées. Chaque tâche porte donc sa source, et une heure venue d'une unité de vente qui n'est pas l'heure est écartée du plan, visiblement, avec son motif.
Le non plaçable ne se cache pas. Une tâche sans date ne tombe sur aucune semaine. Un calendrier qui n'affiche que ce qu'il sait placer ment par omission. Le plan affiche donc toujours, à côté des semaines, le total des heures qu'il n'a pas su placer et le nombre de tâches concernées. C'est souvent ce chiffre-là, et non le calendrier, qui répond à la question posée.
L'application vit de deux autres, qu'elle se contente de lire. Les dates de dernière saisie viennent de Feuilles de temps, et la date de début d'une tâche, quand elle existe, de Échéancier. Elle ne modifie ni l'une ni l'autre.
Configuration#
Accès et droits#
L'application porte un seul groupe, Plan de charge : gestion. La capacité d'une personne est une donnée sensible : elle n'est pas offerte à l'ensemble des internes, et le menu n'apparaît que pour qui porte le groupe.
| Niveau | Ce qu'il ouvre |
|---|---|
| Sans le groupe | Rien. Le menu n'apparaît pas et les modèles sont refusés. |
| Plan de charge : gestion | Déclarer la capacité, bâtir des plans, lire les lignes, les semaines, les signaux et les relevés. |
Le groupe est volontairement étroit. Le module lit donc les lignes de temps et les unités de vente sous une élévation de droits, pour son propre compte, et chaque lecture est bornée à sa société dans le domaine plutôt que de s'en remettre à une règle d'enregistrement qu'une élévation contourne.
Paramètres système#
Deux réglages, tous deux dans les paramètres système.
| Paramètre | Défaut | Effet |
|---|---|---|
bf_charge.template_tag |
Gabarit |
Les étiquettes de projet qui marquent un patron. Plusieurs, séparées par des virgules. |
bf_charge.dormant_days |
90 |
Le nombre de jours sans heure saisie au delà duquel un projet est dit dormant. |
L'étiquette des gabarits#
Un projet gabarit est un patron à cloner, pas du travail qui attend. Ses heures n'entrent dans aucun plan. Marquez-le en lui posant l'étiquette Gabarit, dans le champ Étiquettes de sa fiche.
Le relevé hebdomadaire#
Le module fournit une action planifiée, Plan de charge : relevé hebdomadaire, qui prend un relevé et le garde. Elle est livrée inactive, volontairement : un relevé pris avant qu'une capacité soit déclarée archive des zéros qui auront plus tard l'air d'une mesure. Activez-la une fois le contrat rempli.
Déclarer la capacité#
Tout commence par un contrat de capacité. Sans lui, le plan pose les heures mais ne peut pas dire si elles tiennent, et trois des cinq signaux restent « non déclaré ».
Le contrat porte sur une personne, pas sur une équipe, et trois nombres suffisent.
| Champ | Ce qu'il déclare |
|---|---|
| Heures par semaine | Les heures réellement disponibles pour livrer. |
| Heures de rencontres par semaine | La charge de rencontres retranchée de la capacité. |
| Plafond de clients simultanés | Le nombre de clients distincts qu'on accepte de porter en même temps. 0 veut dire : aucun plafond déclaré, donc aucun signal. |
| Part client visée | La part des heures livrées qui doit aller à des mandats clients. |
| Critères d'arrêt | Ce qui doit arriver pour qu'on arrête d'en prendre. Numérique de préférence, et écrit avant d'en avoir besoin. |
La capacité nette est la différence entre les deux premiers : c'est elle que le plan emploie.
Les candidats mesurés#
Le formulaire affiche, à côté des champs à remplir, cinq nombres que le module a mesurés sur la base. Il n'en choisit aucun.
| Candidat | Ce qu'il vaut |
|---|---|
| Médiane hebdomadaire (12 mois) | Le milieu des semaines saisies sur un an. |
| Moyenne hebdomadaire (12 mois) | La moyenne des mêmes semaines, tirée vers le haut par les pointes. |
| Calendrier de travail déclaré | Ce que dit la fiche employé, souvent quarante heures. |
| Médiane 90 jours plafonnée au temps d'horloge | Les trois derniers mois, chaque journée ramenée à douze heures au plus. |
| Rencontres par semaine (médiane 90 jours) | La charge de rendez-vous des trois derniers mois. |
Le bouton Reprendre la médiane des rencontres reporte le dernier dans le champ correspondant.
Un contrat entre en vigueur par le bouton Mettre en vigueur, qui clôt automatiquement le précédent de la même personne. Un contrat sans heures par semaine est refusé : c'est tout son objet.
La charge d'une tâche#
Chaque tâche porte, dans son formulaire, ce que le plan retient d'elle.
| Champ | Ce qu'il dit |
|---|---|
| Charge retenue | Les heures que le plan compte. |
| Source de la charge | D'où elles viennent. |
| Motif de l'écart | Pourquoi elles ont été écartées, le cas échéant. |
| Charge corrigée | Une charge posée à la main, qui prime sur tout le reste. |
| Début retenu, Fin retenue | La fenêtre sur laquelle la charge se répartit. |
| Plaçable | Faux quand la tâche ne porte aucune date. |
Cinq sources, dans l'ordre de priorité.
| Source | Quand |
|---|---|
| Corrigée à la main | Une charge a été posée dans le champ prévu. Elle gagne toujours. |
| Estimée | Les heures allouées viennent d'une saisie humaine. |
| Quantité vendue | Elles viennent d'une ligne de vente dont l'unité est l'heure. |
| Quantité vendue, écartée | Elles viennent d'une ligne de vente dont l'unité est une autre unité de temps. La charge vaut alors zéro et le motif le dit. |
| Aucune | La tâche ne porte pas d'estimé. C'est un fait, pas un zéro, et il est compté à part. |
L'unité de vente qui écrit des milliers d'heures#
Le quatrième cas mérite son paragraphe, parce qu'il est invisible et coûteux. Un produit de service qui crée une tâche à la vente, vendu en unité Année, écrit dans les heures allouées la conversion de cette année en heures de travail, soit plusieurs milliers. Rien ne signale l'anomalie : le nombre est exact, c'est ce qu'il décrit qui ne l'est pas. Une durée vendue n'est pas un effort estimé.
Le plan écarte donc ces heures, les additionne à part, et son résumé dit combien. Si le chiffre vous surprend, c'est qu'un produit de votre catalogue mérite une autre unité de mesure.
Le placement, et ce qui ne se place pas#
Pour poser une heure sur une semaine, il faut une date. Le module en cherche deux, dans cet ordre.
- La date de début de la tâche, si l'application Échéancier est installée et que la date est remplie.
- Son échéance, à défaut.
Une tâche qui porte les deux voit sa charge répartie au prorata des jours de chaque semaine recouverte. Une tâche qui n'en porte qu'une tombe entièrement sur la semaine correspondante. Une tâche qui n'en porte aucune n'est pas plaçable : elle est comptée à part, en heures et en nombre.
Trois cas particuliers.
| Cas | Ce que le plan en fait |
|---|---|
| Échéance déjà passée | La charge est ramenée sur la première semaine de l'horizon et comptée comme du retard. |
| Début au delà de l'horizon | La charge est comptée à part, sans occuper de semaine. |
| Fenêtre débordant l'horizon | La charge visible est répartie sur les semaines couvertes. |
Les projets se classent seuls#
Le module range chaque projet dans une des trois natures, sans lire un seul message.
| Nature | Règle |
|---|---|
| Gabarit | Le projet porte l'étiquette des patrons. Ses heures n'entrent dans aucun plan. |
| Dormant | Le projet est archivé, ou aucune heure n'y a été saisie depuis la fenêtre configurée. |
| Vivant | Une heure y a été saisie récemment. |
C'est cette classification qui fait le gros du travail. Sur une base réelle, la grande majorité des heures budgétées ouvertes vivent dans une poignée de projets qui ne bougent plus, ou dans des gabarits. Les retirer du plan ne cache rien : leurs totaux restent affichés, à part, sur le plan lui-même.
Bâtir un plan#
Un plan de charge se crée avec une date de départ et un horizon en semaines, puis se calcule par le bouton Calculer le plan. Le calcul est rejouable autant de fois qu'on veut : il efface et refait ses semaines, ses lignes et ses signaux.
Le formulaire donne alors, en trois blocs, ce qu'il a trouvé.
| Bloc | Ce qu'il porte |
|---|---|
| Posé | Les heures posées sur l'horizon et le carnet en semaines de capacité. |
| Ce que le plan n'a pas su poser | Les heures non plaçables, les tâches concernées, les tâches sans charge, les heures au delà de l'horizon et celles en retard. |
| Hors plan, par construction | Les heures de gabarits, celles des projets dormants et celles écartées pour unité de vente. |
Un résumé en prose reprend l'essentiel, y compris la part que le non plaçable représente dans le carnet. C'est souvent la phrase la plus utile de l'écran.
L'onglet Semaines donne une ligne par semaine, avec ses heures, la capacité déclarée, le pourcentage de charge et un verdict coloré : vert sous quatre-vingts pour cent, jaune au delà, rouge quand la semaine dépasse la capacité.
Les cinq signaux#
L'onglet Signaux répond à la question « est-ce que j'en prends trop ». Chaque signal affiche sa mesure, pas seulement sa couleur, et reste « non déclaré » tant que son repère n'est pas dans le contrat.
| Signal | Mesure | Repère |
|---|---|---|
| Clients simultanés | Clients distincts touchés sur trente jours | Le plafond déclaré |
| Part client des heures livrées | Heures client contre heures internes sur trente jours | La part visée |
| Banques d'heures sous zéro | Combien de banques sont en négatif, et lesquelles | Aucune |
| Arrivées contre clôtures | Tâches ouvertes contre tâches fermées sur trente jours | Le carnet ne doit pas grossir deux mois de suite |
| Carnet en semaines de capacité | Le carnet divisé par la capacité nette déclarée | Huit semaines, puis seize |
Le troisième reste muet si l'application Banque d'heures n'est pas installée : il le dit plutôt que d'afficher un vert trompeur.
Découper la charge#
Chaque calcul écrit une table de faits : une ligne par tâche et par semaine où sa charge tombe, portant son projet, son client, sa source, ses dates et son sort. Une tâche à cheval sur deux semaines donne deux lignes dont les parts somment à un.
Le bouton Lignes, en haut du plan, ouvre cette table directement sur le graphique. Cinq vues natives s'y appliquent.
| Vue | Ce qu'elle montre |
|---|---|
| Graphique | Des barres empilées par semaine, un empilement par sort de la charge. Le posé et le non posé se lisent côte à côte. |
| Tableau croisé | Les projets en lignes, les semaines en colonnes. |
| Liste | Le détail, tâche par tâche, avec le total des heures. |
| Calendrier | Les semaines du plan sur un mois, avec leurs heures et leur capacité. |
| Tendance | Les relevés successifs, pour voir si ça empire. |
Les filtres livrés d'office séparent les heures posées, les non plaçables, ce qui est hors plan et ce qui n'a pas de charge, ainsi que le travail client du travail interne. Les regroupements couvrent la semaine, le sort de la charge, le projet, le client, la source et la nature du projet.
Le relevé, et la tendance#
Un relevé de charge est le même comptage, refait et gardé. Un plan répond « où on en est »; il ne répond pas « est-ce que ça empire ». Le relevé garde les quelques nombres qui portent la réponse : tâches ouvertes, datées et plaçables, heures vivantes, dormantes, de gabarits, plaçables et non plaçables, clients touchés, heures client et internes, tâches ouvertes et fermées sur trente jours.
Il ne recopie jamais le détail : celui-ci se relit toujours dans les tâches. Le graphique de tendance et le tableau croisé des relevés se lisent alors sur plusieurs mois.
Ce que le module ne fait pas#
- Il ne calcule pas une capacité. Il en réclame une.
- Il ne réclame pas de dater vos tâches. Il chiffre ce qui ne l'est pas.
- Il n'estime rien à votre place : une tâche sans estimé reste sans estimé, et c'est compté.
- Il n'affecte personne à rien. Ce n'est pas un outil de réservation de ressources.
Dépannage#
Le menu n'apparaît pas. Le groupe Plan de charge : gestion n'est pas accordé. Il ne l'est à personne à l'installation.
Tous les signaux disent « non déclaré ». Aucun contrat de capacité n'est en vigueur, ou le contrat en vigueur ne porte ni plafond de clients ni part client visée.
Le plan pose beaucoup moins d'heures que le carnet n'en annonce. C'est le comportement attendu, et les trois blocs du formulaire disent où sont passées les autres : gabarits, projets dormants, unités de vente écartées, et surtout les heures non plaçables faute de date.
Une semaine affiche un verdict « non déclaré ». La capacité déclarée vaut zéro : sans dénominateur, aucun pourcentage n'a de sens.
Un projet apparaît vivant alors qu'il ne l'est plus. Une heure y a été saisie dans la fenêtre configurée. Réduisez bf_charge.dormant_days, ou archivez le projet : un projet archivé est dormant quoi qu'il arrive.