Rapports et fiches techniques

Ce document présente le paramétrage et l'administration des rapports de fiches produits BIRT et des exports de recherche (Excel ou BIRT) pour le logiciel beCPG. Elle est destinée aux administrateurs du logiciel beCPG.

Pré-requis :

  • Eclipse Birt,
  • Du plugin eclipse RessourceBundle,
  • DE connaissances de base sur :
    • XML
    • XPATH (optionnel),
    • Javascript
  • D'un accès en mode admin au PLM.

Rapport de fiche Produit BIRT

beCPG utilise le logiciel BIRT (Business Intelligence and Reporting Tools) pour la génération des fiches techniques. BIRT est un projet Open Source qui fournit des outils de création de rapports et de génération de documents. Cet outil est largement reconnu pour sa flexibilité et sa capacité à produire des rapports riches en données et personnalisés.

BIRT est un projet Open Source soutenu par la fondation Eclipse. La documentation complète de BIRT est disponible à l'adresse suivante : Documentation BIRT. Cette documentation offre un aperçu complet de l'outil, y compris les concepts de base, les fonctionnalités avancées, et les bonnes pratiques pour la création de rapports.

Installation

Les différentes versions de BIRT sont accessibles sur cette page : http://download.eclipse.org/birt/downloads/.

En fonction de la version de beCPG, il est nécessaire d'utiliser la bonne version de l'éditeur BIRT. Le tableau ci-dessous présente ces différentes versions:

beCPG Report Version Birt Version Java Version Eclipse Version
4.4 4.14 JDK 17 Eclipse 2023-09
3.2 4.8 JDK 11 Eclipse Photon

Présentation

Il existe 2 types de rapports pour les fiches "Produit":

  • rapport système (toujours généré par le système, en automatique);
  • rapport utilisateur (choisi par l'utilisateur lorsqu'il édite le produit). Ce type de rapport est un rapport à la demande.

Les rapports de fiches Produit sont définis dans le dossier /Système/Rapports/Rapports de fiche produit.

L'ajout d'un nouveau rapport se fait ainsi (vous pouvez copier un rapport de produit) :

  1. Ajouter un dossier;
  2. Ajouter le fichier *.rptdesign puis éditer ses métadonnées :

Il est aussi possible de renseigner un type général. Le rapport avec le type général sera visible pour toutes les entités:

  • Type général : http://www.bcpg.fr/model/becpg/1.0 product
  • Le type de modèle:
    • Modèle système pour indiquer si le rapport est généré automatiquement pour ce type de produit. Dans le cas où ce rapport n'est pas un rapport système, l'utilisateur doit le sélectionner lorsqu'il édite le produit.
    • Modèle par défaut, pour indiquer que le rapport est le rapport par défaut du produit, c'est à dire, que ce sera le rapport affiché lorsque l'on sera sur la fiche du produit. Il ne peut y avoir qu'un rapport par défaut pour un type de produit. Les rapports qui ne sont pas des rapports par défaut sont mis dans le dossier « Documents » du produit lors de la génération du rapport.
  • L'extension du rapport

Lorsqu'un produit est créé ou édité, le système génère un rapport par modèle de rapport associé au produit.

Modification d'un modèle de rapport produit

Chaque rapport beCPG possède un modèle BIRT dont l'extension est *.rptdesign.

Introduction à BIRT

Environnement Birt

beCPG se base sur la solution de reporting BIRT (Business Intelligence and Reporting Tools).

  • Reporting: synthétiser des données sous forme de rapports.

  • BIRT: Un outil de reporting "Open Source" reposant sur Eclipse. Un outil graphique, c’est-à-dire qu’il dispose d’une palette permettant de sélectionner l’élément devant être placé sur le rapport.

Le rapport BIRT peut être connecté avec une base de données afin de pouvoir afficher le résultat d’une requête sur une feuille de travail. Pour cela, il est nécessaire d’ajouter une « Data Source » permettant de se connecter à la base de données.

Ensuite, une « Data set », contenant la requête, est ajoutée pour générer des requêtes statiques mais aussi dynamiques en ajoutant des paramètres modifiables lors de l’exécution du rapport.

Le « Data cube » permet de créer un tableau croisé. Cela permet notamment l’affichage de données par colonne et le calcul du total automatique pour les statistiques.

