Mode rapport à bandes

L'éditeur de mise en page PDF de SmartInterventions propose deux façons de composer un document à partir d'un schéma : le mode flux et le mode rapport (bandes). Cette page décrit le mode rapport à bandes, inspiré des générateurs de rapports classiques (style Crystal Reports).

À quoi sert le mode rapport, et quand le choisir

Le mode flux empile des sections de haut en bas pour produire un compte rendu narratif simple. C'est le bon choix quand le document se lit comme une suite de blocs fixes : en-tête, description, photos, signatures.

Le mode rapport à bandes est fait pour les documents pilotés par les données, où une même zone doit se répéter pour chaque ligne d'une collection. Choisissez-le dès que vous avez besoin d'au moins une de ces capacités, qu'aucun mode flux ne sait produire :

  • Détail répété : un bloc imprimé une fois par enregistrement (une ligne par pièce posée, un bloc par contrôle d'équipement, une ligne par évènement lié).
  • Groupes : regrouper les enregistrements par une valeur commune (par rôle de pièce, par famille d'équipement, par statut) avec un en-tête et un pied par groupe.
  • Sous-totaux et totaux généraux : additionner ou compter automatiquement, au niveau d'un groupe (sous-total) et au niveau du document entier (total général).
  • Formules : composer des valeurs calculées (concaténation, condition, multiplication, arrondi) sans rien coder.
  • Mise en forme conditionnelle : changer l'apparence d'une ligne selon ses données (par exemple passer une ligne en rouge quand une quantité dépasse un seuil).

Si votre document n'a besoin d'aucune de ces capacités, restez en mode flux : il est plus simple. Un même schéma peut être rendu en flux ou en rapport ; le choix du mode n'est pas une nature de document mais une façon de composer la sortie.

Ouvrir le mode rapport

Le mode rapport s'ouvre depuis l'éditeur de mise en page, accessible depuis l'onglet Type d'intervention (voir Configuration > Éditeur visuel de mise en page PDF).

  1. Dans l'écran Choisir un document, sélectionnez le schéma à éditer. Les schémas CERFA partent directement dans l'éditeur à positionnement absolu ; pour tout autre schéma, une étape de choix du mode s'affiche.
  2. Choisissez Mode rapport (bandes) (l'autre option étant Mode flux (sections)). Le mode actuellement actif du schéma est présélectionné.
  3. L'éditeur s'ouvre sur le schéma choisi avec son gabarit rapport déjà enregistré, ou sur un rapport vide si aucun n'a encore été créé.

Les deux modes coexistent sans se détruire : si un gabarit de l'autre mode existe déjà pour ce schéma, l'éditeur vous en avertit et le conserve (il reste présent, simplement non actif). Aucun gabarit n'est supprimé sans action explicite de votre part.

L'écran de l'éditeur

Éditeur de rapport à bandes en quatre colonnes : la palette des blocs, le canevas à bandes au centre, l'inspecteur à onglets et l'aperçu PDF à droite

L'éditeur de rapport est organisé en quatre colonnes, de gauche à droite :

  • la palette des blocs disponibles ;
  • le canevas à bandes au centre ;
  • l'inspecteur à onglets (Section, Bande, Données, Formules) ;
  • l'aperçu PDF à droite.

La barre du haut rappelle le nom du schéma, le libellé "Mode rapport (bandes)", un indicateur (non enregistré) quand des modifications sont en attente, le bouton Charger un preset et le bouton Enregistrer.

Partir d'un preset livré

Le bouton Charger un preset de la barre du haut ouvre une fenêtre listant les modèles de rapport à bandes livrés avec le module. Ces presets servent de point de départ : choisissez-en un dans la liste pour remplir l'éditeur avec sa composition (bandes, blocs, source de données, formules et règles de mise en forme), prêt à être adapté.

  • Si le rapport en cours d'édition contient déjà du contenu, une confirmation vous prévient que le chargement du preset remplacera ce contenu. Annulez pour conserver votre travail.
  • Charger un preset ne l'installe pas et ne modifie rien sur le serveur : l'opération est en lecture seule. Le preset est simplement recopié dans l'éditeur ; rien n'est enregistré tant que vous ne cliquez pas sur Enregistrer.
  • Si aucun preset n'est livré dans le déploiement, la fenêtre l'indique ("Aucun preset disponible.") sans bloquer l'éditeur.

Le canevas à bandes

Au lieu d'une pile plate de sections, le canevas affiche des bandeaux horizontaux empilés, chacun correspondant à une bande du rapport. Chaque bande porte un libellé, une couleur selon son type, un compteur du nombre de blocs qu'elle contient, et un bouton + / - pour la replier ou la déplier.

Les bandes, dans leur ordre d'impression de haut en bas :

Bande Imprimée
En-tête de rapport Une seule fois, tout en haut de la première page.
En-tête de page En haut de chaque page (répétée).
En-tête de groupe 1 à 3 À chaque rupture du groupe du niveau correspondant.
Détail (répété par ligne) Une fois pour chaque ligne de la source de données.
Pied de groupe 1 à 3 À la fin de chaque groupe (porte les sous-totaux).
Pied de page En bas de chaque page (répété).
Pied de rapport Une seule fois, tout en bas de la dernière page (porte les totaux généraux).

Les bandes de groupe (en-tête et pied de niveau 1, 2 et 3) n'apparaissent sur le canevas que lorsque le groupe correspondant existe : ajoutez un groupe dans l'onglet Données pour faire apparaître ses bandes.

Remplir, réordonner, sélectionner

  • Sélectionner une bande : cliquez sur son bandeau d'en-tête. La bande sélectionnée est encadrée, et la palette indique "Ajouter à : nom de la bande".
  • Ajouter un bloc : avec une bande sélectionnée, cliquez sur un bloc de la palette. Un nouveau bloc de ce type est ajouté à la bande et sélectionné. Tant qu'aucune bande n'est sélectionnée, la palette est désactivée et vous invite à en choisir une.
  • Réordonner les blocs : à l'intérieur d'une bande, saisissez la poignée à gauche d'un bloc (les deux points ::) et faites-le glisser. Le réordonnancement se fait à l'intérieur d'une seule bande : on ne déplace pas un bloc d'une bande vers une autre.
  • Sélectionner un bloc : cliquez sur sa carte. Ses propriétés s'ouvrent dans l'onglet Section de l'inspecteur.
  • Supprimer un bloc : utilisez le bouton Supprimer de sa carte.

La palette reprend tout le vocabulaire de blocs du mode flux (champs, encadrés, deux colonnes, galerie photo, signatures...), enrichi de deux blocs propres au mode bandes : Ligne (inline), une ligne de champs label / valeur compacte, et Tableau de données, un tableau itérant une source.

L'inspecteur à onglets

L'inspecteur de droite regroupe quatre onglets. Il bascule automatiquement sur Section quand vous sélectionnez un bloc, et sur Bande quand vous sélectionnez une bande sans bloc ; un clic manuel sur un onglet reste toujours respecté.

Onglet Section

Propriétés du bloc sélectionné : titre, champs affichés, mise en forme du bloc. C'est le même panneau de propriétés que celui du mode flux.

Onglet Bande

Options de la bande sélectionnée (et non d'un bloc) :

  • Répéter sur chaque page : disponible pour l'en-tête et le pied de page uniquement. Réimprime la bande en haut ou en bas de chaque page.
  • Solidaire de la suite (keep_with_next) : disponible pour les en-têtes de groupe. Évite qu'un en-tête de groupe se retrouve isolé en bas d'une page, séparé de sa première ligne de détail.
  • Masquer si (expression) (suppress_when) : masque entièrement la bande quand l'expression saisie est vraie (par exemple count == 0). La grammaire est celle des formules (voir plus bas).
  • Mise en forme conditionnelle : une liste ordonnée de règles condition -> style. La première règle dont la condition est vraie l'emporte. Chaque règle définit une condition (expression booléenne) et un style : couleur de fond, couleur du texte, couleur de bordure, gras, italique. Les règles se réordonnent (Monter / Descendre) et se suppriment. Cette mise en forme est surtout utile sur la bande Détail, mais reste autorisée sur toutes les bandes.

Onglet Données

Pilote la source du rapport, son tri et ses groupes :

  • Source du détail : la collection qui alimente la bande Détail (une ligne par enregistrement). Les sources disponibles sont Pièces et fournitures (partlines), Contrôles équipement (equipment_checks), Lignes de l'intervention (fichinter_lines) et Évènements liés (linked_actions). Le panneau rappelle les champs disponibles de la source choisie.
  • Tri : une liste ordonnée de critères { champ, sens } (Croissant / Décroissant), avec ajout, suppression et réordonnancement. Le tri est appliqué avant le groupage.
  • Groupes (3 niveaux maximum) : chaque groupe définit un champ de rupture et un sens de tri. Un nouveau groupe ajouté fait apparaître ses bandes En-tête de groupe N et Pied de groupe N sur le canevas. Les niveaux restent contigus (1 à 3) ; supprimer ou réordonner un groupe renumérote automatiquement les autres.

Onglet Formules

Éditeur des champs calculés et des agrégats. Chaque formule porte :

  • un nom (utilisé pour référence dans les blocs et les autres formules) ;
  • une portée : Ligne (calcul sur la ligne courante du détail), Groupe (agrégat recalculé à chaque groupe, disponible dans les en-têtes et pieds de groupe) ou Rapport (agrégat sur tout le jeu de données, disponible dans le pied de rapport) ;
  • une expression.

Les fonctions sont fournies par un petit langage à liste blanche, sans code arbitraire. Un assistant Insérer une fonction propose :

  • des fonctions scalaires (texte, logique, numérique, dates), par exemple concat, upper, lower, trim, substr, default, if, round, abs, min, max, format_date, format_number, format_currency ;
  • des agrégats réservés aux portées Groupe / Rapport : sum, count, count_if, avg, min_of, max_of.

Un panneau repliable Champs disponibles liste les champs de la source courante, insérables en un clic dans l'expression en cours d'édition.

Validation en direct

Les formules sont validées par le serveur, en continu : à chaque modification, le rapport est envoyé et le verdict est affiché peu après. Une bannière indique Aucune erreur (vert), le nombre d'erreurs détectées (rouge), ou Validation indisponible si le serveur est injoignable (l'éditeur reste utilisable). Les erreurs liées à une formule précise s'affichent sous cette formule, avec leur position ; les erreurs générales (cycle entre formules, condition de bande, source de données) sont regroupées à part. Une fonction ou un identifiant inconnu est refusé à la validation.

Exemple concret : un rapport de pièces groupé par rôle

Le module est livré avec un gabarit type, parts_aggregated_report_v20 ("Rapport des pièces avec agrégats"), qui illustre toutes les capacités du mode. Il produit un rapport des pièces de l'intervention regroupées par rôle, avec un sous-total par groupe, un total général et une mise en forme conditionnelle.

Sa composition :

  • Source : partlines (les pièces et fournitures de l'intervention), triée par role puis product_ref.
  • Groupe (niveau 1) : rupture sur le champ role (consommable, nouvel équipement, pièce de remplacement, dépose seule).
  • Formules :
    • line_total = qty * subprice (portée Ligne) : le total de chaque ligne ;
    • group_total = sum(total_ht) (portée Groupe) : le sous-total HT du rôle ;
    • group_lines = count() (portée Groupe) : le nombre de lignes du rôle ;
    • grand_total = sum(total_ht) (portée Rapport) : le total général HT ;
    • lines_count = count() (portée Rapport) : le nombre total de lignes.
  • Bandes :
    • En-tête de rapport : le titre "Rapport des pièces avec agrégats".
    • En-tête de page : la référence de l'intervention et le nom du client, répétés en haut de chaque page.
    • En-tête de groupe 1 : le rôle en cours et son nombre de lignes, marqué Solidaire de la suite pour ne jamais rester seul en bas de page.
    • Détail : une ligne par pièce (référence, désignation, quantité, prix unitaire, total ligne). Une règle de mise en forme conditionnelle passe la ligne en rouge (when: qty > 5, fond #FDECEA, texte #B71C1C, gras) pour signaler les quantités élevées.
    • Pied de groupe 1 : le nombre de lignes du rôle et le sous-total HT du rôle.
    • Pied de page : une mention de bas de page, répétée sur chaque page.
    • Pied de rapport : le nombre total de lignes et le total général HT.

Ce gabarit est un bon point de départ : ouvrez-le en mode rapport, inspectez chaque bande, puis adaptez les groupes, les formules et les règles de mise en forme à votre besoin.

Aperçu serveur et enregistrement

La colonne Aperçu affiche en continu le vrai PDF du rapport, rendu par le serveur (et non une simulation côté navigateur), de sorte que ce que vous voyez correspond exactement au document final.

  • Choisissez une intervention de démo dans la liste : l'aperçu est généré à partir de ses données réelles. Cette liste ne propose que les interventions du même type que le schéma en cours d'édition (ou sans type), pour un aperçu cohérent : on ne prévisualise pas une mise en page "extincteur" avec une fiche dont le périmètre est un ascenseur. L'aperçu n'apparaît que si une intervention valide est choisie et qu'au moins une bande contient un bloc.
  • Pendant que vous composez le rapport sans avoir encore choisi de source de données (onglet Données), l'aperçu ne tombe pas en erreur : il rend les bandes fixes (en-têtes et pieds de rapport et de page) avec un détail vide. Le détail se remplit dès qu'une source est renseignée.
  • L'aperçu se rafraîchit automatiquement peu après chaque modification ; le bouton Rafraîchir force un nouveau rendu sans attendre.

Pour conserver votre travail, cliquez sur Enregistrer dans la barre du haut. Le gabarit à bandes est stocké dans le schéma, à côté d'un éventuel gabarit flux qui reste conservé mais inactif. Une fois enregistré et choisi comme mode actif du schéma, le rapport est produit pour les fiches d'intervention correspondantes.