Règles d'étiquetage
Les règles d'étiquetage sont une manière souple de paramétrer le rendu de l'étiquetage d'un produit. Il est possible de rajouter des règles d'étiquetage permettant par exemple, pour un ou plusieurs ingrédients/composants, de changer leur nom sur l'étiquette, ou bien de les masquer.
Ces règles peuvent être définies à plusieurs endroits dans l’application :
- La liste Etiquetage de l'entité
- La liste étiquetage du modèle d'entité : Ces règles sont copiées sur le produit utilisant le modèle à la formulation (manuel) ou exécutées directement (modèle)
- La liste règle d'étiquetage des spécifications ou cahiers des charges : le cahier des charges sera associé au produit fini (PF) en l'ajoutant au niveau des propriétés du PF, il peut être spécifique à un client);
- La liste catégories réglementaires des ingrédients dans les listes de valeur de l'administration : "Ne pas déclarer", "Placer à la fin").
Créer une règle d'étiquetage
Une règle est définie par:
- Un nom
- Un type
En fonction du type de règle, d'autres champs tels que Libellé, Expression, Composants, Groupe langues et Remplacements sont possibles.
La gestion de la synchronisation et des groupes permet de créer des automatismes pour toutes les règles.
Les règles Déclarer, Formater, Langues, Ne pas déclarer, Omettre, Rendu, Renommer, Seuil de déclaration, Type d'ingrédient, Afficher les pourcentages, Afficher les origines géo, Afficher les origines bio, Mettre à la fin et Renvoie peuvent s'appliquer à une langue spécifiquement.
Synchronisation
Il existe trois types de synchronisation des règles d’étiquetage.
Modèle
- La règle est définie sur le modèle de produit A (PF, SF, MP) ;
- La règle est appliquée tout le temps sur les produits de même type que le produit A;
- La règle n’est pas visible par l’utilisateur consultant la liste « Étiquetage » de ses produits.
Intérêt: l’intérêt de ce type de synchronisation est d’alléger la liste des règles d’étiquetage lorsque des règles doivent toujours être appliquées par défauts à certains types de produits.
Synchronisation
- La règle est définie sur le modèle de produit A (PF, SF, MP) ;
- La règle est appliquée tout le temps sur les produits de même type que le produit A;
- La règle est visible par l’utilisateur consultant la liste « Étiquetage » de ses produits ;
- La règle peut être modifiée en allant sur la liste « Étiquetage » du modèle de produit.
Intérêt: l’intérêt de ce type de synchronisation est de créer une règle qui sera utilisée par différents produits. Ainsi, une modification de cette règle se fera en une seule fois et sera répercutée sur l’ensemble des produits concernés par cette dernière. Il est possible de la désactiver.
Manuel
- La règle est définie sur chaque produit ;
- La règle est visible par l’utilisateur consultant la liste « Étiquetage » de ses produits ;
- La règle peut être modifiée par l’utilisateur à partir de la liste « Étiquetage » de ses produits.
Intérêt: l’intérêt de ce type de synchronisation est de permettre à l’utilisateur de gérer l’étiquetage de ses produits indépendamment de chacun.
Activation / désactivation d'une règle
Les règles "modèles" (au niveau du modèle d'entité) et les règles"synchronisées ou manuelles" (au niveau de l'entité elle-même) peuvent être activées ou désactivées en utilisant les boutons ci-dessous. Il suffit simplement de cliquer dessus et en choisir d'activer (Oui) ou de désactiver (Non) la règle d'étiquetage.
Règles définies sur les groupes
Le recours au champ « Groupe » est utile: toutes les règles associées à un groupe ne s'appliqueront qu'à ce dernier. Si une règle n'appartient à aucun groupe, elle s'appliquera à l'ensemble des groupes existants.
Rappel : Seule la régle d'étiquetage "Rendu" crée une étiquette. Pour qu'une règle ne s'applique à aucun groupe : il faut la désactiver. Un groupe est constitué au minimum d'une règle rendue (une étiquette) pour être visible.
Exemples :
- Cas 1 : Lorsqu’il faut appliquer des règles différentes à plusieurs étiquettes. On a par exemple une étiquette du groupe 1 et une étiquette du groupe 2. On souhaite changer le séparateur « , » en « ; » uniquement dans l’étiquette 1. On crée alors une nouvelle règle de type « Préférence » en notant « defaultSeparator = "; " » dans le champ « Expression » et en spécifiant « Groupe 1 ».
- Cas 2 : Lorsqu’il faut appliquer la même règle à toutes les étiquettes. On a par exemple une étiquette du groupe 1 et une étiquette du groupe 2. On souhaite changer le séparateur « , » en «; » dans toutes les étiquettes. On crée alors une nouvelle règle de type « Préférence » en notant « defaultSeparator = "; " » dans le champ « Expression » et en laissant vide le champ « Groupe ».
Dans le cas où nous avons 3 étiquettes (ou plus), il n'est actuellement pas possible de sélectionner plusieurs groupes et n'appliquer la règle qu’à deux d’entre elles.
ATTENTION : si par défaut vous avez la règle « Afficher les pourcentages », le cas 1 ne fonctionnera pas.
Règles définies sur les langues
L'option "Langues" est disponible dans plusieurs règles d'étiquetage.
Par exemple : Avec la fonction formater, si nous voulons afficher allergènes entre parenthèses uniquement sur l'étiquetage anglais "*".
- Pour mettre les allergènes entre parenthèses, utilisez :
- Sélectionnez la langue (Anglais)
- Les allergènes figurant sur l'étiquette en anglais sont désormais placés entre parenthèses, les autres langues gardent le standard.
Autre exemple : si nous voulons afficher les origines géographiques des ingrédients seulement pour l'étiquette traduite en allemand et en anglais
- Sélectionner la règle "Afficher les origines géo"
- Sélectionnez les langues (Anglais et Allemand)
Les origines géo des ingrédients sont affichés seulement pour l'étiquette traduite en anglais et en allemand.
Ou encore : si nous voulons afficher les qauntités en % des ingrédients seulement pour l'étiquette traduite en allemand et en anglais
- Sélectionner la règle "Afficher les pourcentages"
- Sélectionnez la langue (Anglais et Allemand)
Les quantités des ingrédients sont affichés en pourcentages seulement pour l'étiquette traduite en anglais et en allemand.
Types de règles
Afficher les pourcentages
Par defaut, les arrondis sont fixés à l'arrondi inférieur :
- 18.5% > 18%
- 18.6% > 19%
Cette règle permet d'afficher les % des éléments (ingrédients, sous-ingrédients, semi-finis ...) en fonction du type de déclaration associée à l'entité.
L'association « Afficher les pourcentage / type de déclaration » permet d'afficher les % où vous le souhaitez. Pour l'affichage des % pour les ingrédients, les informations concernant les proportions doivent être remplies au niveau des ingrédients de la MP. (voir exemple ci-dessous dans : Afficher les origines)
Note : "#.#" : donne le nombre de chiffres après la virgule de votre poucentage.
ex : Après avoir choisi comme règle "Afficher les pourcentages" indiquer dans Expression #.## pour avoir 2 chiffres après la virgule (si vous entrez #.# dans Formule vous indiquerez 1 chiffre après la virgule alors que #.### indiquera 3 chiffres après la virgule).
Formule : #.#
Pour #.# l'arrondi par défaut est à l'inférieur pour les cas de #.#0 à #.#4 et au supérieur de #.#5 à #.#9. Mais, vous pouvez paramétrer d'autres règles d'arrondi:
"#.#%|DOWN" : renvoie le pourcentage arrondi à l'inférieur (2.26% renvoit 2.2%)
"#.#%|UP" : renvoie le pourcentage arrondi au supérieur (2.21% renvoit 2.3%)
"#.#%|HALF_DOWN" : pour les cas #.#5, renvoie l'arrondi à l'inférieur (2.25% renvoit 2.2%)
"#.#%|HALF_UP" : pour les cas #.#5, renvoie l'arrondi au supérieur (2.25% renvoit 2.3%)
Ceci est équivalent aux règles d'arrondissement vues dans la section Préférences. Les deux méthodes ont leur avantages et leur inconvénients :
- Dans le cas où l'on veut un formatage sur l'ensemble des produits, il vaut mieux passer par Afficher les pourcentages. En effet, cela permet de centraliser tout sur un seul paramétrage (Afficher les % + formatage)
- Dans le cas où l'on veut un formatage sur une partie des produits, il vaut mieux passer par Préférences. En effet, cela permet de séparer l'affichage des pourcentages de son formatage que l'on pourra activer ou non.
Vous pouvez également dans expression fournir un troisième paramètre qui est le seuil d'application de la règle
- "#.#||1" s'appliquera par exemple aux ingrédients inférieurs ou égal à 1%
- "#.###|HALF_UP|0.1" s'appliquera par exemple aux ingrédients inférieurs ou égal à 0.1%
En combinant les règles vous pouvez créer des intervalles de déclaration.
Afficher les origines geo
Cette règle permet d'afficher les origines geographique des éléments (ingrédients, sous-ingrédients, semi-finis ...) en fonction du type de déclaration associée à l'entité.
Pour pouvoir utiliser cette règle, vous devez avoir rempli les origines des éléments suivant dans votre matière première:
- Pour les ingrédients : dans l'onglet ingrédient de votre MP, compléter le champs "Origine géographique",
- pour votre matière première : dans les propriétés de la matière première, compléter le champs "Origines géographiques".
En fonction des origines que vous souhaitez voir apparaître, vous allez modifier le champs "composant" de votre régle et/ou le type de déclaration de votre entité :
- Si vous souhaitez l'origine d'un ou plusieurs éléments spécifiques : Associer le(s) composant(s) désiré(s) à la règle et choisir le bon type de déclaration (ex pour un ingrédient choisir : déclarer les ingrédients),
- Si vous souhaitez toutes les origines, il n'est pas nécessaire d'enregistrer les composants de votre recette dans la règle. Elles s'afficheront toutes par défaut si le champs "Composant" est vide et cela en fonction des déclarations que vous aurez associées à vos entités.
Exemple 1 :
- Origine de la MP Lardon fumé,
- % pour les MP et le SF avec l'affichage en % de la recette de la composition de ce dernier.
Exemple 2 :
- % de l'ingrédient riz
- Origine de la MP Lardon fumé
Formules
Il est possible de filtrer les composants grâce à une formule SPEL.
Les variables disponibles sont :
- compoListDataItem : l’élément dans la composition ;
- ingListDataItem : l’ingrédient extrait.
Pour certains produits, il est nécessaire d'indiquer des informations complémentaires à l'origine. Dans le cas des produits de pêche, il est nécessaire de déclarer la zone de pêche. Dans le cas des produits de viande, il peut aussi être nécessaire de déclarer les mentions de naissance, d'élevage et d'abattage.
Ces mentions peuvent être ajoutées à la règle "Origines géographiques". Il faut, dans un premier temps, créer les pays d'origine dans l'administration --> caractéristiques --> origines géographiques. En face de chaque pays, une précision peut être apportée concernant le type d'activité. Les valeurs saisissables sont les suivantes : Assemblage, Naissance, Mise en bouteille, Zone de capture, Agriculture, Importation, Dernier traitement, Traite, Élevage, Abattage Plus d'une valeur peut être ajoutée à un même pays.
Ensuite, associez à votre matière le pays d'origine.
De retour sur le produit fini, ajoutez la règle d'étiquetage "Origines géographiques". Cette règle peut être complétée pour faire figurer les types d'activités renseignées dans l'administration avec les valeurs suivantes : ASSEMBLY, BIRTH, BOTTLING, CATCH_ZONE, FARMING, IMPORTATION, LAST_PROCESSING, MILKING, REARING, SLAUGHTER, EMPTY
Par défaut, la règle d'étiquetage n'indique que le pays d'origine si un pays d'origine ne contient qu'un type d'activité. L'indication sera alors "ingrédient/matière" [pays d'origine]. L'ajout du type d'activité suivi de EMPTY dans la règle indiquera le type d'activité devant le pays d'origine.
Enfin, si plus d'un type d'activité est indiqué dans la règle, les types d'activité précèderont le pays d'origine. ex: BIRTH,REARING,SLAUGHTER
Afficher les origines bio
Cette règle permet d'afficher les origines biologique des éléments (ingrédients, sous-ingrédients, semi-finis ...) en fonction du type de déclaration associée à l'entité.
Renommer
Cette règle s'exécute en choisissant un composant à remplacer (dans la liste déroulante « Composants ») et son remplaçant. Ce dernier peut être sélectionné dans la liste déroulante « Remplacements » s’il existe déjà ou bien créé en marquant son nom dans le champ « Libellé ».
Si le renommage concerne les étiquettes générées dans une certaine langue uniquement, il faut spécifier cette dernière en la sélectionnant dans la liste des langues comme ceci:
On obtient alors:
Note: Contains less than 2%
Selon la réglementation américaine, la déclaration par ordre décroissant ne s'applique pas aux ingrédient présents en quantité inférieure à 2% lorsque ceux-ci sont précédés de la mention : ", contains less than 2% of " (Contient moins de 2% de). L'utilisation de la règle "Renommer" vous permet de refléter cela dans votre étiquetage. Une fois la règle choisie, entrez "Less than 2%" en nom de règle et ", contains less than 2% of " en libellé. Le champ "Expression" doit contenir une limite égale à O,02 (2 pourcents).
Le résultat s'affichera alors dans votre liste d'ingrédients.
Si vous souhaitez que cette règle s'applique uniquement à votre étiquetage américain, vous devez coupler à cette règle la règle langue comme spécifié ici.
Le résultat obtenu est alors le suivant :
Agréger et détailler
Il est également possible de spécifier les parts de chaque ingrédient dans l’agrégat. Par exemple, si l’on veut prendre 100% du lait et 80% du lait de vache pasteurisé, il faut noter « 100,80 » dans le champ «Expression ». L’agrégat apparaît alors avec un détail des agrégés ainsique leur part dans le produit total.
devient
Agréger et ne pas détailler
Les règles d’agrégation permettent d’agréger deux ingrédients (ex : lait, lait de vache pasteurisé) en un troisième ingrédient (ex : lait). Pour cela, les composants à agréger doivent être mis dans le champ «Composant » et l’agrégat doit être sélectionné dans la liste déroulante « Remplacements » s’il existe déjà ou bien créé en marquant son nom dans le champ « Libellé ».
Ici, seul l’agrégat apparaît dans l’étiquetage.
devient
Chaque déclaration peut se faire au niveau de la composition. Elle peut être surchargée par une règle en indiquant le type de déclaration et le composant à surcharger. Par exemple, si vous souhaitez qu'une MP soit systèmatiquement détaillée, une règle peut être établie dans un modèle pour forcer l’étiquetage de cette MP à être détaillé quoi que l’utilisateur choisisse au niveau du menu déroulant des déclarations (Fenêtre à gauche).
Mettre à la fin
Permet de mettre à la fin et d'omettre une MP / SF / PF, en affichant son libellé légal.
Note: Cela ne fonctionne pas sur les ingrédients.
Agréger et regrouper
Idem que pour « Agréger et détailler » hormis le fait que l’agrégat soit mis en évidence dans une ligne à part dans l’étiquetage. De plus, la part de l’agrégat dans le produit total est rappelée.
devient
Déclarer
Permet de déclarer un ingrédient même si normalement, il ne devrait pas être visible au vu des règles standards.
Exemple :
Votre ingrédient est un auxiliaire technologique et il est soumis à une règle de type "non déclaré". Mais pour ce produit, il a été demandé de mettre en évidence la quantité total de cet ingrédient.
- Champs Composant: EAU
- Avant : farine, eau (25%), arôme naturel, sel
- Aprés : farine, eau (28.5%), arôme naturel, sel
Détailler
Cette fonction fait doublon avec le type de déclaration du même nom à première vue. Il permet en réalité de détailler une MP pour une étiquette en particulier (groupe 1, groupe 2 ....) sous la forme : mp (ing1, ing2, ing3). Le type de déclaration lui, s'applique automatiquement à l'ensemble des étiquettes.
Ex : Pour l'ensemble des étiquette, on a : la liste de ing sans les auxiliaires technologiques (non déclarés, standard) Si l'on fait : Détailler (une MP) + Déclarer (ses auxiliaires technologiques) pour le groupe 1, on obtiendra : le détail de la MP + ses auxiliaires technologiques pour l'étiquette du groupe 1.
Déclaration le libellé légal
Cette fonction fait doublon avec le type de déclaration du même nom à première vue. Il permet en réalité de faire une déclaration du libellé légal pour une étiquette en particulier (groupe 1, groupe 2 ....).
Le type de déclaration lui, s'applique automatiquement à l'ensemble des étiquettes.
ex : Utiliser le libellé légal pour la pâte à brioche :
- Champs composants : SF Pâte à brioche
- Champs Groupe : Groupe 1
- Résultat :
- Étiquette 1:
Pâte à brioche (gluten, œuf, lait) 55,28% , blé farine 28,05%, eau 8,98%, sucre 5,78%,levure boulangère 1,12%, sel 0,56%, oeuf entier pasteurise 0,22% - Étiquette 2 : blé farine 52,25%, eau 16,24%, sucre 12,55%, beurre 11,62%, oeuf jaune 3,48%, levure boulangère 1,12%, sel 0,56%, citron zeste 0,48%, oeuf entier pasteurisé 0,22%, aromes naturels 0,15%, conservateur:sorbate de potassium (sa) 0,03%, acide lactique 0,01%
Omettre
Le système se comporte comme si le composant n'existe plus (étiquetage et composition)
Ex : une tarte aux poires dont on omet les poires :
Avant : pâte à tarte 32%, poires 32%, amandine 32%, amandes grillées 4%
Après : pâte à tarte 47.1%,
poires, amandine 47.1%, amandes grillées 5.8%
Ne pas déclarer
Les composants non déclarés ne sont pas visibles sur l'étiquetage. Cependant, leur part dans la recette est prise en compte.
Le système se comporte comme si le composant existe
Ex : une tarte aux poires dont on omet les poires :
- Avant : pâte à tarte 32%, poires 32%, amandine 32%, amandes grillées 4%
- Aprés : pâte à tarte 32%,
poires 32%, amandine 32%, amandes grillées 4%
Seuil de déclaration
Seuil (%) en dessous duquel l'ingrédient n'est pas affiché
Exemple :
Type de règle : Seuil de Déclaration
- Nom :* Non déclaré
- Expression :[5]
- Composant :citron zeste, beurre, oeuf jaune
- Groupe : Choisir le groupe adapté (en l'absence de groupe, toutes les étiquettes du produit seront impactées)
avant : blé farine 52,25%, eau 16,24%, sucre 12,55%, beurre 11,62%, oeuf jaune 3,48%, Eau de fleur d'oranger 1,45%, levure boulangère 1,12%, sel 0,56%, citron zeste 0,48%, oeuf entier pasteurisé 0,22%
aprés : blé farine 52,25%, eau 16,24%, sucre 12,55%, *beurre 11,62%*, Eau de fleur d'oranger 1,45%, levure boulangère 1,12%, sel 0,56%, oeuf entier pasteurisé 0,22%
Seuls les éléments définis dans la régle dont pourcentage est inférieur à 5 ne sont plus déclarés (oeuf et zeste de citron)
Type d'ingrédient
Cette règle s'exécute en choisissant un composant à remplacer (dans la liste déroulante « Composants ») et son remplaçant dans la liste déroulante « Remplacements ». Par exemple, on peut vouloir utiliser l’additif E250 en tant qu’antimoussant plutôt qu’en tant que conservateur. Ainsi, dans le champs « Composants » on choisira « E250- nitrite de sodium » et dans le champ « Remplacement » on choisira «Antimoussant ». Le type par défaut « Conservateur » sera alors écrasé par le type « Antimoussant ».
devient
Si le changement de type concerne les étiquettes générées dans une certaine langue uniquement, il faut spécifier cette dernière en la sélectionnant dans la liste des langues (cf. PARTIE RENOMMAGE).
Spécificités des types d'ingrédients
Les catégories réglementaires / types d'ingrédients peuvent intégrer des règles d'étiquetage spécifiques. Il est possible :
- de ne pas déclarer certains types (anti-mottant...),
- de les placer à la fin de l'étiquetage quelque soit le % représenté par l'ingrédient dans la composition.
Pour déterminer ces régles, il faut :
- Aller dans BeCPG > administration beCPG,
- Aller dans Liste des valeurs > Catégories réglementaires des ingrédients,
- Cliquer sur le crayon de la catégorie voulue (à droite, dernière colonne, icône actif),
ex : Vitamines :
Voici le rendu de cette régle d'étiquetage :
Avant :
Après :
Rendu
Ce type de règle permet, par exemple, de créer une nouvelle étiquette. Lors de la création d'une étiquette, il est possible de lui attribuer un groupe (groupe 1, groupe 2 , ...). Il sera alors possible d'associer d'autres règles d'étiquetage à un groupe défini et donc à l'étiquette qui lui correspond. voir les règles définies sur les groupes
Plusieurs formats d’étiquetage existent et sont définis par les formules suivantes à mentionner dans le champ « Expression »:
affiche les ingrédients et les regroupements
render()
Exemple :
affiche uniquement les ingrédients
render(false)
Exemple :
affiche uniquement les regroupements
renderGroupList()
Ou toute combinaison:
renderGroupList()+"<br/>"+render(false)*
Exemple :
affiche les allergènes présents
renderAllergens()
affiche les allergènes fortuits
renderInvoluntaryAllergens()
affiche les allergènes fortuits présent dans les process
renderInvoluntaryAllergenInProcess()
affiche les allergènes fortuits présent dans les matières
renderInvoluntaryInRawMaterial()
affiche les allergènes détectés (exemple: si beurre est détecté, on affiche ici beurre et non lait)
renderDetectedAllergens()
affiche sous forme de tableau. Paramètres optionnels (styleCss, showTotal, force100Perc)
renderAsHtmlTable()
Exemple : renderAsHtmlTable("border-collapse:collapse", false,true)
affiche les renvois de bas de page {#footNotes}
renderFootNotes()
Affiche les langues des étiquettes
@beCPG.join(",",locales)
Langue
Le type « Langue » permet de définir les langues de génération des étiquettes.
Les étiquetages générés dans les différentes langues sont accessibles ainsi :
N.B : ici, les trois étiquettes sont en français (hormis quelques mots) car les traductions n’ont pas été réalisées au préalable. Pour que tout s’affiche correctement dans la langue souhaitée, ne pas oublier, pour chaque produit, de définir son libellé légal en multilingue comme ceci :
Pour les matières premières :
Pour les ingrédients :
Formater
Le type « Formater » est souvent utilisé sur le modèle de produit et permet de gérer le format de l’étiquetage. "Formater" s'applique à un ou plusieurs ingrédients ou MP. C'est à dire de mettre en gras des mots spécifiques, en couleur, en italique, afficher les % ...sur une sélection de mots déterminés. Pour une application plus globale, il est conseillé d'utiliser "Préférences"
Il existe 4 formats par défaut (champ expression) :
- Pour les regroupements :
<b>{0} ({1,number,0.\#%}):</b>" {2}
- Pâte à Brioche: blé farine, beurre, sucre, eau , ....
- Pour les éléments détaillés : {0} {1,number,0.#%} ({2})
- Sucre glace (sucre, amidon de blé)
- Pour les types d'ingrédients : {0}: {1}
- (conservateur : acide ascorbique)
- Pour Les ingrédients (défaut): {0}
- blé farine, sucre, œufs entiers, eau ....
Autres exemples d'utilisation :
ex : mettre "farine de blé" en rouge:
- Champs expression :
<h style="color:#DC143C">{0}{1,number,0.\#%}{2}</h>
- Champs Composant: farine de blé
- Résultats :
farine de blé 24.2 beurre 14.52%, sucre 6.78%
ex : afficher les origines des ingrédients ({3}) (voir aussi "Rendu", tableau incluant les origines.)
- Champs expression : {0} ({1,number,0.#%}): {3}
- Champs Composant: blé farine
- Résultats : résultats : blé farine (24.2%): France, Espagne, beurre, sucre
Les codes format (en HTML) sont à noter dans le champ expression. Il faut ensuite sélectionner le composant cible ou laisser le champ libre pour spécifier que le format par le format par défaut.
Préférence
"Préférence" est généralement associé à un groupe (1,2,...). Son application se fait sur l'ensemble de l'étiquette sans distinction. Pour une application plus spécifique, il est conseillé d'utiliser "Formater"
Travailler en volumes
useVolume = true
Afficher les code CEE des ingrédients à la place de libellé légal
showIngCEECode = true
Redéfinir les séparateurs
Faire une règle par séparateur. A inscrire dans le champs "expression"
defaultSeparator = "; "
groupDefaultSeparator = ", "
ingTypeDefaultSeparator = ", "
subIngsSeparator = ", "
allergensSeparator = "; "
geoOriginsSeparator = "; "
atEndSeparator = ","
footNotesLabelSeparator =" <br/>"
Redéfinir un format
Format groupe
- # : donne le nombre de chiffre après la virgule (ex : ##, 2 chiffres après la virgule),
<b> ...</b>
: donne la police soit "gras" (<i> ... </i>
pour italique),- les arrondis sont fixés à l'arrondi inférieur :
- 18.5% > 18%
- 18.6% > 19%
Format liste des groupesgroupDefaultFormat = `"<b>{0}({1,number,0.#%}):</b>{2}`"
groupListDefaultFormat = "<b>{0}{1,number,0.#%}</b>"
ATTENTION : Les 4 règles Format ingrédient, Type d'ingrédient, Format ingrédient, Format ingrédient avec sous ingrédient ne fonctionnent que couplées aux règles d'indication géographiques et biologiques. Afficher les origines géo et Afficher les origines bio
Les 2 règles suivantes (Format ingrédient et Type d'ingrédient) sont utiles dans le cas d'une demande d'indication de pays d'origine de transformation et d'origine biologique. Les deux premières règles Format ingrédient et Type d'ingrédient sont à combiner et plus souvent mises sur le modèle d'entité du produit fini (il est aussi possible d'utiliser ces règles sur les entités directement). {0} sous entend l'ingrédient {2} le nom de l'ingrédient et son origine de transformation, remplacée par l'origine géographique si l'origine de transformation n'est pas indiquée. {3} l'origine de transformation {4} l'origine biologique.
Format ingrédient
ingDefaultFormat = "{0} [{3}]"
Format des ingrédient avec type
ingTypeDefaultFormat = "{0}: ({2})[{3}]"
ex: antioxydant : (acide ascorbique , tocopherol )
ingTypeSingleValueFormat="{0} : {2} [{3}]"
ex: antioxidant : acide ascorbique
"ingTypeSingleValueFormat" remplace "ingTypeDefaultFormat" quand un seul enfant est présent
Format ingrédient détaillé
detailsDefaultFormat = "{0} ({2}) [{3}]"
Pour obtenir le détail d'un ingrédient composé.
Format ingrédient avec sous ingrédient
subIngsDefaultFormat = "{0} ({2}) [{3}]"
Pour obtenir le détail d'un sous ingrédient.
Format des ingrédient avec type et seuil
ingTypeDecThresholdFormat = "{0} [{3}]"
Format allergène {#labeling-rules-allergensFormat}
allergenReplacementPattern = "$1"
Il est également possible d'utiliser des bornes.
Capitaliser (exemple: Water)
<ca></ca>
Mettre en majuscule (exemple: WATER)
<up></up>
Mettre en minuscule (exemple: water)
<lo></lo>
Règle d'arrondi des pourcentages
Arrondir à l'inférieur (2.26% --> 2.2%)
defaultRoundingMode=T(java.math.RoundingMode).DOWN
Arrondir au supérieur (2.21% --> 2.3%)
defaultRoundingMode=T(java.math.RoundingMode).UP
Pour les cas où #.#5, renvoie l'inférieur (2.25% --> 2.2%)
defaultRoundingMode=T(java.math.RoundingMode).HALF_DOWN
Pour les cas où #.#5, renvoie au supérieur (2.25% --> 2.3%)
defaultRoundingMode=T(java.math.RoundingMode).HALF_UP
Nous pouvons également gérer cela avec la règle "Afficher les pourcentages" voir section 16 ci-dessous.
Allergène
Mettre les allergènes en gras , en italique .
allergenReplacementPattern = "<b>$1</b>"
Format de l'allergène quand il n'apparait pas dans le texte.
allergenDetailsFormat = "{0} ({2})";
Desactiver l'affichage des allergènes pour certaines langues.
disableAllergensForLocales = "ru,ja_JP,zh_CN"
Desactiver l'affichage des allergènes pour toutes les langues.
disableAllergensForLocales = "*"
Tableaux
htmlTableRowFormat = '<tr><td style="border: solid 1px;padding: 5px;" >{0}</td>
<td style="border: solid 1px;padding: 5px;" >{2}</td>"
<td style="border: solid 1px;padding: 5px;" >{3}</td>"
<td style="border: solid 1px;padding: 5px;text-align:center;">{1,number,0.#%}</td>
<td style="border: solid 1px;padding: 5px;text-align:center;">{4,number,0.#%}</td></tr>'
htmlTableHeaderFormat = '<thead><tr><th style="border: solid 1px;padding: 5px;" >{0}</th>
<th style="border: solid 1px;padding: 5px;" >{2}</th>
<th style="border: solid 1px;padding: 5px;" >{3}</th>
<th style="border: solid 1px;padding: 5px;text-align:center;">{1}</th>
<th style="border: solid 1px;padding: 5px;text-align:center;">{4}</th></tr></thead>'
htmlTableFooterFormat = '<tfoot><tr><th style="border: solid 1px;padding: 5px;" ><b>{0}</b></th>
<td style="border: solid 1px;padding: 5px;"></td><td style="border: solid 1px;padding: 5px;"></td>
<td style="border: solid 1px;padding: 5px;text-align:center;"><b>{1,number,0.#%}</b></td>
<td style="border: solid 1px;padding: 5px;"></td></tr></tfoot>'
Distinction entre les origines et les origines de transformation
Il est également possible de différencier le pays de provenance du pays de transformation. Par défaut le pays d'origine est déclarée si le pays de transformation n'est pas déclarée. Sinon le pays de transformation est déclaré.
Pour cela, il faut déclarer les origines sour forme de tableau en ajoutant une règle de rendu. renderAsHtmlTable("border-collapse:collapse",false,false).replaceAll("><","><")
Puis, créer deux règles de préférence :
htmlTableRowFormat =
'<tr><td style="border: solid 1px;padding: 5px;" >{0}</td>
<td style="border: solid 1px;padding: 5px;" >{2}</td>
<td style="border: solid 1px;padding: 5px;" >{5}</td>
<td style="border: solid 1px;padding: 5px;" >{3}</td>
<td style="border: solid 1px;padding: 5px;text-align:center;">{1,number,0.#%}</td>
<td style="border: solid 1px;padding: 5px;text-align:center;">{4,number,0.#%}</td></tr>'
htmlTableHeaderFormat =
'<thead><tr><th style="border: solid 1px;padding: 5px;" >{0}</th>
<td style="border: solid 1px;padding: 5px;" >Transformation</td>
<td style="border: solid 1px;padding: 5px;" >Origine</td>
<th style="border: solid 1px;padding: 5px;" >{3}</th>
<th style="border: solid 1px;padding: 5px;text-align:center;">{1}</th>
<th style="border: solid 1px;padding: 5px;text-align:center;">{4}</th></tr></thead>'
Vous obtenez alors une nouvelle colonne (la colonne 5 dans les règles de préférence).
Prise en compte du rendement
L'étiquetage prend en compte le rendement, c'est à dire donne les % exacts mis en oeuvre avant cuisson.
ingsLabelingWithYield = true
Prise en compte du rendement secondaire
L'étiquetage prend en compte le rendement après remise en oeuvre, c'est à dire donne les % exacts mis en oeuvre après cuisson chez le client.
useSecondaryYield = true
Précision
Il est possible de donner le niveau de précision utiliser lors des calculs d’agrégation et de reconstitution :
qtyPrecisionThreshold = 0.001d;
Lorque le format définit l'affichage des pourcentages, le système adapte automatiquement le nombre de chiffres après la virgule en fonction de la quantité à afficher. Le nombre de chiffre maximum après la virgule est paramétrable :
maxPrecision = 4;
Exemple avec maxPrecision = 2
- 3.5% donne 3.5%
- 0.021151% donne 0.02%
- 0.005% donne 0.00%
- 0% donne 0%
Forcer la somme à 100%
Il est possible de configurer le système pour que la somme des valeurs arrondis soit forcée à 100%. Dans ce cas la précision est augmentée et l'ajustement ce fait sur le premier ingrédient.
force100Perc = true
Éclater les types d'ingrédients
Permet de regrouper les ingrédients par catégorie uniquement si ils sont côte à côte dans l'étiquetage.
shouldBreakIngType = true
Par défaut : lait, Arômes : fraise, vanille, eau
Avec la préférence : lait, Arôme : fraise, eau, Arôme : vanille
Etiquette par langues
Permet de gérer autant d'étiquettes que de langues
labelingByLanguage = true
Supprimer les majuscules du libellé légal
Permet de mettre des minuscules à la place des majuscules pouvant être présentes au début des noms légaux
uncapitalizeLegalName = true
Etiqueter par rapport aux parents
Permet d'étiqueter les pourcentages des ingrédients par rapport à l'ingrédient parent.
computePercByParent = true
En standard :
Si la règle computePercByParent est utilisée :
Règle à creer :
Renvoi
Permet d'afficher un renvoi après un ingrédient :
- dans le libellé, déclarez le marqueur et le renvoi séparés par | (doubler les apostrophes pour qu'elle s'affiche sur l'étiquetage)
Exemple:
*|* Issu de l''agriculture biologique
**|** Ingredients fairtrade
Pour afficher, le pourcentage d'ingrédients concernés par une allégation:
*| * {0,number,0.#%} d''ingrédients bio
- dans composant, vous pouvez sélectionner le composant sur lequel afficher le renvoi.
- avec l'expression vous pouvez utiliser une formule SPEL pour conditionner l'affichage du renvoi par rapport à une allégation Labeling context
Note : Cette règle doit être couplée avec le renderFootNotes
Ajouter une apostrophe
Pour ajouter une apostrophe par exemple sur une règle de renvoi, il faut la doubler sinon elle ne sera pas prise en compte dans l'étiquetage.
Ex : "Ingredient d"origne biologique"
Liste des balises HTML
La plupart des règles d'étiquetage peuvent être utilisées avec des balises HTML pour leur donner un rendu particulier.
Bold : mettre en gras
<b> ... </b>
Strong : mettre en gras (plus fort que bold)
<strong> ... </strong>
Italic : mettre en italic
<i> ... </i>
Underline : souligné
<u> ... </u>
del : barré
<del> ... </del>
20275br : saut de ligne
... </br> ...
Span uppercase : mettre en majuscule
<span style='text-transform:uppercase'> ... </span>
Span capitalize : mettre en majuscule le premier caractère
<span style='text-transform:capitalize'> ... </span>
Span lowercase : mettre en minuscule
<span style='text-transform:lowercase'> ... </span>
h style color : mettre en couleur
<h style='color:#DC143C'> ... </h>
Exemple avec #DC143C (rouge). Pour trouver le code des autres couleurs : https://htmlcolorcodes.com/
Note: ces balises peuvent également être utilisées directement dans les libellés légaux.