FrigoDiag — Notes de version
3.13.0 — Le client répond en ligne, et sa réponse fait preuve
Nouvelle fonctionnalité
- La page d'un devis, ouverte par son lien, sert à l'accepter ou à le refuser. Le client y lit le devis, ses conditions et vos conditions générales. Pour l'accepter, il indique son nom, signe au doigt ou à la souris — ou, s'il ne peut pas dessiner, reprend son nom comme signature —, coche « Bon pour accord » et clique sur « Accepter et signer ». Pour le refuser, il clique sur « Refuser ce devis » puis « Confirmer le refus », avec un motif s'il le souhaite : ce motif ne s'affiche que dans la chronologie du devis. Il peut aussi en télécharger le PDF
- La page dit au client à quoi il s'engage et ce qui est enregistré. Juste avant la signature, elle rappelle le numéro du devis, son montant et l'acompte. En bas, une notice lui explique quelles données sont gardées, pourquoi, combien de temps, et comment exercer ses droits auprès de vous
- Chaque accord est gardé tel qu'il a été donné. Le devis accepté est figé avec ses lignes, ses remises, ses mentions de TVA, ses conditions et vos coordonnées du moment ; sa preuve garde le nom du signataire, sa signature, la date et l'heure, l'adresse IP et le navigateur de l'appareil. Une empreinte numérique permet de vérifier plus tard que cette copie n'a pas changé. La fiche du devis montre la signature, le nom, la date et l'heure, l'adresse IP et le numéro de la preuve
- Le client ne voit plus sa signature dessinée. Sa page et son PDF portent « Accepté électroniquement par … le … » : un lien ou un PDF transféré ne livre pas une signature réutilisable. Elle reste sur la fiche du devis, sur votre PDF et dans l'export des preuves
- Un accord donné depuis une adresse IP de votre société est signalé. Si cette adresse a servi à un compte de votre société ces trente derniers jours, la chronologie du devis l'indique. C'est un indice à vérifier, pas une preuve : une adresse se partage
- Une version imprimable de l'accord se remet au client. Après chaque accord en ligne, la fiche du devis affiche « Confirmation non remise au client » et propose « Version imprimable » : le devis tel qu'il a été accepté, ses conditions, le nom du signataire, la date et l'heure, le numéro de la preuve et son empreinte. Enregistrez-la en PDF et joignez-la à un e-mail, ou imprimez-la : c'est l'exemplaire que le client garde
- « Faire signer sur place ». Depuis la fiche d'un devis émis pour un client professionnel, ce bouton ouvre la page du client sur l'appareil où vous êtes connecté, tablette ou téléphone, pour trente minutes : le client lit le devis et le signe devant vous, ou le refuse. L'accord est marqué « signé sur place »
- L'aperçu montre la page telle que le client la verra, sans pouvoir accepter ni refuser le devis à sa place. Une signature posée depuis l'aperçu partait jusqu'ici comme celle du client
- Un devis accepté se remet en attente avec un motif. « Repasser en émis » demande de le choisir dans une liste : accord enregistré par erreur, modification demandée par le client, client qui revient sur son accord, autre raison. La chronologie du devis garde l'accord retiré, son signataire et ce motif. Ce n'est plus possible dès qu'une facture émise découle du devis
- Les réponses de vos clients s'affichent sur l'accueil. Le bloc « Réponses de vos clients » liste les devis acceptés ou refusés en ligne ou sur place ces sept derniers jours, avec le signataire, la date, le montant et un bouton « Voir » vers chacun
- Le lien d'un document se remplace. Un lien transmis par erreur se remplace depuis la fiche du devis, de la facture ou de l'avoir, avec « Régénérer le lien » : l'ancien cesse aussitôt de fonctionner, et « Copier le lien client » donne le nouveau, à transmettre vous-même
- Un devis non accepté n'est plus consultable six mois après la fin de sa validité. La page affiche alors « Ce lien a expiré ». D'ici là, la fiche du devis indique jusqu'à quand le lien reste ouvert. Un devis accepté, une facture et un avoir gardent leur lien
- Un refus de plus d'un an perd son motif, son adresse IP et son navigateur. La décision et sa date restent
- Les devis signés et leurs preuves s'exportent. Dans Paramètres, « Imports et exports », la carte « Devis signés et leurs preuves » permet à un administrateur de télécharger un fichier ZIP : chaque devis accepté ou rétracté tel qu'il a été accepté, avec sa signature et sa preuve, et le registre de toutes les réponses de vos clients. L'export reste ouvert quand l'abonnement est échu
- Un abonnement échu laisse la page du client en lecture pendant douze mois. Le client consulte toujours le document et en télécharge le PDF, mais ne peut plus accepter ni refuser un devis en ligne ; un particulier garde « Renoncer au contrat ici » jusqu'à la fin de son délai de rétractation. Au-delà, ou si la société est désactivée, la page ne montre plus que le nom et les coordonnées de votre société
Clients particuliers
- Le devis d'un particulier précise la nature du contrat et son délai d'exécution. Dans l'éditeur, la carte « Contrat avec un particulier » demande la nature (dépannage, réparation ou entretien ; fourniture de matériel, avec ou sans pose ; autre prestation de service), le délai d'exécution, si l'accord est recueilli pendant ou juste après votre visite et, pour un dépannage, si le client demande une intervention urgente. Ces réponses, figées à l'émission, commandent l'information due au client et son délai de rétractation. Une entreprise de cinq salariés au plus, pour un devis hors de son activité principale, est protégée de la même façon quand l'accord est recueilli chez elle
- Votre médiateur de la consommation et les moyens de paiement que vous acceptez se renseignent une fois, dans la configuration de la facturation, carte « Clients particuliers ». Ils figurent dans l'information remise au client et sont figés sur chaque devis à son émission
- Le PDF d'un devis de particulier porte l'information due avant l'engagement : l'information précontractuelle, les cases d'exécution anticipée, la question sur les pièces remplacées et le modèle de formulaire de rétractation
- L'accord en ligne et la signature sur place restent fermés pour les particuliers, le temps de faire relire les textes juridiques par un juriste. Il en va de même pour une petite entreprise dont l'accord est recueilli chez elle. Leur page les invite à vous contacter et leur permet toujours de refuser le devis ; d'ici là, le devis se signe sur papier, avec son PDF
- Aucun paiement avant le huitième jour d'un contrat conclu chez un particulier. Le devis l'annonce et la facture qui en découle le rappelle. Un règlement daté d'avant ce jour est refusé, sauf à cocher « Reçu avant le … » pour l'inscrire tel quel, y compris quand vous le saisissez après coup ; remboursez-le si le client se rétracte
- Un devis de particulier marqué accepté se suit sur sa fiche. Elle donne la date limite de rétractation et, pour un accord recueilli chez le client, la date avant laquelle aucun paiement ne peut être reçu. Notez-y le jour où l'information et le formulaire de rétractation ont été remis : sans cette date, le délai est prolongé de douze mois. Pour une fourniture de matériel, notez aussi le jour où le client l'a reçue : son délai court à partir de là
- Une rétractation reçue par courrier, par e-mail ou en main propre s'enregistre sur la fiche, avec « Enregistrer la rétractation », sa date d'envoi et sa date de réception. La date d'envoi dit si elle est dans le délai : une lettre postée le dernier jour reste valable. La fiche donne ensuite la date limite du remboursement, quatorze jours après la réception, et ce qui reste dû au client
- Un particulier qui a accepté un devis en ligne peut se rétracter depuis sa page. Pendant tout son délai, « Renoncer au contrat ici » mène à une déclaration préremplie ; « Confirmer la rétractation » l'enregistre et le devis passe « Rétracté ». Tant que les e-mails ne partent pas, aucun accusé de réception ne lui est envoyé : la fiche du devis vous demande de lui en adresser un vous-même, sans attendre, qui reprend sa déclaration, sa date et son heure
- Une rétractation s'affiche en tête de l'accueil pendant quinze jours, dans « Réponses de vos clients », avec la date limite du remboursement. La fiche du devis rétracté dit ce qui reste dû au client et rappelle qu'une facture déjà émise s'annule par un avoir
- Les accords en ligne de particuliers donnés avant cette version sont signalés « À régulariser », dans la liste des devis et sur leur fiche. Faute d'information sur la rétractation, leur délai court douze mois de plus, et le client ne vous devrait rien pour des travaux faits entre-temps : remettez-lui l'information et le formulaire avant d'intervenir, le PDF du devis les contient. Sur la fiche, indiquez d'abord la nature du contrat, puis la date de la remise, en main propre ou par courrier : le délai prend fin au plus tôt quatorze jours après, à la date indiquée sur la fiche
Sécurité
- Changer l'IBAN, le BIC ou le titulaire du compte demande votre mot de passe. Chaque changement est enregistré, et un e-mail d'alerte part à tous les administrateurs et à l'adresse de la société ; la configuration affiche la date et l'auteur du dernier changement d'IBAN. Cette alerte ne contient volontairement aucun lien : pour vérifier, ouvrez FrigoDiag comme d'habitude, jamais par un lien reçu par e-mail
- Un IBAN étranger demande une confirmation. Un compte tenu hors de France, signe habituel d'une fraude au faux RIB, ne s'enregistre qu'en cochant la case qui confirme l'avoir vérifié auprès de votre banque. Un IBAN dont la clé est fausse est refusé, et le titulaire devient obligatoire dès qu'un IBAN est saisi
- Le titulaire du compte s'imprime avec l'IBAN, sous l'intitulé « Bénéficiaire ». Il figure dans le bloc « Règlement » de la page de la facture et sur son PDF, avec une consigne pour votre client : saisir ce bénéficiaire exactement ainsi et, si sa banque indique que le nom ne correspond pas au compte, n'y correspond qu'en partie ou ne peut pas être vérifié, ne pas valider le virement et vous appeler au numéro qu'il connaît déjà. Sous l'IBAN, la page rappelle aussi de quand datent ces coordonnées. Saisissez ce titulaire dans la configuration de la facturation, avec votre mot de passe : il ne figure que sur les factures émises ensuite
- Une facture ou un avoir garde les coordonnées de son émission. Identité de votre société, logo, IBAN, BIC et titulaire sont figés au moment où le document est émis : un changement ultérieur ne modifie ni le document, ni son PDF, ni sa page, ni sa facture électronique. Cela vaut pour les documents émis à partir de cette version. Si votre IBAN a changé depuis l'émission d'une facture qui reste à payer, sa page avertit le client en rouge de ne pas payer avant de vous avoir appelé
- Une facture émise peu après un changement d'IBAN prévient le client. Si votre IBAN en a remplacé un autre dans les 90 jours qui précèdent l'émission, la page et le PDF de la facture annoncent la date du changement et invitent le client qui vous a déjà payé sur un autre compte à vous appeler avant de payer
- Un IBAN autre que celui de votre configuration ne passe plus par un texte libre. Écrit dans l'objet, les notes ou les lignes d'un devis, d'une facture ou d'un avoir, il bloque l'émission du document ; écrit dans les pénalités de retard, l'escompte, les mentions de pied de page, la mention du devis ou les conditions générales, il n'est pas enregistré et le texte garde sa version précédente
- Un changement du téléphone, de l'e-mail, du site ou du logo de la société est signalé. Un e-mail sans lien part aux administrateurs et à l'adresse de la société, l'ancienne comme la nouvelle
- Créer un administrateur, faire passer un compte administrateur, changer l'e-mail de connexion d'un administrateur ou réinitialiser son mot de passe demande votre mot de passe, y compris quand un administrateur change son propre e-mail depuis « Mon profil ». Un e-mail sans lien prévient alors les administrateurs et l'adresse de la société, ainsi que l'ancienne adresse du compte quand c'est elle qui change : c'est par un tel compte qu'on peut ensuite changer l'IBAN
Facturation électronique
- La date à partir de laquelle vous devez émettre vos factures par une plateforme agréée se règle dans la configuration de la facturation, rubrique « Facturation électronique ». Laissée vide, c'est le 1er septembre 2027, la date des PME et des micro-entreprises ; une ETI ou une grande entreprise indique le 1er septembre 2026. Les factures et avoirs émis à partir de cette date à un client professionnel assujetti à la TVA et établi en France lui parviennent par votre plateforme : leur page et le PDF de votre client portent alors « Copie ». La case « Client non assujetti à la TVA » d'un document (association, syndicat de copropriétaires…) l'en exclut
- Le fichier « XML (facture électronique) » passe au profil EN 16931, l'un des profils que toute plateforme agréée est tenue d'accepter pour un fichier XML (arrêté du 27 juillet 2026). Il suit la norme européenne EN 16931 et les règles françaises de la réforme : SIREN de votre société et de votre client, adresses électroniques de facturation, cadre de facturation, mentions des pénalités de retard, de l'indemnité de 40 € et de l'escompte. Il a été contrôlé avec les outils de validation de référence : le schéma Factur-X, les règles européennes du CEN et les règles françaises publiées par le FNFE-MPE (norme AFNOR XP Z12-012)
- Les fichiers XML téléchargés avant cette version sont à télécharger de nouveau avant tout dépôt. Ils étaient au profil BASIC, que les plateformes agréées ne sont pas tenues d'accepter. Une facture déjà acceptée par votre plateforme ne se redépose pas : elle serait rejetée comme doublon. Pour certains documents anciens, la page explique pourquoi le fichier ne peut plus être produit
- Le fichier XML est réservé aux factures et avoirs destinés à un client professionnel assujetti à la TVA et établi en France. Pour un particulier, un client étranger, un client public ou un client non assujetti, la page explique pourquoi le fichier ne sert pas et ce qui se fait à la place : remise habituelle de la facture, ou dépôt sur Chorus Pro pour un client public. Les montants et la TVA d'une facture remise hors plateforme sont à transmettre par vous à votre plateforme agréée (e-reporting) : FrigoDiag ne produit pas ce fichier, le journal des ventes peut servir de base
- Le pays du client se lit aussi sous forme de code. « FR », « Fr. » ou « France métropolitaine » désignent la France, « UK » le Royaume-Uni : un client dont le pays était saisi « FR » passait pour un client étranger, et un pays de livraison « UK » faisait refuser le fichier. Pour un client établi outre-mer, la page dit que le fichier n'est pas encore produit
- Un avoir cite la facture qu'il corrige, et une facture de solde les seules factures d'acompte qu'elle déduit. La date de la facture d'origine d'un avoir était mal codée : une plateforme aurait refusé le fichier. Un acompte émis après la facture de solde n'y est plus cité, et l'avoir d'une facture d'acompte est déclaré comme tel
- S'il manque une information, la page le dit avant de produire le fichier, et dit comment la compléter : SIRET ou numéro de TVA de votre société, avec la page où chacun se corrige, SIREN ou commune du client, catégorie de l'opération pour un document émis avant qu'elle soit demandée, taux de TVA hors de la liste française… Pour un document émis, qui ne se modifie plus, elle donne en une fois la marche à suivre pour le remplacer
- Un avoir qui annule une ligne offerte (remise de 100 %) ne fait plus refuser son fichier, et une ligne sans désignation prend la première ligne de sa description comme nom
- Une date d'intervention mal saisie ne fait plus refuser le fichier, et elle est figée à l'émission. Une année tapée sur deux chiffres (« 14/10/26 ») est écartée au lieu de partir dans le fichier. Pour une facture émise à partir de cette version, corriger ensuite le bon d'intervention ne change plus son fichier
- Les notes et les descriptions arrivent en texte lisible dans le fichier : les apostrophes, les esperluettes et les retours à la ligne ne s'y affichent plus sous forme de codes, et un caractère invisible collé dans une désignation ne rend plus le fichier illisible
Facturation
- Les totaux d'une facture sont recalculés à son émission, avec le régime de TVA figé à ce moment. Une entrée en franchise entre la saisie et l'émission laissait, sous la mention « TVA non applicable », un total qui comprenait la TVA. En franchise, l'éditeur garde aussi le taux de chaque ligne sans l'afficher : une ligne enregistrée à partir de cette version porte sa TVA si la facture est émise après une sortie de la franchise
- Un avoir se calcule avec le régime de TVA de la facture qu'il annule. Émis après une sortie de la franchise, l'avoir d'une facture sans TVA créditait une TVA jamais facturée ; émis après une entrée en franchise, il n'annulait pas celle qui l'avait été
- Une facture de solde ne déduit plus un acompte annulé par un avoir. Elle le déduisait quand même, et le client ne payait plus qu'une partie du travail. Un acompte annulé en partie est déduit pour ce qu'il en reste
- Une facture d'acompte reprend le taux de TVA des lignes du devis. Un devis calculé en franchise, puis accepté après une sortie de la franchise, donnait un acompte sans TVA
- Le numéro de TVA de votre société et celui du client d'un devis ou d'une facture sont contrôlés à la saisie, dans la configuration de la facturation et dans l'éditeur. Un numéro français s'écrit FR, deux caractères de clé et les neuf chiffres du SIREN : « EN COURS » ou « EXONERE » étaient acceptés, et la facture électronique aurait été refusée. Sur un document déjà émis, le numéro mal formé d'un client est omis du fichier (sauf en autoliquidation, où il est exigé), et celui de votre société, en franchise en base, remplacé par votre SIREN
Catalogue d'articles
- Le nombre de lignes par page se choisit. La liste des articles en montrait quinze, sans recours : un catalogue de six cents références se feuilletait par quarante pages. Un menu sous la liste propose 15, 30, 50, 100 ou toutes, et votre choix est retenu d'une visite à l'autre. Il vaut aussi pendant une recherche : le nombre de pages suit ce que le filtre laisse voir
- Les panneaux Catégories, Marques et Fournisseurs s'ouvrent en cliquant n'importe où sur leur titre. Il fallait viser le petit triangle de droite — treize pixels, et au pouce encore moins. La barre entière répond maintenant, le triangle compris, et il garde son rôle au clavier
- Un article désactivé se repère à sa ligne, teintée de rouge pâle au lieu du gris de tout à l'heure, dans les deux thèmes. La colonne « Actif » continue de le dire en toutes lettres : la couleur aide, elle ne décide pas seule
Corrections
- Un devis remis en attente revenait « Expiré ». « Repasser en émis » rend la main sur un devis déjà accepté ou refusé : l'accord est archivé, la signature retirée, et le devis repart en attente de réponse. Son délai de validité, lui, ne bougeait pas — et comme un devis qu'on rouvre a le plus souvent dépassé le sien, il revenait marqué « Expiré » plutôt qu'« Émis » : plus de bouton « Envoyer par e-mail », plus de signature sur place, et la page du client refusait l'accord. Le geste ne servait donc plus à rien. La validité repart maintenant pour le délai réglé dans la configuration, comme à l'émission, et seulement si elle était dépassée : l'offre d'un devis encore dans les temps n'est pas rallongée dans son dos. Le nouveau délai s'affiche sous « Valable jusqu'au », et un toast confirme la remise en attente — en disant si votre client en a été prévenu par e-mail. Un double-clic sur le bouton, lui, répond toujours que l'action n'a pas été rejouée, et c'est volontaire
- La liste des articles se fermait au premier tour de molette. Dans les lignes d'un devis ou d'une facture, la saisie d'une désignation propose jusqu'à huit articles du catalogue. Cette liste est haute de 260 pixels au plus et défile dès qu'il y a plus de cinq propositions — mais tout défilement la fermait, y compris le sien : la molette, qui servait justement à lire la suite, la faisait disparaître sous le curseur. Le défilement de la liste ne la concerne plus, et les autres la replacent sous son champ au lieu de la faire disparaître — le cadre à défilement du tableau des lignes déplaçait le champ sans déplacer la liste, d'où cette fermeture. Elle ne se ferme désormais que quand son champ quitte l'écran, ou qu'il perd le focus
- Les onglets du graphique du tableau de bord avaient perdu leur apparence. Bons, Relevés, CERFA, Devis, Factures devaient être de petites pastilles arrondies ; ils sortaient en gros boutons gris à coins droits, chacun avec sa marge, et débordaient sur deux lignes au téléphone. Le choix de la période — « 30 j » — était devenu une pastille grise de seize pixels au lieu d'un mot souligné, et le total à côté ne s'alignait plus avec lui. En cause : la règle commune qui habille les boutons d'une carte, plus spécifique que la leur, qui les emportait tous les trois. Ils ont retrouvé leur dessin, dans les deux thèmes, et les cinq onglets tiennent de nouveau sur une seule ligne sur grand écran
- Une description sur plusieurs lignes perdait sa première coupure à l'enregistrement. Dans le catalogue d'articles, les lignes d'un devis, les notes d'un document et les notes préenregistrées, la touche Entrée fait écrire au navigateur un bloc par ligne nouvelle. Le nettoyage qui précède l'enregistrement ajoutait le saut de ligne après chaque bloc, alors qu'un bloc en commence une : « Ligne A / Ligne B / Ligne C » revenait en « Ligne ALigne B », puis « Ligne C ». La première ligne avalait la deuxième, les suivantes tenaient. Le saut se pose désormais avant le bloc, et seulement s'il y a de quoi séparer — une ligne vide voulue reste une ligne vide. Les descriptions déjà enregistrées de travers ne se réparent pas toutes seules : rouvrez l'article et replacez la coupure
Amélioration
- La carte « Client » de l'éditeur s'ouvre repliée. Elle porte douze champs — nom, adresse, code postal, commune, pays, téléphone, courriel, SIRET, numéro de TVA, SIREN — et un document neuf n'accueille plus douze champs vides. Choisir un client existant les remplit sans la déplier : les relire n'apprend rien, et son nom se lit juste au-dessus, dans la liste. Un chevron à droite du titre l'ouvre d'un clic, « Ajouter un client » l'ouvre aussi, et elle se replie de nouveau à chaque changement de client. Les champs restent modifiables, et ils partent à l'enregistrement, repliés ou non. Elle s'ouvre d'elle-même dans les deux cas où la replier cacherait ce qu'il faut voir : des coordonnées saisies à la main sans fiche client — un brouillon repris, une facture venue d'un bon, que rien d'autre à l'écran ne nomme — et un enregistrement qui revient en erreur sur l'un de ces champs, ou un champ refusé par le navigateur
- Un client absent de la liste se crée depuis l'éditeur, sans le quitter. « + Ajouter un client » s'affiche à côté de « Client existant », comme « + Ajouter un équipement » sur la fiche d'un bon. Le clic ne vous emmène nulle part : il remet la saisie libre, vide les coordonnées et coche « Enregistrer comme nouveau client » — la fiche naîtra à l'enregistrement du document, qui partira déjà rattaché à elle. Aller la créer ailleurs aurait fait perdre le devis en cours de saisie. La case est celle du bon d'intervention, et son droit aussi : sans « Créer des clients », ni le lien ni la case n'apparaissent, et un envoi direct ne crée rien. La fiche est rangée dans vos dossiers, faute de quoi vous ne verriez pas le client que vous venez de créer
- L'écran dit enfin qu'il travaille. Entre le clic sur « Enregistrer » et la page qui revient avec sa confirmation, le serveur travaille — et rien ne bougeait : on recliquait, on croyait le bouton mort. Le bouton envoyé porte maintenant une roue qui tourne, et un filet avance en haut de la page, visible même quand le bouton est sorti de l'écran. Le second clic est refusé pendant ce temps, et la touche Entrée aussi. Le bouton n'est pas pour autant désactivé : un bouton désactivé ne part pas avec le formulaire, et plusieurs pages lisent justement le nom du bouton cliqué — « Terminer » sur un bon, le motif d'un refus. Rien ne s'affiche quand il ne se passe rien : un champ obligatoire vide, une confirmation à laquelle on répond non, un envoi qui s'ouvre dans un autre onglet. Les écrans de connexion, d'inscription et de vérification d'appareil l'ont aussi : ils ont leur propre habillage, et le filet y est foncé plutôt que clair, puisqu'il avance sur le fond pâle de la page et non sur l'en-tête sombre de l'application
- On reste connecté trente jours sur un poste approuvé. L'application installée sur un téléphone est déchargée par le système dès qu'il manque de mémoire : la rouvrir retombait sur l'écran de connexion, plusieurs fois par jour. Trois délais s'y ajoutaient, et c'est le plus court qui décidait — une heure d'inactivité côté projet, un cookie de session qui mourait à la fermeture du navigateur, et surtout le ménage de PHP, réglé par défaut à vingt-quatre minutes sur un dossier de sessions partagé avec les autres sites de l'hébergeur. Les trois sont désormais alignés sur trente jours, et le dossier des sessions est devenu le nôtre, hors d'atteinte du ménage des voisins. La session se rouvre toute seule grâce à un jeton déposé sur le poste — le même que celui qui identifie déjà votre appareil approuvé. Rien n'est affaibli : « Déconnexion » efface ce jeton et la session, un administrateur qui révoque un appareil coupe l'accès à l'instant, un compte désactivé ne rouvre rien, et le super-administrateur, lui, garde son délai d'une heure. Le jeton ne quitte jamais le navigateur en clair ni ne s'ouvre au JavaScript
- Sur téléphone, la liste des clients se parcourt comme un répertoire. Elle ne se feuillette plus page par page : elle défile dans son propre cadre, comme le menu déroulant qui propose les articles du catalogue, et s'allonge toute seule à mesure qu'on descend, par tranches de vingt-cinq. Le cadre retient le défilement : arrivé en bas de la liste, le doigt n'emporte pas la page avec lui. Une lettre — A, B, C... — s'affiche au premier client de chaque initiale et reste collée en haut de l'écran tant qu'on est dedans. Les clients y sont rangés par nom, alors que le serveur les envoie par groupe : le classement se refait à l'ouverture. Les chiffres et les symboles se retrouvent sous « # », en tête, comme sur un téléphone. La barre du haut tient enfin sur une ligne : « Ajouter un client » s'y écrivait sur deux lignes et poussait la recherche hors de l'écran, parce que le bouton prenait 54 % de la largeur quoi qu'il arrive. Il prend maintenant la place de son texte, et la recherche occupe tout le reste. L'arbre par dossier passe sous la liste à cette largeur : il redisait les mêmes clients sous leurs groupes, et il fallait le franchir à chaque visite pour atteindre la liste. Il reste disponible, simplement plus bas. Sur grand écran, rien ne change : l'arbre, le tableau, ses colonnes, son tri et sa pagination sont tels qu'avant
- Chaque ligne de la liste s'est allégée de deux cent cinquante-neuf octets. Les trois filtres retirés s'appuyaient sur des données recopiées dans chaque ligne — adresse, contact, ville, noms de groupe — qui ne servaient qu'à eux. Une ligne pèse maintenant 1 048 octets au lieu de 1 307 : sur un parc de mille clients, c'est un quart de mégaoctet de moins à charger à chaque ouverture de la page
- Sur téléphone, la liste des clients tient enfin dans l'écran. Cinq colonnes sur un écran de six centimètres obligeaient à la faire glisser latéralement pour lire une adresse. Chaque client n'y montre plus que son nom, sur une seule ligne, et son adresse avec le code postal et la commune — douze clients à l'écran au lieu de quatre. Un appui n'importe où sur la ligne l'ouvre et découvre le contact, le groupe et le bouton « Voir » ; une seule reste ouverte à la fois, comme dans l'arbre au-dessus. Le tri par colonne, lui, n'existe plus à cette largeur : les en-têtes disparaissent avec les colonnes. Au-dessus de 700 pixels, rien ne change. La ligne s'annonce comme un bouton et s'ouvre aussi au clavier, par Entrée ou Espace — mais seulement sur téléphone, car au-dessus elle ne s'ouvre pas
- Le code postal et la commune s'affichent à côté de l'adresse, dans la liste des clients, sur téléphone comme sur grand écran : une voie seule ne situe personne quand deux clients portent le même nom de rue. Ils s'écrivent d'un bloc, « 69004 LYON », comme l'arbre au-dessus le fait déjà. La recherche le trouvait déjà, et le tri de la colonne reste juste
- La liste de tous les clients s'ouvre d'emblée. C'est la liste de la page, pas une annexe à dérouler : elle était repliée derrière un bandeau qu'il fallait cliquer à chaque visite. Son bandeau devient un en-tête de liste, posé à plat sur la carte, et reste cliquable pour replier
- La recherche de la liste des clients propose les noms, et remplace les trois filtres. On écrit les premières lettres, les propositions se réduisent à mesure, la souris les survole et le clavier y descend — flèches, Entrée pour retenir, Échap pour refermer. C'est le composant qui propose déjà les articles du catalogue quand on saisit la désignation d'une ligne de devis. Les trois filtres de la liste ont disparu avec elle — groupes, villes, adresse ou contact : ils ne cherchaient que dans ce que la recherche du haut parcourait déjà. Les noms de groupe l'ont rejointe au passage : « commerces » montre les clients de ce groupe, « sans groupe » ceux qui n'en ont aucun, et l'arbre comme la liste répondent la même chose. Le tableau se filtre dès la première lettre, sans attendre qu'un nom soit écrit en entier
- Une ligne neuve attend le curseur sur sa référence. « + Ligne » ajoutait la ligne et laissait le curseur sur le bouton, sous le tableau : il fallait viser le premier champ à la souris avant de pouvoir taper. Il se place maintenant dans la référence, première colonne de la ligne, et la saisie suit l'ordre des colonnes. C'est aussi le champ qui fait le plus de travail : une référence du catalogue y propose son article, qui remplit à lui seul la désignation, la description, l'unité, le prix, le prix d'achat et le taux de TVA
- « Pré-remplir depuis un client » se présente comme la liste des clients sur téléphone. C'était une liste déroulante refermée sur un bouton, qui n'affichait que dix clients à la fois avec sa propre barre de pages. C'est maintenant un champ où l'on tape : les propositions se réduisent à chaque lettre, le nom s'y lit en gras et son adresse en dessous, avec le code postal et la commune — deux clients qui portent le même nom ne se confondent plus. Une lettre — A, B, C... — s'affiche au premier client de chaque initiale et reste collée en haut du cadre, les chiffres et les symboles sous « # ». Les flèches descendent dans la liste, Entrée retient, Échap referme, et le cadre retient le défilement : arrivé en bas, le doigt n'emporte pas la page. C'est le composant de la recherche de la liste des clients, et il ne demande rien au réseau — les clients sont déjà dans la page. Retenir un client remplit ses coordonnées et replie la carte « Client » comme avant ; retaper dans le champ détache le document de sa fiche, pour que le nom affiché ne promette pas un client auquel le devis ne serait plus rattaché
- Les colonnes des lignes sont retaillées à ce qu'elles reçoivent. « Qté », « Unité », « PU HT » et « Rem. % » étaient plus larges que leur contenu — une quantité, une unité, un prix, un pourcentage. Elles rendent soixante-dix pixels à elles quatre. La référence les prend : elle passe de 120 à 160 pixels, et une référence du catalogue s'y lit enfin en entier. Elle s'écrit en chasse fixe, où chaque caractère est plus large qu'ailleurs : à 120 pixels, « ACC-EL-INTPROX-M20A » n'en montrait que les quatorze premiers caractères, et il fallait faire défiler le champ pour vérifier la fin — précisément là où deux références se distinguent. La désignation gagne les pixels restants, de 236 à 254. Les en-têtes tiennent toujours sur une ligne et les valeurs courantes aussi : « 1000 » en quantité, « forfait » en unité, « 12500,00 » en prix, « 12,5 » en remise. Une valeur plus longue n'est pas perdue — le champ la garde entière et la fait défiler. Sur téléphone, le tableau des lignes se parcourt latéralement comme avant
- Les chiffres d'une ligne s'alignent à droite, en-têtes compris. Quantité, unité, prix unitaire, taux de TVA, remise et total se lisaient collés à gauche de leur colonne : les unités et les décimales ne tombaient pas les unes sous les autres, et comparer deux prix dans une liste de quinze lignes demandait de suivre chaque nombre des yeux. Ils sont désormais alignés à droite partout où le document se lit — l'éditeur, la fiche d'un devis, d'une facture ou d'un avoir, le PDF, et la page que votre client ouvre par son lien — et le montant d'un règlement suit son en-tête « Montant ». La page du client était la plus mal lotie : toutes ses colonnes sortaient à gauche, alors que son PDF, lui, alignait déjà les montants à droite — le même devis ne se présentait pas de la même façon selon qu'on l'ouvrait à l'écran ou qu'on l'imprimait. Dans ces trois cas, l'alignement était bel et bien demandé dans le code depuis longtemps, mais une règle plus générale l'emportait sur la sienne. Les listes suivent la même règle : libellés à gauche, nombres à droite. Dans les devis et les factures, le total TTC, le restant dû et le statut passent à droite — les montants se comparent d'une ligne à l'autre sans suivre chaque chiffre des yeux, et les pastilles d'état se rangent le long des boutons au lieu de flotter au milieu de leur colonne. Les quatre tableaux du bilan s'alignent pareillement, nombres de factures, montants et parts en pourcentage, jusqu'à la ligne « Sur douze mois » qui tombe enfin sous les colonnes qu'elle totalise
- Sur téléphone, les devis et les factures se lisent en fiches. Les deux listes sortaient en tableau de sept et huit colonnes qu'il fallait faire glisser de côté pour atteindre le statut et les boutons, chaque montant coupé en deux lignes au passage. Chaque document tient maintenant sur une fiche : son numéro et son total sur la première ligne, le client et sa pastille d'état sur la deuxième, l'objet et la date sur la troisième, les boutons « Voir » et « PDF » en dessous. Pour une facture, le reste dû s'ajoute, nommé, et s'efface là où il n'a pas de sens — un brouillon, un avoir. La recherche, le filtre par statut, le tri et la pagination fonctionnent comme avant. Au-dessus de 700 pixels, le tableau, ses colonnes et son tri ne changent pas
- Les bons d'intervention et les équipements se lisent enfin sur téléphone. Les deux listes n'y montraient qu'une seule colonne, le nom du client, suivie d'un chevron qui ne répondait à rien : le numéro du bon, sa date, son statut, son type, le technicien, la durée — et jusqu'aux boutons « Voir » et « PDF » — étaient masqués, sans aucun moyen de les atteindre. Trois bons du même client donnaient trois lignes identiques. Chaque bon tient maintenant sur une fiche : son numéro et son statut sur la première ligne, le client, puis la commune et la date, le type et la durée, le technicien, et les boutons en dessous. Un équipement donne son nom et l'échéance de son contrôle d'étanchéité, le client, le type et le fluide, la charge, et son bouton. Le chevron inerte a disparu. Au-dessus de 700 pixels, les deux tableaux et leur tri ne changent pas
- Le planning et les contrats d'assemblage passent aussi en fiches sur téléphone. La liste des rendez-vous y sortait en tableau de neuf colonnes qu'il fallait faire glisser ; un contrat, comme un bon, ne montrait que le nom de l'acquéreur. Un rendez-vous donne maintenant sa date et son état sur la première ligne, son objet, le client et l'horaire, l'équipement et le type, le technicien, puis « Modifier ». Un contrat donne son numéro et son état, l'acquéreur, la commune et la date, l'équipement et le fluide, le technicien, puis « Voir » et « PDF ». La recherche, le tri et la pagination sont inchangés, et au-dessus de 700 pixels les deux tableaux non plus ne bougent pas
- La liste des clients de la page Documents suit le même pli. Ses quatre colonnes s'écrasaient les unes contre les autres sur téléphone : le nom du client passait sur trois lignes, le détail de ses documents se coupait au bord de l'écran et le bouton « Voir » en sortait tout à fait. Chaque client donne maintenant son nom, son dossier, ce qu'il a de documents — « 4 relevés · 1 bon · 1 devis · 1 facture », en entier — et son bouton. Sur grand écran, le tableau, son tri et sa pagination ne changent pas
- Le relevé des fluides par équipement se lit aussi sur téléphone. Son tableau d'interventions — CERFA, date, type, fluide, ajouté, retiré, récupéré, t CO2eq — s'étalait sur 457 pixels dans un cadre de 221 : imbriqué sous le client puis sous l'équipement, il n'en montrait pas la moitié, et il fallait le faire glisser de côté à l'aveugle. Chaque intervention tient maintenant sur une fiche : son numéro de CERFA et sa date, son type et son fluide, puis les quantités, chacune nommée — « ajouté +0,500 », « retiré », « récupéré ». Les quantités nulles ne s'affichent plus du tout sur téléphone : seul ce qui a bougé est écrit. La ligne « Totaux équipement » reste sous sa liste. Sur grand écran, ce tableau retrouve au passage la mise en forme qu'il visait depuis toujours : les colonnes « + kg », « - kg », « Récup. » et « t CO2eq » s'alignent à droite, en-têtes et totaux compris, et les quantités reprennent leurs couleurs — vert pour ce qui est ajouté, rouge pour ce qui est retiré, violet pour ce qui est récupéré. Le code le demandait, une règle plus générale l'emportait
- Les deux pages d'analyse se lisent en fiches sur téléphone. « Mouvements de fluide », dans l'analyse détaillée, était le tableau le plus large de l'application : dix colonnes, 829 pixels à faire glisser dans un cadre de 322. Chaque intervention tient maintenant sur une fiche — sa date et, s'il y en a une, la mention « fuite oui » en rouge ; l'équipement ; la nature et le fluide ; le technicien ; puis les quantités nommées, « chargé », « retiré », « récupéré », celles restées à zéro n'étant plus écrites — et son bouton. Dans la vue d'ensemble, le « bilan par fluide » (sept colonnes, 692 pixels) donne son fluide et son nombre d'équipements, sa charge et son équivalent CO2, ce qui a été ajouté et récupéré, et le bilan net ; les « équipements dormants » (cinq colonnes, 621 pixels) donnent l'équipement et son retard en jours, le client, la date de la dernière maintenance et le bouton. Un équipement jamais contrôlé n'affiche plus « — j » : sa fiche dit « dernière maintenance Jamais ». Le tableau « activité techniciens », qui tient déjà dans l'écran avec ses trois colonnes, ne change pas, et sur grand écran les trois tableaux gardent leurs colonnes, leur tri et leur pagination
- Les boutons de période de « Mouvements CERFA » ne se dispersent plus. « Année 2026 », « T4 2026 » et « 10/2026 » s'écartaient les uns des autres jusqu'aux deux bords de la carte, le troisième se retrouvant seul et centré sur une deuxième ligne. La règle commune des boutons d'une carte leur pose une marge horizontale automatique, qui sert à les centrer quand ils sont seuls ; dans une rangée, cette marge avale tout l'espace libre et les éparpille. Les trois pastilles se suivent maintenant depuis la gauche, à huit pixels l'une de l'autre
- Le tableau de bord passe en fiches sur téléphone. Ses six listes — échéances F-Gas, derniers devis, dernières factures, derniers bons, derniers relevés, derniers contrats d'assemblage — sortaient toutes en tableaux de sept ou huit colonnes larges de 517 à 638 pixels dans un cadre de 314 : le statut et le bouton « Voir » restaient hors de l'écran sur chacune. Chaque ligne tient maintenant sur une fiche, bâtie comme celle de la page qui lui correspond, pour qu'un bon vu sur l'accueil se lise exactement comme dans sa liste. Un équipement F-Gas donne son nom et l'échéance de son contrôle, le client, la périodicité et l'équivalent CO2, la date du dernier contrôle — effacée quand il n'y en a jamais eu, la mention « jamais contrôlé » suffisant à le dire. Le bloc « Réponses de vos clients » suit : le numéro du devis et son montant, le client et sa réponse, la date, puis le bouton. Sur grand écran, les sept tableaux gardent leurs colonnes et leur tri
- Sur téléphone, la semaine et le mois du planning se lisent en agenda. La grille horaire réserve 95 pixels par jour : une semaine de six jours demande 620 pixels dans un cadre qui en offre 342. On n'en voyait que trois, et atteindre le vendredi obligeait à faire glisser le calendrier de côté, à l'aveugle. Ces deux vues deviennent une liste : un bandeau par jour — « Mardi 13 octobre », collé en haut tant qu'on est dedans —, puis ses rendez-vous, chacun avec son horaire, son état, son objet, le client, l'équipement et le technicien, et le trait de couleur du technicien sur le côté. Un appui ouvre la fiche du rendez-vous comme avant ; un appui sur le bandeau d'un jour ouvre ce jour. Les jours sans rendez-vous ne sont pas écrits : sur un mois, ils feraient défiler trente lignes vides avant le premier. La vue du jour garde sa grille horaire — une seule colonne tient dans n'importe quel écran — et au-dessus de 700 pixels, les trois vues sont inchangées. Tourner le téléphone rebascule de l'une à l'autre sans recharger
- L'engrenage de disposition reste à côté de « Bonjour ». Il était posé à côté du bloc d'accueil entier, titre, bandeaux et date compris : dès qu'un bandeau s'y ajoutait — l'option E-mails qui approche de sa fin, un quota, un abonnement —, le bloc devenait trop haut, l'engrenage ne tenait plus à côté et tombait seul sous la date, en bas de l'écran sur un téléphone. Il forme maintenant une rangée avec le titre ; les bandeaux et la date passent dessous, sur toute la largeur. Et sur la page Planning, la liste des rendez-vous respire : elle était collée sous le calendrier
- Changer le client d'un devis déjà rattaché redevient possible. Le champ « Pré-remplir depuis un client » arrive rempli du nom du client en place : un devis dupliqué, un brouillon repris, une facture née d'un bon. Or la liste se filtre sur ce qui est écrit — le toucher ne proposait donc que ce client-là, un sur dix-huit, et il fallait effacer le champ à la main pour en voir d'autres, ce que rien n'indiquait. Au téléphone, l'appui ne sélectionne même pas le texte. Le champ montre maintenant la liste entière dès qu'on y revient, et sélectionne son contenu : taper le remplace. Une recherche en cours de frappe, elle, garde son filtre
- La fin d'un rendez-vous suit son début. Le formulaire affiche d'emblée 09:00 et 11:00, et la fin reprenait la date du début dès qu'on la posait — mais elle gardait son 11:00 quoi qu'il arrive. Un rendez-vous de 14 heures se voyait donc proposer une fin à 11:00, avant son propre début, et le formulaire refusait l'enregistrement. L'heure de fin se cale maintenant deux heures après celle du début et le suit à chaque changement, tant que personne ne l'a choisie : début à 14:00, fin à 16:00 ; début reculé à 08:30, fin à 10:30. Dès que vous touchez au cadran de la fin, elle vous appartient et n'est plus réécrite — reculer le début ne l'efface pas. Un rendez-vous déjà enregistré garde ses heures telles quelles, et une fin antérieure au début reste refusée
- La disposition d'origine du tableau de bord est revue. Les vignettes suivent maintenant l'ordre Clients, Équipements, Rapides, Devis, Planning, Rapports ; les blocs, l'ordre Graphiques, Derniers devis, Réponses de vos clients, Dernières factures, Contrats d'assemblage, CERFA, Contrôles d'étanchéité, Bons d'intervention, Derniers relevés, Clients inactifs, Facturation. Cela ne touche que les comptes qui n'ont jamais réglé leur disposition : ceux qui l'ont fait gardent la leur, et « Remettre la disposition d'origine » ramène désormais à ce nouvel ordre. Au passage, le réglage reprenait mal : la page Disposition range le catalogue, mais le tableau de bord ne recevait que la préférence enregistrée — vide par défaut — et gardait alors l'ordre du code. Les deux écrans pouvaient donc se contredire sur un compte neuf ; ils s'accordent maintenant
- Les sociétés archivées descendent dans leur propre bandeau. Elles se mêlaient aux autres dans la liste de l'administration, avec leur seule pastille « Archivée » pour les distinguer : sur une liste longue, celles qui travaillent se cherchaient parmi celles qui ne travaillent plus. Elles sont maintenant regroupées sous un bandeau « Sociétés archivées », replié, posé sous la liste des actives et qui annonce leur nombre. Rien ne change pour elles : même fiche, mêmes boutons, « Désarchiver » et l'export des devis signés compris. La recherche les atteint toujours — elle ouvre le bandeau quand la réponse s'y trouve, le masque quand elle n'y est pas, et le referme dès que le champ se vide
3.12.1 — Un document ne se signe plus tout seul
Nouvelle fonctionnalité
- Les quatre nouvelles mentions obligatoires des factures. Le décret n° 2022-1299 les a ajoutées à l'article 242 nonies A de l'annexe II au code général des impôts ; elles s'appliquent aux factures émises depuis le 1er septembre 2026, et au plus tard le 1er septembre 2027 pour les PME et microentreprises. Le SIREN du client est repris de son SIRET ou de son numéro de TVA, ou se saisit à part, avec contrôle de la clé. La catégorie de l'opération (livraison de biens, prestation de services, ou les deux) se choisit sur chaque document, avec une valeur proposée réglable dans la configuration. L'adresse de livraison des biens se renseigne quand elle diffère de celle du client. L'option pour le paiement de la TVA d'après les débits se coche une fois dans la configuration. Les quatre figurent sur la fiche, le PDF, la page client et la facture électronique (cadre de facturation, SIREN de l'acheteur, code d'exigibilité, adresse de livraison)
- Une facture déjà émise ne change pas. Aucune de ces mentions ne s'ajoute après coup à un document émis avant la mise à jour : sa réimpression reste celle de son émission. L'option des débits est figée à l'émission, comme la franchise de TVA. Un brouillon plus ancien les reçoit à son prochain enregistrement, ou au plus tard à son émission
- Choisir un client dans l'éditeur de devis et de factures remplit de nouveau ses coordonnées. La page transmettait la liste sous un nom que le script ne lisait pas : le choix ne rattachait que le site, et nom, adresse, SIRET et TVA restaient à recopier à la main
- Un parc d'outillage, et le registre de ses contrôles. Nouvelle page sous Gestion. Chaque outil porte son type, son numéro de série, sa périodicité de contrôle, son détenteur et son état ; chaque contrôle entre dans un registre daté, non-conformités comprises — l'arrêté du 29 février 2016 impose de vérifier le seuil de détection d'un détecteur au moins tous les douze mois (article 2) et de tenir ce registre (article 3). Un écran « qui détient quoi » montre le parc technicien par technicien, l'atelier recevant ce qui n'est affecté à personne. Les échéances reprennent le vocabulaire et les couleurs déjà employés pour le contrôle d'étanchéité : à jour, à prévoir, en retard, jamais contrôlé. Un contrôle non conforme ne repousse pas l'échéance et fait passer l'outil en réparation. Tout le monde consulte le parc — un technicien doit pouvoir vérifier son détecteur avant de partir — mais seul un administrateur le modifie. Le formulaire d'ajout range ses champs deux par ligne sur un écran de bureau — 552 pixels de haut au lieu de 902 — et revient à une colonne sous 700 pixels de large, où deux champs côte à côte deviendraient illisibles, le tout dans un cadre titré comme ceux de la page Profil. Les champs y sont appariés pour que leurs bords se rejoignent, et les mentions réglementaires sont passées sous la rangée : placées sous un seul des deux champs, elles faisaient descendre celui d'en face au niveau de la note. Dans le tableau « qui détient quoi », les vignettes des deux colonnes partent enfin de la même hauteur — 33 pixels d'écart auparavant. Le parc n'est plus un tableau mais une liste dépliante : chaque outil a sa carte, qui porte en clair tout ce que montraient les colonnes, et ses trois actions — modifier, contrôler, consulter le registre — s'ouvrent sur toute la largeur. Elles logeaient dans la dernière colonne du tableau, où elles ne tenaient pas : le conteneur rogne ce qui dépasse et la cellule faisait moins de 200 pixels, si bien qu'ouvrir « Modifier » étirait la ligne sur plus de 1 400 pixels de haut. Les actions elles-mêmes sont des liens discrets et non des pavés, avec une zone cliquable de 24 pixels pour rester atteignable au doigt. Un chevron dit si le panneau est ouvert — le triangle natif avait été retiré sans rien mettre à la place —, le survol et le focus clavier se voient, et les couleurs viennent des variables de thème du projet : 8,9:1 au repos et 10:1 ouvert en clair, 6,1:1 et 6,9:1 en sombre. Enfin, le tableau « À contrôler » était le seul de la page à ne pas pouvoir défiler horizontalement : sur un téléphone de 375 pixels, il élargissait le document à 414 et faisait partir la page entière de côté
- Le CERFA porte enfin son cadre 5. La notice du 15497*04 réclame, pour un détecteur manuel, son identification et la date de son dernier contrôle. Les deux sont désormais proposées depuis le parc d'outillage — celui du technicien en tête de liste, un détecteur dont le contrôle est dépassé étant signalé comme tel — puis recopiées sur le document : un contrôle enregistré plus tard ne réécrit pas une fiche déjà établie. Le numéro et la date figurent sur la fiche comme sur le PDF
- « Paramètres » est redevenu un lien comme les autres. Il flottait seul en bas de la barre, déguisé en titre de groupe : un lien portant la classe des en-têtes repliables, alors qu'il n'a rien à replier. Ce déguisement coûtait cinq règles de style écrites uniquement pour défaire ce que la classe lui appliquait — couleur, retrait, fond, et deux fois en version téléphone. Il rejoint le menu Gestion, en dernier, et ces cinq règles disparaissent avec lui
- La liste de tous les sites ne déborde plus des fiches, sur la page Documents. Elle était rendue à l'intérieur du bloc souple qui range les fiches de site : elle y devenait un élément de rangée, avec une largeur et une marge différentes de celles de l'arbre des dossiers juste au-dessus, et son bord droit dépassait de vingt pixels. Elle est désormais posée après le bloc, alignée au pixel sur l'arbre. Les fiches, elles, gardent toute la largeur. En vue super administrateur, chaque société garde sa liste dans son propre bloc, qui n'est pas ce conteneur-là
- Le planning donne enfin la liste de ses rendez-vous. Le calendrier ne montre qu'une période à la fois : rien ne donnait la suite entière, ni ne permettait de classer par technicien, par site ou par statut. Une liste triable et paginée s'ouvre sous le calendrier, avec la date, l'horaire, l'objet, le technicien, le site, l'équipement, le type et le statut — la même pastille de couleur que la légende, pour que les deux vues se lisent du même coup d'oeil. Le filtre par technicien les réduit toutes les deux à la fois ; auparavant il n'en touchait qu'une. Surtout, la liste ne fait pas sa propre lecture de la base : elle part des rendez-vous déjà constitués pour le calendrier, cloisonnement compris, et ne peut donc pas en montrer un de plus ni un de moins
- TrackDéchets : les contenants de récupération et leurs bordereaux de suivi. Nouvelle page sous Gestion. Depuis le 1er janvier 2022 (décret 2021-321), le suivi des déchets de fluides frigorigènes passe par un bordereau dématérialisé, et un bordereau regroupe des contenants et les fiches d'intervention dont le fluide y a été versé — ces fiches, l'application les avait déjà : ce sont les CERFA. Chaque bouteille porte désormais son numéro, son fluide, sa capacité, sa tare, son détenteur et son état. Ce qu'elle contient n'est pas saisi à la main : c'est la somme des interventions qui l'ont remplie, donc une seule vérité plutôt que deux comptabilités. Le cadre 10 du CERFA choisit une bouteille du registre et en recopie le numéro sur le document, gelé comme le détecteur du cadre 5 ; la saisie libre reste possible pour une bouteille prêtée ou pas encore enregistrée
- Le numéro de bordereau revient tout seul sur les fiches. Quand une bouteille part au traitement, un bordereau l'emporte avec toutes les interventions qu'elle portait, et elle n'est plus proposée à la récupération. Le numéro de la plateforme se reporte plus tard, en une fois : il s'inscrit alors sur chaque fiche qui n'en avait pas, et jamais sur une fiche qui en portait déjà un — un numéro imprimé ne se réécrit pas. Chaque bordereau s'exporte en un fichier à deux blocs, les contenants puis les fiches d'intervention, avec les intitulés de la plateforme et non ceux de l'application, pour éviter la ressaisie à l'aveugle. L'application ne dialogue pas avec Trackdéchets : le numéro y est recopié, c'est le palier choisi
- Deux outils de même type ne peuvent plus porter le même numéro de série. Le cadre 5 du CERFA désigne un détecteur par son numéro : deux fiches identiques rendraient le document impossible à rattacher, et le registre de contrôles perdrait son sens. La casse ne contourne pas la règle, un outil archivé garde son numéro, et deux types différents restent libres de porter le même — rien n'impose qu'une balance et un détecteur soient numérotés différemment. Une date de mise en service postérieure au jour même est refusée elle aussi : faute de contrôle enregistré, c'est elle qui donne l'échéance, et une date future la repousserait d'autant. Le sélecteur du navigateur la barre, la page la refuse
- « Voir » ouvre la fiche de l'outil, au lieu d'y descendre seulement. Les liens de « À contrôler » et les vignettes de « qui détient quoi » mènent à la carte d'un outil par son ancre, mais un lien d'ancre ne déplie pas un bloc repliable : on arrivait au bon endroit sur une carte restée fermée. Elle s'ouvre maintenant d'elle-même, et le groupe qui la contient avec elle. Après avoir enregistré une modification ou un contrôle, la page revient sur cette même carte plutôt qu'en haut de la liste
- Revenir en arrière après un enregistrement ne tombe plus sur une page d'erreur. La page d'outillage traitait l'envoi du formulaire et s'affichait elle-même : l'écran obtenu était la réponse à un envoi, et le bouton « précédent » obligeait le navigateur à le rejouer — Chrome répondait ERR_CACHE_MISS et laissait un écran blanc. Après une écriture réussie, la page redirige désormais vers elle-même : l'historique ne contient plus que des pages consultables. Le message de confirmation voyage sous forme de code et non de texte, pour qu'aucun contenu venu de l'adresse ne puisse s'afficher. En cas d'erreur, en revanche, l'écran de saisie reste affiché avec son message
- Les photos ne descendent plus en taille réelle pour tenir dans une vignette. Une photo est rangée en 1920 pixels, et c'est ce fichier-là que toutes les pages servaient — y compris pour les cases de 62 pixels du bandeau d'une fiche. Un équipement de six photos faisait ainsi descendre 1 339 kilooctets pour afficher sept images dont six timbres-poste ; il en descend 58, mesure faite au navigateur. Trois tailles sont fabriquees a cote de chaque photo, 320, 640 et 1024 pixels de grand cote, et c'est le navigateur qui choisit selon la place dont il dispose et la finesse de l'ecran : la galerie de gestion passe de 1 046 à 120 kilooctets sur un écran de bureau, la fiche de 1 339 à 86 sur un téléphone — où l'image occupe toute la largeur et a donc vraiment besoin d'être grande. L'original ne bouge pas : c'est lui qu'affiche l'agrandissement, lui qu'on télécharge, lui que relit la reconnaissance de plaque signalétique. Les largeurs annoncées au navigateur sont les vraies : le catalogue raisonne en grand côté, et la plupart des photos de technicien sont verticales, si bien qu'annoncer 320 pour une variante large de 240 faisait choisir une image trop petite pour son emplacement
- Une image déjà vue n'est plus retransférée. Le serveur ne disait pas à quelle version correspondait une photo : passé le délai de cache, le navigateur retournait chercher l'octet entier d'une image qui n'avait pas changé. Il demande maintenant « est-ce toujours celle-là ? » et reçoit une réponse sans contenu — revenir sur une fiche déjà consultée ne transfère plus un seul octet d'image. Le cache reste strictement privé : ces photos sont cloisonnées par société, aucun intermédiaire ne doit en garder copie. Une miniature est d'ailleurs exactement aussi privée que sa photo : elle ne se demande jamais par son propre chemin, mais par celui de l'original assorti d'une taille, si bien que le contrôle d'appartenance déjà en place la couvre sans qu'il ait fallu écrire une seconde règle. Les tailles disponibles forment une liste fermée, pour qu'un visiteur ne puisse pas commander mille redimensionnements et remplir le disque
- Les photos déjà en ligne reçoivent leurs miniatures sans à-coup. Les nouvelles sont fabriquées à l'envoi, une fois pour toutes, pendant que l'image est encore en main. Les anciennes se font à la première consultation, trois à la fois au plus sur tout le site : au-delà, la photo est servie telle quelle plutôt que de faire attendre. Deux requêtes ne refont jamais la même image en double, et une miniature n'apparaît qu'une fois écrite entièrement, jamais à moitié. Une page de Paramètres dit ce que sait faire l'hébergement et permet de prendre les devants par lots de vingt-cinq photos et vingt secondes. Si le serveur ne sait pas écrire de WebP, rien ne casse : les photos s'affichent comme avant, en taille d'origine. Le dossier des miniatures est jetable — l'effacer en entier ne perd rien, tout se refabrique. Remplacer une photo périme les siennes ; la supprimer définitivement les emporte, mais la mettre à la corbeille les laisse en place, pour qu'une photo restaurée s'affiche légère tout de suite
- La fiche d'un site porte enfin un complément d'adresse, un portable et une adresse web. Trois renseignements que l'adresse postale ne dit pas et qu'on cherchait ailleurs : le bâtiment, l'étage ou le code d'accès, le numéro qui répond quand le fixe ne répond pas, et le site du client. Ils se saisissent à la création comme à la modification, s'affichent sur la fiche — le portable s'appelle d'un doigt, l'adresse web s'ouvre dans un onglet à part — et n'apparaissent que s'ils sont renseignés, pour ne pas allonger la fiche de trois lignes vides. L'export des sites les emporte, l'import sait les reconnaître, et le modèle à remplir les propose. Attention sur ce dernier point : une colonne intitulée « Portable » ou « Mobile » allait jusqu'ici dans le téléphone fixe, faute d'autre case ; elle va désormais dans la bonne. L'écran d'association des colonnes le montre avant de lancer l'import, et reste corrigeable à la main
- L'adresse web d'un site ne peut pas devenir un lien piégé. Ce champ finit dans un lien cliquable sur une fiche que d'autres consultent : recopié tel quel, un « javascript:... » saisi par un compte y deviendrait un lien exécutable pour les autres. La saisie est donc remise en forme à l'enregistrement, et le procédé n'est pas de filtrer les cas indésirables un à un — une liste d'interdits s'oublie — mais de retirer le préfixe quel qu'il soit et de n'en reposer qu'un des deux admis. « exemple.fr » devient donc une adresse complète, « http:// » écrit exprès est conservé — tous les sites ne sont pas en https et basculer en silence donnerait un lien mort — et ce qui ne peut pas devenir une adresse est refusé avec un message, plutôt qu'enregistré vide sans rien dire. Du même coup, une erreur de saisie n'efface plus le formulaire : le formulaire de création d'un site repartait vierge à la moindre erreur, il redonne maintenant tout ce qui venait d'être tapé
- Le scan de plaque est devenu un cadre titré comme les autres. Sur les formulaires d'ajout et de modification d'un équipement, ce bloc avait son propre cadre en pointillés et aucun titre : on ne savait pas où il commençait ni ce qu'il faisait avant de lire le bouton. Il reprend le cadre titré déjà employé sur le profil, l'outillage et les contenants — même bordure, même arrondi, mêmes marges, mesuré identique — avec « Scanner la plaque » pour titre. Au passage c'est un vrai « fieldset », ce qui annonce le groupe aux lecteurs d'écran, ce qu'un simple bloc ne faisait pas. Le bouton dit désormais « Prendre une photo » plutôt que « Scanner la plaque signalétique » : le titre porte déjà le sujet, le bouton n'a plus qu'à dire le geste, et il se lit en face de « Ajouter une image » qui est l'autre façon d'arriver au même résultat. La règle de style du cadre en pointillés part avec lui. Enfin, tout le parcours de scan vouvoie, comme le reste de l'application : onze messages le tutoyaient encore, du conseil de cadrage à l'avertissement de lecture ratée, si bien qu'on cliquait « Prendre une photo » pour lire aussitôt « Trace un cadre… »
- Le formulaire d'ajout d'un équipement range ses champs par paires. Il déroulait douze champs les uns sous les autres sur toute la largeur, si bien qu'il fallait descendre pour saisir ce qui se lit pourtant d'un seul coup d'oeil sur une plaque. Sur écran d'ordinateur, le type et la date de mise en service ouvrent désormais la première ligne, la marque et le modèle se font face, la charge de fluide se saisit à côté du fluide, et le nombre de circuits à côté de la puissance — quatre paires qui correspondent à la façon dont on lit une plaque signalétique. Sous 700 pixels de large tout revient en une seule colonne, dans le même ordre. Aucune règle de style n'a été ajoutée : la rangée employée est celle du profil et de l'outillage, qui bascule déjà toute seule
- L'adresse du site s'affiche sous son nom, à l'ajout comme à la modification d'un équipement. Le formulaire ne rappelait que le nom : on ajoutait une machine à un site sans pouvoir vérifier d'un coup d'oeil que c'était le bon, ce qui compte quand une enseigne a quatre adresses dans la même ville. L'adresse, le complément, puis le code postal et la ville sur une seule ligne, comme sur une enveloppe. Les lignes vides ne sont pas écrites : une mention « non renseignée » a sa place sur une liste de sites, où elle tient la hauteur des cartes, mais pas en tête d'un formulaire où elle n'est que du bruit. Sur la page de modification, les colonnes du site sont préfixées « site_ » comme l'était déjà son nom : les tables des équipements et des sites partagent onze noms de colonne, et une colonne « address » ajoutée un jour aux équipements aurait écrasé celle du site sans que rien ne le signale. Le nom du site n'est plus un paragraphe nu perdu entre le titre et le formulaire : il est en gras, et l'adresse se range juste dessous, à deux pixels, pour que les deux se lisent comme un seul rappel. C'est un paragraphe classé et non un titre de niveau deux : un <h2> annoncerait aux lecteurs d'écran une section portant le nom du site, alors que la page n'a qu'un sujet
- « Annuler » se tient enfin à côté d'« Enregistrer ». Sur la fiche de modification d'un équipement, il était rangé dans la carte « Zone sensible », entre Archiver et Supprimer — au mauvais endroit, et visible des seuls administrateurs alors que tout le monde peut renoncer à une modification. Il rejoint le bouton d'enregistrement, qui est là où l'oeil le cherche. Le formulaire d'ajout en reçoit un aussi, qui ramène à la fiche du site : il n'en avait aucun
- Le cadre « Aucune photo enregistrée » disparaît sur téléphone. Il occupait un rectangle au format 4/3 — trois cent cinquante pixels de haut, mesuré — pour dire qu'il n'y avait rien à voir, et il fallait le franchir à chaque consultation d'une fiche sans photo. Le titre « Photos » et le lien « Ajouter des photos » restent, eux : c'est par là qu'on en ajoute. Sur ordinateur rien ne change, la place ne manque pas. Le message « Photo indisponible », qui s'affiche quand un fichier a disparu du disque, n'est pas touché : il porte la même classe mais dit quelque chose, lui. La règle vaut aussi pour la galerie de la fiche site, qui est le même bloc
- Un équipement à plusieurs circuits peut enfin les décrire un par un. À partir de deux circuits, une carte apparaît pour chacun : nom, modèle, puissance, numéro de série, localisation, et surtout son fluide et sa charge. Ce dernier point n'est pas un confort : jusqu'ici le tonnage se calculait « charge × nombre de circuits × PRG », avec un seul PRG pour toute la machine. Une centrale dont les circuits portent des fluides différents était donc mal comptée, et c'est ce tonnage qui décide de la périodicité du contrôle d'étanchéité. Exemple mesuré : dix kilos de R-22 et six de R-1234yf donnaient 36,2 tonnes équivalent CO₂ avec l'ancienne formule, contre 18,1 en comptant chaque circuit avec son propre fluide
- Ce qui n'est pas renseigné sur un circuit vaut « comme l'équipement ». Un parc existant ne change donc strictement rien à son calcul tant qu'on n'a rien saisi — vérifié : même tonnage au millième, même périodicité. Zéro n'est pas la même chose que vide : un circuit vidangé porte bien une charge de zéro et n'hérite de rien. Repasser sous deux circuits efface le détail, pour qu'aucune ligne oubliée ne soit comptée deux fois. Les seuils, eux, restent appréciés sur le total de l'équipement et non circuit par circuit : le règlement (UE) 517/2014 article 4, l'article R543-79 du code de l'environnement et le tableau de l'arrêté du 29 février 2016 parlent tous les trois de la charge de l'équipement, jamais du circuit. L'arrêté connaît pourtant les machines multi-circuits — son article 6 permet de n'arrêter que le circuit qui fuit — mais jamais pour apprécier le seuil
- Le tonnage se calculait à six endroits, il n'a plus qu'une définition. La fiche, la liste des équipements, l'accueil, les bilans de fluides, le bilan de groupe et l'export écrivaient chacun leur propre « charge × circuits × PRG ». Ajouter les circuits sans toucher à ces six copies aurait laissé deux écrans annoncer deux tonnages pour la même machine. Ils partagent désormais la même expression, et le détail affiché sous le chiffre suit le calcul : « somme de 2 circuits, R-22 et R-1234yf » plutôt qu'un produit qui ne retombait plus sur le résultat annoncé juste au-dessus
- Chaque offre a maintenant ses volumes, et une page pour les suivre. Flexible couvre 800 bons d'intervention, 500 CERFA et 800 factures par année d'abonnement, une photo par site et deux par équipement ; Pro double les trois premiers, porte les photos à trois et cinq, et ouvre quatre postes. Entreprise reste sans plafond. Une carte « Suivi quotas » apparaît dans Paramètres, sous Compte : elle dit ce qui est consommé, ce qui reste d'ici à la prochaine date anniversaire — affichée en clair — et pour les photos sur quelles fiches ça coince, avec le lien pour y aller
- On est prévenu avant le mur, plus seulement devant. Un bandeau apparaît à 80 % du plafond, et passe au rouge à 95 % : « il vous reste 160 bons jusqu'au 31/12 ». Sur l'accueil et en tête des pages qui créent le document concerné — pas ailleurs, un bandeau partout ne se lit plus. Jusqu'ici on découvrait le plafond au moment précis où l'on en avait besoin, sur un chantier, le camion ouvert. Un technicien le voit aussi, mais sans le lien vers le suivi, qui lui répondrait « accès refusé » : on lui dit de prévenir son administrateur
- Les carnets supplémentaires : une sortie qui n'engage pas douze mois. 100 bons, 100 CERFA ou 200 factures de plus, achetés à l'unité et facturés à part, crédités depuis la fiche de la société. Jusqu'ici, un plafond atteint au neuvième mois laissait trois mois d'attente ou un changement d'offre pour un an : un artisan ne patiente pas, il fait ses bons ailleurs. Un carnet ne périme pas — ce qui n'a pas été consommé reste acquis à la date anniversaire — et il ne s'entame qu'une fois le plafond de l'offre atteint : l'acheter par précaution ne coûte rien
- Aucun compteur de carnet à tenir : il se déduit des documents. Un compteur incrémenté à chaque création se serait décalé un jour ou l'autre, et un compteur décalé ne se répare pas : il aurait fallu le toucher depuis les cinq pages qui créent. Le solde se déduit des documents eux-mêmes, période par période. Comme le quota refuse au-delà du plafond, un dépassement ne peut exister que là où un carnet existait : il suffit de remonter jusqu'au premier carnet, une poignée de périodes, jamais un historique entier. Le registre des carnets garde qui a crédité quoi, quand et contre quelle facture, et un carnet annulé y reste visible au lieu de disparaître
- La page des miniatures passe en super-administration. C'est un outil d'hébergement et non de gestion : elle affiche la version de PHP, celle de la bibliothèque GD et la limite mémoire du serveur — des renseignements qui ne regardent pas un client et qui aident qui chercherait une faille — et elle lance un lot d'encodage qui consomme du processeur sur un hébergement mutualisé. Un administrateur de société n'y perd rien : les miniatures se fabriquent d'elles-mêmes à la première consultation, trois à la fois. Sa carte quitte « Configuration » pour « Super administration » : un lien qui mène à un refus est pire que pas de lien
- Le bon d'intervention se saisit maintenant par étapes. Treize cartes déroulées d'un bloc font six ou sept écrans sur un téléphone, et c'est debout dans un local technique qu'on les remplit. Cinq étapes désormais — le site, l'équipement, l'intervention, les compléments, les signatures — avec une rangée de pastilles en tête qui montre où l'on en est, « Précédent » et « Suivant » collés au bas de l'écran sur téléphone, et un champ obligatoire qui empêche de passer à la suite plutôt que de se signaler à l'envoi. Les sections que la configuration de la société masque disparaissent de leur étape, et une étape vidée de tout est sautée
- La date d'un bon s'effaçait toute seule. Le contrôle qui refuse une date future lisait la valeur du champ en temps universel et la comparait à minuit local. En France, en avance sur l'universel, la date du jour tombait donc après ce minuit-là et passait pour une date future : il suffisait de passer dans le champ pour que la date pré-remplie disparaisse, sans un mot. Les deux dates sont maintenant construites de la même façon, et une date réellement future est toujours refusée
- Reprendre un brouillon qui portait un site faisait tout perdre. La liste des sites recharge la page quand on en change : c'est un gestionnaire écrit à même la balise, pensé pour un geste humain. En restaurant un brouillon, le tunnel rejouait cet événement sur chaque champ — le navigateur partait ailleurs au milieu de la restauration, et la saisie était perdue au moment précis où l'on venait la rechercher. Les champs portant un gestionnaire dans le HTML ne sont plus notifiés
- Les pastilles ramènent en arrière d'un clic. Les étapes déjà remplies portent une coche et se rouvrent directement : on corrige une adresse sans dérouler quatre fois « Précédent ». Revenir est toujours permis ; repartir en avant revalide chaque étape traversée et s'arrête à la première qui bloque, faute de quoi une pastille aurait permis de sauter un champ obligatoire d'un clic. Une étape jamais atteinte n'est pas cliquable — un bouton qui ne fait rien se signale, il ne se devine pas. Sur téléphone seules les pastilles montrent leur numéro, et l'étape en cours son nom : les cinq tiennent sur une ligne
- Un champ manquant le dit en toutes lettres. La bulle du navigateur est discrète sur téléphone et s'efface au premier geste. Un bandeau rouge l'accompagne désormais, qui nomme le champ — « Il manque : Nom / Raison sociale » — et s'efface tout seul. Le champ fautif reçoit le curseur dans la foulée
- Rien n'a changé à l'enregistrement, et c'est volontaire. Un seul formulaire, un seul envoi, les mêmes champs : les étapes ne sont qu'un affichage. La page qui enregistre n'a pas été touchée, elle ne peut donc pas avoir été cassée. Et si le script ne tourne pas — vieux navigateur, fichier non servi — la page reste exactement celle d'avant, toutes cartes à l'écran : un tunnel qui empêcherait de créer un bon en tombant serait pire que pas de tunnel
- Une saisie interrompue se retrouve au retour. Sur un téléphone, un appel entrant suffit à faire vider l'onglet par le système, et tout était à refaire. Ce qui est tapé est désormais gardé dans le navigateur avec l'étape en cours, et proposé à la réouverture : « un bon en cours de saisie a été retrouvé (étape 4 sur 5) », à reprendre ou à jeter. Le brouillon est effacé dès que le bon est créé — un brouillon qui survit à son bon reapparaît la fois suivante et fait croire à un doublon. Le jeton de sécurité du formulaire n'y figure jamais
- Trois champs du bon se saisissent plus vite. La date d'intervention porte un bouton à sa gauche qui pose le jour même — c'est la date de presque tous les bons, et la composer au clavier sur un téléphone demande trois gestes de plus. La durée ouvre le pavé numérique, sans devenir un champ nombre pour autant : elle accepte aussi « 2h30 », qu'un champ nombre refuserait. Le fluide n'est plus une saisie libre mais la liste du référentiel, groupée par usage — froid, climatisation, les deux — et c'est le sélecteur natif qui s'ouvre. La seule valeur enregistrée jusqu'ici était « r404A », tapée à la main, minuscule comprise
- Le lien « Ajouter un équipement » se voit enfin. Il était gris de texte secondaire, sans rien qui dise qu'on pouvait cliquer, et son survol appelait une couleur qui n'existe nulle part dans la feuille — il ne se passait donc rien. Il prend la couleur des liens et un peu de graisse : 4,95 contre 1 avant, 6,33 maintenant en thème clair, 5,30 contre 7,24 en sombre. Son « + » devient une pastille verte, ronde et ombrée, sur le dessin de celle qui supprime une photo — vingt pixels et non quarante-quatre : celle des photos flotte seule sur une image et se vise au pouce, celle-ci vit dans un titre où elle écraserait le texte. Le vert est plus clair en thème sombre : le vert du projet n'y ressortait qu'à 2,86 contre 1, sous le seuil d'une forme pleine
- La fiche d'un site propose de reprendre le bon laissé en cours. Un bouton apparaît à côté de « Nouveau bon », et seulement si un brouillon existe POUR CE SITE : un bon commencé ailleurs n'a rien à faire là, le reprendre chargerait l'adresse et les équipements d'un autre sur une page qui en annonce un. Le nom du client et l'étape atteinte sont dans l'infobulle plutôt que dans le libellé : ces boutons ont une largeur fixée, et le nom y passait sur trois lignes, doublant la hauteur du bouton au milieu de la rangée
- La page de modification d'un bon reste d'un seul tenant. On la rouvre pour corriger un champ : un tunnel obligerait à traverser cinq étapes pour atteindre une date. Saisir et corriger ne sont pas le même geste
- Les montants du catalogue s'alignent à droite. Prix d'achat, prix de vente et marge étaient cadrés à gauche comme du texte : les euros ne tombaient pas les uns sous les autres, et comparer deux lignes demandait de lire chiffre à chiffre au lieu de voir d'un coup laquelle est la plus chère. Ce sont exactement les trois colonnes que le tableau traite déjà comme numériques pour son tri. L'en-tête suit le même bord : un titre à gauche au-dessus de chiffres à droite se lit comme un défaut d'alignement
- Les trois boutons de repli du catalogue prennent l'apparence des autres. Sur la page des prestations, « Catégories », « Marques » et « Fournisseurs » portaient un carré de vingt-six pixels à cadre, là où tous les autres replis du logiciel — arbres de sites, accordéons, listes d'administration — emploient un petit badge à voile translucide. C'est ce badge qu'ils portent désormais : même fond, même coin, même ombre, même corps de texte, dans les deux thèmes. Ils en reprennent aussi le mouvement : un seul chevron, qui pivote d'un quart de tour — vers le bas quand le panneau est ouvert, vers la droite quand il est replié — là où le script échangeait deux caractères, ce qui interdisait toute animation : on ne fait pas pivoter un triangle qu'on remplace par un autre au même instant. Seules les couleurs de groupe du badge ne sont pas reprises : elles ne sont définies qu'à l'intérieur d'un arbre et donnent du blanc sur blanc ailleurs
- Les deux onglets de repli ne montrent plus qu'un liseré. Celui du menu et celui du classement, sur le catalogue de facturation, avançaient de quinze pixels en permanence ; ils n'en laissent plus voir que cinq et s'ouvrent au survol. La flèche n'apparaît qu'à ce moment-là, sans quoi elle débordait de sa boîte de cinq pixels et restait visible toute seule. Le liseré porte la couleur d'accent et non celle, pâle, des boutons : au repos il se détachait du fond à 1,13 contre 1 en thème clair, autant dire qu'il était invisible ; il est maintenant à 8,05 en clair et 6,88 en sombre. Ils s'ouvrent aussi au focus clavier : la barre une fois repliée, l'onglet est le seul moyen de la rouvrir, et un bouton introuvable au clavier l'aurait condamnée
- Les cartes de suivi ont un pied aligné. « Voir la liste » flottait là où s'arrêtait le texte : la carte CERFA porte deux lignes de détail que les autres n'ont pas, et son lien tombait cinquante-deux pixels plus bas que ses voisines. Les trois liens sont maintenant posés au bas de leur carte, à la même hauteur, et habillés en boutons pleins — ils n'avaient jusque-là qu'une couleur héritée, soulignée par défaut, et le bouton pâle du projet ne se détachait du fond de la carte qu'à 1,2 contre 1
- Les documents se comptent sur l'année d'abonnement, pas sur l'année civile. Douze mois à partir de la date anniversaire : souscrire en mars ne doit pas faire repartir le compteur à zéro le 1er janvier suivant, trois mois après, pour douze mois payés. Un plafond « depuis l'origine » était exclu lui aussi : un bon d'intervention ne peut pas être supprimé dans FrigoDiag, le compte aurait été condamné au bout d'une année d'usage normal. La date retenue est celle de l'enregistrement et non la date d'intervention saisie, sinon il suffirait d'antidater pour se rouvrir du quota. La fiche d'une société porte désormais sa date de souscription ; tant qu'elle est vide, c'est la date de création du compte qui sert de repère, et la page de suivi le dit
- La bascule se fait à minuit chez vous, pas à minuit à Londres. Les dates d'enregistrement sont stockées en temps universel, les bornes de période sont des journées françaises : elles sont converties avant d'être comparées. Sans cela, tout ce qui aurait été saisi entre minuit et deux heures du matin le jour anniversaire serait resté compté dans l'année d'avant — un décalage qui ne se voit jamais et que personne n'aurait pu expliquer
- Ce qui existe déjà n'est jamais touché. Un site qui porte quatre photos alors que l'offre en autorise une les garde toutes : le quota refuse la suivante, il ne supprime rien et ne cache rien. La page de suivi le dit franchement, plutôt que de laisser croire à une erreur de comptage. Et si une requête de comptage échoue, l'action passe : personne ne doit rester bloqué sur un chantier à cause d'une table qui a bronché
- Un devis, un avoir et une photo de plaque ne coûtent pas une facture. Seules les factures comptent dans le plafond des factures, acomptes compris. Le scan de plaque, lui, renonce à archiver sa photo quand l'équipement est au complet, sans rien interrompre : la lecture de la plaque a déjà eu lieu, c'est elle qu'on est venu chercher, et refuser d'enregistrer la machine pour une photo de bonus serait hors de proportion
- Les chiffres annoncés sur le site et ceux qui refusent sont les mêmes. Les cartes d'offre de l'accueil, la page Tarifs et son tableau comparatif lisent le catalogue des quotas au lieu de recopier un nombre : ils ne peuvent plus promettre ce que le logiciel n'accorde pas. Les mentions « sans plafond » et « illimités » qui portaient sur les CERFA et les factures ont été remplacées par les volumes réels, sur l'accueil, la page Tarifs, la page de comparaison et le formulaire d'inscription. Les sites, les équipements et les relevés, eux, restent bien illimités
- La barre de menu descend jusqu'en bas de la page, et « Déconnexion » ne se dérobe plus. Le bandeau bleu s'arrêtait à la hauteur d'un écran : sur une page longue il couvrait moins de la moitié du document et laissait le reste sur le fond clair. Pire, il commençait sous l'en-tête de soixante-quatre pixels tout en mesurant une hauteur d'écran entière : son bas tombait donc sous le pli, et le bouton de déconnexion était invisible tant qu'on n'avait pas fait défiler — mesuré quarante-quatre pixels trop bas sur un écran de 900. Le bandeau s'étire désormais sur toute la hauteur du document, pendant que le menu lui-même reste collé à l'écran : les deux étaient inconciliables sans un conteneur interne, qui a donc été ajouté. Si la fenêtre est trop basse pour afficher tout le menu, celui-ci défile sur lui-même, sans que la page s'allonge pour autant. La déconnexion, elle, reste collée au bas de l'écran en permanence, à vingt pixels du bord, où que l'on soit dans la page — et elle ne recouvre jamais le menu, qui défile sous elle. Pour que cette place en bas soit tenable, l'en-tête devient fixe sur ordinateur : la colonne réservait soixante-quatre pixels à une barre qui, elle, avait disparu de l'écran, et le bouton flottait d'autant au-dessus du bord. Sur téléphone rien ne change, l'en-tête y défile comme avant. Le bouton est de plus centré, sur ordinateur comme sur téléphone. La colonne de gauche est au passage devenue un contenant à part entière : elle porte le fond, la largeur et le tiroir coulissant du téléphone, tandis que le menu n'est plus que le menu. Un module ajouté plus tard se pose entre les deux, sans toucher à la navigation — et il sera dans le tiroir sur téléphone, ce qui n'aurait pas été le cas en laissant le tiroir sur le menu
- Le pied de page tient le bas de la page au lieu de flotter au milieu. Sur un écran plus haut que son contenu — la liste des sites, les paramètres — il se posait juste après le dernier bloc et laissait un grand vide en dessous : trois cent quatre pixels de blanc sur un écran de 1 400, mesure faite. Il descend maintenant au bas de la page quand le contenu est court, et garde son même écart au-dessus quand le contenu est long. Au passage, une page qui tenait tout juste dans l'écran ne provoque plus de barre de défilement : c'était l'ancienne hauteur de la barre de menu qui l'allongeait de soixante-quatre pixels pour rien
- Le formulaire du bon n'a plus un seul style écrit dans sa page. Le bloc qui récapitule l'équipement choisi — son type, sa marque, son modèle, son fluide — s'ouvrait et se fermait par une consigne d'affichage posée à même la balise, puis réécrite par le script à chaque changement de sélection. C'était le dernier style en ligne de cette page, et le projet les veut tous dans la feuille. Il passe par une classe, et l'apparence du bloc se règle désormais au seul endroit où on la cherche. Rien ne change à l'écran : les cinq situations ont été mesurées une à une — rien de sélectionné, un équipement entièrement renseigné, un équipement dont seul le type est connu, le retour à « Sélectionner », et un équipement déjà choisi à l'ouverture de la page. Le bloc fait toujours 153 pixels avec ses quatre lignes, 81 avec une seule, et disparaît sans laisser de trace quand la sélection est vide
- La saisie d'un bon se fait maintenant en colonne. Le formulaire prenait toute la largeur disponible : sur un écran de 1 440 pixels, la liste déroulante pour choisir le site en faisait 1 166 — un menu d'un mètre de large pour un seul choix. Un formulaire à étapes se lit en colonne, pas en bandeau. La page est désormais plafonnée à 820 pixels et centrée : le même menu passe à 810 pixels, et les rangées à deux champs — la date et sa durée, par exemple — donnent deux colonnes de 400. Le plafond porte sur toute la colonne et non sur le seul formulaire : resserrer le formulaire seul laissait le titre de la page 173 pixels plus à gauche que la première carte, mesuré. En dessous de 820 pixels de large, c'est-à-dire sur tout téléphone et toute tablette en portrait, rien ne change : la page occupait déjà toute la place, et elle ne déborde pas d'un pixel. La page de modification d'un bon garde sa pleine largeur : on l'ouvre pour corriger un champ, pas pour dérouler un tunnel
- Le formulaire du bon n'était décrit par aucune règle du projet. En inspectant la balise, on ne trouvait que la feuille du navigateur — « display: block ; margin-top: 0em ; unicode-bidi: isolate ». Autrement dit, l'application ne disait rien de son propre formulaire, et il n'existait aucun endroit où écrire ce qui le concerne. Il porte désormais sa classe et sa règle, vérifié : modifier cette règle modifie bien l'affichage calculé, donc c'est elle qui l'emporte sur le navigateur. Rien ne bouge à l'écran — le formulaire mesure les mêmes 820 pixels qu'avant —, c'est une reprise en main, pas un changement d'allure
- « Précédent » et « Suivant » ne flottent plus sous les cartes. Les deux boutons de navigation du tunnel étaient posés sur le fond de page, sans boîte, sous la dernière carte : ils étaient bien alignés, mais n'appartenaient visuellement à rien. Le formulaire devient donc un panneau unique — fond, arrondi et ombre d'une carte — et les cartes de chaque étape y deviennent des sections séparées par un filet, sans fond ni ombre propres. Les boutons en occupent le bas, à douze pixels des bords. Vérifié sur les cinq étapes : tous les blocs font la même largeur et partent du même pixel, y compris « Créer le bon » à la dernière, qui était jusqu'ici décalé de vingt pixels vers la droite sans que cela se voie. Sur téléphone, le pied se colle au bas de l'écran et va chercher les bords : il prend désormais la couleur du panneau et non celle de la page, sans quoi une bande plus sombre traversait le panneau. Les deux thèmes sont vérifiés
- La fiche d'un bon suit la même mise en page. Elle déroulait sept cartes sur toute la largeur, et sa rangée de boutons — Générer PDF, Modifier, Facturer, Retour à la liste — flottait en dessous sur le fond de page. Même colonne de 820 pixels centrée, même panneau unique : les sept cartes y deviennent des sections séparées d'un filet, et les boutons en occupent le bas. Mesuré sur un bon en cours : les huit blocs font 796 pixels et partent du même pixel, les deux cadres de signature tiennent dans le panneau sans en sortir, et sur un téléphone de 375 pixels rien ne déborde — ni du panneau, ni de la page. La règle du panneau est commune aux deux pages plutôt que recopiée : une seule définition à maintenir
- La configuration du bon dit son enregistrement par un toast. Le message de confirmation restait accroché en haut de la page, au-dessus d'un formulaire qui en fait trois écrans : on venait d'enregistrer en bas de page et la confirmation s'affichait hors de vue. Un toast vert apparaît maintenant en bas de l'écran et s'efface au bout de trois secondes et demie. Le texte reste écrit par le serveur : le script le ramasse, le dit en toast et retire le bloc — si le fichier ne se charge pas, le message reste affiché comme avant. Une confirmation ne doit pas dépendre d'un fichier
- Enregistrer la configuration du bon ne se rejoue plus. La page traitait l'envoi et s'affichait elle-même : l'écran obtenu était la réponse à un envoi, et actualiser ou revenir en arrière faisait repartir l'enregistrement. Après une écriture réussie, elle redirige désormais vers elle-même, comme la page d'outillage : l'historique ne contient plus que des pages consultables. Le message voyage sous forme de code et non de texte — l'adresse sert de clé dans une table de messages, si bien qu'un code inconnu n'affiche rien et qu'aucun contenu venu de l'adresse ne peut s'afficher. Vérifié : « ?ok=<script>… » ne produit ni message, ni balise. La relecture de la configuration qui suivait l'écriture disparaît avec ce changement : la page qui suit la relit de toute façon
- Le toast est devenu un outil commun, au lieu d'un bout de code enfermé dans le tunnel. Il était écrit dans le script des étapes du bon, et sa couleur rouge était dans la règle de base : tout toast du site aurait donc été rouge, y compris pour annoncer une réussite. La couleur passe aux variantes — rouge pour une erreur, vert pour une réussite — et le toast sort dans son propre fichier, que n'importe quelle page peut charger. Le tunnel s'en sert sans en dépendre : si le fichier manquait, l'étape continuerait de bloquer et la bulle du navigateur de s'afficher. Contraste du texte blanc mesuré sur les deux fonds : 9,7:1 sur le rouge, 7,9:1 sur le vert — le niveau AAA demande 7:1
- Tous les messages de réussite du site passent en toast. Ils s'accrochaient en haut de la page, au-dessus d'un contenu qui fait souvent plusieurs écrans : on venait d'agir en bas de page et la confirmation s'affichait hors de vue. Les vingt-huit pages concernées n'ont rien eu à changer — elles écrivaient déjà leur message, le toast le ramasse et le dit en bas de l'écran. Deux refus, et ils comptent. Un message qui contient un lien reste à sa place : un toast n'affiche que du texte, et « La retrouver » de la corbeille des notes y deviendrait un mot mort. Un message qui énonce un état durable y reste aussi — le résultat du diagnostic d'envoi d'email, qui se lit avec son journal, et la mention « ce document est verrouillé : toute correction passe par un avoir », qui est une règle et non une confirmation
- Le catalogue de facturation dit enfin ce qu'il vient de faire. Ajouter une catégorie, renommer une marque, mettre un article à la corbeille, en restaurer douze : la page revenait sans un mot, et rien ne distinguait une action réussie d'un bouton mal cliqué. Les vingt-deux actions annoncent désormais leur résultat, au singulier ou au pluriel selon ce qui a été coché — « Catégorie mise à la corbeille » ou « Catégories mises à la corbeille ». Comme ailleurs, le message voyage sous forme de code et l'adresse ne sert que de clé : un code inconnu n'affiche rien, et rien de ce qui est écrit dans l'adresse ne peut s'afficher
- Quarante-six actions qui ne disaient rien du tout disent maintenant ce qu'elles ont fait. Créer un site, ajouter un équipement, signer un bon, effacer une signature, accepter un devis, enregistrer un paiement, changer le statut d'un relevé ou d'un rendez-vous : toutes écrivaient en base, renvoyaient vers une page, et cette page revenait muette. Rien ne distinguait un enregistrement réussi d'un bouton mal cliqué. Le relevé a été fait sur tout le projet : cinquante et une redirections suivaient une écriture sans emporter le moindre message. Le libellé est écrit une fois pour tout le site et le message s'affiche depuis l'ossature commune : une action peut donc renvoyer vers n'importe quelle page sans que celle-ci ait à s'en occuper. Les ancres sont préservées — plusieurs de ces actions ramènent sur le bloc des signatures, et un code écrit après le dièse aurait été avalé. Trois redirections restent muettes à dessein : elles ne confirment rien, elles conduisent quelque part
- Terminer un bon se fait maintenant depuis le bas de la fiche. Il fallait remonter en tête de page et déplier le menu de statut pour une action qu'on fait sur chaque bon. Un bouton « Terminer » rejoint la rangée d'actions ; il envoie exactement ce qu'envoyait le menu, et passe donc par les mêmes contrôles — y compris la mise à jour du rendez-vous du planning, vérifiée : le bon passe à « terminé » et le rendez-vous à « fait ». Il disparaît une fois le bon terminé, et le menu de statut reste là pour revenir en arrière quand c'est permis. Au passage, « Retour à la liste » devient « Retour » et ouvre la rangée : la sortie se cherche à gauche, et le fil de retour en tête de page dit déjà où elle mène
- Et « Retour » revient d'où l'on vient. Il ramenait toujours à la liste des bons, même quand on arrivait depuis le planning ou depuis la fiche d'un site : il fallait refaire le chemin à l'envers. Il revient maintenant sur la page précédente. Le critère n'est pas le nombre de pages visitées mais d'où l'on vient : une fiche ouverte directement dans un onglet neuf compte déjà deux entrées d'historique, et le bouton renvoyait alors sur la page vide du navigateur — mesuré. Si l'on arrive d'ailleurs que du site, ou de nulle part, il mène à la liste comme avant. Et sans JavaScript, le lien reste un lien vers la liste
- Les boutons d'une rangée d'actions ont enfin tous la même hauteur. Un
<button> se mesure bord compris quand un lien se mesure sans : à marges identiques, le nouveau bouton sortait deux pixels plus court que ses voisins, et « Annuler » trois pixels plus court depuis toujours. Les cinq boutons de la fiche d'un bon font désormais 32 pixels et partent du même sommet, et la correction vaut pour toutes les rangées d'actions du site - L'abonnement a une échéance, et ce qu'elle ferme est précis. Jusqu'ici rien n'expirait : une société gardait le même accès qu'elle ait réglé ou non, et l'application n'avait aucun moyen de dire jusqu'à quand l'accès était payé. Une date d'échéance se pose désormais société par société. Le dernier jour est inclus — entier, pas écourté — et passé cette date les enregistrements sont suspendus : créer ou modifier un bon, un CERFA, une facture, un site, un équipement ou un rendez-vous attend le renouvellement, suppressions comprises. Rien n'est supprimé et rien n'est caché : la consultation, les PDF et les exports XLSX restent ouverts, et tout se retrouve en l'état. Une page explique la situation au lieu de laisser un formulaire échouer sans un mot : elle dit la date, ce qui reste possible, et à qui s'adresser — un technicien y lit de prévenir son administrateur, puisque le renouvellement ne lui revient pas
- Deux dates et non une, et c'est toute la raison de la seconde. La date de souscription fixe l'anniversaire qui remet les compteurs de documents à zéro ; l'échéance dit jusqu'à quand l'accès est payé. Faire avancer la première à chaque règlement aurait économisé une colonne et déplacé la remise à zéro des compteurs : un client qui paie trois semaines en retard aurait vu son année de quotas glisser d'autant, un peu plus à chaque renouvellement. Mesuré : poser une échéance, l'avancer ou la retirer ne déplace pas les bornes de la période d'un seul jour. Le renouvellement, lui, ramène le 29 février au 28, comme le fait déjà la date anniversaire — sans quoi l'échéance d'une année bissextile dériverait d'un jour pour toujours
- Aucune société existante n'est fermée par cette nouveauté. Vide, l'échéance veut dire « aucune restriction » : c'est l'état de toutes les sociétés créées avant cette colonne, et vider le champ rouvre l'écriture. Calculer une échéance à la migration, depuis la date de création du compte par exemple, aurait suspendu l'écriture pour tout le monde au premier chargement de page, sans que personne l'ait demandé. Une date illisible — saisie de travers, import raté — est traitée comme vide elle aussi : dans le doute on laisse travailler, parce que se tromper dans l'autre sens fermerait l'application à quelqu'un qui a payé
- Le contrôle est posé à un seul endroit, et non dans soixante-dix-sept pages. Toutes les pages qui enregistrent passent par la même vérification du jeton de sécurité, et celle qu'on écrira demain y passera aussi : c'est là que la règle s'applique. Un appel ajouté page par page aurait tenu le temps qu'on y pense, puis aurait laissé un trou — et un trou dans une restriction ne se voit pas, la page continue simplement de fonctionner. Trois pages en sont exemptées, et ce sont celles qui font entrer et sortir : se déconnecter, approuver son poste, valider son code à six chiffres. Les fermer aurait enfermé dehors quelqu'un qui doit justement pouvoir entrer consulter et exporter
- On est prévenu avant que l'abonnement n'arrive à terme, et pas le jour où l'on est bloqué. Un bandeau apparaît trente jours avant l'échéance et passe au rouge dans la dernière semaine : « votre abonnement arrive à échéance dans 12 jours, le 16/10/2026 ». Trente jours, parce qu'une facture annuelle ne se fait pas passer dans la journée dans une petite entreprise. Il s'affiche sur l'accueil et en tête des pages qui créent un document — là où l'on peut encore agir, et pas partout : un bandeau sur chaque écran ne se lit plus. Le dernier jour, il le dit en clair plutôt qu'en nombre de jours. Et il ne disparaît pas une fois l'échéance passée : c'est là que la phrase compte le plus, elle dit alors ce qui est suspendu et ce qui reste accessible. Un technicien le voit aussi, mais sans le lien vers le suivi, qui lui répondrait « accès refusé » : on lui dit de prévenir son administrateur. Le super-administrateur, lui, n'en reçoit pas — il n'est pas arrêté par les échéances, l'avertir serait faux
- La page Suivi quotas distingue enfin les deux dates de l'abonnement. Elles se confondent facilement : la date anniversaire remet les compteurs de documents à zéro, l'échéance ferme les enregistrements. Elles sont désormais côte à côte, avec le nombre de jours restants, et la page le dit en une phrase pour qu'on ne cherche pas laquelle fait quoi. C'est aussi là que mène le bandeau d'alerte : un lien « Voir mon abonnement » qui aurait abouti sur une page ne parlant que de plafonds aurait laissé chercher
- Le mois d'essai existe vraiment, et plus seulement sur la page des tarifs. Il était promis partout — accueil, page Tarifs, formulaire d'inscription, et jusque dans les données structurées lues par les moteurs de recherche — et rien ne l'appliquait : un compte créé gardait l'accès sans limite de date, indéfiniment. La date de fin est désormais posée à l'inscription, un mois par le calendrier et non trente jours : une inscription le 31 janvier arrive à terme le 28 février, le 29 les années bissextiles, plutôt que de déborder sur mars — sans quoi la date dériverait d'un mois à l'autre. Pendant l'essai, toutes les fonctionnalités de l'offre choisie sont ouvertes, comme annoncé
- Et aucune société existante n'est fermée par cette nouveauté. Leur date d'essai reste vide, et vide veut dire « aucun essai en cours », donc aucune restriction. Leur recalculer un essai depuis leur date de création aurait suspendu l'écriture pour tout le monde d'un seul coup, au premier chargement de page
- C'est la plus tardive des deux dates qui ouvre l'accès, l'essai ou l'abonnement. Un essai en cours n'est pas annulé par un abonnement terminé avant lui, et avoir payé n'est jamais moins bien qu'être en essai. Onze combinaisons vérifiées, dans les deux sens
- Les écrans ne confondent pas les deux, et c'est tout l'intérêt de la distinction. Après un essai, on propose de choisir une formule ; après un abonnement, de le renouveler. Demander de renouveler à quelqu'un qui n'a jamais payé l'enverrait chercher une facture qui n'existe pas. Le bandeau d'alerte, l'écran de refus, la page Suivi quotas et la fiche de la société disent chacun la bonne phrase selon la source — y compris le lien, qui mène aux formules pendant un essai et au suivi pour un abonnement
- L'essai a ses propres seuils d'alerte : sept jours, puis rouge à deux. Les trente jours de l'abonnement n'ont pas de sens sur un essai d'un mois — ce serait un bandeau dès le premier jour, donc un bandeau qu'on ne lit plus
- Un essai se prolonge depuis la fiche de la société. « Laissez-moi quinze jours de plus » est une demande normale ; sans ce champ il aurait fallu inventer une fausse échéance d'abonnement pour y répondre. La fiche affiche les deux dates côte à côte et dit laquelle décide de l'accès
- La reconduite part du jour du règlement. À la réception d'un paiement, l'abonnement court douze mois à compter de ce jour-là, et non de l'échéance précédente. Les deux règles reviennent au même tant que le client paie à temps ; dès qu'il tarde, partir de l'ancienne échéance lui ferait payer douze mois pour le temps qui reste — huit mois d'interruption donneraient quatre mois d'accès. Un bouton dans la fiche de la société applique la règle et porte la date qu'il va poser, plutôt qu'une date à retaper : le 29 février y est ramené au 28 sans que personne ait à y penser. La date anniversaire des quotas, elle, ne bouge pas — c'est un autre champ, et il se modifie à part
- Une page dit enfin ce qu'est un carnet supplémentaire, et ce qu'il vous en reste. Jusqu'ici, un plafond atteint renvoyait vers « demandez-le-nous » : un formulaire de contact, un échange de courriels, et le chantier qui attend. La page montre les trois carnets, ce que chacun ajoute, combien vous en avez déjà acquis et combien reste utilisable, et où vous en êtes du plafond de l'offre. Les écrans qui parlaient du carnet y mènent désormais — l'écran de plafond atteint et la page Suivi quotas
- Le paiement en ligne des carnets est posé, et il reste éteint tant qu'aucune clé n'est déclarée. L'application ne contient aucune clé : elles se déclarent hors de la racine web, à côté des réglages de messagerie. Sans elles — c'est l'état actuel — la page affiche le carnet et renvoie vers le contact, exactement comme avant : rien ne casse et rien ne ment. Un prix suffit ensuite à ouvrir la vente d'un carnet
- Un même paiement ne peut pas créditer deux carnets. Un prestataire de paiement réenvoie ses notifications tant qu'il n'a pas reçu d'accusé : c'est son fonctionnement normal, et deux envois arrivent parfois à quelques secondes d'intervalle. Un contrôle écrit en PHP — « si cette référence existe déjà, ne rien faire » — laisse passer les deux quand ils se croisent entre la lecture et l'écriture. C'est donc la base de données qui tient l'unicité, par un index : elle refuse le second, et c'est ce refus qu'on accuse réception. Vérifié en rejouant trois fois la même notification : une seule ligne
- L'abonnement se renouvelle en ligne, en un paiement unique de douze mois. Jusqu'ici, la fin d'un essai ou d'un abonnement fermait les enregistrements et renvoyait vers le formulaire de contact : un échange de courriels, une facture à part, et le chantier qui attend. Un écran « Renouveler l'abonnement » montre désormais la formule de la société, son prix, la date jusqu'à laquelle le règlement porterait, et un bouton pour payer. Ce n'est pas un abonnement reconduit : aucun prélèvement automatique n'est mis en place, et chaque période demande votre accord — c'est ce que disent les conditions générales de vente, et un prélèvement récurrent les aurait contredites
- L'échéance court douze mois à partir du plus tard des deux : aujourd'hui, ou l'échéance déjà acquise. Payer en retard ne fait pas payer le temps écoulé — la base est alors le jour du règlement, comme pour la reconduite manuelle. Et payer en avance n'a jamais raccourci l'accès : une société couverte jusqu'en mai 2028 qui renouvelle y ajoute douze mois, au lieu d'être ramenée à un an. Deux règlements aboutis — un prélèvement lent doublé d'un paiement par carte — donnent bien vingt-quatre mois. La date est annoncée sur l'écran avant de payer, pas découverte après, et l'écriture refuse par construction toute date antérieure à celle en place
- Une société échue peut payer — et c'est tout le point. Le contrôle d'échéance ferme les enregistrements : sans exception, il aurait empêché de payer précisément ceux qui veulent se débloquer. Le renouvellement est la seule action qu'une société échue peut mener, et le jeton de sécurité reste vérifié. L'achat d'un carnet, lui, reste fermé par l'échéance : un carnet relève un plafond, il ne rouvre pas une écriture. Les deux comportements sont vérifiés côte à côte
- Un même paiement ne peut pas reporter deux fois. Un prestataire réenvoie ses notifications tant qu'il n'a pas d'accusé : sans garde-fou, chaque renvoi aurait ajouté douze mois, et une échéance repoussée de vingt-quatre mois ne se voit pas — elle se découvre un an plus tard. Un registre des paiements porte un index unique sur la référence, et c'est la base qui refuse le second, pas le code qui essaie. La ligne de registre et la nouvelle date sont écrites ensemble ou pas du tout
- La formule facturée est lue en base, jamais reçue du formulaire. La recevoir du navigateur aurait laissé payer le tarif Flexible pour obtenir douze mois de Pro. Les offres sur devis ne sont pas payables en ligne : elles renvoient au contact, parce qu'elles n'ont pas de prix au catalogue
- Un règlement lève la suspension d'une société. Une société suspendue pouvait déjà atteindre l'écran de renouvellement et payer — mais elle restait suspendue après avoir réglé : elle payait pour rien. Le règlement la réouvre désormais, et le registre des paiements en porte la trace : une suspension a pu être posée pour autre chose qu'un impayé, et il faut pouvoir constater qu'un paiement l'a levée — et la reposer s'il le faut
- Une facture est demandée au prestataire pour chaque renouvellement : encaisser en ligne et facturer encore à la main aurait ramené le travail qu'on venait d'automatiser
- Un remboursement, ou une contestation perdue, revient sur ce qu'un règlement avait porté. Jusqu'ici le paiement en ligne ne savait qu'ajouter : rembourser un abonnement laissait l'échéance avancée, et rembourser un carnet laissait son solde acquis. L'argent repartait, le service restait. L'échéance revient désormais exactement là où elle était — et non pas « moins douze mois », ce qui aurait été faux dès qu'un client paie en retard, puisque son échéance se calcule alors à partir du jour du règlement. Une société qui n'avait aucune échéance en ressort sans échéance, plutôt qu'avec une date inventée. Un carnet remboursé est annulé et reste visible dans l'historique. Et si c'est ce règlement-là qui avait levé une suspension, la suspension est reposée — mais seulement celui-là : une société suspendue depuis pour une autre raison n'est pas réouverte, et une société à jour n'est pas fermée par un remboursement
- On n'agit que sur de l'argent réellement parti, et c'est tout le sujet. Le prestataire annonce un remboursement dès sa création, pas quand la banque l'a exécuté — et un remboursement peut échouer jusqu'à trente jours plus tard, les fonds revenant alors chez nous. Défaire à l'annonce aurait laissé une échéance en arrière pour un remboursement qui n'a jamais abouti. De même, une contestation peut être gagnée : des fonds retirés reviennent seuls, et agir à l'ouverture aurait puni un client qui avait raison. On attend donc l'état « abouti » pour un remboursement, et la clôture pour une contestation, en ne défaisant que si elle est perdue. Tous les autres signaux — remboursement en attente, contestation ouverte, fonds retirés, fonds rendus, contestation gagnée — sont enregistrés au journal sans rien toucher : les avaler en silence rendrait un remboursement aussi muet qu'un paiement réussi
- L'ordre d'arrivée des notifications ne compte plus. Le prestataire ne le garantit pas et réessaie pendant trois jours : un remboursement peut donc arriver avant le règlement qu'il doit défaire. On enregistre alors l'annulation sur le paiement lui-même, et le règlement, en arrivant, se défait tout seul en trouvant cette trace. Sans cela douze mois étaient accordés sur un paiement rendu, sans la moindre anomalie visible. C'est la base qui tient cette garantie, par un index unique, et non un contrôle écrit dans le code : deux notifications qui se croisent passeraient toutes les deux un « si ça existe déjà » entre la lecture et l'écriture
- Une échéance déplacée entre-temps n'est jamais retranchée à l'aveugle. Si un second règlement, ou une reconduite à la main, a repoussé l'échéance depuis le paiement qu'on rembourse, la ramener en arrière volerait des mois réellement payés — et rien ne dit lequel des deux rendre. Le règlement est alors marqué annulé, l'échéance laissée en place, et le cas porté au registre pour qu'un humain tranche
- Le registre des règlements d'abonnement s'affiche enfin. Il s'écrivait depuis le 6 octobre et n'apparaissait nulle part : on y notait qu'un règlement avait levé une suspension, et personne ne pouvait le lire sans ouvrir le fichier de la base. L'argument qui rendait cette levée acceptable — « elle est tracée » — était donc à moitié faux. La fiche société montre maintenant chaque règlement, son montant, la date jusqu'à laquelle il portait, s'il a levé une suspension, et s'il a été annulé — avec l'échéance à laquelle on est revenu. Du même coup, le garde-fou de la fiche nomme la cause quand les dates ont bougé : annoncer « un règlement a pu être enregistré » après une annulation était le contraire de la vérité, et poussait à re-donner douze mois à la main
- Annuler un carnet ne fait plus remonter le solde. Défaut de fond, et il existait déjà : le calcul qui détermine à partir de quand compter un dépassement ignorait les carnets annulés. Annuler le plus ancien effaçait donc le dépassement qu'il avait couvert, et le solde augmentait — le client récupérait des documents qu'il n'avait pas payés. Mesuré : plafond 800 bons, un carnet de 800 sur une période où 860 bons ont été produits, puis un second carnet ; annuler le premier faisait passer le solde de 1 540 à 800 au lieu de 740. Le bouton d'annulation manuelle le déclenchait déjà ; un remboursement allait le tirer automatiquement. La question posée est « à partir de quand un dépassement a-t-il pu exister », et un carnet annulé après coup ne change pas cette date
- L'écran des tarifs dit enfin si le paiement encaisse pour de vrai. L'application savait depuis l'origine distinguer une clé de test d'une clé réelle, et ne l'affichait nulle part : pour savoir si la production débitait quelqu'un, il fallait ouvrir par FTP un fichier situé hors de la racine web. Le jour d'une bascule, c'est précisément le renseignement qui manque. Un encart en tête de l'écran des tarifs — réservé au Superadmin, comme le reste de cette page — annonce maintenant « mode réel », « mode test » ou « aucune clé déclarée », dit si le secret de signature est posé, et donne l'adresse exacte à déclarer chez le prestataire. Il est placé avant les prix, parce que la première question devant un tarif est de savoir si quelqu'un est réellement débité. L'état le plus traître a son message à lui : une clé déclarée sans son secret laisse croire la vente ouverte alors que toutes les notifications seront refusées et qu'aucun achat ne sera crédité
- Les clés restreintes sont acceptées, et c'est désormais ce que le prestataire recommande. Il déconseille les clés secrètes pour tout nouvel usage et conseille d'y migrer : une clé restreinte ne porte que les droits qu'on lui accorde — ici l'écriture des sessions de paiement et des factures — si bien qu'une clé dérobée ne permet pas de vider le compte. L'application ne reconnaissait que
sk_, et une clé restreinte éteignait le paiement en entier : webhook répondant « indisponible » à toutes les notifications, boutons d'achat disparus, renouvellement d'abonnement impossible. Rien ne débitait à tort, mais la fonctionnalité était hors service — et l'écran annonçait « aucune clé déclarée » alors qu'une clé était bien là, ce qui envoyait chercher au mauvais endroit. Les quatre préfixes rk_test_, rk_live_, sk_test_ et sk_live_ sont maintenant admis, et c'est toujours le préfixe qui dit le mode - Une clé non reconnue ne se fait plus passer pour une clé absente. « Aucune clé déclarée » et « clé non reconnue » sont deux pannes différentes : la première envoie vérifier que le fichier de configuration est bien en place, la seconde vérifier ce qu'on a copié dedans. L'écran les distingue, et nomme les quatre préfixes admis. Les trois confusions qui arrivent vraiment — une clé publiable mise à la place de la clé serveur, le secret de signature copié dans le mauvais champ, et un format que le prestataire a introduit depuis comme les clés d'organisation — éteignent toujours le paiement, ce qui est la bonne façon d'échouer, mais le disent au lieu de laisser chercher
- Aucune clé, aucun secret n'est imprimé à l'écran ni dans le journal. Le mode se déduit du préfixe de la clé, et le secret ne se montre que par « configuré » ou « absent ». L'écran est réservé au Superadmin, mais une valeur affichée se retrouve dans un cache de navigateur, une capture ou un historique — et un journal reste chez l'hébergeur. La règle est éprouvée dans les deux modes, sur toute la page et pas seulement sur l'encart
- Deux écritures simultanées attendent leur tour au lieu d'échouer. SQLite n'autorise qu'un écrivain à la fois, et la base n'avait aucun délai d'attente : une seconde écriture au même instant ne patientait pas, elle renvoyait « base verrouillée » et la page tombait. Deux notifications de paiement arrivent parfois à quelques millisecondes d'intervalle — c'est le fonctionnement normal du prestataire — et deux techniciens qui enregistrent en même temps suffisaient aussi. Cinq secondes d'attente désormais : bien plus que n'importe quelle écriture de l'application, bien moins que la limite d'exécution. Le réglage ne change rien au résultat d'une écriture, il ne fait qu'attendre son tour
- La fiche d'une société n'efface plus une échéance qui vient d'être payée. Depuis que le renouvellement est en ligne, une notification de paiement peut avancer l'échéance pendant qu'un Superadmin a la fiche ouverte : l'enregistrer reposait alors la date affichée à l'ouverture, et douze mois réglés disparaissaient sans un mot. La fiche renvoie maintenant l'état qu'elle a montré et refuse d'écrire si la base a changé depuis — en le disant, pour qu'on recharge plutôt que de recommencer à l'aveugle. Elle ne tranche pas à votre place entre les deux dates : c'est à vous de choisir, une fois la nouvelle sous les yeux. Même mécanique que l'écran des tarifs, qui refuse déjà d'écraser l'enregistrement d'un autre
- Changer d'agence n'est plus bloqué par l'échéance d'une agence. Un administrateur de groupe entré dans une agence échue y restait enfermé : le contrôle d'échéance fermait la bascule, c'est-à-dire sa seule sortie, et il ne pouvait plus revenir sur une agence à jour. Or changer d'agence ne crée rien et ne modifie rien — seul le périmètre de consultation change. Le jeton de sécurité, lui, reste vérifié : il est ce qui sépare la bascule d'une requête forgée. Et le périmètre tient toujours : une agence hors de celles qu'on vous a confiées ne s'ouvre pas davantage qu'avant
- Et la clause de prix des conditions générales de vente dit enfin la vérité. Elle annonçait qu'aucun paiement en ligne n'était réalisé par l'application — ce qui avait cessé d'être exact dès les carnets. Elle décrit maintenant le paiement en ligne, et maintient ce qui reste vrai : aucun prélèvement automatique, chaque paiement résultant d'une action du client. La version des conditions change avec elles : c'est un changement de fond, et le numéro de version est ce qui permet de retrouver plus tard le texte qu'un client a accepté. Aucune réacceptation n'a été demandée — à cette date aucune société réelle n'était inscrite, et il n'y avait donc aucune acceptation à renouveler ; le jour où ce sera le cas, la colonne prévue pour cela existe déjà. La version et la date affichées sont désormais tenues de désigner le même jour : bumper l'une sans l'autre montrait une date au client et en enregistrait une autre
- Un règlement qui se dénoue plus tard crédite enfin le carnet. Par carte, le paiement est immédiat : une notification, un carnet. Mais un prélèvement bancaire — SEPA, et aussi SOFORT ou Multibanco — n'apporte pas l'argent le jour même, et le prestataire envoie alors deux notifications : la première dit « séance terminée, mais pas encore payée », la seconde arrive des heures ou des jours plus tard, quand les fonds sont confirmés. L'application ne traitait que la première, et la refusait à juste titre. La seconde repartait en « je n'en fais rien » : le client était débité et le carnet n'arrivait jamais. Et comme les deux notifications recevaient un accusé, le prestataire cessait de réessayer — aucune erreur, aucune trace, aucune alerte, il fallait qu'un humain s'en aperçoive. La seconde notification est désormais acceptée, et c'est elle qui porte le carnet. Les deux portent la même session, donc la même référence : l'index qui interdit le double crédit continue de s'appliquer, dans quelque ordre qu'elles arrivent. Vérifié en rejouant la séquence réelle, notification par notification, réenvois compris
- Un prélèvement rejeté ne passe plus sous silence. Rien n'est à défaire — rien n'avait été porté — mais la notification d'échec part désormais au journal du serveur. Sans elle, un prélèvement refusé était aussi muet qu'un prélèvement réussi, et personne ne pouvait dire pourquoi un client n'avait pas eu son carnet
- Et le message affiché après le paiement ne promet plus l'impossible. Il annonçait « le carnet est crédité d'ici un instant » : exact pour une carte, faux pour un prélèvement, où il faut quelques jours. Cette page ne peut pas savoir lequel s'applique — le retour du navigateur ne dit rien du mode de règlement, et aller le demander au prestataire coûterait un appel réseau à chaque affichage. La phrase couvre donc les deux cas, plutôt que de laisser quelqu'un attendre devant un écran qui ne bougera pas
- Et seule une notification signée crédite quoi que ce soit. L'adresse qui reçoit les paiements est publique et sans session : la signature y tient lieu d'authentification. Elle est vérifiée en temps constant, et horodatée — une notification valable captée une fois ne doit pas pouvoir resservir indéfiniment, car sa signature, elle, reste bonne pour toujours. Une session passée par « complétée » mais non réglée ne crédite rien non plus : certains moyens de paiement se dénouent plus tard. Enfin, le volume crédité vient du catalogue et jamais du message reçu — le montant payé ne dicte pas la quantité
- Les carnets s'achètent en ligne, et le prix est enfin dit. 9 € HT les 100 bons d'intervention, 9 € les 100 CERFA, 10 € les 200 factures. La page des carnets affiche les deux montants — hors taxes, parce que c'est ainsi que tout le site annonce ses prix, et toutes taxes, parce que c'est ce qui sera débité : n'en montrer qu'un seul, c'est une surprise au moment de payer. Le taux de TVA tient en un réglage ; mis à zéro pour une entreprise en franchise de base, l'écran cesse d'en parler
- Le départ vers le paiement ne crédite rien, et c'est tout l'intérêt. La page demande une session au prestataire et y envoie le navigateur ; le carnet n'arrive que par la notification signée. Créditer sur le retour du navigateur, ce serait offrir un carnet à qui sait taper l'adresse de retour. Le montant et la quantité sont calculés chez nous et jamais reçus de l'extérieur, la société est lue dans la session et non dans le formulaire, et l'adresse de retour part de l'hôte canonique du site plutôt que de l'en-tête de la requête
- On ne redirige que vers le prestataire. L'adresse de paiement vient d'un service extérieur : sans contrôle, une réponse altérée ferait de cette page une redirection ouverte, qui enverrait des utilisateurs connectés là où quelqu'un d'autre le décide. Seules une adresse chiffrée et un domaine du prestataire sont acceptés — un hôte qui imite le début ou le milieu du nom est refusé
- Le certificat du prestataire n'est jamais pris sur parole. L'appel de paiement vérifie le certificat, et si le transport habituel n'y parvient pas — un hébergement sans magasin de certificats, cela arrive — un second transport prend le relais, aussi exigeant. On change de source de confiance, jamais de niveau d'exigence
- Le prix des carnets se change depuis l'écran des tarifs, et non plus dans le code. Il était écrit dans un fichier du projet : changer 9 € en 12 € demandait de modifier du code et de le redéployer, c'est-à-dire d'attendre quelqu'un. Les trois prix rejoignent ceux des formules, sous Gestion > Tarifs et promotions, avec la même mécanique éprouvée — écriture d'un bloc, verrou, et refus si un autre Superadmin a enregistré entre-temps. Le récapitulatif montre le montant — et le toutes taxes à côté, si une TVA s'applique — puis dit, pour chaque carnet, laquelle des quatre situations s'applique : en vente, prix sur demande, paiement en ligne non configuré, ou stockage illisible. Seul un Superadmin y accède, et c'est le prix enregistré qui part chez le prestataire : l'écran de l'acheteur et le montant débité viennent de la même lecture du fichier, pour qu'un enregistrement fait pendant un achat ne puisse pas faire autoriser un prix et débiter l'autre
- Un seul taux de TVA, pour tout ce que FrigoDiag vend. Abonnements et carnets : c'est l'assujettissement de l'entreprise qui décide, pas le produit, et deux réglages séparés auraient fini par afficher deux taux sur une même facture. Il se règle dans le même écran, sous « TVA applicable à mes ventes », avec l'état en clair sous le champ. À ne pas confondre avec la franchise de TVA de la facturation, qui se règle par société pour les factures que vos clients émettent aux leurs : les deux n'ont rien à voir
- FrigoDiag relève de la franchise en base, et le site le dit maintenant. Article 293 B du CGI : aucune TVA ne s'ajoute. Le taux est donc à 0, et c'est tout le site qui suit — le mot « HT » disparaît derrière les prix, sur l'accueil, la page Tarifs, le comparatif, l'inscription, la page SAV, l'écran d'achat des carnets et jusque dans les titres, les descriptions et les balises de partage lues par les moteurs de recherche. « 179 € HT » laissait attendre un supplément qui ne viendra jamais : c'était faux, et au désavantage de tout le monde. La mention « TVA non applicable, article 293 B du CGI » apparaît en regard des prix — accueil, page Tarifs, et page d'inscription, là où l'on choisit sa formule —, et la clause de prix des conditions générales de vente la porte à la place de « hors taxes (HT) ». Sur l'inscription, elle est posée dans l'aide du choix de formule et non dans le panneau de présentation : celui-ci est masqué sous 640 pixels, elle y aurait disparu chez la plupart de ceux qui s'inscrivent
- Les prix des concurrents, eux, restent hors taxes. Sur la page de comparaison, la pile de logiciels d'en face garde son « HT » : ces éditeurs sont assujettis, et effacer leur mention aurait écrit un prix faux chez autrui. Cinq lignes concernées, vérifiées une à une — et une mutation du harnais veille à ce que personne ne les « corrige » par la suite
- Un taux déjà enregistré n'est pas perdu dans l'opération. Le réglage ne concernait que les carnets et portait un autre nom : le fichier de tarifs est repris au vol, et un taux de 20 % saisi avant reste à 20 %. Sans cette reprise, il aurait été remplacé par la valeur par défaut, et un site qui facturait la TVA aurait cessé de l'annoncer du seul fait d'une mise à jour de code. Au premier enregistrement, le fichier est réécrit au format courant et l'ancienne clé disparaît pour de bon
- Le champ reste là pour le jour où ce statut changerait, et un taux enregistré depuis l'écran l'emporte toujours sur la valeur par défaut du code
- Mettre 0 retire un carnet de la vente, sans le faire disparaître. Il reste visible avec la mention « Prix sur demande » et un renvoi vers le contact — le chemin qui existait avant le paiement en ligne. C'est la seule valeur où un prix bas ne doit surtout pas devenir un prix payé, et la seule qui échappe au plancher ci-dessous
- Un prix trop faible pour être encaissé est refusé à la saisie, et non devant le client. Le paiement en ligne exige au moins 0,50 € toutes taxes : un carnet à 0,30 € aurait affiché « en vente » et un bouton dont chaque clic échoue. Le contrôle porte sur le montant toutes taxes, puisque c'est lui qui part : 0,42 € passe à 20 % de TVA et serait refusé en franchise de base, et le message le dit plutôt que de laisser chercher
- Ajouter un carnet au catalogue ne bloque plus l'écran des tarifs. Un prix absent du fichier enregistré n'est pas une avarie : c'est l'état normal d'un site dont les tarifs ont été réglés avant que ce carnet n'existe. Il reprend le prix du catalogue et reste vendable. Le déclarer illisible aurait interdit tout enregistrement — des prix devenus immodifiables pour avoir enrichi le catalogue, sans aucune issue par l'interface. Les prix des formules, eux, n'ont pas de catalogue où puiser : une clé qui leur manque reste une avarie
- Un fichier de tarifs illisible ne vend plus rien, et le dit. Retomber sur le prix écrit dans le code reviendrait à encaisser un montant que personne ne voit dans l'écran des tarifs — et peut-être l'ancien, après une hausse. Les carnets repassent donc en « prix sur demande », et la panne part au journal du serveur au lieu de rester muette : jusqu'ici, seul un Superadmin ouvrant l'écran des tarifs pouvait s'en apercevoir. Cet écran, lui, montre la valeur de secours et nomme la panne, au lieu de laisser croire à un prix volontairement retiré
- Un montant se tape comme il s'affiche. « 99 999,99 » — avec l'espace des milliers, insécable comprise — était refusé, et le message accusait les décimales : le plus grand prix permis était donc intapable, et le champ tronquait même la saisie avant qu'elle ne parte. Les espaces sont maintenant retirées avant lecture, pour les carnets comme pour les formules
- Le bouton d'une rangée d'actions était redevenu plus court que ses voisins. Un
<button> et un <a> ne se mesurent pas pareil : à rembourrage égal, le premier tombe deux pixels plus bas. Un plancher de hauteur les égalisait ; il avait été ramené de 32 à 25 pixels, en dessous de la hauteur réelle des liens, et ne servait donc plus à rien. Mesuré sur la fiche d'un bon en cours : « Terminer » faisait 30 pixels face aux 32 de « Générer PDF », « Modifier » et « Facturer », et partait un pixel plus bas. Les quatre font de nouveau 32 et partent du même sommet - Le pied collé du tunnel dépassait du panneau de quatre pixels. Sur téléphone, ce pied déborde volontairement de chaque côté pour aller chercher les bords, et son débordement répond exactement à la marge intérieure du panneau. Le panneau est passé de 12 à 8 pixels sans que le pied suive : mesuré, le panneau allait de 4 à 371 et le pied de 0 à 375. Les deux coïncident de nouveau
- La liste de tous les sites ne s'alignait plus sur l'arbre des dossiers. Elle gardait un retrait de 18 pixels alors que le panneau qui l'enveloppe porte désormais le sien : mesuré, l'arbre allait de 220 à 1260 et la liste de 238 à 1242. Le retrait est retombé à zéro, et les deux coïncident au pixel sur un écran de bureau comme sur un téléphone de 375 pixels
Corrections
- La fiche d'une société n'enregistre plus « par défaut ». Elle porte désormais quatre formulaires — la fiche, le crédit d'un carnet, son annulation, la bascule actif/inactif. L'enregistrement de la fiche était la branche atteinte quand aucune autre n'avait répondu : une requête portant par accident un champ d'un autre formulaire créditait un carnet au lieu d'enregistrer la société, sans que rien ne le dise. Chaque formulaire s'annonce maintenant, et une requête qui n'en désigne aucun ne touche à rien
- Enregistrer une société ne peut plus répondre par une page blanche. Les fichiers du site sont déployés un par un, et l'ordre n'est pas garanti : une page peut arriver avant la migration dont elle a besoin. C'est déjà arrivé en ligne pour les carnets. La fiche d'une société écrit maintenant dans une colonne récente ; si elle manque, l'écran dit quel fichier monter et confirme que rien n'a été enregistré, au lieu d'une erreur 500 muette — et la société reste intacte, vérifié. Dans cet état, personne d'autre n'est gêné : une colonne d'échéance absente se lit comme « aucune échéance », donc aucune restriction, et non comme une échéance dépassée qui aurait fermé l'écriture à tout le monde
- Une société en offre Flexible redevenait Pro toute seule. Une migration de schéma, écrite lors du retrait de l'ancien palier gratuit, ramenait en Pro tout plan absent de la liste « pro, entreprise » — et « flexible » n'y figurait pas. Tant que les deux offres donnaient exactement les mêmes droits, cela ne se voyait pas. Depuis que les quotas les séparent, cela aurait offert le double de documents à un client qui paie Flexible, sur toute base n'ayant pas encore rejoué ses migrations. Le palier retiré bascule toujours en Pro, lui : c'était le but
- Le n° BSFF ne bloque plus l'enregistrement d'un CERFA. Dès qu'une quantité de fluide récupéré était saisie, les trois formulaires refusaient d'enregistrer tant que le numéro de bordereau restait vide. La notice du CERFA le demande « si connu », et sur le terrain il ne l'est presque jamais : le bordereau est établi plus tard, au départ de la bouteille, et couvre plusieurs interventions à la fois. Un technicien qui récupérait du fluide ne pouvait donc pas clore sa fiche. Le champ reste à sa place et dit maintenant quand le remplir
- Générer un PDF ne signe plus le document. Trois éditions — le contrat d'assemblage, le bon d'intervention, le rapport de relevé — apposaient la signature enregistrée au profil quand le document n'en portait aucune. L'écran affichait « Non signé », le statut restait « Brouillon », et le PDF sortait pourtant signé. Sans signature réelle, le cadre prévu par le formulaire papier reste désormais vide, à remplir à la main
- Le statut d'un contrat d'assemblage suit ses deux signatures. Il passait à « Signé » dès la signature de l'installateur, sans regarder celle de l'acquéreur, et effacer une signature ne le faisait pas redescendre. Sur les contrats déjà enregistrés, un seul était réellement signé des deux côtés — et c'était justement le seul affiché en « Brouillon ». Le CERFA 15498*02 porte deux signatures ; le statut le dit enfin
- Chaque signature garde sa date. Un contrat d'assemblage ne conservait que sa date de création, qu'une simple modification écrasait. La date d'engagement figure maintenant sous chaque paraphe, à l'écran comme sur le document imprimé. Les contrats signés avant cette version restent sans date : l'information n'existait pas, et l'inventer aurait été pire
- Un document archivé ne bouge plus. Le verrou n'existait qu'à l'écran : il masquait les boutons, mais un envoi direct effaçait quand même les signatures. Signer un bon d'intervention archivé le faisait même ressortir de l'archive
- « Apposer ma signature » appose bien la sienne. Le bouton collait le paraphe de la personne qui avait créé le document, pas de celle qui cliquait — cas courant quand un responsable prépare le bon et qu'un technicien le signe sur place. Le nom imprimé suit désormais le paraphe, pour que les deux s'accordent toujours
- Signer à la place de l'installateur demande l'attestation d'aptitude F-Gas, comme la création l'exigeait déjà. Le bloc de signature disparaît pour qui ne l'a pas, au lieu de conduire à un refus
- Modifier un bon d'intervention n'efface plus ce qu'on ne voit pas. Une section désactivée dans la configuration — le fluide, la durée, les pièces remplacées — n'affiche aucun champ : ouvrir « Modifier » puis enregistrer suffisait à vider la valeur enregistrée, sans que personne ait vu ce champ. Même chose pour un champ personnalisé retiré de la configuration, dont les réponses déjà données disparaissaient
- Le type d'intervention s'effaçait tout seul. « Contrôle d'étanchéité » est le seul des sept à contenir une apostrophe, et il n'était jamais retenu dans la liste déroulante : enregistrer sans rien toucher le remplaçait par rien. C'est le type que le règlement encadre le plus
- Le bon d'intervention nomme enfin l'équipement. Un bon établi depuis un site et son équipement n'enregistrait que la référence : ni la fiche, ni le PDF remis au client, ni l'export ne disaient sur quoi on était intervenu. Les bons déjà établis ont été complétés
- L'historique des contrats d'assemblage est gardé par la même permission que les autres historiques CERFA, et un technicien n'y voit que ses propres documents — comme sur son tableau de bord, qui le faisait déjà
- La recherche des relevés rapides ne se défaisait plus toute seule. Changer de page ou trier une colonne annulait le filtre en silence, pendant que le champ de recherche et le compteur continuaient d'affirmer qu'il était actif
- Les accents. « Froid négatif » s'écrivait sans accent dans les listes d'équipement, et les types d'intervention s'affichaient en clé brute — « Maintenance preventive ». Les valeurs déjà enregistrées ont été reprises
- La recherche de la page Documents ne trouvait pas tous les sites. Elle ne reconnaissait que ceux rangés dans un dossier : une société qui n'en avait créé aucun tapait dans le vide — les sites restaient tous affichés, le compteur annonçait « 0 site », et la liste à plat ne filtrait rien non plus. Le bouton A→Z les ignorait pareillement. Il classait au passage sur le premier mot du nom seulement, si bien que deux « Boulangerie … » ne se départageaient jamais, dans un sens comme dans l'autre
- La liste des sites de la page Documents ignorait le tri des colonnes. Classer par nombre de documents réordonnait bien le tableau, mais la première page continuait d'afficher les lignes de l'ordre précédent : sur vingt et un sites, trois des quinze affichées n'avaient rien à y faire. Cette page réimplémentait sa propre pagination ; elle prend maintenant celle du reste de l'application, qui nomme ses boutons pour les lecteurs d'écran et resserre la barre au-delà de sept pages. La page Sites avait le même défaut par un autre chemin — son filtre n'était simplement plus rejoué une fois le tableau reclassé : sur dix-sept sites, quatre des dix lignes affichées n'étaient pas celles du classement demandé
- Le droit « Voir l'historique des CERFA » était sans effet. Retiré à un compte, il masquait bien le tableau du tableau de bord, mais l'historique restait lisible par l'écran dédié, par la fiche de chaque site et par le fil d'activité récente. Les trois le respectent désormais. Créer un CERFA, le consulter, le faire signer et l'imprimer restent ouverts à qui a le plan et l'attestation : ce droit ne gouverne que la lecture de l'historique
- La liste des équipements ne s'ouvrait pas en grand sur une panne. Si la lecture des dossiers d'un technicien échouait, l'application le lisait comme « affecté à aucun dossier » et lui montrait tout le parc de la société. Elle ne montre plus rien dans ce cas, et le dit au lieu d'annoncer un parc vide
- Plus aucune recherche ne réclame l'accent au caractère près. Taper « negatif » trouve « Froid négatif », « refrigeree » « Vitrine réfrigérée », « electrique » « Cable électrique », « frederic » « Frédéric ». Tous les champs de recherche de l'application sont alignés : équipements, documents, relevés rapides, contrats d'assemblage, bons d'intervention, sites, devis, factures, articles, fluides, sociétés et comptes — y compris l'autocomplétion des lignes de devis, qui ne proposait rien sur un libellé accentué alors que la page des articles, elle, le trouvait. Seule la ligature « œ » résiste encore : « oeuvre » ne trouve pas « œuvre »
- Les heures affichées venaient de l'horloge du serveur et non de la vôtre. Tout ce qui est enregistré l'est en temps universel, et converti une seule fois à l'affichage
- Les plages de pression du froid étaient des températures, recopiées telles quelles dans des cases en bar : une haute pression de 20,7 bar parfaitement normale se voyait peinte en anomalie, et une saisie basse était silencieusement réécrite
- Les pastilles de statut. « Brouillon » et « En cours » s'affichaient en texte nu, sans leur pastille de couleur, sur quatre écrans — le nom de la couleur était construit avec un souligné là où la feuille de style attend un trait d'union
- Les boutons qui ne menaient nulle part. Générer un PDF, créer un CERFA rapide ou un contrat d'assemblage sans en avoir le droit ouvrait un onglet sur un refus. Et sur le bon d'intervention, un bouton rouge nommé « Valider » — la couleur réservée ailleurs à « Supprimer » — se contentait de revenir à la liste sans rien valider
- Le cloisonnement par dossier s'applique enfin au planning. Il ne rangeait que le calendrier : un compte rattaché à certains dossiers n'y voyait que les rendez-vous qui le concernent, mais changer un statut, modifier une fiche, convertir en bon d'intervention ou supprimer restaient ouverts sur n'importe quel rendez-vous de la société, par un envoi direct. Les quatre écritures le respectent désormais, comme le calendrier : un rendez-vous sans site, un rendez-vous qui vous est affecté, un que vous avez créé, ou un rendez-vous sur un site de vos dossiers. Ces trois premières exceptions ne sont pas des faveurs — un planificateur envoie couramment un technicien sur un site qui n'est pas dans ses dossiers, et ce technicien doit pouvoir clore son intervention. Créer un bon d'intervention refaisait au passage la même écriture depuis un identifiant de rendez-vous passé dans l'adresse, sans permission ni contrôle : un rendez-vous déjà clos y repassait « en cours » et son bon était remplacé
- Ouvrir un rendez-vous ne lui fait plus perdre ses liens. Un rendez-vous peut porter un site hors de vos dossiers — c'est le cas de celui qu'on vous a affecté. Mais les listes déroulantes de la fiche, elles, s'arrêtaient à vos dossiers : le site n'y figurait pas, « Aucun » l'emportait par défaut, et ajouter une simple note effaçait en silence le site, l'équipement et le technicien. L'écran annonçait un enregistrement réussi. La fiche garde maintenant ce que le rendez-vous porte déjà, y compris un site archivé depuis ou un technicien qui a quitté la société — c'était précisément ce qui se perdait
- L'heure de fin ne s'invente plus. L'heure de fin est facultative. Un rendez-vous enregistré sans elle en recevait une à 10 h dès qu'on ouvrait sa fiche, et il suffisait d'enregistrer pour que cette heure soit conservée. Pire pour un rendez-vous de l'après-midi : la fin fabriquée tombait avant son début, l'enregistrement était refusé par « La date de fin doit être postérieure au début », et le champ d'heure étant en lecture seule, rien ne permettait de comprendre ni de corriger. Ouvrir une fiche ne touche plus à rien ; quand l'application propose une fin — en saisissant une date de début, ou en ouvrant le cadran de l'horloge — elle propose deux heures plus tard, la durée qu'elle proposait déjà depuis le calendrier, et l'heure s'affiche au lieu de partir invisible
- Le compteur « Planning » de l'accueil disait autre chose que la page qu'il ouvre. Il annonçait le nombre de rendez-vous de toute la société, sans tenir compte des dossiers : un technicien rattaché à un seul dossier lisait « 37 », cliquait, et en trouvait un. Il compte désormais exactement ce que montre la page vers laquelle il mène — le calendrier complet pour qui gère le planning, « Mon planning » pour les autres. Le compteur des relevés rapides reste, lui, à l'échelle de la société
- Le badge « Archivés » de la page Sites comptait hors des dossiers. Il annonçait le nombre de sites archivés de toute la société, quand la liste qu'il ouvre applique, elle, le cloisonnement par dossier : un compte rattaché au seul dossier « Bobby » lisait « Archivés (1) », cliquait, et arrivait sur une page vide — le site archivé étant rangé dans un dossier qui n'est pas le sien. Le nombre de sites archivés hors de ses dossiers lui fuyait au passage, sans qu'aucune de ces fiches ne soit accessible. Le badge compte désormais exactement ce que montre la page vers laquelle il mène, et un site rangé dans deux de ses dossiers n'y compte qu'une fois. Un compte sans aucun dossier n'est pas borné, comme la liste elle-même — c'est la règle de cette page
- Les vignettes « Sites » et « Équipements » de l'accueil annonçaient zéro devant des pages pleines. Un compte non administrateur rattaché à aucun dossier lisait « 0 Site » et « 0 Équipement », puis ouvrait des listes qui en montraient dix-sept et vingt-trois : les vignettes cloisonnaient là où les deux pages, elles, ne cloisonnent pas sans dossier assigné. Elles comptent désormais ce que ces pages montrent. La distinction qui compte est ailleurs : une liste de sites vide a deux causes. Aucun dossier assigné, et rien n'est borné ; des dossiers assignés qui ne contiennent aucun site actif, et la page est réellement vide. Les vignettes se bornaient sur les sites trouvés, ce qui confondait les deux — et corriger le premier cas sans voir le second aurait montré le parc entier de la société à un technicien dont la page n'affiche rien. C'est bien le rattachement aux dossiers qui décide, comme sur la page Sites.
- L'accueil interrogeait la base pour des chiffres qu'elle n'affichait nulle part. Deux compteurs — les relevés et les comptes actifs — étaient calculés à chaque ouverture de la page sans être lus par aucun affichage. Ils ne le sont plus : la page d'accueil interroge la base deux fois de moins qu'avant. Les vignettes gardent toutes leur place et leur ordre, y compris pour qui les avait déjà réarrangées
- Un contrat d'assemblage n'est plus ouvert ni signable par un collègue. Sa fiche, son écran de modification et son PDF se contentaient de vérifier la société : en changeant le numéro dans l'adresse, un technicien ouvrait le contrat d'un autre, pouvait le modifier, apposer ou effacer la signature de l'acquéreur comme celle de l'installateur, et changer son statut. Le droit de consulter l'historique CERFA n'était pas demandé non plus, alors que la liste de ces contrats l'exige. Les trois pages suivent désormais la règle de cette liste — la société, et la propriété pour qui n'est pas administrateur — et la vérification est faite AVANT le traitement des envois, parce que ceux-ci écrivaient avant même que le contrat ne soit chargé. Le bloc « Derniers Contrats d'assemblage » de l'accueil réclame lui aussi ce droit, comme ses voisins CERFA le faisaient déjà
- Déplacer un bloc de l'accueil n'efface plus le rang de ceux qu'on ne voit pas. La disposition se reconstruisait à partir de ce qui était affiché : un seul glisser suffisait à faire perdre leur place aux blocs masqués, et à ceux qui manquaient simplement faute de contenu ce jour-là. Leur rang est désormais conservé, et un bloc masqué retrouve exactement sa position quand on le réaffiche
- Un bloc ajouté par une mise à jour arrive au même endroit sur les deux écrans. L'accueil le plaçait tout en haut, la page de disposition tout en bas : on ouvrait celle-ci pour le redescendre et on n'y voyait rien à corriger. Les deux le placent maintenant en fin de liste
- Ne pas voir une case ne vaut plus la décocher. La page de disposition déduisait ce qui est masqué de l'absence de case cochée. Un élément devenu accessible entre l'affichage de la page et son enregistrement — un changement d'agence dans un autre onglet, par exemple — n'avait pas de case, et se retrouvait masqué sans que personne ne l'ait demandé. Il garde désormais l'état qu'il avait
- La vignette « Rapides » annonçait tout l'historique devant une page qui montre le mois. Elle comptait aussi les relevés mis à la corbeille, et ne tenait pas compte du cloisonnement que cette page applique — les relevés rapides se partagent entre collègues d'un même dossier, une règle qui n'est celle d'aucun autre écran. Elle compte désormais exactement ce que la page affiche quand on y arrive
- La vignette « Devis » d'un super administrateur comptait toutes les sociétés devant une page bornée à la sienne, comme les vignettes « Sites » et « Équipements » avant elle
- Supprimer définitivement un compte emporte ses préférences d'affichage. Elles restaient en base, hors d'atteinte de tout écran
- Un élément masqué de la page de disposition redevient lisible. Il était atténué d'un bloc, texte compris, ce qui faisait tomber son libellé secondaire à un contraste de 2,2 pour 4,5 exigés — et 2,8 en thème sombre. Aucune atténuation ne permettait de tenir le seuil, pas même la plus légère. L'état masqué se reconnaît désormais à son fond et à sa bordure en pointillés, qui ne portent aucun texte : c'est lisible, et ça se distingue sans avoir à percevoir les couleurs
- Les cases de la page de disposition disent ce qu'elles commandent. Elles portaient toutes le même intitulé « Afficher » — seize fois de suite pour qui navigue au lecteur d'écran, sans aucun moyen de savoir laquelle était laquelle. Chacune annonce désormais son élément : « Afficher : Sites », « Afficher : Équipements », et ainsi de suite. Le mot « Afficher » reste seul à l'écran, la colonne parlant d'elle-même à l'œil
- Déplacer un élément au clavier ne renvoie plus en haut de la page. Arrivé en première ou en dernière position, la flèche se désactive sous le doigt et le focus retombait sur le corps du document : il fallait reparcourir toute la page pour revenir. Il se reporte maintenant sur l'autre flèche du même élément, celle qui reste utilisable
- Un déplacement est annoncé à qui ne le voit pas. Rien ne signalait qu'un élément avait bougé, et le numéro de rang affiché à l'écran est invisible aux lecteurs d'écran : la position n'était accessible nulle part. Chaque déplacement annonce désormais « tel élément déplacé en position 3 sur 6 »
- Masquer toutes les vignettes ne laisse plus un trou au sommet de l'accueil. La rangée disparaissait mais gardait ses marges, soit 80 pixels de vide au-dessus du premier bloc. Elle n'est plus affichée du tout quand elle serait vide
- Le tableau de bord appliquait deux périmètres contraires au même compte. Un technicien rattaché à aucun dossier lisait « 17 Sites » en haut — ce qui est juste, ses listes lui en montrent bien dix-sept — mais tout ce qui suivait restait vide : les deux graphiques, la répartition des types d'équipement, les derniers relevés, les derniers CERFA, et surtout le bloc « Contrôles d'étanchéité à faire », dont aucune alerte ne lui remontait alors que sept contrôles attendaient. La page était auparavant fausse mais lisible — tout y était à zéro ; elle devenait fausse à moitié, et c'est l'alerte réglementaire qui manquait, en silence. La règle des dossiers s'applique désormais à la page entière, pas seulement à ses vignettes
- Le badge « N sites · N techs » de la page Dossiers ne comptait juste que sur sa moitié gauche. Un technicien désactivé, mis à la corbeille ou promu administrateur restait dans le nombre annoncé, alors que la liste de cases juste en dessous ne le proposait plus
- Les vignettes de l'accueil d'un super administrateur comptaient toute l'instance. Il lisait « 24 Sites » et « 31 Équipements » là où les pages qu'elles ouvrent lui en montrent seize et vingt-deux : ces pages le bornent à sa société et écartent les archives, exactement comme pour les autres comptes. La répartition par type d'équipement souffrait du même écart, et le compteur du planning ajoutait de son côté un filtre de date que la page n'applique pas. Ils comptent désormais ce que montre la page vers laquelle ils mènent — à l'exception de la vignette « Rapports », volontairement laissée sur le total de l'instance, parce que la page qu'elle ouvre est la seule à présenter toutes les sociétés à un super administrateur
- Les documents qu'on ne peut pas encore établir restent visibles, et disent pourquoi. Sur la page Rapides, les cartes « Cerfa fluide » et « Cerfa assemblage » disparaissaient purement et simplement quand l'attestation d'aptitude F-Gas du compte n'était pas validée. Le bouton ne menait plus à un refus — mais on ne savait ni que ces documents existaient, ni ce qu'il fallait pour y accéder. Elles restent désormais à leur place, grisées et inertes, et portent la raison en toutes lettres ainsi qu'une aide indiquant où faire valider l'attestation. Le grisage ne repose pas sur une transparence : fond et bordure changent, et les couleurs du texte tiennent le seuil de contraste en clair comme en sombre. Les quatre cartes sont par ailleurs renommées et remises dans l'ordre du terrain : bon d'intervention, relevé de fonctionnement, Cerfa fluide, Cerfa assemblage. Elles partagent enfin la hauteur de leur rangée : la grille héritait d'un alignement centré, si bien qu'il suffisait qu'une description revienne à la ligne et pas sa voisine pour que deux cartes côte à côte diffèrent de 37 pixels
- Le bandeau de retour des bons d'intervention suit la règle des autres pages. Son bouton principal menait à la configuration des bons — un écran réservé aux administrateurs — et son bouton secondaire à l'accueil, soit l'inverse des pages Sites, Équipements, Relevés et CERFA, où le secondaire ramène d'un pas en arrière et le principal mène à la destination. Un technicien n'y voyait donc qu'un seul bouton, et un administrateur deux qui ne se ressemblaient pas. Les deux rôles lisent désormais le même bandeau, « Retour » puis « Accueil ». La configuration des bons reste joignable depuis l'accueil de l'administration
- Un site sans adresse garde la hauteur des autres. Dans l'arborescence des sites, l'adresse et le code postal occupent chacun une ligne entière ; vides, ces lignes ne produisaient aucune hauteur et la carte du site se réduisait à son seul nom — 53 pixels à côté des 96 d'un site renseigné, soit 43 pixels d'écart entre deux cartes voisines. Les deux lignes restent désormais en place et disent ce qui manque : « Adresse » puis « non renseignée », en italique, en gris, dans un corps plus petit que l'adresse. Quand une seule des deux manque, la mention se suffit à elle-même — « Adresse non renseignée », ou « Ville non renseignée » sous une adresse écrite — car un « non renseignée » solitaire n'aurait rien voulu dire. Les couleurs tiennent le seuil de contraste dans les deux thèmes, et l'interligne de la mention est calé sur celui d'une adresse pour que la carte garde exactement sa hauteur
- Les sites sans groupe ont enfin un dossier. Le conteneur « Sans groupe » de l'arborescence n'apparaissait que si la société avait déjà créé au moins un groupe ; sinon ses sites étaient posés à nu, sans rien pour les contenir. Le dossier s'affiche désormais dans tous les cas, et tout site sans groupe y est rangé dès le premier. Quand il est seul dans l'arbre, il s'ouvre de lui-même — autrement la page paraîtrait vide. Il reste absent tant qu'aucun site n'est concerné, comme un groupe vide
- Accéder à une autre agence obéit maintenant à une règle, et elle est étroite. Un compte administrateur ou technicien ne peut plus se voir attribuer d'agence, en aucun cas. Un administrateur de groupe atteint les agences rattachées à sa société mère, et elles seules — c'était déjà le cas. Seul le super administrateur garde le rattachement explicite, pour dépanner un client sans reprendre le compte de son administrateur. Le défaut était réel et silencieux : la table des rattachements était lue pour tous les rôles, si bien qu'une ligne héritée, importée ou laissée par un essai ouvrait une société entière à n'importe qui. Aucun écran ne l'alimentait, ce qui masquait le trou au lieu de le fermer. Le formulaire et l'enregistrement portent désormais la même condition, l'un n'étant jamais une garantie sans l'autre
- Une société dit enfin si elle est indépendante ou société mère. Les deux états étaient confondus en base — l'option du formulaire s'intitulait elle-même « Aucune (société indépendante ou société mère) » — et la distinction reposait sur une case « Activer le module Groupe » à cocher par convention sur la mère. La convention avait dérivé : elle était cochée sur une société mère et sur ses deux filiales. Le type est désormais enregistré : indépendante, mère, ou filiale — ce dernier se déduisant du rattachement et ne se choisissant pas. Le module Groupe suit le type au lieu d'une case séparée, et le super administrateur est le seul à pouvoir en changer. Les sociétés existantes ont été reprises : celle qui a des filiales devient mère, celles qui ont un parent deviennent filiales, les autres indépendantes
- On peut enfin ouvrir sa propre fiche depuis la liste des comptes. Toutes les actions étaient masquées sur sa propre ligne — ce qui est juste pour « Désarchiver », « Supprimer » et « Restaurer », qu'on ne s'applique pas à soi-même, mais emportait aussi « Modifier » et « Mot de passe ». On n'atteignait sa fiche qu'en tapant son adresse à la main. Les deux actions inoffensives sont rendues ; les trois autres restent masquées, nommément
- Un compte peut enfin être rattaché à plusieurs agences depuis l'application. La table existait, le code la lisait pour alimenter le sélecteur d'agence — mais aucun écran ne l'alimentait, si bien que la bascule était inaccessible à tout le monde. La fiche d'un compte, en administration, propose maintenant « Agences accessibles » : les sociétés actives, à cocher, l'agence principale rappelée en clair puisqu'elle est toujours accessible. Réservé au super administrateur — rattacher un compte à une autre société est une décision qui dépasse une société — et journalisé comme la bascule elle-même. Un administrateur de société qui enregistre une fiche ne touche à rien : il ne voit pas ces cases, et un enregistrement qui les aurait vidées sans qu'il le demande était exactement le défaut déjà corrigé sur la page de disposition de l'accueil
- Changer d'agence laisse maintenant une trace, et se voit. Un compte rattaché à plusieurs agences — un super administrateur qui dépanne la société d'un client, par exemple — pouvait basculer sans qu'aucun journal ne le note : « quand est-il intervenu chez nous ? » n'avait pas de réponse, le journal ne retenant que les connexions. Chaque bascule y inscrit désormais les deux agences, par leur nom et leur numéro, et l'écran d'administration la nomme et la propose au filtre. Et tant que l'agence active n'est pas la sienne, un bandeau le dit en toutes lettres sous l'en-tête : jusqu'ici seul un menu déroulant le signalait, dans la même typographie qu'une préférence d'affichage. Le risque n'était pas la fuite — ce compte peut déjà télécharger la base entière — mais la fausse manœuvre : facturer, supprimer ou signer dans l'agence d'un client en se croyant chez soi. Les comptes à une seule agence, c'est-à-dire presque tout le monde, ne voient aucun changement
- Les listes de l'accueil d'un super administrateur menaient presque toutes à un refus. Ses vignettes avaient été bornées à son agence ; les listes en dessous, non. Il lisait les six derniers relevés, les six derniers CERFA, bons et contrats de l'instance entière, et les sites sans relevé de toutes les sociétés — ses propres lignes pouvant même en être absentes, chassées par celles des voisines. Sur cinquante-neuf liens proposés, cinquante-sept rendaient « introuvable » : les fiches bornent sur l'agence active, sans exception pour lui, et leurs enregistrements aussi — une fiche ouverte sur une société depuis une autre agence aurait affiché l'une et écrit dans l'autre. Les trois graphiques comptaient de même toute l'instance sous des vignettes déjà bornées. Tout suit désormais l'agence active, comme le reste de la page ; pour voir une autre société, il bascule d'agence dans l'en-tête, et les liens suivent. La colonne « Société » de trois tableaux disparaît avec l'écart qu'elle signalait
- « Activité récente » ne cloisonnait ni les relevés, ni les CERFA, ni les contrats d'assemblage. Seuls les bons avaient reçu leur règle. Un technicien rattaché à un dossier y lisait le fil de toute la société : sur trente lignes, quinze menaient à un refus. Chaque famille suit maintenant la règle de la page où sa ligne mène, et ces règles diffèrent — un relevé ou un CERFA par le dossier de son site, un relevé rapide par les collègues du dossier comme sur sa propre page, un contrat d'assemblage par son propriétaire, qui n'a ni site ni dossier. Le fil n'écartait par ailleurs la corbeille nulle part : un relevé supprimé y figurait encore, avec un lien vers une fiche qui le refuse
- La page Documents d'un super administrateur proposait des boutons qui ne s'ouvraient pas. Elle présente volontairement toutes les sociétés — c'est le seul écran qui le fasse, et la vignette « Rapports » compte l'instance entière pour la suivre. Mais chaque ligne portait ses boutons « Voir », « PDF », « + Relevés » et « + CERFA » : sur soixante-douze liens de fiche, soixante-neuf rendaient « introuvable », et les boutons d'impression n'ouvraient rien non plus. La vue d'ensemble reste entière, société par société et site par site ; les actions ne sont plus proposées que sur l'agence active, la seule où elles fonctionnent
- La page Documents montrait tout le parc de la société à un technicien cloisonné. Elle ne bornait que la société pour ses six familles de documents — seule la facturation avait reçu sa règle lors d'un tour précédent. Sur cent onze liens proposés, soixante-cinq rendaient « introuvable » : relevés et CERFA d'autres dossiers, bons de collègues, contrats d'autrui, fiches de sites qui ne sont pas les siens. Chaque famille suit maintenant la règle de sa propre liste, et elles diffèrent : un relevé ou un CERFA par le dossier de son site, un document rapide par les collègues du dossier, un bon par sa propriété ou par le rendez-vous qui lui était affecté, un contrat d'assemblage par son propriétaire. Un document qui lui appartient reste visible même posé sur un site hors de ses dossiers — la propriété l'emporte — mais la fiche de ce site-là ne lui est plus proposée. Deux droits y étaient par ailleurs ignorés : l'historique CERFA et les contrats d'assemblage s'y lisaient sans la permission que leurs écrans dédiés exigent, soit vingt-deux CERFA et six contrats offerts à un compte à qui elle avait été retirée
- Un relevé et un CERFA ne se fermaient que par leur fiche. Six pages les chargent par leur numéro ; quatre ne vérifiaient que la société, dont deux écritures. Un technicien obtenait ainsi le PDF complet d'un relevé dont la fiche lui répond « introuvable », imprimait et modifiait un CERFA hors de ses dossiers, et changeait le statut de n'importe quel relevé de la société. Les six portes appliquent désormais la même règle, écrite une seule fois plutôt que recopiée six. Un document « rapide » suit celle de sa propre page : il n'a ni équipement ni site, et les fiches en concluaient « rien à borner, la société suffit » — huit documents rapides sur huit étaient cachés par la liste et s'ouvraient pourtant par leur adresse. Ils se partagent entre collègues d'un même dossier, comme sur l'écran des relevés rapides. Son auteur ne perd jamais le sien, et un compte sans aucun dossier n'est toujours borné par rien
- Le lien « Voir tout » des derniers relevés menait à une page refusée. Un technicien sans le droit de consulter les documents le voyait, cliquait, et revenait au tableau de bord sans un mot. Le lien suit désormais le même droit que l'entrée « Documents » du menu et que la vignette voisine
- Supprimer définitivement un site dit maintenant ce qu'il advient de ses documents de facturation. Ils ne sont pas détruits — ce sont des pièces comptables — mais les techniciens du dossier cessent de les voir, puisque le rattachement du site à son dossier disparaît avec lui. L'écran de confirmation l'annonce, chiffres à l'appui, au lieu de le laisser arriver en silence. Il se tait en revanche quand le site n'est rangé dans aucun dossier : personne ne perd rien, et annoncer une perte serait aussi trompeur que de la taire
- « Mon planning » ne promet plus ce que le serveur refuse. Les boutons « En cours », « Fait » et « Convertir en bon » s'affichaient même quand l'abonnement de la société était suspendu : cliquer menait à la page de suspension. À l'inverse, un gestionnaire du planning n'y voyait pas le bouton de conversion alors que l'application aurait accepté sa demande
- Un bon d'intervention ne se consulte plus que par ceux qu'il concerne. N'importe quel compte de la société pouvait ouvrir, modifier ou imprimer le bon de n'importe quel collègue en changeant le numéro dans l'adresse — sa fiche client complète, ses coordonnées, ses signatures. Chacun ne voit désormais que les siens, et le technicien voit aussi le bon de son propre rendez-vous même quand c'est le planificateur qui l'a créé en convertissant : c'est sur cette page que son client signe. Le technicien est retenu au moment de la conversion : réaffecter ensuite le rendez-vous à quelqu'un d'autre ne lui donne pas accès au bon, et ne le retire pas non plus à celui qui a fait l'intervention. Les bons déjà convertis ont été repris, personne ne perd ce qu'il voyait. Les administrateurs continuent de tout voir. Le compteur et la liste de l'accueil, le fil d'activité récente et le bouton « Voir le bon » du planning suivent tous la même règle, si bien qu'aucun lien ne mène plus à un refus
- Créer un bon ne donnait plus accès à tout le fichier clients. L'écran de création acceptait un numéro de site dans son adresse sans vérifier qu'il vous concernait : il affichait alors le nom, l'adresse, le téléphone et le courriel de n'importe quel client de la société, ainsi que la liste complète de ses équipements avec marque, modèle et fluide — des informations que la page elle-même prenait pourtant soin de filtrer dans son menu déroulant. Le bon enregistré pouvait de la même façon se rattacher au site d'un autre. Le site d'un rendez-vous qu'on vous a affecté reste évidemment accessible, même s'il relève d'un autre dossier
- « Enregistrer comme nouveau site » et « Enregistrer le nouvel équipement » faisaient tout perdre. Cocher l'une de ces deux cases interrompait l'enregistrement : ni le site, ni l'équipement, ni le bon lui-même n'étaient créés, et la saisie était perdue sans message. Les deux fonctionnent, et ce qui est créé est bien rattaché au bon. Créer un site ou un équipement par ce chemin demande maintenant le droit correspondant, comme sur les écrans dédiés — il n'était vérifié que pour afficher la case
- L'équipement d'un bon appartient au site du bon. Rien ne l'imposait : un envoi direct pouvait associer le client d'un site et le matériel d'un autre, et le document remis au client nommait alors un équipement qui n'est pas chez lui
- Valider deux fois le formulaire ne détache plus un bon déjà signé. Revenir en arrière puis re-valider créait un second bon et transférait le rendez-vous dessus ; le premier, parfois déjà signé par le client, n'était plus rattaché à rien et disparaissait de la liste du technicien
- Un bon d'intervention se confie. Quand le technicien prévu ne peut pas faire l'intervention, son remplaçant n'avait aucun moyen d'ouvrir le bon pour faire signer le client. La fiche du bon porte maintenant un choix « Confier ce bon à », réservé à celui qui a créé le bon et aux administrateurs : le bon passe au technicien désigné, qui y accède, tandis que le précédent ne l'a plus. La fiche, la liste, le rapport et le PDF nomment tous le technicien retenu, et non plus l'auteur du bon. Le rendez-vous du planning n'est pas modifié au passage — il reste au planificateur de l'y réaffecter s'il le souhaite
- Le nom sous le paraphe du technicien. Signer au doigt n'enregistrait pas le nom du signataire, contrairement au bouton « Apposer ma signature ». La fiche et le PDF devaient donc le deviner, et nommaient l'auteur du bon — qui n'est pas toujours celui qui a signé. Le nom suit désormais le paraphe dans les deux cas
- La facturation suit le cloisonnement par dossier. Devis, factures, avoirs, fiche, édition et PDF : un compte rattaché à des dossiers ne voit plus que les documents sans site, ceux qu'il a établis, ceux dont le site est dans ses dossiers, et ceux qui descendent d'un document qu'il a établi — sans cette dernière règle, la facture née de son propre devis lui aurait échappé dès qu'un collègue l'avait émise. Un compte sans aucun dossier n'est pas borné, comme pour les sites et les équipements — le planning, lui, borne tout le monde, et les bons d'intervention suivent une autre règle encore. Les administrateurs voient tout
- Les totaux, eux, restent entiers. Le chiffre d'affaires, l'encours, les impayés, les acomptes à déduire et les avoirs à défalquer ne sont jamais cloisonnés : un montant tronqué ne se voit pas, contrairement à un document manquant. Sans cette précaution, un acompte sorti du périmètre aurait cessé d'être déduit et le client l'aurait payé deux fois
- Le bilan de facturation est réservé aux administrateurs, comme l'export l'était déjà : il rassemble les chiffres de toute la société, et les cloisonner en aurait fait des montants partiels sous un intitulé fiscal. Les pages Devis et Factures restent ouvertes à qui a le droit de facturer
- L'écran de création ne livre plus l'annuaire clients complet. Sa liste « Pré-remplir depuis un site » versait dans la page tous les sites de la société avec leur téléphone, leur courriel, leur SIRET et leur numéro de TVA. Elle suit désormais les dossiers — en gardant le site que le document porte déjà, pour qu'un enregistrement ne le détache pas en silence
- Pré-remplir une facture depuis un bon d'intervention respecte la règle des bons. L'adresse du client, son téléphone, son courriel, la description des travaux, le fluide et les pièces remplacées de n'importe quel bon de la société s'affichaient en changeant le numéro dans l'adresse — y compris pour des bons que la fiche refuse d'ouvrir
- Plus aucun écran ne propose un document qu'il ne peut pas ouvrir. Les listes « Derniers devis » et « Dernières factures » de l'accueil, son compteur « Devis », et les documents cités dans les rapports suivent tous la même règle, de même que le bouton « Facture » de la fiche d'un bon d'intervention
- Un site créé est rangé dans un dossier. Aucun des quatre chemins de création n'en attribuait : ni l'écran dédié, ni la création rapide depuis un bon d'intervention, ni celle depuis un CERFA, ni l'import. Or un site sans dossier est invisible à tout compte cloisonné — y compris au technicien qui vient de le créer, qui ne retrouvait donc pas son propre client dans sa liste. L'écran de création demande désormais le dossier, et les trois chemins rapides, qui n'ont pas d'écran où poser la question, rangent le site dans les dossiers de celui qui le crée
- Le choix du dossier suit le cloisonnement de celui qui crée. Un technicien rattaché à des dossiers ne se voit proposer que les siens : lui en laisser un autre lui ferait créer un site qu'il ne verrait pas. Un administrateur a toute la liste de la société. Sur les chemins rapides, un compte sans dossier — c'est le cas de tout administrateur — laisse le site non rangé plutôt que d'en choisir un d'office : ranger dans un dossier arbitraire aurait ouvert à son équipe des centaines de sites d'un seul import, sans qu'aucun écran l'annonce
- Une société qui n'a défini aucun dossier ne change pas de comportement. Rien ne lui est demandé et rien ne lui est imposé : personne n'y est cloisonné, et ses sites restent visibles de tous
- « Enregistrer les sites » ne détache plus les sites archivés ni ceux en corbeille. La page Dossiers effaçait tous les rattachements du dossier avant de réinscrire les cases cochées — or le formulaire ne montre que les sites actifs. Un site archivé perdait son dossier sans que rien ne le signale, et revenait sans classement au désarchivage. Supprimer un dossier, en revanche, emporte bien tous ses sites, archivés compris
- Un site réattribué à une autre agence n'emporte plus les dossiers de la première. Ses rattachements restaient sur les dossiers de l'agence d'origine : sans effet pour l'agence qui reçoit le site, et l'agence de départ continuait de le compter dans un dossier qu'elle croyait à jour. Le site arrive désormais à classer, depuis Dossiers
- La vignette « Sites » du tableau de bord comptait deux fois un site rangé dans deux dossiers du même technicien. Elle annonçait plus de sites que la page Sites n'en listait
- La suppression définitive d'un site n'allait pas jusqu'au bout. Avant le clic, l'écran annonce précisément ce qui part avec lui : « Seront supprimés en même temps : 2 équipements, 4 relevés, 2 rendez-vous ». Les équipements et les relevés partaient bien ; les photos, non — ni leur ligne en base, ni l'image sur le disque, alors qu'elles étaient annoncées. Le site gardait au passage son rattachement à ses dossiers, si bien que le badge « N sites » de la page Dossiers continuait de compter un site qui n'existait plus — et rien ne permettait de rectifier ce compte : la grille de cases à cocher ne montre que les sites vivants, le fantôme n'y avait pas de case, et seule la suppression du dossier entier le faisait disparaître. Ses rendez-vous restaient de même au calendrier, vidés de leur site et repliés sur l'intitulé « Intervention ». Purger un équipement laissait ses photos de la même façon. Tout cela s'en va désormais avec le site, fichiers compris, et le décompte annoncé avant le clic nomme aussi les rendez-vous. Purger un équipement, en revanche, ne supprime pas le rendez-vous qui le portait : le site existe toujours, la visite reste prévue, elle perd seulement l'équipement. Les CERFA et les bons d'intervention restent, eux, volontairement conservés sans rattachement : ce sont des documents à garder, et l'écran de confirmation l'annonce déjà
Amélioration
- Accessibilité. Les icônes du comparatif de tarifs annoncent « Inclus » ou « Non inclus » au lieu d'un symbole muet, les tableaux comparatifs portent un intitulé de ligne et une légende, la case « Client absent » d'un bon est devenue un vrai bouton qui fonctionne sans JavaScript, et une vingtaine de contrastes insuffisants ont été repris dans les deux thèmes. Les barres de pagination de toute l'application — sites, équipements, bons d'intervention, contrats d'assemblage, catalogue d'articles, tableau de bord et rapport des fluides — annoncent enfin le numéro de page et le total, marquent la page courante, et rendent le focus au clavier après un changement de page au lieu de le laisser retomber en haut du document. Au-delà de sept pages elles se resserrent, plutôt que d'aligner un bouton par page — un parc de trois cents sites en affichait trente-deux, sur trois rangées de téléphone
3.10.0 — Six mois offerts, et de quoi comparer
Tarif
- L'abonnement passe à 149,99 € et ouvre dix-huit mois d'accès : douze mois payés, six mois offerts, soit environ 8,33 € par mois sur la durée. Il se règle toujours en une seule fois, et aucun prélèvement automatique n'est possible puisque l'application ne contient pas de paiement en ligne
- Le mois d'essai ne change pas : aucune carte bancaire à la création du compte, aucune facture émise, et la totalité des fonctionnalités dès le premier jour. Les données saisies pendant l'essai sont conservées si vous continuez
- L'offre Pro ouvre toujours cinq comptes pour la société, celui du responsable compris. Au-delà, l'offre Entreprise se fixe au devis
Nouvelle fonctionnalité
- Une page compare le coût de FrigoDiag à celui des logiciels qu'il remplace. Un logiciel de devis et factures, un registre de fluides, une application de bons d'intervention, un service de signature, un espace de stockage : la page les additionne et met le total en face de l'abonnement. Elle s'ouvre par « Comparatif » dans le menu du site
- Les chiffres de cette comparaison sont les vôtres, pas les nôtres. Aucune marque n'est citée et aucun tarif concurrent n'est affirmé : chaque ligne est un champ modifiable, pré-rempli avec un ordre de grandeur, que vous remplacez par les devis que vous avez reçus. Un curseur règle le nombre de personnes, parce que certaines briques se facturent au siège et d'autres par technicien
- La page dit aussi ce que FrigoDiag ne remplace pas — la comptabilité, la paie, la gestion de stock, le paiement en ligne, la signature électronique qualifiée — et pourquoi son tarif est ce qu'il est. Un comparatif qui ne dit que du bien de son auteur ne sert à rien
- Un suivi des inscriptions rejoint la super administration : les sociétés inscrites, celles qui n'ont jamais confirmé leur adresse, les liens de confirmation expirés, et ce que chaque compte a fait ensuite. Deux gestes s'y font directement — renvoyer un lien de confirmation, ou confirmer un compte à la place de la personne quand on l'a eue au téléphone
Corrections
- Les filtres des logs de connexion s'empilaient en colonne, chacun sur toute la largeur de l'écran : la règle d'affichage de cette barre n'avait jamais été écrite. Les trois champs et les deux boutons tiennent désormais sur une ligne
- Le journal des inscriptions retient maintenant le compte et la société créés, et non plus la seule adresse IP : c'est ce qui permet au suivi d'afficher d'où vient une inscription. Il est écrit après coup, en dehors de l'inscription elle-même, pour qu'un journal indisponible ne puisse jamais faire perdre une inscription valide
3.9.0 — L'application vous dit quand contrôler l'étanchéité
Nouvelle fonctionnalité
- Chaque fiche équipement annonce désormais son prochain contrôle d'étanchéité. Elle affiche le tonnage équivalent CO₂ calculé depuis la charge et le fluide, la périodicité qui en découle, la date du dernier contrôle et celle du prochain — avec le nombre de jours restants, ou de retard. Toutes ces informations étaient déjà dans l'application, il manquait seulement de les rapprocher
- Les seuils sont ceux du règlement européen 517/2014 : en dessous de 5 tonnes équivalent CO₂, aucun contrôle périodique n'est imposé ; de 5 à 50 tonnes, tous les 12 mois ; de 50 à 500, tous les 6 mois ; au-delà de 500, tous les 3 mois
- Une case « système de détection de fuite installé » apparaît sur la fiche équipement. Quand elle est cochée, les intervalles sont doublés, comme le prévoit le règlement. Au-delà de 500 tonnes, où ce système est obligatoire, l'application le signale s'il n'est pas déclaré
- Le tableau de bord s'ouvre sur les contrôles à faire, les plus en retard en tête, puis les équipements jamais contrôlés, puis les échéances qui approchent. Le bloc ne s'affiche pas quand tout est à jour, et se déplie tout seul dès qu'un retard existe. Un technicien n'y voit que les équipements des sites de ses dossiers
- La liste des équipements porte une pastille dans les deux affichages, arbre et tableau, avec une colonne « Étanchéité » qui se trie par urgence et non par ordre alphabétique. Seuls les équipements qui appellent une action sont marqués : afficher « à jour » partout masquerait ceux qui comptent
- Ce que l'application considère comme un contrôle : le dernier CERFA de type mise en service, maintenance préventive, recherche de fuite ou réparation de fuite, une fois sorti du brouillon. Si votre pratique diffère, cette correspondance se règle en un seul endroit du code — signalez-le nous
Corrections
- Le CO₂ transcritique donnait une température de condensation fausse. Au-delà de son point critique — soit 31 °C et 73,8 bar absolu — le CO₂ ne condense plus. L'application annonçait pourtant « 30 °C » quelle que soit la haute pression lue, y compris à 100 bar. Ce n'est pas un cas d'école : une centrale CO₂ passe en transcritique dès qu'il fait chaud. Elle n'affiche désormais plus rien dans ce régime, et le diagnostic ne s'appuie plus sur une valeur inventée
- La numérotation des factures pouvait garder un trou. Un double-clic sur « Émettre », ou un second onglet, consommait un numéro que plus aucun document ne portait. Le numéro et le passage à l'état émis se font maintenant d'un seul bloc : un deuxième envoi ne consomme plus rien. Une numérotation doit rester continue, et tout écart doit pouvoir s'expliquer
- Une panne affichait une page blanche, sans laisser de trace. Les erreurs partent désormais au journal du serveur et le visiteur reçoit une page d'erreur lisible. Une page laissait par ailleurs les messages techniques s'afficher en clair — chemins de fichiers compris
- Une photo trop lourde annonçait « Requête invalide », un message qui envoyait chercher au mauvais endroit. Elle est maintenant reconnue comme telle et annoncée comme telle
- Un devis, une facture ou un bon d'intervention pouvait être rattaché au site d'une autre société par un formulaire modifié. Aucune donnée n'était visible pour autant — tous les affichages re-filtrent par société — mais le rattachement est désormais vérifié à l'enregistrement
- Une couleur de groupe de sites laissée vide rendait le groupe invisible : badge blanc sur fond blanc. La couleur est maintenant vérifiée à la saisie
- Textes illisibles en thème sombre : le bleu de la charte servait de couleur de texte sur les cartes sombres à trente-huit endroits, dont les titres de l'analyse globale et le libellé des photos. Un compteur était également blanc sur blanc dans l'historique des relevés
- La page d'inscription se coupait sur une fenêtre peu haute, sans possibilité de faire défiler. Elle demande par ailleurs désormais le SIRET, vérifié par sa clé de contrôle, et le téléphone : deux mentions obligatoires sur vos devis, factures et attestations
- Les dossiers techniques du site n'étaient pas protégés d'un accès direct par le navigateur
3.8.0 — Scan de la plaque signalétique
Nouvelle fonctionnalité
- Un bouton « Scanner la plaque signalétique » apparaît à la création comme à la modification d'un équipement. Vous photographiez la plaque, et les valeurs reconnues vous sont proposées : marque, modèle, fluide, charge, puissance, nombre de circuits et numéro de série. De quoi éviter de recopier huit champs à la main, une lampe dans une main et le téléphone dans l'autre
- Rien n'est rempli sans votre accord. L'application affiche ce qu'elle a lu, vous cochez ce que vous retenez, puis vous cliquez pour le reporter. Un bouton annule le report en une fois, et les champs remplis par le scan restent surlignés jusqu'à l'enregistrement, pour que vous sachiez exactement quoi vérifier sur la plaque
- Un champ déjà saisi n'est jamais écrasé : il est signalé comme tel, avec la valeur lue à côté, et c'est vous qui tranchez
- La charge de fluide et le numéro de série sont des données réglementaires F-Gas : elles sont proposées comme les autres, mais elles méritent un coup d'œil sur la plaque avant d'enregistrer. Quand une plaque porte deux charges sans étiquette claire (deux circuits, par exemple), l'application refuse de choisir plutôt que de risquer la mauvaise
- Le fluide lu est rattaché automatiquement à la liste FrigoDiag :
R404A, R-404A ou HFC-404A tombent tous sur le bon fluide. Un fluide absent de la liste n'est pas inventé, le champ reste vide - La lecture se fait dans votre téléphone, pas sur un serveur : la photo ne part nulle part. Le moteur de lecture se télécharge au tout premier scan, puis reste en mémoire — les scans suivants fonctionnent sans réseau, ce qui compte en chambre froide ou en sous-sol. La progression du premier téléchargement est affichée étape par étape
- La photo de la plaque est archivée avec l'équipement, sous le libellé « Plaque signalétique ». C'est la trace de ce qui a été lu, le jour où une charge de fluide est contestée
- Le texte brut lu sur la plaque reste consultable sous les propositions : quand la lecture passe à côté d'une valeur, vous la retrouvez d'un coup d'œil au lieu de rescanner
- L'inscription demande désormais le téléphone et le SIRET de l'entreprise. Ce sont deux mentions obligatoires sur les devis et les factures, et sur les attestations CERFA : les renseigner à l'inscription évite de découvrir qu'ils manquent au moment d'éditer un document. Le SIRET est vérifié à la saisie
- Les scripts du site n'étaient jamais compressés à l'envoi : l'hébergeur les annonce sous un type que la règle de compression ne couvrait pas. C'est corrigé, et toutes les pages en profitent
- Sur la page d'administration des postes, le nom de l'utilisateur s'affichait en blanc sur fond blanc, donc invisible, ainsi que la flèche de repli. Corrigé, en clair comme en sombre. Une accolade manquante dans la feuille de style neutralisait par ailleurs environ un quart des règles d'affichage sur grand écran
3.7.1 — Températures de saturation corrigées
Correctifs
- Correctif majeur sur les températures de saturation. Les tables pression/température sont exprimées en pression absolue, mais le relevé et le diagnostic assisté les lisaient comme si elles étaient en pression relative, celle que vous lisez au manomètre. La température d'évaporation et de condensation déduites de vos pressions BP et HP étaient donc trop basses de 7 à 16 K selon le fluide
- Conséquence directe : la surchauffe et le sous-refroidissement étaient surestimés d'autant, et le diagnostic signalait « surchauffe à contrôler » sur des machines saines. Les seuils d'analyse n'ont pas été touchés : ce sont des valeurs physiques standard, c'est la température qui leur était fournie qui était fausse
- La réglette P/T, elle, appliquait la bonne conversion. Les deux écrans pouvaient donc afficher, pour une même pression, des températures écartées de 16,4 K. Ils sont désormais rigoureusement identiques sur les treize fluides
- Les treize tables ont été auditées contre des références constructeur (Daikin, Arkema, Chemours, Honeywell, Climalife, Gas-Servei, TEGA, A-Gas, tables Refprop). Deux se sont révélées fausses et ont été remplacées :
- le R290 (propane) était la seule table réellement exprimée en relatif, et elle dérivait jusqu'à 6,5 K au froid — elle plaçait le propane à 0,54 bar à −40 °C au lieu de 1,11 bar absolu
- le R407C s'écartait jusqu'à 4,45 bar de la référence, et ne comptait que 21 lignes au pas de 5 °C. Il en compte maintenant 53 au pas de 2 °C, au point de rosée, ce qui est la bonne référence pour la surchauffe
- Après correction, ces deux fluides tombent à moins de 0,1 K d'écart avec les références, comme le R744, le R134a, le R32 et le R507A
- Trois tables restent à reprendre et gardent un écart connu : le R452A (jusqu'à 9,9 K, sa table ne correspond pas au fluide), le R513A (4,2 K) et le R404A (3,1 K). Le R410A, le R448A, le R449A et le R454B sont à environ 2 à 3 K. Recoupez ces fluides avec la charte constructeur en attendant leur reprise
- La conversion pression / température est désormais faite en un seul endroit du code, avec une convention unique et documentée, pour que les écrans ne puissent plus se contredire
- Page d'inscription : le bouton proposait de « créer mon compte gratuit », alors que l'offre gratuite a disparu et que la page annonce juste au-dessus un abonnement de 99 € couvrant deux ans. Il indique simplement « Créer mon compte », et trois rappels le suivent : aucune carte bancaire demandée, un an offert, et l'activation par un lien envoyé par email
- Les feuilles de style des pages de connexion, d'inscription, de mot de passe oublié et de validation d'email se rechargent automatiquement après une mise en ligne, comme celles du site vitrine
- Sur téléphone, les cartes de la page d'accueil et de la page SAV étaient très hautes : l'icône occupait une ligne entière au-dessus du titre. Elle se place désormais à côté du titre, et les cartes perdent environ 40 % de leur hauteur — près de trois écrans de défilement en moins sur l'accueil. L'affichage sur ordinateur est inchangé
3.7.0 — Clients particuliers et professionnels
Nouvelle fonctionnalité
- Chaque site porte désormais son type de client : particulier ou professionnel. Le choix se fait à la création comme à la modification, et il commande la suite
- Un site professionnel réclame les informations qui lui sont propres : le SIRET, et le numéro de TVA intracommunautaire qui manquait jusqu'ici. Les deux sont repris automatiquement sur les devis et les factures
- Un site particulier n'affiche plus ces champs, et s'ils avaient été saisis avant un changement de type ils ne sont pas conservés : ils ne peuvent plus ressortir par erreur sur une facture
- Dans l'éditeur de devis, le choix d'un site existant reprend son type, et le type commande les options de TVA : l'autoliquidation du bâtiment disparaît face à un particulier, puisqu'elle ne vise que la sous-traitance entre professionnels. Elle est également refusée côté serveur. La TVA réduite sur logement de plus de deux ans reste proposée dans les deux cas, car elle dépend du local et non du client
- L'indemnité forfaitaire de recouvrement de 40 € n'apparaît que sur les documents destinés à un professionnel, comme l'exige la loi. Elle était jusqu'ici déduite de la simple présence d'un SIRET, ce qui la faisait figurer à tort sur certaines factures de particuliers ; le type est désormais explicite et figé sur le document à son émission
- Les sites existants sont classés en professionnel, ce qui correspond à l'usage actuel de l'application. Reclassez en particulier ceux qui le sont depuis leur fiche
- L'import de sites accepte une colonne « Type de client » : « Particulier » et « Professionnel » sont reconnus, ainsi que les écritures approchantes. Sans cette colonne les sites restent créés comme professionnels, et une ligne reconnue comme particulier n'emporte ni SIRET ni numéro de TVA même si le fichier en contient. Le numéro de TVA intracommunautaire s'importe lui aussi désormais, et le modèle prêt à remplir contient les deux colonnes avec un exemple de particulier
- Dans l'éditeur de devis, le choix du type disparaît dès qu'un client enregistré est retenu : c'est sa fiche qui fait foi, et l'écran indique lequel est repris plutôt que de proposer un choix qui pourrait la contredire. Le serveur applique la même règle
3.6.1 — Correctifs terrain et questions fréquentes revues
Correctifs
- Correctif important sur la saisie hors ligne : une mesure enregistrée sans réseau pouvait être perdue si la session avait expiré entre-temps. L'application détectait à tort un envoi réussi et effaçait la mesure. Elle la conserve désormais et vous invite à vous reconnecter pour l'envoyer
- Les mesures restées en attente repartent maintenant dès la première page ouverte avec du réseau. Auparavant elles n'étaient renvoyées que si la connexion revenait avec l'application encore ouverte : fermer puis rouvrir l'application les laissait en attente indéfiniment
- Relevé rapide : les types « Clim multisplit », « PAC air/air », « Groupe froid » et « Autre » s'ouvraient sans aucun champ de mesure. Ils proposent désormais les mesures de leur famille
- La bascule froid / chaud, qui n'affiche que la pression utile selon le mode, ne s'appliquait qu'à une partie des climatisations : les multisplits et les DRV affichaient les deux pressions quel que soit le mode. Toute la famille climatisation et PAC air/air est maintenant traitée pareil
- La fiche CERFA en modification affichait encore la référence 15497*03 au lieu de 15497*04
- Correctif d'affichage : sur téléphone, les cartes de tarif se superposaient au lieu de s'empiler ; elles sont désormais lisibles. Les feuilles de style du site vitrine se rechargent aussi automatiquement après une mise à jour
- Questions fréquentes de l'accueil entièrement revues : chaque réponse a été recoupée avec ce que fait réellement l'application. Deux d'entre elles disaient l'inverse de la vérité (les devis et factures ainsi que le planning étaient annoncés comme absents alors qu'ils existent), et les promesses trop larges ont été resserrées — hors ligne, format de facture électronique, nombre de comptes, archivage des CERFA et bilan CO₂
- Les questions qui concernent les équipes ont rejoint la page dédiée aux SAV, où s'ajoutent le multi-agences, la reprise du parc existant et la propriété des données
- L'offre est présentée dans le bon ordre : les devis, les factures et les CERFA arrivent en tête de la liste des prestations, en gras, parce que c'est ce qu'on cherche en premier
3.6.0 — Nouvelle offre et nouveau site vitrine
Nouvelle fonctionnalité
- Nouvelle offre : un seul tarif à 99 € qui couvre deux ans — une année payée, une année offerte. Plus de version bridée à débloquer par morceaux — sites et équipements illimités, relevés et diagnostics illimités, 5 comptes utilisateurs, bons d'intervention, CERFA 15497*04, suivi F-Gaz, devis et factures, rapports PDF, photos, export XLSX, planning et réglette P/T sont inclus dès le départ
- L'ancienne formule gratuite (Starter) et ses limites (1 technicien, 5 sites, 10 équipements par site) disparaissent. Les sociétés qui l'utilisaient basculent automatiquement sur l'offre complète, sans rien perdre et sans manipulation de votre part
- L'offre Entreprise reste sur devis pour les SAV, les grandes équipes et les groupes multi-agences
- Page d'accueil entièrement refaite, tournée vers les frigoristes indépendants et les petites entreprises : ce que l'on gagne sur le terrain, la conformité incluse, les devis et factures, et le tarif en clair
- Les SAV et les équipes disposent désormais de leur propre page, avec le pilotage des techniciens, la visibilité au bureau et l'historique prêt pour l'audit
- Création de compte en ligne mise à jour : aucune carte bancaire demandée, et l'espace créé donne accès à la totalité des fonctionnalités. L'abonnement, facturé à part, ouvre vingt-quatre mois d'accès, et aucun prélèvement automatique n'est possible puisque l'application ne contient pas de paiement en ligne
- Page tarifs simplifiée : deux offres au lieu de trois, et un comparatif allégé d'autant
3.5.1 — Imports et exports regroupés
Nouvelle fonctionnalité
- Nouvelle page « Imports et exports » dans l'Administration : tous vos exports XLSX au même endroit (export complet avec période, liste des sites, inventaire des fluides, journal des ventes) et tous vos imports (sites, tarif fournisseur). L'export qui se trouvait sur la page Sites a rejoint cette page
- Import de vos sites depuis un fichier CSV : les colonnes sont reconnues automatiquement, même avec des intitulés maison (« Raison sociale », « CP », « Ville », « Tél. »), un aperçu vous laisse corriger l'association avant de valider, les dossiers indiqués dans le fichier sont créés au besoin, et les sites déjà présents sont mis à jour au lieu d'être dupliqués. Nom et commune sont enregistrés en majuscules, comme à la saisie manuelle
- Modèle prêt à remplir pour les deux imports, au format CSV ou Excel, avec les colonnes déjà en place et deux exemples : le CSV se réimporte tel quel
- Import d'un tarif fournisseur : les articles sans référence sont désormais rapprochés par leur désignation, ce qui évite de créer un doublon à chaque réimport. Le compte rendu signale les lignes en double du fichier et précise si elles ont été fusionnées ou dupliquées
- Garde-fous communs aux deux imports : un fichier trop long est signalé au lieu de perdre sa fin en silence, deux colonnes visant le même champ sont refusées plutôt que d'en perdre une, et les numéros de ligne des avertissements correspondent bien à ceux du fichier
- Les droits sont respectés à l'import : mettre à jour un site déjà présent demande le droit de modification, créer un dossier demande celui de gérer les dossiers ; à défaut l'import se contente de créer, sans jamais dupliquer
- Sécurité : les dossiers de sites sont cloisonnés par société ; un site ne peut plus être rattaché au dossier d'une autre société, et les listes n'affichent que les dossiers de la vôtre
3.5.0 — Facture électronique (Factur-X)
Nouvelle fonctionnalité
- Chaque facture et chaque avoir émis se télécharge au format électronique structuré : un fichier XML conforme à la norme européenne EN 16931, profil Factur-X BASIC, à déposer tel quel sur votre plateforme de dématérialisation
- Anticipation de la réforme de la facturation électronique : l'obligation d'émission au format structuré s'applique progressivement aux TPE et PME à partir du 1er septembre 2027 ; le module est prêt dès aujourd'hui
- Tout le contenu de la facture est reporté automatiquement dans le fichier : identité et SIRET des deux parties, lignes, quantités, prix, remises par ligne et remise globale, TVA par taux, acomptes déjà déduits
- Régimes particuliers pris en charge : l'autoliquidation du bâtiment (document hors taxe) et la franchise en base de TVA (article 293 B du CGI) sont transcrites avec les mentions et les codes attendus
- Contrôle avant export : si une information obligatoire manque (SIRET, adresse, code postal…), l'écran indique précisément laquelle et où la corriger, au lieu de produire un fichier que la plateforme rejetterait
Nouvelle fonctionnalité
- Notes préenregistrées : constituez une bibliothèque de notes réutilisables (conditions d'intervention, garanties, mentions habituelles) depuis l'onglet Notes des devis et factures, avec la même mise en forme que l'éditeur. Dans un devis ou une facture, un menu « Insérer une note enregistrée » les ajoute d'un clic au champ « Notes visibles sur le devis », à la suite du texte déjà saisi. La bibliothèque est propre à chaque société
- Éditeur de mise en forme : la description d'un article, la description d'une ligne de devis, les commentaires et les « Notes visibles sur le devis » disposent d'un petit éditeur (gras, italique, plus grand, plus petit, gris). La mise en forme se retrouve sur le devis, la facture, le PDF et la page client ; seule une mise en forme simple et sûre est conservée, tout code étranger est retiré automatiquement
- Catalogue de facturation : les colonnes du tableau des articles se réordonnent par glisser-déposer d'un en-tête. L'ordre et la largeur des colonnes sont enregistrés dans votre compte : vous retrouvez votre disposition sur n'importe quel appareil, et chaque utilisateur garde la sienne
- Dossiers de sites : on peut désormais rattacher les techniciens à un dossier directement depuis ce dossier (page Administration, Dossiers de sites), en plus de la fiche de chaque utilisateur
3.2.0 — Sécurité et stabilité
Correctifs
- Correction d'une faille permettant à un compte connecté de lire des fichiers hors du dossier prévu (dont la base de données) via un nom de fichier piégé ; l'accès aux fichiers est désormais validé par chemin réel
- Les comptes super_admin ne sont plus modifiables par un administrateur (mot de passe, fiche, activation) : ils ne le sont que par un super_admin
- La suppression d'un dossier est confinée à votre société ; l'édition d'un équipement exige désormais la permission correspondante
- Formulaire « Signaler un problème » protégé (compte requis, jeton, limite de débit) ; diagnostic email réservé au super administrateur ; réordonnancement des groupes de sites confiné à votre société
- Permission « Générer des PDF » réellement appliquée : sans ce droit, plus de PDF de bon d'intervention, de CERFA ni de facture (les administrateurs y ont toujours accès)
- Création d'un relevé, déconnexion et signatures des CERFA et bons : déclenchées par un vrai bouton, plus par un simple lien ni à la seule ouverture du document, pour éviter toute action à votre insu
- Photos et catalogue : les suppressions passent dans une corbeille restaurable d'un clic, plus de perte définitive par erreur ; la suppression définitive récapitule ce qui sera emporté et résiste à une interruption en cours de route
- Import d'un tarif fournisseur : seules les colonnes présentes dans le fichier sont mises à jour (une désignation ou un prix de vente absent n'est plus écrasé)
- Code de connexion valable une heure au lieu de dix minutes, le temps que le message passe le filtrage du destinataire
3.0.0 — Module Devis et Facturation
Nouvelle fonctionnalité
- Nouveau module Devis et Facturation (plans Pro et Entreprise) : devis, factures, avoirs et suivi des règlements, accessible par utilisateur via la permission « Accéder aux devis et factures »
- Devis : éditeur de lignes avec calcul instantané des totaux, TVA multi-taux (20 %, 10 %, 5,5 %, 0 %), titres de section, commentaires, remises par ligne et remise globale, acompte, PDF avec cadre « Bon pour accord »
- Catalogue de prestations réutilisables (main d'œuvre, déplacements, pièces, fluides au kilo, forfaits) proposées en suggestion dans l'éditeur
- Numérotation légale continue et sans trou par société, type et année (DEV-2026-0001, FAC-2026-0001, AV-2026-0001), attribuée à l'émission uniquement
- Document émis verrouillé définitivement, conformément à la réglementation : un devis se duplique pour être modifié, une facture se corrige par un avoir
- Cycle de vie complet : devis émis, accepté ou refusé, conversion en un clic en facture, expiration automatique passé la date de validité
- Factures : échéance automatique, enregistrement des règlements (virement, chèque, carte, espèces), passage automatique en « Partiellement payée » puis « Payée », badge « En retard » dès l'échéance dépassée
- Avoirs : reprise des lignes de la facture en négatif, montant déduit du restant dû, avec renumérotation dédiée
- Facturation depuis un bon d'intervention : client, description des travaux, durée en main d'œuvre, fluide au kilo et pièces remplacées repris automatiquement
- Mentions légales complètes sur les PDF : identité et SIRET des deux parties, TVA par taux, pénalités de retard, indemnité de recouvrement de 40 € pour les clients professionnels, escompte, coordonnées bancaires, franchise en base de TVA (article 293 B du CGI) pour les auto-entrepreneurs
- Configuration par société : préfixes de numérotation, TVA par défaut, délais de validité et d'échéance, IBAN, mentions de pied de page et conditions générales
- Tableau de bord enrichi : chiffre d'affaires facturé du mois, devis en attente et factures en retard
- Acceptation du devis en ligne : un lien à transmettre au client, qui consulte le document sans compte ni mot de passe et signe au doigt ou à la souris ; l'accord est horodaté et le devis passe seul en accepté
- TVA réduite sur logement de plus de deux ans : une case à cocher ajoute la mention certifiée que le client signe, en remplacement de l'attestation supprimée en février 2025
- Autoliquidation pour la sous-traitance du bâtiment : bascule le document hors taxe avec la mention de l'article 283-2 nonies du CGI
- Factures d'acompte en un clic depuis un devis accepté, avec répartition de la TVA par taux ; la facture de solde déduit automatiquement les acomptes déjà émis
- Journal des ventes exportable en XLSX sur la période de votre choix, avec les bases hors taxe par taux, les règlements et les impayés, prêt pour le comptable
- Le choix d'un site existant remplit les coordonnées du client sans quitter la page, y compris sur un devis dupliqué
- Catalogue organisé en arborescence : catégories et sous-catégories, création et renommage sur place, déplacement dans l'arbre, filtrage des articles par catégorie (sous-catégories incluses) et recherche instantanée ; les catégories existantes sont reprises automatiquement
- Référence article distincte de la désignation : vous cherchez par votre référence fournisseur, le client lit un libellé clair ; la référence apparaît discrètement sur les devis et factures
- Prix d'achat et marge : marge affichée en euros et en pourcentage dans le catalogue, calculée en direct pendant la saisie, et marge estimée du devis sur sa fiche — le prix d'achat n'apparaît jamais sur les documents remis au client
- Duplication d'un article en un clic, pratique pour les variantes d'une même fourniture
- Import d'un tarif fournisseur au format CSV : colonnes reconnues automatiquement, accents des fichiers Windows gérés, création des catégories, marques et fournisseurs manquants, mise à jour des articles déjà présents par référence, et calcul des prix de vente par coefficient si le fichier n'en contient pas
- Marques et fournisseurs : gestion complète depuis le catalogue, fiche fournisseur avec contact, téléphone, courriel et site web, filtrage des articles par marque ou par fournisseur
- Catalogue réorganisé : panneaux Catégories, Marques et Fournisseurs repliables, formulaire d'article ouvert à la demande, largeur des colonnes du tableau ajustable à la souris
- Site web de l'entreprise dans les infos société, affiché sur les devis, factures, bons d'intervention et CERFA
- Barre latérale masquable d'un clic pour gagner de la place à l'écran ; la configuration des devis et factures rejoint la page Administration
- Les feuilles de style et scripts se rechargent automatiquement après une mise à jour : plus besoin de vider le cache du navigateur pour voir les nouveautés
2.3.1 — Connexion simplifiée par code email
Amélioration
- Nouvel appareil vérifié par un code à 6 chiffres envoyé par email (valable 10 minutes) : plus d'approbation manuelle ni de code de récupération à noter
- Cookies effacés ou navigation privée : un nouveau code suffit, l'écran de récupération disparaît
- 2 appareils maximum par compte, le plus ancien est remplacé automatiquement (fini le blocage « quota atteint »)
- La page Postes reste disponible pour consulter et révoquer les appareils ; affichage corrigé (pleine largeur, thème sombre)
- Bouton principal harmonisé avec le reste de l'interface (couleur du thème, taille standard)
- Page Rapides de nouveau accessible aux administrateurs
2.3.0 — Inscription libre-service et plans
Nouvelle fonctionnalité
- Création de compte en ligne : le plan Starter gratuit s'active seul (société + compte admin), avec confirmation par email obligatoire et protections anti-abus
- Plans Starter / Pro / Entreprise réellement appliqués : le Starter est limité à 1 technicien, 5 sites et 10 équipements par site
- Bons d'intervention et CERFA inclus dès le Starter ; suivi F-Gaz, rapports PDF, photos et export XLSX réservés aux plans Pro et Entreprise, avec écran « Passer au plan supérieur »
- Sélecteur de plan par société pour le super admin ; les sociétés existantes conservent l'intégralité de leurs fonctions (plan Pro par défaut)
- Premier poste de l'administrateur d'une nouvelle société approuvé automatiquement (connexion immédiate après confirmation)
- Gestion des postes déléguée aux administrateurs : chaque société approuve, révoque et gère les appareils de sa propre équipe
- Nouvelle page publique dédiée aux indépendants et petites entreprises, orientée Starter gratuit
- Boutons « Commencer gratuitement » reliés à l'inscription en ligne
2.2.0 — Export XLSX
Nouvelle fonctionnalité
- Export des données au format XLSX, généré et téléchargé à la demande (aucun stockage sur le serveur)
- Bilan fluides / F-gas exportable en un clic : inventaire par équipement (charge, fluide, GWP, CO₂e) et synthèse
- Export complet société : classeur multi-onglets (sites, équipements, relevés, CERFA, bons, inventaire fluides), avec filtre de période optionnel
- Versions consolidées pour l'administrateur de groupe (toutes agences, colonne « Agence »)
- Export complet réservé aux administrateurs ; bilan fluides accessible avec le droit fluides
2.0.0 — Gestion de groupe (multi-agences)
Nouvelle fonctionnalité
- Société mère (holding) chapeautant plusieurs agences : hiérarchie parent / agences, activée par le super admin (module par société)
- Nouveau rôle « Administrateur de groupe » : gère toutes ses agences, cloisonné sous le super admin (aucun accès plateforme)
- Bascule d'agence depuis l'en-tête : l'administrateur de groupe (ou un utilisateur multi-agences) travaille dans l'agence choisie ; la société mère apparaît en premier
- Console groupe en lecture consolidée : tableau de bord (indicateurs par agence), plannings de toutes les agences, suivi des fluides consolidé (kg et CO₂e par agence et par fluide)
- Console personnel : tous les utilisateurs du groupe regroupés par agence, création et édition, déplacement d'un utilisateur d'une agence à l'autre
- Quota d'utilisateurs global porté par la société mère, réparti agence par agence par l'administrateur de groupe
- Changement d'agence d'un utilisateur : ses sessions sont invalidées (reconnexion requise)
- Réattribution d'un site (et de ses équipements) à une autre agence ; l'historique déjà produit reste rattaché à l'agence d'origine mais demeure consultable en lecture sur la fiche
- Vues consolidées réservées à l'administrateur de groupe
1.9.0 — Planning des interventions
Nouvelle fonctionnalité
- Nouveau module Planning : calendrier des interventions en vues Jour, Semaine et Mois (grille horaire 6h-20h en Jour/Semaine, semaine du lundi au samedi)
- Droits dédiés attribuables par utilisateur : "Gérer le planning" (gestionnaire) et "Convertir ses RDV en bon" (technicien)
- Vue "Mon planning" en lecture seule pour les techniciens (leurs RDV, avec passage en cours / fait)
- Couleur par technicien, filtre par technicien, légende limitée aux techniciens ayant un RDV sur la période affichée
- Sélecteur d'heure façon horloge à aiguille ; dates de début et de fin pré-remplies
- Sélection du site limitée aux dossiers accessibles à l'utilisateur (gestionnaire non-admin)
- Vérification de disponibilité du technicien : avertissement en cas de créneau déjà occupé, avec confirmation possible
- Conversion d'un RDV en bon d'intervention (pré-remplissage client et équipement) ; le RDV passe "En cours", puis "Fait" quand le bon est terminé ou signé
- Sélecteur de statut dans le détail d'un RDV ; RDV faits ou annulés grisés
- Clic sur un jour (vues Mois et Semaine) pour ouvrir la vue Jour correspondante
- Bon issu du planning : informations client et équipement non modifiables en édition
- Types d'intervention unifiés entre le planning et les bons (source unique)
1.8.1 — Pages d'erreur et allègement CSS
Amélioration technique
- Pages d'erreur personnalisées 400, 401, 403, 500 et 503 (en plus de la 404), au style du site
- Pages 500 et 503 en HTML statique auto-suffisant : elles s'affichent même si PHP est saturé ou indisponible
- CSS du planning extrait dans
assets/css/planning.css, chargé uniquement sur les pages planning frigodiag.css allégé d'environ 12 Ko sur toutes les autres pages
Amélioration technique
- Composant
fd-pager.js partagé — boutons numérotés harmonisés sur toutes les pages (dashboard et sites) - Widgets du tableau de bord migrés vers la pagination numérotée (précédemment prev · 1-6/20 · next avec dropdown)
- JS de la page Sites migré vers
assets/js/sites-index.js — séparation code / template PHP
1.7.7 — Dashboard : messages épinglés et réinitialisation de vue
Amélioration
- Messages épinglés du fil interne affichés dans la zone de bienvenue, à côté du "Bonjour"
- Hauteur fixe avec scroll si plusieurs messages épinglés
- Largeur limitée à 1/3 en bureau, pleine largeur en mobile (breakpoint 900 px)
- Bouton "Reinit. vue" déplacé en bas de page avec confirmation avant action
- Sidebar basculée en barre horizontale sous 900 px (précédemment 800 px)
1.7.6 — Page Sites : grille et sélecteur de période interactif
Amélioration
- Groupes de sites affichés côte à côte en bureau (2 colonnes flex, alignement par le haut)
- Sites à l'intérieur des groupes ouverts en 2 colonnes (CSS multi-column)
- Sélecteur de période "Sites sans relevé" remplacé par un radio panel interactif (30 j / 6 m / 1 a / 2 a)
- Préférence de période sauvegardée par utilisateur via API — rechargée à la connexion suivante
1.7.5 — Application de navigation au choix + correctifs divers
Amélioration & correctifs
- Préférence de navigation par utilisateur — Google Maps, Waze, Apple Plans, OpenStreetMap — enregistrée dans le profil (migration automatique)
- Lien de navigation sur les fiches site généré selon la préférence de l'utilisateur connecté
- Suppression de la case à cocher "Compte actif" dans le formulaire utilisateur (doublon avec le bouton Activer/Désactiver)
- Confirmation avant suppression d'un champ personnalisé dans la configuration des bons
- Couleur des liens email adaptée au thème clair et sombre
1.7.4 — CERFA & Bons : verrouillage, signatures et améliorations UX
Fonctionnalité & correctifs
- Archive immuable côté serveur pour les CERFA et bons d'intervention
- CERFA validé sans signature client peut repasser en cours
- Signature client enregistre le statut terminé et la date de validation en une seule opération
- Bouton "Effacer la signature" masqué si CERFA signé ou terminé
- SIRET détenteur en lecture seule sur la fiche site (modifiable uniquement via l'édition)
- SIRET pré-rempli depuis le site affiché en lecture seule à la création d'un CERFA ; sauvegardé dans le site si nouvellement renseigné
- Placeholders supprimés sur tous les champs de création CERFA
- Redirection vers la section signatures après création d'un CERFA
- Labels status CERFA inversés visuellement :
termine → "Validé", valide → "Terminé" (valeurs DB inchangées) - Équipements archivés exclus de l'arborescence des sites
- Équipements affichés en grille sur la fiche site
- Boutons Archiver/Supprimer déplacés vers la page d'édition de l'équipement, dans une zone sensible dédiée
- Zone sensible avec Archiver, Supprimer, Annuler ajoutée sur les pages d'édition site et équipement
- Majuscules automatiques sur nom, marque, modèle, numéro de série et localisation des équipements
- Card "Infos société" déplacée après "Mon profil" dans l'administration
- Bouton "Annuler" et mise en ligne des boutons dans l'édition utilisateur
- Logo société ajouté dans l'en-tête des PDF de bons d'intervention
- Corrections CSS : grille équipements, zone sensible, boutons en ligne mobile
1.7.3 — Signatures et uploads : WebP, resize, dossiers organisés
Amélioration
- Canvas de dessin tactile/souris pour la signature technicien dans le profil (onglets Importer / Dessiner)
- Signatures et logos redimensionnés et convertis en WebP à l'upload
- Variante JPG générée pour les logos utilisés dans les PDF
- Compatibilité multi-format à l'import (jpg, png, webp, gif)
1.7.2 — Corbeille : suppression des styles navigateur par défaut
Correctif
- Éléments de liste dans la corbeille migrés vers des classes CSS dédiées pour équipements et sites archivés
Fonctionnalité majeure
- Fil de commentaires intégré sur le tableau de bord — messages chronologiques, scroll automatique
- POST handler sécurisé — envoyer, modifier, supprimer, épingler/désépingler, purger, réactions
- Activation par société (super admin) — désactivé par défaut
- Messages épinglés affichés en haut avec style distinct
- Modification inline avec marqueur *(modifié)*
- Suppression : propriétaire ou admin — soft delete
- Réactions ✓ Vu et 👍 — toggle, compteur, tooltip avec noms ; lecture seule sur ses propres messages
- Admin : purge totale ou sauf épinglés
- Migrations automatiques des tables nécessaires
1.6.0 — Bons d'intervention : sections configurables et champs personnalisés
Fonctionnalité majeure
- Page de configuration des bons : sections optionnelles activables/désactivables et réordonnables par glisser-déposer (SortableJS)
- Champs personnalisés avec types texte / case à cocher / radio / liste déroulante, builder d'options intégré
- Sections optionnelles rendues dans l'ordre configuré sur les formulaires et les PDF
- Sections vides ignorées à l'impression
- Bouton "Configuration" accessible aux admins depuis la liste des bons
1.5.9 — Module Contrats d'assemblage CERFA 15498*02
Fonctionnalité majeure
- Nouveau module contrats d'assemblage : création, édition, visualisation, impression et téléchargement PDF
- Formulaire complet acquéreur / installateur / distributeur / équipement / signataires — champs installateur pré-remplis depuis le profil société, toujours readonly
- Canvas de signature acquéreur et installateur — signature installateur auto-remplie depuis le profil technicien au premier chargement
- Impression PDF standalone via html2pdf.js hébergé localement
- Liste paginée et triable avec recherche
- Accordion "Derniers Contrats d'assemblage" ajouté au tableau de bord
- Suppression de tous les styles inline sur le module
1.5.8 — Dark mode : suppression des styles inline
Correctif
- Suppression de toutes les couleurs hardcodées dans les fiches équipement, édition utilisateur et module fluides
- Couleurs migrées vers variables CSS globales
- Migration des résumés de tableau de bord vers les classes accordéon unifiées
1.5.7 — Thème sombre : toggle et variables CSS globales
Fonctionnalité majeure
- Variables CSS globales pour toutes les couleurs de l'interface (fond, texte, cartes, header, sidebar, boutons, accordéons)
- Palette sombre bleue complète
- Toggle pill soleil / lune dans le header avec persistance locale
- Snippet anti-flash appliqué avant le premier rendu
- Nouvelles classes accordéon pour fonds neutres
Fonctionnalité
- Pagination 10 lignes/page avec flèches sur les tableaux historique, relevés rapides, CERFA rapides et liste équipements
- Tri par colonne avec indicateurs directionnels
- Recalcul automatique de la pagination après un tri
1.5.5 — Logo et identité visuelle
Amélioration
- Logo affiché dans le header en remplacement du texte
- Upload logo société avec conversion WebP et variante JPG pour PDF
- Autorisation de lecture des images uploadées
1.5.4 — Rapides : tri, recherche et position
Amélioration
- Bloc boutons déplacé après les accordéons sur la page rapides
- Tri par colonne sur les deux tableaux rapides
- Accordéon exclusif : ouverture d'un relevé ferme le précédent
1.5.3 — Correctifs : tri, filtrage et liens
Correctif fonctionnel
- Correction du tri qui réinsérait les lignes sans préserver leur visibilité
- Ré-application du filtre actif après un tri sur le tableau "Sans CERFA"
- Correction des liens vers les fiches CERFA depuis le module fluides
- Section historique CERFA fermée par défaut
1.5.2 — Accordéons : unification et améliorations UI
Amélioration
- Migration des listes d'équipements vers la classe accordéon unifiée
- Animation de rotation sur les chevrons d'accordéon
- Accordéon fermé par défaut dans la gestion des groupes de sites
- Accordéon exclusif sur la liste des sites
1.5.1 — Dossiers : gestion des accès par dossier
Fonctionnalité majeure
- Nouvelles tables dossiers avec relation many-to-many sites ↔ dossiers et utilisateurs ↔ dossiers
- CRUD complet des dossiers — créer, renommer, supprimer, affecter des sites
- Section "Dossiers accessibles" dans l'édition utilisateur
- Règle : aucun dossier coché → l'utilisateur voit tout ; au moins un coché → filtre appliqué
- Filtre dossiers appliqué sur les listes de sites et d'équipements
1.5.0 — Analyse globale
Fonctionnalité majeure
- Tableau de bord analytique multi-critères — filtres par période, statut CERFA, équipements sans relevé récent
- Carte "CERFA Mce finis" avec seuils configurables
- Tri par colonne sur tous les tableaux d'analyse
1.4.4 — CERFA : navigation et layout
Amélioration
- Bouton "Nouveau CERFA" migré vers le style principal inline
- Suppression des breadcrumbs, remplacement par le layout page standard
1.4.3 — Navigation contextuelle : équipements et CERFA
Amélioration
- Fil d'Ariane remplacé par boutons de navigation contextuels (Retour / lien vers le site)
1.4.2 — Navigation contextuelle : relevés
Amélioration
- Boutons de navigation contextuels sur les fiches relevé — Retour et lien équipement
- Bouton "Retour" masqué pour les relevés sans équipement associé
1.4.1 — Rapports : statuts et accès
Amélioration
- Remplacement de la table rapports obsolète par les relevés
- Badges de statut colorés et liens vers les fiches
1.4.0 — Module Fluides
Fonctionnalité majeure
- Tableau de bord des charges fluides par site et équipement
- Bilan global : ajouts, retraits, recyclages, nombre d'interventions par période
- Graphiques historiques par fluide avec Chart.js
- Filtres par période avec onglets
- Accordéons imbriqués et badges statut CERFA dynamiques
1.3.3 — Relevés : chart et mode de fonctionnement
Amélioration
- Graphique Chart.js avec sélection des mesures et conversion pression → température
- Sélecteur "Mode de fonctionnement" Froid / Chaud, verrouillé après validation
1.3.2 — Relevés : champs et validation
Amélioration
- Champs de mesure dynamiques selon le type d'équipement
- Validation côté serveur et calcul automatique des températures de saturation
1.3.1 — Relevés : création rapide
Amélioration
- Pré-remplissage depuis l'équipement sélectionné
- Sélecteur d'équipement filtré par site
- Redirection vers le relevé créé après enregistrement
1.3.0 — Page Rapides
Fonctionnalité majeure
- Vue centralisée des derniers relevés et CERFA de la société
- Permission dédiée — visible en sidebar pour les utilisateurs autorisés
- Recherche en temps réel sur les deux tableaux
1.2.0 — Relevés dans les rapports
Fonctionnalité
- Affichage des relevés avec statuts et liens vers les fiches dans les rapports
- Badges colorés de statut
1.1.0 — Gestion des sites et équipements
Fonctionnalité majeure
- CRUD complet : sites, équipements, relevés, CERFA
- Arborescence sites → équipements → relevés
- Système de groupes de sites avec couleurs
- Archives et corbeille pour sites et équipements
1.0.0 — Initialisation
Version initiale
- Authentification multi-société (admin / super_admin / utilisateur)
- Structure de base : sociétés, utilisateurs, sites, équipements, relevés, CERFA
- Interface responsive avec sidebar, header, thème CSS propriétaire