Vues de liste
L'éditeur Vues de liste est la page de configuration des grilles construites sur la table de données partagée — factures, e-documents, e-reporting, les quatre vues du Diagnostic, les tâches planifiées et leurs exécutions, les vues de la référence développeur et l'aperçu d'import de la promotion ; la liste complète figure sous Vues. Une spec JSON par vue pilote la forme des colonnes sur chaque grille — libellés, type, format, alignement, largeur, tri par défaut et la liste blanche des filtres — modifiable ici sans toucher au code.
Un second concept vit à côté de la spec : le catalogue de colonnes. Chaque vue livre un catalogue de toutes les colonnes que les tables sous-jacentes peuvent produire — le catalogue est la source de vérité de ce qui est adressable, la spec en sélectionne un sous-ensemble et le présente. Le picker + Ajouter une colonne est juste une vue filtrée du catalogue.
La spécification d'une vue est la présentation Standard du sélecteur de vues de la liste. Par-dessus, chaque utilisateur enregistre ses propres vues — ordre, visibilité et largeur des colonnes, tri, filtres, période — parmi les colonnes que la spécification propose. La Width définie ici est la largeur par défaut de la colonne, celle que rétablit Largeurs par défaut.
Vue d'ensemble
Vues
L'éditeur présente une carte repliable par vue. Une carte ne charge sa spec qu'à son ouverture ; Save, dans l'en-tête de la page Paramètres, enregistre toutes les modifications faites dans les cartes.
Les cartes sont regroupées selon la partie de l'application qui affiche la grille, triées par nom à l'intérieur d'un groupe :
| Groupe | Carte | Grille pilotée | Propriété |
|---|---|---|---|
| E-invoicing | E-Documents | Liste E-Documents | view.documents |
| E-Reporting | E-Reporting | view.ereporting | |
| Invoices | Liste E-Invoicing | view.invoices | |
| Diagnostics | Failures | Vue Anomalies du Diagnostic | view.errors |
| Integration Errors | Vue Erreurs d'intégration du Diagnostic | view.integrationErrors | |
| Processing Log | Vue Journal des traitements du Diagnostic | view.processingLog | |
| Server Log | Vue Journal serveur du Diagnostic | view.serverLog | |
| Jobs | Job Runs | Historique des exécutions d'une tâche planifiée | view.jobRuns |
| Scheduled Jobs | Grille des Tâches planifiées | view.scheduledJobs | |
| Documentation & administration | API Operations | Vue API de la référence développeur | view.apiOperations |
| Configuration Keys | Vue Configuration de la référence développeur | view.configKeys | |
| Data Dictionary | Grille des colonnes de la vue Tables de la référence développeur | view.dataDictionary | |
| Promotion Plan | Aperçu d'import de la promotion | view.promotionPlan | |
| Schematron Rules | Grille des règles de la page Schematrons | view.schematronRules |
Listes de valeurs par défaut
Dès l'installation, les vues Invoices, E-Documents, Integration Errors et E-Reporting affichent les libellés de leurs colonnes codées — types de document, sociétés, codes activité, catégories de traitement, suivi, types de facture, pays, codes motif — choisis dans des listes de référence ou des listes personnalisées dans leurs filtres, avec les mêmes noms de colonnes d'une page à l'autre (Party Number, Party Name). E-Documents dispose en plus des colonnes statut, type de document, motif, date d'échéance, numéro UBL et modèle, avec leurs filtres. Une instance qui a enregistré ses vues de liste les conserve.
Les exports Excel / CSV de ces grilles écrivent une telle colonne sous la forme code — libellé, comme à l'écran.
La liste choisie pour une colonne codée des vues Invoices, E-Documents et Integration Errors donne aussi ses libellés à ce champ dans l'Explorateur.
Un petit badge à côté du nom de vue indique si la spec active vient du défaut embarqué dans le JAR (default) ou d'une entrée stockée sur db-nomaubl (override) :
- default — aucune propriété
view.<nom>n'existe surdb-nomaubl. C'est le JSON embarqué dansconfig/list-views/view.<nom>.jsonqui pilote l'affichage. Enregistrer depuis l'éditeur écrit une propriété et fait basculer le badge enoverride. - override — une propriété a été stockée. L'éditeur lit la valeur stockée, la page lit la valeur stockée, le défaut embarqué est ignoré. Reset to defaults supprime la surcharge enregistrée ; la page revient alors au défaut embarqué.
Lignes de colonne
Chaque carte porte une table des colonnes actuellement dans la spec. Une ligne par colonne.
| Colonne | Description |
|---|---|
| ⠿ (poignée) | Glisser-déposer pour réordonner. L'ordre dans l'éditeur est l'ordre dans la grille. |
| Nom | Le nom de colonne de la spec — doit correspondre à une colonne du catalogue de la vue. Lecture seule sur les lignes existantes (le nom est la clé de jointure avec le catalogue) ; modifiable uniquement à l'ajout via le picker. |
| Libellé EN / Libellé FR | Les libellés affichés dans l'en-tête de la grille. Libellé FR est utilisé quand la locale active commence par fr, sinon Libellé EN. Les deux champs sont libres. |
| Type | string / number / date / datetime. Pilote le tri et l'alignement par défaut des cellules. |
| Format | Renderer optionnel : date / datetime / amount / percent / badge. Appliqué par-dessus le type. |
| Largeur | Largeur en pixels passée au <colgroup> de la table. Les colonnes sans largeur se partagent l'espace horizontal restant. |
| Visible | Bascule maître. Désactivé = la colonne est dans la spec mais cachée dans la grille (toujours interrogeable). |
| Filtre | Liste blanche pour le panneau Filtres avancés. Désactivé = aucune pastille de filtre n'est proposée pour cette colonne. |
| ⌫ (retirer) | Retire la colonne de la spec. L'entrée du catalogue est intacte — la rajouter plus tard reproduit la même forme. |
Le tri par défaut vit sur la spec mais se définit ailleurs (aujourd'hui en modifiant le JSON embarqué ou la propriété stockée directement ; un toggle UI est prévu pour une version future). Chaque vue livre un défaut adapté.
+ Ajouter une colonne
Le bouton sous la liste des lignes ouvre le picker du catalogue — une liste recherchable de toutes les entrées de catalogue absentes de la spec courante. Chaque entrée affiche :
| Champ | Contenu |
|---|---|
| Nom | Le nom de colonne dans le catalogue — c'est la valeur que la spec stocke. |
| Libellé | Le libellé anglais par défaut proposé par le catalogue. Le libellé français dérive du labelFr du catalogue s'il existe ; les deux libellés sont modifiables une fois la colonne dans la spec. |
| Type | STRING / NUMBER / DATE / JDE_DATE / JDE_DATETIME. Pilote le type par défaut de la ligne de spec. Les dates JDE intègrent un décodeur (julien ou composite UPMJ+UPMT). |
Choisir une entrée insère une nouvelle ligne en bas de la table, amorcée avec les défauts du catalogue. Enregistrer valide ; la colonne apparaît dans la page au prochain rendu.
Le catalogue lui-même est côté serveur et n'est pas modifiable depuis l'IHM. Ajouter une colonne réellement nouvelle (que le back-end ne sait pas projeter) demande une modification de code dans le handler Java.
Ligne Défauts
Au-dessus des lignes de colonne, chaque carte de vue a une ligne Défauts avec les réglages par vue qui s'appliquent en dehors de la forme des colonnes.
| Champ | Description |
|---|---|
| Page size | Taille de page initiale du paginateur TanStack en grille. Enregistrée sous spec.defaultPageSize. Vide = le réglage Rows per page de Paramètres › Navigation & lists (50 si rien n'est choisi). |
| Max rows | Limite stricte de la tranche chargée par un seul Exécuter. Les vues pilotées par spec fonctionnent en mode hybride côté client : chaque Exécuter charge une tranche limitée depuis le serveur et TanStack pagine / trie / filtre dans cette tranche — aucun aller-retour pendant la saisie dans la ligne de filtre par colonne. Enregistré sous spec.maxRows. Vide = le réglage Rows loaded de Paramètres › Navigation & lists (100 000 si rien n'est choisi). Les vues livrées ne fixent ni l'un ni l'autre. |
Quand le cap de la tranche est atteint pendant un Exécuter, la barre d'outils de la page affiche un message traduit X / Y lignes à côté du bouton Exécuter — indication que l'opérateur devrait affiner la plage de dates ou les Filtres avancés pour obtenir la tranche la plus pertinente. Le message est informatif ; la page continue de fonctionner.
Panneau Filtres avancés
La liste blanche filter: true de la spec alimente une seconde IHM sur la page destination : le panneau Filtres avancés — pliable, indexé par nom de colonne de spec, avec un sélecteur d'opérateur par colonne (contains, equals, ≠, <, ≤, >, ≥, between, empty, not empty). Le panneau émet un état brouillon ; un bouton Exécuter explicite le valide en appliedFilters — taper ne sature pas le back-end.
La liste d'opérateurs proposée par colonne dépend du comportement de filtre de l'entrée du catalogue :
filterKind du catalogue | Opérateurs proposés |
|---|---|
exact | equals, ≠, empty, not empty. |
LIKE | contains, equals, ≠, empty, not empty. |
inList | equals (multi-choix — le catalogue éclate les buckets séparés par virgule en clause IN (?,?,?,?,?)). |
between | <, ≤, >, ≥, between. S'applique aux colonnes numériques et de date. |
Marquer une colonne Filtre = désactivé dans la spec la laisse visible dans la grille mais retire sa pastille du panneau — utile pour les champs en lecture seule que l'opérateur n'a pas besoin d'interroger.
Colonnes refList — picker multi-sélection
Une colonne peut être rattachée à une liste de référence — soit un catalogue réglementaire de Listes de référence (statuts, devises, codes pays, …), soit une liste définie par l'opérateur dans Listes personnalisées. Renseigner refList: <nom-de-liste> sur la spec de colonne suffit : renderer de cellule, dropdown de filtre par colonne et picker multi-sélection des Filtres avancés s'activent automatiquement.
Quand le catalogue ou la spec déclare une colonne comme liste de référence (refList: …) — le picker statuses sur Factures, eReporting statuses sur E-Reporting, n'importe quelle liste personnalisée — le panneau Filtres avancés et la ligne de filtre par colonne rendent tous les deux un picker multi-sélection au lieu d'un dropdown simple. Chaque ligne du picker est une bascule (code — libellé), le déclencheur affiche N sélectionné(s) au-delà du plafond inline, et un bouton ✕ à droite réinitialise la sélection en un clic sans ouvrir le popover.
La sélection multi-sélection est encodée en chaîne jointe par virgule dans OpFilter.a (par ex. 200,210,9907) ; côté serveur, le flag filterInList du catalogue la décompose en clause IN (?,?,?,?,?) — choisir trois statuts renvoie bien l'union, pas un LIKE sur la chaîne jointe.
L'opérateur between sur une colonne date / nombre / texte élargit la colonne pour accueillir les deux champs opérandes (BETWEEN_COL_WIDTH = 340px) afin que les deux inputs s'affichent côte à côte sans être tronqués. Revenir à un opérateur à opérande unique remet la colonne à sa largeur de spec au rendu suivant.
Référence du schéma
Le fichier de spec ressemble à ceci (extrait) :
{
"name": "view.invoices",
"defaultSort": [{"column": "creationDate", "direction": "desc"}],
"columns": [
{
"name": "statusCode",
"label": "Status",
"labelFr": "Statut",
"type": "string",
"format": "badge",
"align": "left",
"width": 90,
"visible": true,
"filter": true
},
{
"name": "customerName",
"label": "Customer",
"labelFr": "Client",
"type": "string",
"width": 180,
"visible": true,
"filter": true
}
]
}
Le name se joint à l'entrée de catalogue qui a la clé correspondante ; tout le reste de la ligne est de la présentation. Enregistrer depuis l'éditeur écrit la même forme sous db-nomaubl.view.<nom>. Réinitialiser la propriété — plus simple via Configuration → Système → Global quand il porte les propriétés JSON — fait basculer la page vers le défaut embarqué et le badge passe à default.
Conseils & bonnes pratiques
- Partir du défaut embarqué. Chaque vue livre un défaut soigné ; ne modifier que quand un besoin spécifique apparaît. Le badge
overridesignale à l'opérateur que la spec s'écarte de la configuration livrée. - Utiliser le catalogue avant de demander une modification de code. Quand la colonne souhaitée est déjà dans le catalogue (par ex.
logBusinessUnit,logDueDate),+ Ajouter une colonnerègle le sujet en quelques clics. Une modification de code n'est nécessaire que quand la colonne est absente du catalogue. - Garder la liste blanche de filtres courte. Marquer toutes les colonnes
filter: trueencombre le panneau Filtres avancés — limiter la liste aux colonnes que les opérateurs interrogent réellement. - Définir une largeur pour les colonnes qui en ont besoin. Les badges de statut, les dates, les codes ont des largeurs naturelles ; les longues chaînes restent sans largeur pour prendre l'espace restant.
widthest aussi lemin-widthCSS de la colonne — une valeur trop grande écrase le reste de la grille. - Caché ≠ retiré. Mettre
Visible = désactivégarde la colonne interrogeable par le panneau Filtres avancés. À utiliser pour les champs techniques que l'opérateur filtre sans avoir besoin de les lire.