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 Étiquetage 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ées seulement pour l'étiquette traduite en anglais et en allemand.

Ou encore : si nous voulons afficher les quantité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ées en pourcentages seulement pour l'étiquette traduite en anglais et en allemand.

Types de règles


Afficher les pourcentages

Par défaut, 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é à 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", indiquez 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 égaux à 1%
  • "#.###|HALF_UP|0.1" s'appliquera par exemple aux ingrédients inférieurs ou égaux à 0.1%

En combinant les règles, vous pouvez créer des intervalles de déclaration.

Afficher les origines géo

Cette règle permet d'afficher les origines géographiques des éléments (ingrédients, sous-ingrédients, semi-finis ...) en fonction du type de déclaration associé à l'entité.

Pour pouvoir utiliser cette règle, vous devez avoir rempli les origines des éléments suivants dans votre matière première:

  • Pour les ingrédients : dans l'onglet ingrédient de votre MP, complétez le champ "Origines géographiques",
  • pour votre matière première : dans les propriétés de la matière première, complétez le champ "Origines géographiques".

En fonction des origines que vous souhaitez voir apparaître, vous allez modifier le champ "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ément(s) spécifique(s) : 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 champ "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". Dans un premier temps, il faut 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 le pays d'origine que 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é à 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 pour cent).

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 ainsi que 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ée 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é totale de cet ingrédient.

  • Champ 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 étiquettes, 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 :

  • Champ composants : SF Pâte à brioche
  • Champ 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 le 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 champ « 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 :

  1. Aller dans BeCPG > administration beCPG,
  2. Aller dans Liste des valeurs > Catégories règlementaires des ingrédients,
  3. 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ésents dans les process

    renderInvoluntaryAllergenInProcess()

Affiche les allergènes fortuits présents 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.

    renderAsHtmlTable()

Des paramètres optionnels sont disponibles dans la parenthèse (styleCss, showTotal, force100Perc)

  • styleCss correspond au format du tableau ("border-collapse:collapse", "border-collapse:separate", null...)
  • showTotal= true permet d'afficher le total
  • force100Perc= true force les quantités sur 100%

Exemple : Faire un tableau avec le style "border-collapse:collapse", sans afficher le total et en forçant les pourcentages pour que le total soit égal à 100%. renderAsHtmlTable("border-collapse:collapse", false,true) Il est aussi possible d'ajouter des règles de préférence sur le tableau, ainsi que des règles pour afficher les origines bio et géo.

Affiche les renvois de bas de page {#footNotes}

    renderFootNotes()

Affiche les langues des étiquettes

    @beCPG.join(",",locales)

Paramètre Avancé Faire un filtre par langue ou pays pour un rendu différent.

locale.getCountry() ou (locale.getLanguage()

Exemple : locale.getLanguage() =="fr" ? T(java.lang.String).format(fr)+ render : "" + locale.getLanguage() =="en" ? T(java.lang.String).format(en)+ render : ""

Ajouter du texte avant le rendu.

T(java.lang.String).format(

Exemple : Ajouter "Ingrédients :" devant la liste d'ingrédient T(java.lang.String).format(Ingrédients)+render() ou T(java.lang.String).format(@beCPG.propValue('workspace://SpacesStore/bf5128f4-d5e1-4b8d-a436-35498j998e9b', "bcpg:legalName"))+render() 'workspace://SpacesStore/bf5128f4-d5e1-4b8d-a436-35498j998e9b' est le nœud de la caractéristique 'Ingrédient', cela permet d'avoir Ingrédient en multilingue en fonction de la langue de l'étiquette

Remplacer un symbole ou un texte

"le rendu".replace("valeur à remplacer","valeur de remplacement")

Exemple : Dans l'étiquette, j'aimerais remplacer sans par rien: render.replace("sans","")

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. « Formater » permet de mettre en gras des mots spécifiques en couleur, en italique, afficher les % ... 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:

  • Champ expression : <h style="color:#DC143C">{0}{1,number,0.\#%}{2}</h>
  • Champ 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.)

  • Champ expression : {0} ({1,number,0.#%}): {3}
  • Champ 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 volume

    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 champ "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 en "gras" (<i> ... </i> pour italique),
  • les arrondis sont fixés à l'arrondi inférieur :
  • 18.5% > 18%
  • 18.6% > 19%
    groupDefaultFormat = `"<b>{0}({1,number,0.#%}):</b>{2}`"
    
    Format liste des groupes
    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'indications géographiques et biologiques. Afficher les origines géo et Afficher les origines bio

Les 2 règles 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 (ou origine géographique si le pays de transformation est vide) {4} l'origine biologique. {5} l'origine géographique

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})";

Désactiver l'affichage des allergènes pour certaines langues.

    disableAllergensForLocales = "ru,ja_JP,zh_CN"

Désactiver l'affichage des allergènes pour toutes les langues.

    disableAllergensForLocales = "*"

Tableaux

En standard, le tableau affiche en ligne les ingrédients, leurs origines géographiques de transformation, l'origine biologique, la quantité avant rendement et après rendement. {0} = Ingrédient (avec son type si présent) {2} = Origine géographique transformation (ou origine géographique si le pays de transformation est vide) {3} = Origine biologique {1} = Quantité avant rendement {4} = Quantité après rendement

Avec une règle de préférence, il est possible de modifier le nom des colonnes, l'ordre ou encore d’ajouter des colonnes en modifiant les formats suivants.

Format des colonnes du tableau

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

Format des lignes du tableau

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

Format du bas de page du tableau

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

Les origines géographique et biologique ne s'affichent que si les règles gérant l'apparition de celles-ci sont présentes sur le tableau. Pensez à bien les ajouter sur le modèle de l'entité via des groupes pour ne pas polluer les autres étiquettes.

Distinction entre les origines et les origines de transformation

Il est également possible de différencier le pays de provenance du pays de transformation.

{2} = Origine géographique transformation (ou origine géographique si le pays de transformation est vide) {5} = Origine géographique

Avec 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 arrondies soit forcée à 100%. Dans ce cas, la précision est augmentée et l'ajustement est fait sur tous les ingrédients sauf l'eau.

    force100Perc = true

NB: Avant la 4.2.2, l'ajustement était réalisé sur le premier ingrédient.

Éclater les types d'ingrédients

Permet de regrouper les ingrédients par catégorie uniquement s’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

Étiquette 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 :

Garder l'ordre des ingrédients

Conserve l'ordre de la liste d'ingrédient, s'il n'y a qu'une seule matière première ou semi-fini, comme l'option détaillée.

     forceKeepOrder = true

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'elles s'affichent 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.

  1. Bold : mettre en gras

    <b> ... </b>
    
  2. Strong : mettre en gras (plus fort que bold)

    <strong> ... </strong>
    
  3. Italic : mettre en italique

    <i> ... </i>
    
  4. Underline : souligné

    <u> ... </u>
    
  5. del : barré <del> ... </del>20275

  6. br : saut de ligne

    ... </br> ...
    
  7. Span uppercase : mettre en majuscule

    <span style='text-transform:uppercase'> ... </span>
    
  8. Span capitalize : mettre en majuscule le premier caractère

    <span style='text-transform:capitalize'> ... </span>
    
  9. Span lowercase : mettre en minuscule

    <span style='text-transform:lowercase'> ... </span>
    
  10. 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.

results matching ""

    No results matching ""