L'exécution d'un rapport beCPG se fait ainsi :

  1. Génération de la source de données XML par le moteur beCPG
  2. Chargement du modèle BIRT
  3. Exécution du rapport qui donnera une sortie .pdf, .docx, ou .xlsx

Design du rapport

Le design du rapport se fait dans le designer Eclipse où l'on trouve :

  • La boite à outil (Palette) qui fournit des contrôles de rendu tels que : des tableaux, listes, zone de texte etc...
  • La source de données XML (Data Explorer);
  • La mise en forme du rapport (Layout);
  • La page maître (Master page): pour modifier l'entête et le pied de page;
  • La prévisualisation du rapport (Preview).

Le paramétrage d'un rapport consiste donc à :

  • disposer les contrôles de rendu zone de texte, tableau
  • définir où seront placées les données via du drag 'n drop des attributs de la source de données, dans le rapport.

Création du rapport

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

Exploration des données (Data Explorer)

Pour explorer les données, il faut sélectionner l'onglet « Data Explorer ».

Un exemple de source de données XML est :

<entity name="Assortiment 8 sushis" code="1009"
    store-identifier="SpacesStore"
    productQty="0.200" productUnit="kg" productState="ToValidate"
    productEAN="8001456682" 
/>

L'XML peut être obtenu via l'API beCPG:

Avec :

  • {@SERVEUR} : Adresse IP du serveur,
  • {PORT} : Le numero du port de communication (optionnel),
  • {NODE_REF} : identifiant d'un produit (disponible dans l'url du navigateur quand on est sur un produit sous la forme 'workspace://SpacesStore/2aad6284-afc2-4d89-8bbf-bd3dd50ff1bc').

Cette url affiche l'XML qui peut être sauvegardé sur son pc en faisant "sauvegarder sous".

Pour indenter l'XML: xmllint --format datasource.xml > datasource-pretty-print.xml

Choix de la source de données (datasource)

Pour modifier une source de données, voici la procédure à suivre :

  • Data explorer> Data source> New data source;
  • Sélectionner « XML Data Source » ;
  • Clic droit, « Edit »;
  • Faire Browse pour aller chercher la data source;
  • Sélectionner le XML sauvegardé sur son pc;
  • Cliquer sur « Test connection » et renseigner le compte et mot de passe de l'admin.
  • Sii « Ping succeedeed » apparait, c’est OK.
  • Appuyer sur « Finish ».

Choix du XML

Data Sets

Les dataset permettent de requêter la datasource et de sélectionner les attributs.

  1. Data set> New data set puis cliquer sur la data source précédemment rentrée et cliquer sur OK.
  2. Sélectionner la donnée à requêter (XPath qui permet de sélectionner les nœuds XML qui alimentent le dataset)
  3. Sélectionner les attributs des nœuds XML qui alimentent les colonnes du dataset

Ajout d'une propriété

Il est possible de prévisualiser le contenu du dataset en cliquant sur "Preview results". Une fois que le dataset est paramétré, il faut glisser déposer ses données dans le rapport.

Vue du rapport

Les vues de rapport sont sélectionnées par les onglets en bas de la section principale

Layout

Permet de construire le rapport :

  • Ajout des contrôles
  • Ajout des données

Page maître (Master page)

La page maître permet de renseigner :

  • Les entêtes et pieds de page du rapport
  • la largeur, la hauteur du rapport

Script

Il est possible de programmer des fonctions utilisables dans le rapport en les stockant dans l’onglet « Script ». Ces scripts peuvent être exécutés à différente étape d'exécution du rapport selon l'évènement. Un script peut être définit sur un élément précis ou sur le rapport.

XML Source

  • Affiche le XML du rapport.

Preview

  • Affiche la prévisualisation du rapport, comme s'il était exécuté par beCPG: Run> View report> Format de sortie (PDF).

Palette de contrôles

La palette est sélectionnée par l'onglet « Palette ». Cela permet notamment d'ajouter un texte en dur.

  • Contrôles disponibles

    • Label : à utiliser par défaut pour afficher du texte statique,
    • Text
    • Dynamic Text: texte dynamique. Exemple : pour mettre en gras des mots sur l’étiquette, on utilise des balises HTML,
    • Data : Rarement nécessaire car les données sont ajoutées depuis Exporer data
    • Image
    • Grid : tableau statique (on peut mettre des tables dedans),
    • List : liste dynamique en fonction du nombre de ligne du dataset,
    • Table : tableau dynamique en fonction du nombre de ligne du dataset (on peut mettre des listes dedans),
    • Chart : graphique,
    • Cross tab : tableau croisé dynamique.
  • Ajout d'un contrôle dans le rapport

