Rapports et fiches techniques

La fonction "Rapport et fiche technique" permet de générer, visualiser et exporter des documents à partir des données saisies dans beCPG. La génération des rapports et fiches techniques s'appuie sur la solution de reporting BIRT (Business Intelligence and Reporting Tools).

La documentation complète de BIRT est disponible à l'adresse suivante : Documentation BIRT. Elle présente l'outil, ses concepts de base, ses fonctionnalités avancées et les bonnes pratiques de création de rapports.

Rapport de produit

Les rapports des fiches produit sont disponibles dans "Administration" > "Rapports" > "Rapports de fiche produit", classés par type d'entité. Ce dossier contient deux types de fichiers :

  • les fiches techniques : l'ensemble des fichiers .rptdesign ;
  • les fichiers de langues : les fichiers .properties qui contiennent les traductions des libellés des fiches techniques.

Pour ajouter un nouveau rapport, copiez un rapport existant et chargez la version du rapport que vous souhaitez déposer sur le système. Modifiez ensuite les métadonnées de votre rapport :

  • le nom du rapport ;
  • le type d'objet, qui définit à quel type de produit le rapport s'applique :
    • Matière première : {http://www.bcpg.fr/model/becpg/1.0}rawMaterial
    • Semi-fini : {http://www.bcpg.fr/model/becpg/1.0}semiFinishedProduct
    • Produit fini : {http://www.bcpg.fr/model/becpg/1.0}finishedProduct
    • Emballage : {http://www.bcpg.fr/model/becpg/1.0}packagingMaterial
    • Fournisseur : {http://www.bcpg.fr/model/becpg/1.0}supplier
    • Unité logistique : {http://www.bcpg.fr/model/becpg/1.0}logisticUnit
    • type général : {http://www.bcpg.fr/model/becpg/1.0}product. Ce type général couvre les matières premières, semi-finis, produits finis, ressources, emballages, kits d'emballage et unités logistiques.
  • le type de modèle :
    • Modèle système : indique si le rapport est généré automatiquement pour ce type de produit. Si le rapport n'est pas un rapport système, l'utilisateur peut le générer en le sélectionnant lorsqu'il édite le produit.
    • Modèle par défaut : indique que le rapport est le rapport par défaut du produit, c'est-à-dire le rapport affiché sur la fiche du produit. Il ne peut y avoir qu'un rapport par défaut par type de produit. Les rapports qui ne sont pas des rapports par défaut sont placés dans le dossier « Documents » du produit lors de la génération du rapport.

Métadonnées d'un modèle de rapport

Les autres métadonnées sont les suivantes :

  • Format du rapport : par défaut, le format utilisé est le PDF. beCPG garantit ce format pour ses rapports standards. Le format Word est proche du PDF. Un passage au format Excel peut nécessiter des modifications de la structure du rapport.
  • Requête AFTS : permet de spécifier une requête en dur.
  • Nombre maximum de résultats : à ne pas remplir pour les fiches techniques. Ce champ concerne les fichiers d'export.
  • Est désactivé : masque le rapport dans l'onglet "Fiches techniques" des produits. Les rapports associés restent présents dans la liste "Documents".
  • Fichiers associés : associe le rapport aux fichiers de langues .properties, pour générer automatiquement le rapport dans différentes langues. Le fichier becpg-report.css gère le style du rapport, et le fichier logo.png définit le logo affiché en haut à gauche du rapport.
  • Langue du rapport : détermine les langues disponibles dans l'onglet "Fiches techniques" des entités.
  • Rapports : permet de filtrer sur le sous-type de rapport. Pour plus de détails, voir Une liste Rapport.
  • Paramètres texte : contient les paramètres de l'extracteur de la fiche technique. S'il en manque, la fiche apparaît incomplète.

Pour personnaliser vos fiches techniques standards avec votre propre logo, remplacez le fichier logo.png dans "Administration beCPG" > "Rapports" > "Rapports de fiche produit".

Style du rapport

Vous modifiez le style du rapport avec le fichier becpg-report.css présent dans l'administration. Ce fichier fait partie des fichiers associés au rapport.

Ajout de la liste "Fiches techniques" sur une entité

Les entités (produits finis, matières premières, etc.) possèdent des listes par défaut, dont la liste "Fiches techniques". Certaines entités, comme le fournisseur, n'en possèdent pas. Pour ajouter la liste "Fiches techniques" sur le modèle Fournisseur, ouvrez le modèle dans "Administration beCPG" > "Modèles d'entités" > "Fournisseur".

Pour plus d'informations, voir Ajout d'une liste personnalisée.

BIRT

Prérequis

Pour créer ou modifier les fiches techniques, installez sur votre ordinateur les logiciels suivants :

Utilisez la version de l'éditeur BIRT qui correspond à votre version de beCPG :

beCPG Report Version Birt Version Java Version Eclipse RCP Birt Version
4.20.0 4.20 JDK 17 BIRT RCP 4.20
4.17.0 4.17 JDK 17 BIRT RCP 4.17
4.15.0 4.15 JDK 17 BIRT RCP 4.15
3.2 4.8 JDK 11 Eclipse Photon

Des connaissances de base en XML et JavaScript, voire en XPath (optionnel), sont recommandées.

Note : pour récupérer et déposer les rapports, vous devez être administrateur du système. Pour plus d'informations, voir la documentation des permissions.

Création du rapport

Partez de préférence d'un rapport existant et modifiez-le. Pour un rapport très spécifique, vous pouvez en créer un nouveau :

  1. "Window" > "Open perspective" > "Other" > "Report Design".
  2. "File" > "New" > "Project" > "Business Intelligence and Reporting Tools" > "Report project", puis nommez le projet.
  3. "File" > "New" > "Report", puis nommez le rapport et choisissez la trame de départ.

Modification d'un modèle de rapport

Vous concevez le rapport dans le designer Eclipse BIRT, qui comporte les éléments suivants :

Designer Eclipse BIRT

  • Data Explorer :
    • la data source ;
    • les data sets.
  • Outline : pour visualiser la structure du rapport.
  • Palette : la boîte à outils qui fournit des éléments de rendu tels que des tableaux, des listes, des zones de texte, etc.
  • La prévisualisation, pour générer le rapport en local. La méthode est décrite dans la section Générer le rapport en local.
  • La page centrale, dont les onglets permettent de paramétrer le rapport.

Le rapport BIRT doit être connecté à une source de données (la datasource) pour afficher le résultat en local et tester le rapport sans le déposer sur le système.

Extraction de la datasource

La datasource est un fichier XML que vous pouvez extraire avec ce lien :

javascript:let url = new URL(window.location); window.location = url.origin + '/alfresco/service/becpg/report/datasource?nodeRef=' + url.searchParams.get('nodeRef');

Enregistrez ce lien dans vos favoris, puis utilisez-le sur le produit dont vous souhaitez extraire la datasource.

Un autre lien existe pour les systèmes en SSO :

javascript:let url = new URL(window.location); window.location = url.origin + '/share/proxy/alfresco/becpg/report/datasource?nodeRef=%27%20+%20url.searchParams.get(%27nodeRef%27);

Vous pouvez aussi construire l'URL manuellement :

http://{@SERVEUR}:{PORT}/alfresco/service/becpg/report/datasource?nodeRef={NODE_REF}

Avec :

  • {@SERVEUR} : adresse IP du serveur (ex : inst1) ;
  • {PORT} : le numéro du port de communication (optionnel) ;
  • {NODE_REF} : identifiant d'un produit, disponible dans l'URL du navigateur lorsque vous êtes sur un produit, sous la forme workspace://SpacesStore/2aad6284-afc2-4d89-8bbf-bd3dd50ff1bc.

Différents extracteurs permettent d'optimiser la génération de la datasource. Ils sont décrits dans la section Extracteur.

Enregistrez ensuite la datasource dans le dossier qui accueillera les fiches techniques.

Il existe deux procédures pour ajouter une datasource :

  • lors de la création d'un rapport : faites un clic droit sur "Data Sources" > "New Data Source" > "XML Data Source". Choisissez un nom pour votre datasource, puis sélectionnez le fichier ;
  • lors de la modification d'un rapport : pour changer de datasource, cliquez sur "Data Explorer" > "Data Sources" > "DataXml". Dans la fenêtre qui s'ouvre, sélectionnez la datasource dans vos fichiers.

Ajout d'une datasource XML

Pour vérifier que la datasource est bien reliée à votre rapport, cliquez sur "Test connection". En cas d'erreur, vérifiez le contenu de votre fichier datasource.xml.

Test de la connexion à la datasource

Gestion des data sets

Un data set interroge la datasource et sélectionne des attributs. En général, un data set correspond à un onglet de beCPG.

Création d'un data set

Pour créer un data set, faites un clic droit sur "Data Sets" > "New Data Set". Nommez le data set en camelCase (exemple : "raw material" s'écrit "rawMaterial" en camelCase).

Création d'un data set

Une fois le data set créé, double-cliquez dessus pour le modifier. Le formulaire permet d'ajouter des champs ("Columns Mapping") et des champs calculés ("Computed Columns"), d'appliquer des filtres ("Filters") et de visualiser les résultats ("Preview Results").

Édition d'un data set

Row Mapping

Deux cas sont possibles :

  • entity, pour utiliser les champs des propriétés de votre entité ;
  • dataLists > xLists > xList, pour utiliser les champs d'une liste donnée.

Row Mapping d'un data set

Columns Mapping

Choisissez les champs à afficher dans le rapport. Cet onglet affiche le nom technique des champs. Un même data set peut alimenter plusieurs tables du rapport : il n'est pas nécessaire d'en créer un par table.

Lorsque vous ajoutez un champ au data set, vérifiez le type de la donnée (float, boolean, text, etc.) pour obtenir le bon affichage à la génération du rapport.

Columns Mapping d'un data set

Computed Columns (colonnes calculées)

Les colonnes calculées limitent les calculs réalisés directement dans les champs du rapport.

La colonne calculée runningCount est fréquemment utilisée. Pour la créer, ouvrez l'onglet "Computed Columns" de votre data set et remplissez la fenêtre comme ci-dessous. Ce champ calculé permet de masquer une table vide, ce qui évite d'afficher uniquement l'en-tête du tableau.

Colonne calculée runningCount

Filtres

Filtrez directement dans le data set si le filtre s'applique à toutes les tables qui utilisent ce data set. Sinon, filtrez au niveau de la table.

Le tableau ci-dessous regroupe des paramètres simples, utiles pour le paramétrage des fiches techniques. Les exemples portent sur ingList :

Cas Champs Operator Valeur 1 Note
Afficher quelques ingrédients `row["inglistIng"]=="water"\ \ row["ingListIng"]=="alcohol"\ \ row["inglistIng"]=="glycerin"` is True
Afficher un seul ingrédient row["ingListIng"] Equal to "water" Cette méthode est équivalente à celle de la ligne précédente.
Afficher les ingrédients uniquement si la quantité est supérieure à 0.5 % row["ingListQtyPerc"] Greater than 0.5
Afficher uniquement les ingrédients OGM row["ingListIsGMO"] is True Paramétrez correctement le type des champs booléens ; sinon, utilisez row["ingListIsGMO"] Equal to "true".
Afficher uniquement les ingrédients qui contiennent le mot "alcohol" row["ingListIng"] Like "alcohol"
Retirer de la table les ingrédients dont la quantité est nulle row["ingListQtyPerc"] is not null Vous pouvez aussi utiliser "is True" avec : `row["ingListQtyPerc"]!="null"\ \ row["ingListQtyPerc"]!=""`

Preview Results

Pour prévisualiser le contenu du data set, cliquez sur "Preview Results". Une fois le data set paramétré, glissez-déposez ses données dans le rapport.

Data sets joints

Vous pouvez joindre deux data sets s'ils ont un champ en commun.

Pour créer un data set joint, faites un clic droit sur "Data Sets" > "New Joint Data Set".

Création d'un data set joint

Dans la fenêtre qui s'ouvre, choisissez les deux data sets et le champ qui les relie, puis le type de jointure. La jointure la plus utilisée est inner join : elle « colle » les deux data sets sur le champ commun.

Paramètres rapports

Vous pouvez aussi filtrer sur des paramètres rapports, présents dans la liste de valeurs "Paramètres rapports". Ils permettent de masquer une liste, une propriété ou un élément d'une liste dans tous les rapports ou dans un sous-type de rapport spécifique.

Dans la liste "Paramètres rapports", ajoutez des paramètres sous la forme :

[show/hide]#[(reportKind|optionnel)]#[listName/propertyName/assocName]
  • show : affiche l'élément (masqué par défaut) ;
  • hide : masque l'élément (affiché par défaut) ;
  • reportKind : option qui indique dans quel modèle de rapport l'élément est masqué ou affiché ;
  • la dernière partie est le nom de l'élément à masquer : une liste, une propriété ou une association.

Vous sélectionnez ensuite ces paramètres dans l'onglet "Rapports" de votre entité.

Paramètres rapports d'une entité

Le Nutri-Score

Le Nutri-Score apparaît surtout dans les conditions de visibilité des rapports. Par exemple, dans le rapport « Fiche Technique Client », la condition de visibilité du Nutri-Score est la suivante :

if (row["nutrientProfilingClass"] != null && row["nutrientProfilingClass"] != "") {
    BirtStr.indexOf("showNutritionalScore", row._outer["codeReportParameters"]) == -1;
} else {
    true;
}

Pour trouver l'élément qui porte la condition de visibilité, recherchez dans le rapport le paramètre concerné.

Les nutriments optionnels

Ce paramètre correspond à un filtre sur la table des nutriments. Par exemple, dans le rapport « Fiche Technique Client », la table porte le filtre suivant :

Condition Operator
`row["regulDisplayMode"]=="M" \ \ (BirtStr.indexOf("showOptionalNutrients", row["codeReportParameters"]) != -1 && row["regulDisplayMode"]=="O")` is True
Les différents coûts

Dans la « Fiche Coûts », les valeurs de la donnée Type de coût correspondent aux coûts cochés dans les paramètres de l'onglet. L'affichage est dynamique :

if (row["reportParametersCode"] != null && row["reportParametersCode"].indexOf("previousCost") != -1) {
    reportContext.getMessage("costType.previousCost", reportContext.getLocale());
} else if (row["reportParametersCode"] != null && row["reportParametersCode"].indexOf("futureCost2") != -1) {
    reportContext.getMessage("costType.futureCost2", reportContext.getLocale());
} else if (row["reportParametersCode"] != null && row["reportParametersCode"].indexOf("futureCost3") != -1) {
    reportContext.getMessage("costType.futureCost3", reportContext.getLocale());
} else if (row["reportParametersCode"] != null && row["reportParametersCode"].indexOf("futureCost4") != -1) {
    reportContext.getMessage("costType.futureCost4", reportContext.getLocale());
} else if (row["reportParametersCode"] != null && row["reportParametersCode"].indexOf("futureCost") != -1) {
    reportContext.getMessage("costType.futureCost", reportContext.getLocale());
} else {
    reportContext.getMessage("costType.currentCost", reportContext.getLocale());
}
Filtrage par sous-type de rapport

Ce filtrage masque des lignes d'une liste dans un rapport.

Ajoutez les sous-types de rapport dans "Administration beCPG" > "Listes de valeurs" > "Sous-types de rapport", puis déclarez le sous-type au niveau du modèle de rapport.

Sous-type déclaré sur un modèle de rapport

Générer le rapport en local

Pour tester le rapport en local, cliquez sur "Run" > "View report" > "As XXX".

Menu View report

XXX peut être HTML, PDF ou XLSX. Le format HTML a l'avantage d'afficher les erreurs du rapport, pour les corriger.

Erreurs affichées dans l'aperçu HTML

Utilisation de la palette

Les éléments les plus utilisés sont les suivants :

  • Label : pour saisir des notes ou des libellés de champs en dur. Permet aussi de créer des espaces entre des éléments du rapport.
  • Data : s'utilise dans une table ou directement dans le rapport. Pour afficher la donnée souhaitée, paramétrez l'onglet "Binding". Pour modifier les champs disponibles dans votre table ou votre data, cliquez à nouveau sur votre data set, puis cochez ou décochez les champs concernés.

Onglet Binding d'un élément Data

Les champs de type données peuvent aussi porter des conditions ou concaténer plusieurs attributs. Par exemple, pour afficher plusieurs champs dans un seul élément Data :

"Emballage : " + dataSetRow["palletBoxName"] + ", tare indicative (g) : " + dataSetRow["pmBoxTare"] + ", dimensions (mm) : " + dataSetRow["pmBoxDimensions"]

Vous pouvez aussi utiliser l'élément Dynamic Text. Pour éditer cette mise en forme :

  1. Faites un clic droit sur l'élément Data ou Dynamic Text.
  2. Choisissez "Edit Value/Expression".
  3. Renseignez l'expression.

Les autres éléments de la palette sont les suivants :

  • Grid : tableau statique, utile pour agencer la fiche technique. Une grid ne peut pas être filtrée.
  • Table : affiche dynamiquement les données de vos listes. Pour ajouter une table, glissez le data set concerné à l'endroit souhaité du rapport. Une fenêtre s'ouvre pour choisir les champs de la table.
  • Text
  • Dynamic Text : texte dynamique. Exemple : pour mettre en gras des mots sur l'étiquette, utilisez des balises HTML.
  • Image : l'ajout d'une image statique est simple. L'ajout d'une image dynamique est plus complexe : le moteur beCPG récupère une image associée au produit et l'envoie à la datasource du rapport lors de l'exécution. La procédure est la suivante :
    • ajoutez l'image ;
    • choisissez "Dynamic Image" en référençant l'identifiant de l'image passé à la datasource, ex : row["productImage"] ;
    • utilisez une expression pour les champs de type données.
  • List : liste dynamique, en fonction du nombre de lignes du data set.
  • Chart : graphique.
  • Cross Tab : tableau croisé dynamique.

Vue du rapport

Layout

Cette vue permet de construire le rapport avec les sous-onglets de "Property Editor" : "Properties", "Binding", "Groups", "Map", "Highlights", "Sorting", "Filters".

Page maître (Master page)

La page maître permet de définir :

  • les en-têtes et pieds de page du rapport ;
  • l'orientation du rapport (portrait ou paysage) ;
  • la largeur et la hauteur du rapport.

Script

L'onglet "Script" permet de programmer des fonctions utilisables dans le rapport. Ces scripts s'exécutent à différentes étapes de l'exécution du rapport, selon l'événement. Un script peut être défini sur un élément précis ou sur le rapport.

XML Source

Ce sous-onglet affiche le rapport au format XML.

Property Editor (onglet Layout)

Les propriétés

Cet onglet comporte plusieurs sections. Voici les principales.

GENERAL

  • Gère l'affichage du texte (gras, italique, souligné, taille, police, couleur).
  • Gère la hauteur et la largeur de l'élément. Dans une table ou une grid, réglez toujours la largeur des cellules ici, et non en redimensionnant directement la colonne.
  • Display gère la disposition de plusieurs éléments dans une même cellule (en ligne ou en bloc).
  • Style applique un style du fichier .css.
  • Vertical alignment définit la position verticale de l'élément dans une cellule.

Section General du Property Editor

BORDER

  • Gère les bordures des éléments (table, cellule de table, label, etc.).

MARGIN

  • Gère l'espace autour de l'élément.

PAGE BREAK

Gère l'apparition de l'élément (table ou grid) sur la page ou sur l'onglet Excel :

  • avec before, l'élément apparaît sur une nouvelle page ;
  • avec after, l'élément suivant apparaît sur une nouvelle page ;
  • avec page break interval, le nombre saisi détermine à partir de combien de lignes l'élément passe sur une nouvelle page ;
  • Repeat header : si coché, l'en-tête du tableau apparaît sur toutes les pages.

VISIBILITY

Cette section existe pour tous les éléments de la palette :

Section Visibility

  • non coché : l'élément est toujours visible ;
  • coché : l'élément est toujours masqué ;
  • coché avec une condition : l'élément est masqué uniquement si la condition est vérifiée.

Le tableau suivant regroupe des cas fréquents de condition de visibilité :

Cas À faire
Masquer une colonne d'une table Cliquez sur la table > cliquez sur la colonne > ouvrez "Visibility" > cochez "Hide Element".
Dans une grid, masquer un label associé à une data si cette data est vide Cliquez sur le label > ouvrez "Visibility" > cochez "Hide Element" > cliquez sur le bouton JavaScript syntax. Dans cette fenêtre, cliquez sur "Available Column Binding" > Grid > double-cliquez sur la data concernée. Saisissez l'instruction suivante : `if (row["nomTechnique"] == null \ \ row["nomTechnique"] == ""){ true }else{ false }`
Afficher une donnée uniquement si la langue du rapport est l'espagnol reportContext.getLocale() == "es"
Masquer une table si la liste est vide Ajoutez au data set de la liste la colonne calculée runningCount. Cliquez sur la table > ouvrez "Visibility" > cochez "Hide Element" > dans l'expression, saisissez : `row["runningCount"] == null \ \ row["runningCount"] == 0`

Binding

Cet onglet permet de sélectionner le data set associé (surtout pour une table ou une data) et les champs utilisés. Ajoutez uniquement les champs réellement utilisés dans l'élément : vous pourrez en ajouter ou en retirer ensuite. Le fonctionnement est décrit plus haut.

Groups

Cet onglet permet d'ajouter un groupe à la table. Vous pouvez aussi faire un clic droit sur la ligne "Detail" > "Insert Group". Le processus est décrit plus bas.

La mise en forme (Highlights)

Cet onglet modifie le style, la police ou la couleur de la cellule selon des conditions. Dans l'exemple ci-dessous, si l'élément de la composition est un semi-fini (SF ou SFL), il apparaît en gras dans le rapport.

Mise en forme conditionnelle (Highlights)

Le tri

Cet onglet modifie l'ordre des éléments d'une table. Vous pouvez forcer l'ordre à l'aide de colonnes calculées.

Les filtres

Cet onglet limite les éléments du data set affichés dans la table. Le fonctionnement est le même que pour le filtre du data set.

Cas de la table

La table comporte trois parties :

  • le header ;
  • le detail ;
  • le footer.

Le header contient l'en-tête du tableau, avec le nom des champs de la ligne Detail. La ligne Detail se répète autant de fois qu'il y a de données.

Le footer n'est pas répété : il permet par exemple d'afficher le total d'une colonne. Pour ajouter une somme sur une colonne, conservez le footer de la table, ou ajoutez-le s'il est absent.

Header, detail et footer d'une table

Une fois le footer présent, faites un clic droit "Insert" > "Aggregation". Choisissez la fonction (SUM pour une somme) et indiquez dans "Expression" le champ concerné.

Insertion d'une agrégation

Paramétrage de l'agrégation

Lorsque vous cliquez sur une table, l'onglet "Groups" apparaît. Selon les données du tableau, des doublons peuvent apparaître, notamment sur les noms ou les codes des entités. Pour les supprimer, créez un groupe sur le nom ou le code des entités : une nouvelle ligne apparaît, dans laquelle vous glissez tous les champs de la ligne Detail.

Groupe sur une table

Vous pouvez aussi modifier l'ordre des lignes de la table, par exemple par quantité croissante ou décroissante. Pour classer les éléments selon une valeur d'une liste de valeurs, utilisez une colonne calculée. Exemple :

Vous souhaitez afficher la liste des ingrédients de votre entité, en commençant par ceux qui proviennent de France. Ouvrez les colonnes calculées de votre data set ingList, cliquez sur "New" et remplissez la fenêtre comme ci-dessous :

Champ Valeur
Column name ingFrance
Data Type Integer
Expression var france = 0; if (String(row["ingListGeoOrigin"]).indexOf("France") !== -1) { france = 1; } france;

Cas des tables imbriquées liées : par exemple, dans le rapport standard « ProductReport_ingList », vous souhaitez afficher la liste des ingrédients dans la table des matières premières (fournisseurs, etc.). Pour lier les deux tables, utilisez les filtres de la table imbriquée.

Filtre d'une table imbriquée

Les clés de langue

Les éléments issus de beCPG (souvent les tables) sont traduits si la traduction existe dans beCPG.

Les clés de langue servent aux éléments saisis en dur dans le rapport (souvent les labels). Elles figurent dans les fichiers .properties associés à la fiche technique dans beCPG.

Pour associer une clé de langue à un élément saisi en dur, cliquez sur l'élément, puis ouvrez l'onglet "Localization" des propriétés. Choisissez ensuite la clé de langue à associer.

Onglet Localization

Pour modifier ou créer des clés de langue dans les fichiers .properties, éditez le fichier avec ResourceBundle : clic droit > "Edit with ResourceBundle".

Pensez à mettre à jour vos fichiers .properties dans beCPG.

Déploiement

Une fois le rapport édité sous Eclipse, sauvegardez-le au format .rptdesign.

  1. Fiches techniques : placez-vous dans "Entrepôt" > "Système" > "Rapports" > "Rapports de fiche produit" > "Entité" et déposez le rapport.
  2. Fichiers de langues (properties) : placez-vous dans "Entrepôt" > "Système" > "Rapports" > "Rapports de fiche produit" et déposez le fichier.

Pour les fichiers .rptdesign, changez le type en "Modèle de rapport".

Dans "Éditer les propriétés" :

  • cochez Modèle système si le rapport doit être attribué à tous les produits du même type ;
  • cochez Modèle par défaut s'il existe plusieurs modèles et que celui-ci doit être affiché par défaut ;
  • si rien n'est coché, ouvrez le produit concerné et sélectionnez le rapport à la main via le bouton "Paramètres rapport".

Pour traduire le rapport en différentes langues, sélectionnez les fichiers de langues associés, ainsi que les langues concernées dans la liste déroulante. Sélectionnez ensuite ces langues dans les "Paramètres rapport" d'un produit.

Bonnes pratiques - BIRT

Performances

Afin de garantir un système stable et performant, il est impératif de minimiser au maximum la taille de la datasource. Il est nécessaire de configurer l'extracteur de manière à obtenir uniquement les informations essentielles pour le rapport. Un avertissement s'affiche sur le produit en cas de datasources excessivement volumineuses.

Comment retrouver les champs internes à beCPG

Les champs internes se trouvent à deux endroits : sur les propriétés d'un produit et au niveau de ses listes (composition, emballage, etc.).

Pour retrouver les champs internes liés aux propriétés, il faut effectuer une édition multiple :

Pour accéder aux champs internes liés aux listes :

Déclaration d'une fonction

Il arrive parfois qu'un développeur déclare la même fonction dans plusieurs éléments (texte, données, texte dynamique, etc.) du rapport. Cette approche alourdit le rapport, et toute modification de cette fonction nécessite des ajustements dans chaque élément où elle est utilisée.

Pour optimiser la maintenance, la meilleure pratique consiste à mutualiser la fonction dans l'événement "Initialize" du rapport. Ainsi, la fonction est disponible dans l'ensemble du rapport.

Avantages de la mutualisation d'une fonction :

  • Réduit la taille du rapport en éliminant les duplications de fonctions.
  • Économise du temps lors des opérations de maintenance.

Utilisation d'Alias

L'utilisation d'un alias au niveau des champs d'un jeu de données s'avère utile lorsque la clé d'un champ diffère considérablement du nom affiché au client. Les alias facilitent la recherche d'un champ pour un traitement spécifique.

Gestion des images dans BIRT

Pour minimiser la taille du rapport, assurez-vous qu'après chaque modification, toutes les "images intégrées" non utilisées sont supprimées. Pour plus d'efficacité, effectuez ces opérations (suppression, ajout, renommage d'images) via l'onglet Outline d'Eclipse.

Les images doivent être inférieures à 1 Mo ; une alerte est visualisable sur le produit en cas de dépassement.

Alerte de taille d'image

Gestion des scripts (événement)

BIRT permet de définir des scripts JavaScript à différents niveaux d'événements (Initialize, onPrepare, onRender, etc.). Lorsqu'un événement contient du code, il s'affiche dans la section "Scripts" de l'onglet Outline. Il est essentiel de vérifier qu'aucun script inutilisé n'est laissé dans le rapport avant sa livraison.

Pour en savoir plus sur les événements et les scripts BIRT, vous pouvez consulter cette documentation.

Gestion des tableaux

Il est recommandé d'éviter l'imbrication de tableaux (Grille ou Table) associée à des conditions de visibilité pour certaines cellules. Cette configuration peut provoquer un décalage de colonnes lors de la génération du rapport. Privilégiez une structure plus simple pour un meilleur contrôle du rendu.

Problèmes d'affichage de la fiche technique sur le système du client

Si la fiche technique s'affiche mal sur le système du client, vérifiez les points suivants :

  • la version de la fiche : vous pouvez la modifier directement sur la fiche ;
  • les paramètres de l'extracteur renseignés dans les propriétés du rapport ;
  • les traductions : si elles ne se font pas automatiquement, vérifiez que votre rapport est lié aux fichiers .properties et que ceux-ci sont à jour.

Extracteur

Configuration

beCPG est installé sur un système avec une configuration par défaut de l’extracteur (beCPG.properties). Cette configuration peut être surchargée via le nouveau champ "Paramètres texte" situé dans le formulaire d’édition de propriété d’un rapport (voir encadré vert de l’image ci-dessous).

Champ Paramètres texte

Cette surcharge de configuration ne nécessite pas le redémarrage du serveur et est prise en compte immédiatement pour les prochaines extractions.

Cas d'utilisation

Prenons l’exemple d’un fournisseur qui possède plusieurs usines : vous avez besoin de générer un rapport par usine pour ce fournisseur. Chaque rapport doit contenir dans son nom le nom de l’usine en question. Pour ce faire, vous aurez au préalable créé la liste « Fiches techniques » sur le modèle fournisseur. Une fois le rapport fournisseur créé et déployé, il vous reste à placer dans "Paramètres texte" le JSON suivant afin de terminer la configuration du rapport :

{
   iterationKey : "bcpg:plant",
   params : [{
      id: "param1",
      prop : "cm:name"
   }],
   prefs : {
      assocsToExtract : "bcpg:plants,bcpg:suppliers,bcpg:storageConditionsRef,bcpg:precautionOfUseRef,bcpg:nutListNut",
      assocsToExtractWithDataList : "bcpg:compoListProduct"
   },
   nameFormat : "{entity_cm:name}- {report_cm:name}  - {locale} - {param1} ",
   titleFormat : " {report_cm:name} -  {locale} - {param1}"
}

Il ne reste plus qu'à générer les rapports du fournisseur.

À savoir

  • Le tableau params s’utilise avec la clé iterationKey. Il est donc inutile d’utiliser l’un sans l’autre.
  • Si vous avez surchargé une clé (mlTextfields, assocsToExtract,…) et que vous l’enlevez du Paramètre texte, l’extracteur utilisera la valeur par défaut.

  • Les paramètres définis dans la clé params du JSON sont extraits dans la dataSource (XML) du rapport.

Exemple : si vous avez params qui vaut :

{
   ...
   params : [{
      id: "nomUsine"
      prop: "cm:name"
   },
   {
      id: "nomCertifUsine"
      prop: "bcpg:plantCertifications|cm:name"
   }],
   ...
}

Le nœud XML correspondant au résultat du paramètre JSON sera :

<entity>
...
<reportParams>
   <nomUsine nodeRef="workspace://SpacesStore/108624b8-49da-44a0-be1f-7735b7a35143" prop="cm:name" value="Usine XY"/>
   <nomCertifUsine nodeRef="workspace://SpacesStore/108624b8-49da-44a0-be1f-7735b7a35143" prop="bcpg:plantCertifications|cm:name" value="Certification X1"/>
</reportParams>
</entity>

Remarquez que :

  • Le nom du nœud est la valeur spécifiée dans id.
  • L'attribut nodeRef est le nodeRef du composant courant.
  • L'attribut prop est la chaîne de texte saisie dans le JSON.
  • L'attribut value est la valeur stockée dans "nomUsine".

Il existe deux solutions pour récupérer la dataSource contenant le nœud reportParams. La première est d'activer le mode debug en Java. La seconde est de consulter l'attribut rep:reportTextParameters du nœud du rapport généré.

Nous allons voir la seconde solution, moins lourde à effectuer :

Après avoir configuré le rapport et l'avoir généré :

  1. Allez dans le dossier Documents de l'entité (fournisseur dans notre exemple).
  2. Cliquez sur un rapport PDF.
  3. Récupérez le nodeRef du document PDF.
  4. Retrouvez le document via le navigateur de nœuds (pour savoir comment récupérer un nodeRef et utiliser le navigateur de nœuds, lisez ceci). Une fois sur le nœud du document, son attribut rep:reportTextParameters contient un JSON sous la forme :
{
  "titleFormat":" {report_cm:name} - {nomUsine} - (fr - {locale} )",
  "nameFormat":"{entity_cm:name} - {report_cm:name} - {nomUsine} - (fr - {locale} )",
  "params":[
    {
      "nodeRef":"workspace://SpacesStore/108624b8-49da-44a0-be1f-7735b7a35143","prop":"cm:name","id":"nomUsine","value":"Usine XY"
    },
    {
      "nodeRef":"workspace://SpacesStore/108624b8-49da-44a0-be1f-7735b7a35143","prop":"bcpg:plantCertifications|cm:name","id":"nomCertifUsine","value":"Certification X1"
    }
  ],
  "prefs":{...}
  ...
}

Avec le système de correspondance vous êtes en mesure de reconstituer le nœud XML [reportParams] pour vos tests en local.

Paramétrage de l'extracteur

Les paramètres d'extraction permettent de personnaliser l'extraction des données.

Paramètre global Paramètre par rapport Description
beCPG.product.report.componentDatalistsToExtract componentDatalistsToExtract Permet de spécifier les listes à extraire lorsque la composition est extraite en multiniveau, dans les associations extraites avec liste ou dans la liste matière première. Le deuxième argument permet de spécifier sur quel type d’objet extraire la liste
beCPG.product.report.assocsToExtract assocsToExtract Extrait les données de l’association
beCPG.product.report.assocsToExtractWithImage assocsToExtractWithImage Extrait les images de l’association
beCPG.product.report.assocsToExtractWithDataList assocsToExtractWithDataList Extrait les listes de l’association
beCPG.product.report.assocsToExtractInDataList assocsToExtractInDataList Extrait les données de l’association dans une liste
beCPG.product.report.entityDatalistsToExtract entityDatalistsToExtract Spécifie les listes à extraire sur l’entité
beCPG.product.report.multilineProperties multilineProperties Permet d’extraire la propriété dans un champ CDATA pour conserver les retours à la ligne. Instruction, description et commentaire produit sont toujours extraits dans un bloc CDATA ; les autres sont mis dans un attribut
beCPG.product.report.priceBreaks extractPriceBreaks Permet d'afficher la liste coût en fonction des quantités d'achats
beCPG.product.report.extractRawMaterial extractRawMaterial Extrait les matières premières
beCPG.product.report.extractDatalistImage extractDatalistImage Extrait les images d'une DataList
beCPG.product.report.multiLevel extractInMultiLevel Extrait la composition en multiniveau
beCPG.product.report.nonEffectiveComponent extractNonEffectiveComponent Extrait les lignes non effectives en plus des lignes effectives
beCPG.product.report.maxCompoListLevelToExtract maxCompoListLevelToExtract Définit le nombre maximal de niveaux extraits pour la compoList (doit être associé à extractInMultiLevel=true)
beCPG.product.report.extraImagePaths extraImagePaths Liste de XPath séparés par ; permettant d'indiquer des images à extraire
beCPG.product.report.nutList.localesToExtract nutLocalesToExtract Extrait les valeurs arrondies des nutriments
beCPG.entity.report.mltext.fields mlTextFields Permet d'extraire toutes les langues saisies d'un champ.
beCPG.entity.report.mltext.locales mlTextLocales Permet de spécifier les langues à extraire pour les champs mlText
beCPG.product.report.showDeprecatedXml showDeprecatedXml Affiche les GDA et les nutriments dans l’ancien format
beCPG.report.name.format nameFormat
beCPG.report.title.format titleFormat
beCPG.report.includeReportInSearch includeReportInSearch Affiche les rapports dans la recherche

Les valeurs par défaut de chaque paramètre sont :

Paramètre par rapport Valeur par défaut
componentDatalistsToExtract Vide (aucune)
assocsToExtract bcpg:plants,bcpg:suppliers,bcpg:storageConditionsRef,bcpg:precautionOfUseRef
assocsToExtractWithImage bcpg:clients
assocsToExtractWithDataList
assocsToExtractInDataList
entityDatalistsToExtract Vide (toutes)
multilineProperties
extractPriceBreaks false
extractRawMaterial false
extractDatalistImage false
extractInMultiLevel false
extractNonEffectiveComponent false
maxCompoListLevelToExtract Vide (pas de niveau max)
extraImagePaths Vide (aucune)
nutLocalesToExtract locale du rapport
mlTextFields
mlTextLocales
showDeprecatedXml false
nameFormat {entity_cm:name} - {report_cm:name} - {locale} - {param1}
titleFormat {report_cm:name} - {locale} - {param1}
includeReportInSearch

Voici des exemples de valeurs de personnalisation :

Paramètre par rapport Exemple
componentDatalistsToExtract bcpg:nutList,bcpg:ingLabelingList|bcpg:semiFinishedProduct
assocsToExtract bcpg:trademarkRef
assocsToExtractWithImage bcpg:suppliers,bcpg:clients
assocsToExtractWithDataList bcpg:suppliers,bcpg:clients
assocsToExtractInDataList bcpg:nutListNut
entityDatalistsToExtract bcpg:nutList,bcpg:ingList
multilineProperties cm:title,cm:description
extractPriceBreaks true
extractRawMaterial true
extractDatalistImage true
extractInMultiLevel true
extractNonEffectiveComponent true
maxCompoListLevelToExtract 2
extraImagePaths cm:Mon_x0020_Dossier//[like(@cm:name, '%PNG', false)];cm:Autre_x0020_Dossier/*
nutLocalesToExtract # - empty : only the report local # - all : all the supportedLocales # - supportedLocale list : en,en_US,en_CA,en_AU,de,es,fr
mlTextFields bcpg:legalName
mlTextLocales fr,en
showDeprecatedXml true
nameFormat {entity_bcpg:erpCode} - {entity_cm:name} - {report_cm:name} - {locale}
titleFormat {entity_bcpg:erpCode} - {report_cm:name} - {locale} - {param1}
includeReportInSearch

Filtrer les données du rapport

Filtrage par sous-type de rapport

Ce filtrage vous permet de masquer les lignes d’une liste dans un rapport.

Commencez par ajouter les sous-types de rapport dans la liste "Sous-type de rapport" : "Administration beCPG" > "Listes de valeurs" > "Sous-types de rapport".

Liste des sous-types de rapport

Ensuite, déclarez le sous-type de rapport sur les modèles de rapport.

Sous-type sur le modèle de rapport

Sous-type de rapport déclaré

Le mécanisme de filtrage par sous-type de rapport se base sur l'ajout d'une nouvelle colonne sous-type de rapport dans une liste.

Colonne sous-type de rapport

Exemple : Dans la liste "nutriments", on peut masquer les nutriments selon l’algorithme suivant :

Par défaut, le système affiche les nutriments dans tous les rapports si le sous-type de rapport n’est pas choisi sur une ligne (nutriment). Une fois que vous cochez le sous-type de rapport sur une ligne de nutriment, les autres lignes sont masquées dans le rapport.

Nutriments filtrés par sous-type

Filtrage par les paramètres rapport

Vous pouvez masquer une liste, une propriété ou un élément d’une liste dans tous les rapports ou dans un sous-type de rapport spécifique. Dans la liste "Paramètres rapports", ajoutez des paramètres sous la forme :

[show/hide]#[(reportKind|optionnel)]#[listName/propertyName/assocName]

  • show : sélectionné, affiche l'élément (par défaut, ce dernier est masqué) ;
  • hide : sélectionné, masque l'élément (par défaut, ce dernier est affiché) ;
  • reportKind : option indiquant dans quel modèle de rapport vous allez masquer ou afficher l’élément ;
  • la dernière partie est le nom de l’élément que vous voulez masquer, qui peut être une liste, une propriété ou une association.

Paramètres rapports

NB : pour les propriétés de l’entité, il faut spécifier le préfixe (exemple : cm_name), mais ce n'est pas le cas pour les noms des listes ou le nom d'une colonne (propriété d'une liste). Pour les noms des listes, ajoutez un "s" à la fin. Exemple : allergenLists

Il ne vous reste plus qu'à cocher les paramètres sur votre produit (entité) : "Fiches techniques" > "Paramétrer les rapports".

Paramétrer les rapports

Présentation vidéo

Cette vidéo présente la modification d'un rapport BIRT :



Rapport de fiche Produit JXLS

Présentation

Le format JXLS est utile pour pouvoir réaliser un rapport de format libre, directement depuis un éditeur de fichier XLSX comme Excel. Ce type de fichier est basé sur l'utilisation de formules SpEL pour l'extraction des données.

Pour en savoir plus : http://jxls.sourceforge.net/

Paramétrage

Voici un exemple de fichier JXLS :

Exemple de fichier JXLS

Utilisation des notes

Les notes jouent un rôle très important dans le fichier JXLS. Il faut en effet les utiliser dans trois situations :

  • La définition du fichier et des formules

Cette note est obligatoire et est mise généralement dans la cellule A1.

Dans notre exemple, où les formules s'appliquent de A1 jusqu'à E20 :

jx:area(lastCell="E20")
  • Les datalists

Pour les datalists, la note doit être mise sur la case de la première colonne. Dans notre exemple, pour la datalist composition, elle est mise en A14. Cette note sert à définir la datalist à exporter et à délimiter la dernière cellule à considérer comme faisant partie de la datalist. Dans notre exemple, il s'agit de B14.

jx:each(items="compoListView.compoList" var="dataListItem" lastCell="B14")

La valeur associée à items dépend de la datalist à exporter. Ici, il s'agit de la liste composition, mais pour la liste packaging cela devient :

jx:each(items="packagingListView.packagingList" var="dataListItem" lastCell="B14")

La valeur de var est TOUJOURS "dataListItem".

Il est également possible de faire des exports de datalists en colonne en ajoutant direction="RIGHT", comme pour l'export Nutriments de notre exemple :

jx:each(items="nutList" var="dataListItem" lastCell="A20" direction="RIGHT")

Il est également important de noter que lors de l'export, les dimensions des tableaux vont automatiquement s'effectuer : si une datalist a 3 valeurs, alors l'export va considérer 3 lignes et décaler l'ensemble de 3 lignes. Donc, pas de risque de chevauchement.

  • Les images :

La note sert ici à définir les dimensions de l'image en cellule et à appeler l'image à exporter. Dans notre exemple :

jx:image(lastCell="E8" src="IMG_Img0" imageType="PNG")

Le nom dans src est toujours précédé par "IMG_".

L'export des champs

L'export des champs se fait en SpEL, donc les formules doivent être comprises entre :

${...}

Par exemple, pour l'export du code beCPG :

${@beCPG.propValue(nodeRef,'bcpg:code')}

Consultez la section Formules SPEL de notre documentation pour savoir comment l'utiliser.

Déploiement

Une fois que le fichier XLSX est terminé, il faut le déployer. Pour ce faire, il faut suivre la même procédure de déploiement que pour les rapports BIRT, en choisissant XLSX comme format de rapport, et en renommant l'extension en .jxls.

Déploiement d'un rapport JXLS

Attention : à chaque fois que vous allez mettre à jour le rapport, le fichier reprendra l'extension .xlsx : il faudra remettre manuellement le bon format, .jxls.

Les exports de recherche

Exports de recherche EXCEL

Les exports de recherche Excel sont faciles à créer.

Un fichier Excel correspond à un seul type d'entité (Produit fini, MP, etc.).

Il comprend plusieurs onglets. Chaque onglet correspond à une liste de l'entité (propriétés, ingrédients, composition, etc.). Le premier onglet correspond toujours à la liste propriété de l'entité. C'est au niveau de ce premier onglet que vous devez définir le type d'entités sur lequel porte votre recherche.

C'est à vous de définir : quelle entité, quelles listes et quels champs vous intéressent.

Pour pouvoir créer votre fichier, vous allez avoir besoin de connaître les noms des champs internes à beCPG (voir Comment retrouver les champs internes à beCPG ?).

Premier onglet

Définir le type d'entités :

Quel que soit l'onglet, il y aura toujours une information dans la case A1 de votre fichier Excel.

Dans le cadre du premier onglet :

  • A1 : TYPE
  • B1 : le type d'entité sur lequel porte votre recherche (bcpg:finishedProduct, bcpg:rawMaterial, ...)
TYPE bcpg:finishedProduct
COLUMNS cm:name bcpg:code bcpg:erpCode bcpg:productHierarchy1 bcpg:productHierarchy2
# Nom Code Code Becpg Code ERP Famille Sous famille

Autres onglets

Sur les onglets suivants, vous pouvez extraire les datalists de l'entité, soit le contenu des différentes listes :

  • A1 : TYPE
  • B1 : la liste sur laquelle porte votre extraction

Exemple avec la liste "Composition" :

TYPE bcpg:compoList
COLUMNS bcpg:erpCode bcpg:compoListProduct bcpg:compoListProduct_bcpg:productHierarchy1
# Code Erp Composant de la recette Famille du composant

Spécificités

Vous pouvez utiliser le préfixe entity_ pour afficher des propriétés de l'entité dans les onglets de type datalists.

  • Export des datalists en colonne

Depuis la version 2.5, il est également possible d'afficher les datalists d'une entité en colonne, c'est-à-dire que vous n'aurez plus besoin de créer plusieurs onglets pour avoir les éléments d'une datalist liés à un produit. Avec ce nouvel export, vous aurez les champs de votre entité suivis des éléments de la datalist sur la même ligne.

Formule à utiliser :
nom_de_la_datalist [ nom_de_l'association # élément_de_recherche == " valeur_de_recherche " ]_ champ_a_afficher

Exemple :
Export de la présence fortuite de l'allergène "Soja et produits à base de soja" des produits finis

bcpg:allergenList[bcpg:allergenListAllergen#bcpg:allergenCode == "FX5"]_bcpg:allergenListInVoluntary

TYPE bcpg:finishedProduct
COLUMNS cm:name bcpg:code bcpg:erpCode bcpg:allergenList[bcpg:allergenListAllergen#bcpg:allergenCode == "FX5"]_bcpg:allergenListInVoluntary
# Nom Code Becpg Code ERP Présence fortuite de soja et produits à base de soja
  • Les caractéristiques dynamiques :

Dans les listes composition, emballage ou la liste des process, il est possible d'avoir des caractéristiques dynamiques. Si vous souhaitez la liste des caractéristiques dynamiques par entité :

TYPE bcpg:dynamicCharactList
COLUMNS bcpg:code bcpg:dynamicCharactTitle bcpg:productHierarchy1 bcpg:productHierarchy2
# Code Becpg Caracteristiques dynamiques

Si vous récupérez la valeur d'une caractéristique dynamique spécifique de la liste composition par exemple, votre en-tête de colonne se construira de la manière suivante : dyn_nom_de_propriété

Exemple :

TYPE bcpg:compoList
COLUMNS bcpg:erpCode bcpg:compoListProduct dyn_nom_de_la_caract_dynamique
# Code Erp Composant de la recette nom de la caract dynamique
  • Multiniveaux et formules

Pour les types bcpg:compoList et bcpg:packagingList, vous pouvez utiliser des paramètres d'extraction multiniveau (AllLevel, MaxLevel2, OnlyLevel2) ainsi que des formules dont les en-têtes de colonne se construiront de la manière suivante : formula|props["nom de la formule"] (exemple en indiquant dans l'en-tête de colonne : formula|props["qty"]).

TYPE bcpg:compoList OnlyLevel2
COLUMNS bcpg:erpCode bcpg:compoListProduct bcpg:compoListProduct_bcpg:erpCode
# Code Erp de l'entité Produit Composant Code ERP du composant
  • Allocation :

Le plugin d'allocation permet d'extraire les informations sur les matières utilisées dans les collections ou les produits. Pour l'utiliser, il est nécessaire de spécifier le paramètre "Allocation" sur le type bcpg:compoList. Les champs disponibles sont :

  • "Quantité" (kg) : formula|props["qty"]
  • "Quantité par produit" (%) : formula|props["qtyForProduct"]
  • Champs de l'entité : entity|
  • Champs du produit : product|

Voici un exemple de structure de données pour utiliser ce plugin :

TYPE bcpg:compoList Allocation
COLUMNS bcpg:erpCode cm:name formula\ props["qty"] formula\ props["qtyForProduct"] entity\ cm:name entity\ bcpg:productCollectionHierarchy1 product\ cm:name product\ bcpg:productHierarchy1
# Code Erp Matière Qté Qté par produit Collection Famille de la collection Produit Famille du produit

Fonction tableur

Utilisez les résultats de vos recherches en intégrant un onglet supplémentaire avec des formules Excel (RECHERCHEV, RECHERCHEH, etc.). Pour identifier l'onglet qui utilise la fonction tableur d'Excel, la première case (A1) doit contenir le symbole #.

Vous pouvez aussi définir une colonne en y insérant directement une formule Excel ou un texte du type :

excel|SUM(A1:A10)

Export des images

Plusieurs formules permettent de récupérer les images stockées sur les entités dans beCPG :

  • Récupérer l'URL :
formula|@img.getEntityImagePublicUrl()    
formula|@img.getEntityImagePublicUrl($nodeRef)
formula|@img.getImagePublicUrlByPath($nodeRef, "./cm:Images/cm:produit.jpg")
formula|@img.getImagePublicUrlByPath($nodeRef, "./cm:Dossier/"+dataListItem.name+".jpg")

Une fois que vous avez l'URL publique de l'image dans la colonne spécifique, vous pouvez l'utiliser dans une deuxième colonne en utilisant la fonction Excel =IMAGE pour insérer l'image dans Excel.

excel|IMAGE(H2)

  • Récupérer directement l'image dans l'export :
image|@img.getEntityImageBytes()
image|@img.getEntityImageBytes($nodeRef)
image|@img.getImageBytesByPath($nodeRef, "./cm:Images/cm:produit.jpg")
image|@img.getImageBytesByPath($nodeRef, "./cm:Dossier/"+dataListItem.name+".jpg")

$nodeRef correspond à une formule SPEL qui vous permet de récupérer le nœud de l'image. ex : formula|@img.getEntityImagePublicUrl(entity) ou pour une liste formula|@img.getEntityImagePublicUrl(datalistItem)

Exports de recherche BIRT

Uniquement pour les rapports : BIRT

  • La définition des données à exporter pour le rapport est définie dans ExportSearchQuery.xml. Ce fichier définit les attributs du produit à exporter pour l'exécution du rapport :
    • propriétés du produit (nom, état, etc.) ;
    • associations du produit (fournisseurs, clients, etc.) ;
    • caractéristiques du produit (coûts, nutriments, allergènes, etc.).

Pour créer ou modifier un rapport BIRT, reportez-vous au chapitre « Modification d'un modèle de rapport produit ».

Exports de recherche ZIP

On peut exporter des documents issus des entités dans un fichier ZIP. Pour cela, créez un fichier XML dans "Entrepôt" > "Système" > "Rapports" > "Exports de recherche" > "Export des produits".

Ce fichier devra contenir le paramétrage de l'export avec une ligne pour chaque condition :

<file/>

Il est possible de filtrer les entités extraites, de sélectionner les documents à exporter, de définir le nom des fichiers après extraction ainsi que le nom du dossier dans lequel ils seront organisés.

Export par inclusion

Exemple : documents dont le nom contient le mot "xxx"

<export format="zip">
<file entityFilter="spel(hierarchy1.toString().equals('[noeud de la famille FROMAGE]'))" path="cm:Documents/*[like(@cm:name, '%recette%', false)]" name="{doc_cm:name}" destFolder="FROMAGE"/>
</export>
  • "entityFilter" : filtre sur les entités qui ont la famille "Fromage"
  • "path" : filtre sur les documents qui ont le mot "recette" dans leur nom
  • "name" : renomme le nom du document par lui-même
  • "destFolder" : range le document dans le dossier "Fromage" lors de l'extraction

Export par exclusion

Exemple : documents dont le nom ne contient pas le mot "xxx"

<export format="zip">
<file entityFilter="spel(@beCPG.assocPropValues(nodeRef,'bcpg:trademarkRef','cm:name')[0]=='Marque X')" path="*/*[like(@cm:name, '%png', false) and not (like(@cm:name,'xxx')) and not (like(@cm:name,'zzz')) ]" name="{bcpg:eanCode} {bcpg:productVersion} {doc_cm:name}" destFolder="png/Marque X"/>
</export>
  • "entityFilter" : filtre sur les entités qui ont la marque "Marque X"
  • "path" : filtre sur les documents qui ont l'extension "png" mais n'ont pas les mots "xxx" et "zzz" dans leur nom
  • "name" : renomme le document par le code EAN et la version de l'entité puis le nom du document
  • "destFolder" : range le document dans le dossier "png" puis le sous-dossier "Marque X"

Export permettant de filtrer sur l'association d'une entité

<export format="zip">
<file entityFilter="js(entity.assocs['bcpg:productGeoOrigin'] && entity.assocs['bcpg:productGeoOrigin'].length > 0 && entity.assocs['bcpg:productGeoOrigin'][0].properties['bcpg:charactName'] == 'Afrique')" path="*/*[like(@cm:name, '%pdf', false)]" name="{doc_cm:name}" destFolder="A3P"/>
</export>
  • "entityFilter" : formule JavaScript qui filtre les entités qui ont l'association origine géographique "Afrique"
  • "path" : filtre les documents qui ont l'extension "pdf" mais n'ont pas les mots "xxx" et "zzz" dans leur nom
  • "name" : renomme le nom du document par lui-même
  • "destFolder" : range le document dans le dossier "A3P"

Installation des exports de recherche

Ces rapports sont définis dans le dossier /Système/Rapports/Exports de recherche.

Ces rapports sont des rapports BIRT qui exportent le résultat d'une recherche.

L'ajout d'un nouveau rapport se fait ainsi :

  1. Ajoutez un dossier.
  2. Dans le dossier, ajoutez le rapport BIRT ou EXCEL en renseignant le nom et ses métadonnées. Le nom sera affiché sur la page de résultats d'une recherche avancée. L'extension du fichier doit être xls pour un rapport Excel et rptdesign pour un rapport BIRT.
  3. Définissez les permissions sur le dossier du rapport. Les personnes doivent avoir la permission en lecture pour voir le rapport dans le résultat d'une recherche.

Parmi les métadonnées à renseigner, nous avons :

Métadonnées d'un export de recherche

  1. Le Nom de l'export tel que généré par le système.
  2. Le Type de rapport : laisser "ExportSearch" dans ce cas.
  3. Le Type d'objet : permet de filtrer les entités concernées par l'export. Pour filtrer sur les PF :
{http://www.bcpg.fr/model/becpg/1.0}finishedProduct

Pour filtrer sur les SF :

{http://www.bcpg.fr/model/becpg/1.0}semiFinishedProduct

Pour filtrer sur les MP :

{http://www.bcpg.fr/model/becpg/1.0}rawMaterial

Pour filtrer sur les EMB :

{http://www.bcpg.fr/model/becpg/1.0}packagingMaterial

Pour filtrer sur les Kit :

{http://www.bcpg.fr/model/becpg/1.0}packagingKit

Pour filtrer sur l'ensemble des produits (PF, SF, MP, Emballage, Kit) :

{http://www.bcpg.fr/model/becpg/1.0}product
  1. Nombre maximum de résultats : indique le nombre maximum d'éléments à extraire dans l'export. Par défaut, 1000.

  2. Est désactivé : permet de désactiver le rapport sans le supprimer.

results matching ""

    No results matching ""