L'ajout d'un contrôle se fait par glisser-déposer.

  • Ajout d'une image

L'ajout d'une image statique est simple.

L'ajout d'un image dynamique est plus complexe, il s'agit du cas où 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 :

  • Ajouter l'image
  • Dynamic Image en référençant l'id de l'image passé à la datasource, ex : row["productImage"]
  • Expression pour les champs de type données

Les champs de type données peuvent être soumis à des conditions ou être la concaténation de plusieurs attributs, ex : "Emballage : " + dataSetRow["palletBoxName"] + ", tare indicative (g) : " + dataSetRow["pmBoxTare"] + ", dimensions (mm) : " + dataSetRow["pmBoxDimensions"]

Pour éditer cette mise en forme, il faut faire :

  1. Clic droit sur l'attribut data
  2. Edit Value/Expression
  3. Renseigner l'expression

Visibilité

Il est possible de masquer des champs ou des images selon des conditions. Pour cela, il faut :

  • Afficher les propriétés du contrôle
  • Sélectionner l'onglet Visibility
  • Renseigner l'expression qui indique quand masquer le contrôle

Mise en forme

Il est possible de définir des styles de mise en forme dans un rapport, pour cela :

  • Clic droit sur un contrôle
  • Style => New Style

Ensuite, les styles peuvent être appliqués aux contrôles, édités ou supprimés en faisant un clique droit sur un contrôle, puis Style.

Déploiement

Une fois le rapport édité sous eclipse, le sauvegarder au format .rptdesign.

  1. Fiches techniques: se place dans Entrepôt> Système> Rapports> Rapports de fiche produit> Entité et déposer le rapport
  2. Fichiers de langues (properties): se place dans Entrepôt> Système> Rapports> Rapports de fiche produit et déposer le rapport

Pour les fichiers .rptdesign > Changer le type > Modèle de rapport

Dans "Editer les propriétés":

  • Cocher Modèle système si le rapport doit être attribué à tous les produits de même type.
  • Cocher 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é, il faudra aller dans le produit concerné et sélectionner le rapport à la main via le bouton "paramètres rapport"

Pour que le rapport soit traduit en différentes langues, sélectionner des fichiers de langues associées. Sélectionner également les différentes langues concernées dans la liste déroulante. Puis sélectionner les différentes langues dans les 'paramètres rapport' d'un produit.

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

Les entités (Produit-Fini, Matière Première, etc) possèdent des listes par défaut ("Fiches Techniques", "Composition",...). Certaines entités n'en possèdent pas certaines, par exemple, la liste "Fiches Techniques" pour le Fournisseur.

Pour rajouter une liste "Fiches Techniques" sur le modèle Fournisseur, il faut :

1. Sélection le modèle "Fournisseur" situé dans "Entrepôt > Système > Modèles d'entités" .

2. Cliquer sur "Nouvelle liste" (cf image ci-dessous, encadré en rouge) puis dans la liste des types, sélectionner "Vue personnalisée" (cf image ci-dessous, encadré en vert).

3. Puis remplir les champs du formulaire avec le même valeur que l'image ci-dessous puis enregistrer:

La nouvelle liste Fiches Techniques est ainsi créée.

4. Si vous souhaitez créer une liste document (si elle n'existe pas encore), la procédure est la même. Il faut simplement modifier à cette étape les champs suivant : "Nom de la vue personnalisé", mettre : View-documents

"Titre", mettre : Documents

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 champs Paramètres texte situé dans le formulaire d’édition de propriété d’un rapport. (voir encadré vert de l’image ci-dessous).

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 et vous avez besoin de générer un rapport par usine pour ce fournisseur. Chaque rapport doit contenir dans leur nom, le nom de l’usine en question. Pour se faire, vous aurez au préalable créé la liste «Fiches Techniques» sur le modèle fournisseur. Une fois, le rapport fournisseur crée et déployé il vous reste à placer dans paramètre 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}"
}

Puis à 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 extrait 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 Noeud 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 noeud est la valeur spécifiée dans id.
  • L'attribut nodeRef est le nodeRef du composants 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 2 solutions pour récupérer la dataSource contenant le noeud reportParams. La 1ère est d'activer le mode debug en Java. La 2nd est de consulter l'attribut rep:reportTextParameters du noeud 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. aller dans le dossier Document** de l'entité (fournisseur dans notre exemple)
  2. cliquer sur un rapport PDF.
  3. récupérer le nodeRefs du document PDF
  4. retrouver le document via le navigateur de noeud. (Pour savoir comment récupérer un nodeRef et utiliser le navigateur de noeud, lire ceci. Une fois sur le noeud 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 noeud 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 a extraire, lorsque la composition est extraite en multiniveau ou dans les associations extraite 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 extrait 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.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é par ; permettant d'indiquer des images à extraires
beCPG.product.report.nutList.localesToExtract nutLocalesToExtract Extrait les valeurs arrondis des nutriments
beCPG.entity.report.mltext.fields mlTextFields Permet d'extraire toutes les langues saisies d'un champs.
beCPG.entity.report.mltext.locales mlTextLocales Permet de spécifier les langues a 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
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

Des valeurs possibles de personnalisation sont:

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
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 permettez de masquer les lignes d’une liste dans un rapport.

Au début il faut ajouter les sous-types de rapport dans la liste : Sous-type de rapport\ Administration beCPG >Listes de valeurs >Sous-types de rapport

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

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

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

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

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 vous ajoutez des paramètres sous forme de :

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

show : selectionné , affiche l'élement (par défaut ce dernier est masqué)

hide : selectionné , masque l'élement (par défaut ce dernier est affiché)

reportKind : c’est une option pour dire dans quel modèle de rapport vous allez masquer ou afficher l’élément.

La dernière partie c’est le nom de l’élément que vous voulez masquer et qui peut être une liste, une propriété ou une association

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 colonnes (propriété d'une liste). Pour les noms des listes, mettre un "s" à la fin. Exemple: allergenLists

Maintenant il ne vous reste qu'à cocher les paramètres sur votre produit (entité).\ Fiches techniques >Paramétrer les rapports

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 à 2 endroits, sur les propriétés d'un produit et au niveau de sa liste (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 MB, une alerte est visualisable sur le produit en cas de dépassement.

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.

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 :

Utilisation des notes

Les notes jouent un rôle très important dans le fichier JXLS. Il faut en effet les utiliser dans 3 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 rajoutant 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 d'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 comprise entre :

${...}

Comme par exemple pour l'export du code beCPG:

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

Merci de lire la section SpEL de notre documentation pour savoir comment l'utiliser.

https://docs.becpg.fr/fr/development/spel_formulas.html

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.

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

En savoir plus

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, ...)

Il comprend plusieurs onglets. Chaque onglet correspond à une liste de l'entité (propriété, ingrédients, composition, ....). 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 interessent.

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 :

Quelque soit l'onglet, il y a aura toujours une information dans la case A1 de votre fichier EXCEL.

Dans le cadre du 1er onglet :

  • A1 : TYPE
  • A2 : 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
  • A2: La liste sur laquel porte votre extraction

Exemple 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 prefix 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 entê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 entêtes de colonne se construiront de la manière suivante : formula|props["nom de la formule"] (exemple en indiquant dans l'entê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

Utiliser les résultats de vos recherches en intégrant un onglet supplémentaire avec des formules EXCEL (rechercheV, rechercheH, ....) 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 une formule EXCEL directement 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 noeud 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éfinit 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, se référer au chapitre « Modification d'un modèle de rapport produit ».

Exports de recherche ZIP

Il est possible d'exporter des documents provenant d'entités dans un fichier ZIP. Pour cela, il faut créer 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.

Voici un exemple de fichier d'export ZIP :

<export format="zip">

<file path="cm:Documents/*" name="{bcpg:erpCode} - {doc_cm:name}" destFolder="Documents"/>

<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>

Ici, la première ligne permet d'exporter tous les documents contenus dans les entités recherchées, puis de définir un nom (name) et un dossier (destFolder) dans le ZIP pour chaque document.

La deuxième ligne effectue un filtrage sur les entités via entityFilter : ici, on exécute du code Javascript pour tester si l'entité va être parcourue ou non par le système lors du scan des documents. A noter qu'il est également possible d'exécuter du code SPEL.

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. Ajouter un dossier;
  2. Dans le dossier, ajouter 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éfinir 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 :

  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 ""