Labeling rules


The labeling rules are a supple way to parameterize the labeling preview of a product. These rules can be defined in many spaces in the beCPG software:

  • On the product model (« Labeling » list) : these rules are copied and pasted on the product during his formulation (manual) or directly executed ;
  • On the product itself (« Labeling » list);
  • On a product specification (« Labeling rules» list)
  • On the list of the ingredients types (beCPG> administration beCPG > lists of values > Ingredient Types : "do not declare" and "put at the end")

A rule is defined by:

  • A name ;
  • A type.

According to the rule type, other fields such as «Wording », « Expression », « Components » and « Replacements » are available.

the numbers are rounded down : > 18.5% => 18% > 18.6% => 19% > -1.5% => -1% > -1.6% => -2%

Types of rules (15)


(rules : language sensitive)

There are 15 types of rules:

  1. Render (create a label, ...)
  2. Format (manage the labeling format)
  3. Rename
  4. Agregate and detail
  5. Agregate and do not detail
  6. Agregate and group
  7. Declare
  8. Detail
  9. Declare legal name
  10. Omit ;
  11. Do not declare
  12. Declaration threshold
  13. Ingredient type
  14. Language
  15. Preference (Redefine the separators, CEE code, work in volume, ...)
  16. Show percentages
  17. Show origins
  18. Put at the end

1-Render

This rule type allows, for example, the creation of a new label. When you create a label, it is possible to attribuate a group (group 1, group2, ....) to the rules. You can associate another rules to the group and as the result to this label.

Many labeling formats exist and are defined by the following formulas that should be mentioned in the « Expression » field :

  • render () : displays ingredients and groupings

  • render(false): only displays ingredients

  • renderGroupList(): ony displays the groupings
  • Or any combinations: renderGroupList()+"
    "+render(false)

  • renderAllergens(): displays the present allergens.

  • renderAsHtmlTable(): displays a table. Optionnal parameters (styleCss, showTotal)

  • renderAsHtmlTable().replaceAll(">null<","><") : displays a table with the ingredients / the origins / the proportions (%).

2-Format

The « Format » type is often used on the product model and allow the management of the labeling format.

There exists 4 formats per default :

  • Groupings : {0} ({1,number,0.#%}): {2} > Bread : wheat flour, water, yeast, salt ...
  • Detailed elements : {0} {1,number,0.#%} ({2}) > icing sugar (sugar, maize starch)
  • Ingredients types : {0}: {1} > Preservative : ascorbic acid
  • Ingredients (default) : {0} > wheat flour, water, yeast, salt ...

Other examples:

e.g. writing "cream" in red:

  • Formula: {0} {1,number,0.#%} {2}
  • Components: cream
  • Result:

e.g. displays ingredients origins ({3}) (also, see "Render" if you are looking for a table for the components and their origins)

  • Formula : > <{0} ({1,number,0.#%}): {3}
  • Components: > milk
  • Result:

These « format codes » have to be entered in the expression field. Then, the targeted component have to be selected or the field has to be blank in order to specify the default format. Consequently, it’s possible to display percentages, to put text in bold, in red and so on. Formats can include HTMP etc. Please, find more information here : http://docs.oracle.com/javase/1.4.2/docs/api/java/text/MessageFormat.html

3-Rename

This rule is executed in chosing a component to be replaced (in the « Components » drop-down box) and its substitute which is selected in the «Replacement» drop-down box (if it already exists), or it can be created by putting its name in the « Wording » field (label).

If the renaming concerns the labels generated in a certain language, this latter should be specified by selecting it in the language list as below :

Which generates the following :

Note: Contains less than 2%

As per US regulation, the descending order of predominance does not apply to ingredients present in amounts of 2 percent or less by weight when a listing of these ingredients starts with ", contains less than 2% of " beCPG takes that in account by using the "Rename" rule. Then, enter "Less than 2%" in name. And ", contains less than 2% of " in label. Formula must contain your threshold which in that case is "0.02" (2 percents).

The result will be displayed in your list of ingredients.

If that labeling rule is supposed to be applied to a specific country, you must use the rule named "Language" as shown here.

This will result in the following display:

4-Aggregate and detail

These rules enable to aggregate two ingredients into a third ingredient (Example: milk, pasteurized cow milk --> milk).

To do this, aggregated components have to be entered in the « Components » field and the aggregate has to be selected in the « Replacements » drop-down list if it already exists or created by putting its name in the « Wording » field (Label).

Becomes:

It’s possible to specify the part of each ingredient in the aggregate. For example, if 100 % Milk and 80 % pasteurized cow milk have to be considered, it should be written « 100,80 » in the « Expression » field. The aggregate appears with its aggregated and their proportions in the total product.

5-Aggregate and group

Same as in « Aggregate and detail » , apart from the fact that the aggregate is separated from the rest of the labeling. Moreover, the aggregate part in the total product is recalled.

Becomes:

6-Aggregate and do not detail

Here, only the aggregate is displayed in the labeling.

Becomes:

Each declaration can be done in the « Composition » space or it can be overloaded by a rule by indicating the statement type and the component that must be overloaded. For example, if for only one RM it’s mandatory to detail, a rule can be established in a model to force the labeling of this RM whatever has been chosen by the user in the drop menu.

7-Declare

"Do not Declare" enables to not declare components (e.g processing aid). If you want to make an exception, you can use this rule to declare one or more specific component.

For example: water as processing aid. > Water >> Before : wheat flour, water (25%), yeast, salt... >> After : wheat flour, water (28.5%), yeast, salt...

8-Detail

This rule is not a duplicate of the Declaration Type rule. A declaration type's rule is used for all the label. This rule can be used for a label, a group, one product, one component or more.

For example, it can display the raw material followed by its ingredients (Example : Milk cream 27 % (Milk 50 , Cream 50)).

Displays the MP name without detailing. the name declare will the legal name, at least the name (cm:name)

10-Omit

Omitted components won't be visible and their proportion in the recipe will be changed to zero.

  • before: wheat flour 60%, butter : 30% water 9%, sel 1%
  • after: butter 75%, water 22.5%, salt 2.5%

11-Do not declare

Undeclared components aren’t visible on the labeling. However, their proportion in the recipe is taken into account.

before : wheat flour 60%, butter 30%, water 9%, salt 1% after : butter 30%, water 9%, salt 1%

12-Declaration treshold

This rule allows to not declare the component when the proportion is under a chosen treshold.

Rule Type: Declaration treshold Name: Test Expression: [5]{style="color:blue;"} Components: lemon zeste, butter, egg yolk Groupe: Chose a group (If you don't chose the groupe, all the labels will be modified),

before : wheat flour 52.25, water 16,24, sugar 12,55,{color:blue}butter 11,62 , egg yolk 3,48, Orange blossom water 1,45, yeast 1,12, salt 0,56, [lemon zeste 0,48]{style="color:blue;"}*, liquid whole egg 0,22

after : wheat flour 52.25, water 16,24, sugar 12,55,{color:blue}butter 11,62 , Orange blossom water 1,45, yeast 1,12, salt 0,56, liquid whole egg 0,22

Only the ingredients with a proportion under [5]{style="color:blue;"}% and identified by the rule won't be declare

13-Ingredient types

Labeling Rules

This rule is executed while chosing a component to be replaced (in the « Components » drop-down box) and its substitute (in the « Replacement » drop-down box). For example, the E270 additive could be used as « acid » rather than a preservative. Thus, in the « Components » field, « E250-Sodium-Nitrite » will be chosen and in the « Replacements » field, « acid » will be chosen.

Becomes:

If the type change concerns the labels generated in a certain language unically, this latter should be specified by selecting it in the language list (cf. « Renaming » part).

Ingredient types: specifications

You can add labeling rules when you create or change ingredient types. It is possible to:

  • not declare some types like for example processing aids,
  • put an ingredient at the end of the labeling,

To create these rules you have to do the following actions: > beCPG > administration beCPG, > List of values > Types of ingredients > Click on the pencil (on the right, last column, active button)

e.g. acid/ place at the end

Before:

After:

14-Language

The « Language » rule enables to generate labels in different languages. In the « Expression » field, codes linked to labeling languages have to be entered.

Labelings generated into different languages are available this way:

N.B : here, the three labels are written in French or in English because translations haven’t been preliminary done. In order to display everything properly in the chosen langage, it should be remembered to define, for each product, its legal name in multilangual like this :

For raw materials:

For ingredients:

15-Preferences

You can associate "Preference" to a group and as a result to a label. The rule will be applicated to the whole label. If you want to be more accurate, you need to use a "format" rule.

Work in volumes

useVolume = true

Display CEE ingredients codes instead of the legal name

showIngCEECode = true

Redefine the separators

defaultSeparator  = "; " 
groupDefaultSeparator  = ", " 
ingTypeDefaultSeparator  = ", " 
subIngsSeparator = ", "
allergensSeparator = "; "
geoOriginsSeparator = "; "
atEndSeparator=","

Redefine the format

Ingredient format

ingDefaultFormat = "{0}"

Group format

  • # : indicate the number of digits after the decimal point (e.g. ##, 2 number after the decimal point),
  • ... : these HTML tags are used to put set text in bold ( ... use for italics),
  • the numbers are rounded down : > 18.5% => 18% > 18.6% => 19% > -1.5% => -1% > -1.6% => -2%
groupDefaultFormat = "<b>{0} ({1,number,0.#%}):</b> {2}"

Groups lists format

groupListDefaultFormat = "<b>{0} {1,number,0.#%}</b>"

Detail Format

detailsDefaultFormat = "{0} {1,number,0.#%} ({2})"

Ingredient type

ingTypeDefaultFormat = "{0}: {2})"

Ingredient type with treshold

ingTypeDecThresholdFormat = "{0}"

Ingredient format with sub-ingredient

subIngsDefaultFormat = "{0} ({2})"

Yield taken into account

ingsLabelingWithYield = true

Percentage rounding rule

To round down (2.26% --> 2.2%)

defaultRoundingMode=T(java.math.RoundingMode).DOWN

To round up (2.21% --> 2.3%)

defaultRoundingMode=T(java.math.RoundingMode).UP

In the situation where you have 2 decimals #.#5 and wish to round down (2.25% --> 2.2%)

defaultRoundingMode=T(java.math.RoundingMode).HALF_DOWN

In the situation where you have 2 decimals #.#5, and wish to round up (2.25% --> 2.3%)

defaultRoundingMode=T(java.math.RoundingMode).HALF_UP

Show percentages (see below) can also manage rounding rules.

Allergen

allergenReplacementPattern = "<b>$1</b>"

Tables

htmlTableRowFormat = "<tr><td style=\"border: solid 1px !important;padding: 5px;\" >{0}</td>"
            + "<td style=\"border: solid 1px !important;padding: 5px;\" >{2}</td>"
            + "<td style=\"border: solid 1px !important;padding: 5px;text-align:center;\">{1,number,0.#%}</td></tr>"

Precision

Treshold beyond which the ingredient isn’t displayed

qtyPrecisionThreshold = 0.001d;

Force the sum to 100% It is possible to configure the system so the sum of rounded values is above 100%. In that case scenario the precision is increased and the adjustement is done on the first ingredient.

force100Perc = true

Burst the type of ingredients

Enables to regroup the ingredients per category, only when ingredients are next to one another in the list of ingedients.

shouldBreakIngType = true

Default : milk, Flavors: strawberry, vanilla, water

With the preference rule : milk, Flavor: strawberry, water, Flavor: vanilla

16-Show percentages

That rule is used to display the quantity of elements (ingredients, sub-ingredients, semi-finished...) in percentages and in relation with the type of declaration associated to the entity. The association "Show percentages/ Type of declaration" enalbles to display the % as you want. To display percentages for ingredients, informations regarding their proportions must be added at the level of each raw materials ingredients.

Note: "#.#" gives the number of decimals e.g. After chosing show percentages as rule, enter #.## in Formula to indicate 2 decimals (if you enter #.# you will indicate 1 decimal and #.### will indicate 3 decimals and so on).

Formula: #.#

For #.#, by default, the value is rounded down from #.#0 to #.#4 and rounded up from #.#5 to #.#9. But, you can set differents rounding rules:

--> #.#%|DOWN: always rounds down (2.26% --> 2.2%)

--> #.#%|UP : always rounds up (2.21% --> 2.3%)

--> #.#%|HALF_DOWN : for the case #.#5, rounds down (2.25% --> 2.2%)

--> #.#%|HALF_UP : for the case #.#5, rounds up (2.25% --> 2.3%)

Those rules are equivalent to the ones in the Preferances section. Both methods have pros and cons:

  • In the case we want a global rounding rule for all products, it's better to use Show pourcentages. Indeed, it centralises everything in a single rule (display pourcentage + format).
  • In the case we want a special format for some products, it's better to use Preferances. In fact, it separates the rule to display pourcentage and the rounding rule, which you could activate or not depending on the product.

You can also, in expression, add a threshold that will apply to the rule

  • "#.#||1" will apply for example to ingredients in proportion less or equal to 1%
  • "#.###|HALF_UP|0.1" will apply for example to ingredients in proportion less or equal to 0.1%

By combining the rules you can create reporting intervals.

17-Show origins

This rule displays origins of ingredients, subingredients, semifinished products,... depending on the declaration type associated to the entity.

18-Put at the end

This rule displays the RM / SF or FP legal Name at the end of the labelling, and displays its Legal Name.

Formula


It’s possible to filter the components thanks to a SPEL formula.

The available variables are :

  • compoListDataItem : the element in the composition ;
  • ingListDataItem : the extracted ingredient.

Statement (8)


There are 8 types of statements /declarations

  1. Declare ing.
  2. Declare legal name
  3. Detail
  4. Kit
  5. Group
  6. Omit
  7. Do not declare
  8. Put at the end

Statements are defined in the « Composition » inset, on the bottom right of the labeling page. To modify the declaration type, click on the actual declaration. A drop menu appear, allowing the chosing of the declaration type.

1-Ingredients declaration

Only displays ingredients.

2-Declare legal name

Displays the raw material without its ingredients. The display name will be the "legal name" and by default the name (cm:came)

3-Detail

The raw-material will be followed by the display of its ingredients. (e.g. bread 27% (wheat flour 60, water 35, yeast 4, salt 1))

4-Groupings

Creates a grouping (e.g. Rum ice cream with raisins (65,4) : Sugar 0,455 ; Milk cream 41,2 (Milk 50 , Cream 50)).

5-Assortments

Same as the grouping but the percentages are computed at assortment level. Example: Apple pie

>> Dough 35: wheat flour 60, butter 30, egg yolk 8, salt 2%. >> Apple mix 65% : apple 55, applesauce 35, sugar 8, butter 2.

If you only want to declare the proportion of the applesauce, you need to use labeling rules "format": Label : {0} {1,number,0.##%} ({2}) Component : Applesauce rule : format

6-Omit

The omitted components aren't visibles in the labeling. Their proportion is set at zero. For example, if we apply the omit statement to wheat flour in the example as seen below.

Before: Wheat flour 60, butter 30, water 9, salt 1%

After: Butter 75, water 22.5, salt 2.5%

7-Do not declare

Undeclared components are not visible on the labeling. Unlike the statement "Omit", the percentage is not set to zero.

Before: Wheat flour 60, butter 30, water 9, salt 1%

After: butter 30, water 9, salt 1

8-Put at the end

Omit, put at the end of the labelling the concerned component and display its legal name.

Rules defined on groups


The « Group » field is useful:

  • First case: when different rules have to be applied (of type different from « Render ») to many labels. For example, let's consider a group 2 label and a group 1 label. The separator has to be changed from « , » to « ; » only on label 1. A new rule is created, with the « Preference » type. The text « defaultSeparator = " ; " » is written in the « Formula » field and the group 1 is specified.

  • Second case: when the same rule has to be applied for all labels. For example, let's consider a group 2 label and group 1 label. The separator has to be changed from « , » to « ; » in all the labels. A new rule is created, with the « Preference » type. The text « defaultSeparator = " ; " » is written in the « Formula » field and the « Group » field is left blank.

WARNING: if the rule « Display percentages » is chosen by default, the case 1 won’t work.

Allergen labeling


Allergen list feeding

A pre-established allergen listnalready exists by default in the system. However, if it’s necesary to add new allergens, go to beCPG> Administration beCPG> Characteristics> Allergens and click on « Add ». A form is displayed and permit to enter :

  • The allergen name ;

  • The allergen regulatory threshold ;
  • The « children-allergens »;

Steps to label the allergens properly

Enter the allergens in the recipe

In order to display the allergens in the product labeling, they mus be indicated at raw material (RM) level. For your information, it’s sufficient to put allergens only once on the raw material to make them appear every time the RM is used in a product recipe.

To do this, go to each product’s raw materials and click on « Allergens ». An allergens list is displayed by default but it’s possible to add new ones by clicking on « Add » and by chosing an element from the list.

Once the allergen has been chosen, it’s necessary to mention the nature of its presence. For this purpose, a decision tree can be used in order to know if the allergen should be declared or not and if its presence is volontary or fortuitous.

Depending of the nature of its presence , it will be necessary to tell the source of this allergen, which means, the ingredient in which the allergen is found. This step is important to generate a correct labeling.

Choose the statement type

  • Either the raw material is declared according to the type « Declare legal name », in which case the allergen will always be put into brackets and in bold just after the RM name, whether its source has been mentioned or not.
  • Either the raw material is declared according to the type « Declare ingredients », in which case the allergen will be put into brackets and in bold just after the ingredient name, ONLY if its source has been mentioned.

Source mentioned :

Warning: in a case where the ingredient name corresponds to one of the allergen children, it will be put in bold and the allergen won’t be put in bracket next to the ingredient name.

Parameter the formatting of the allergens labeling

If the formatting of allergens bolding in the labeling as its presented just above does’nt suit you, it’s possible to do it manually.

In the case in which « Statement type » = « Declare the ingredients » : click on the ingredient in question and edit its properties. In the legal name, add the tag at the beggining of the word that should be put in bold and after this word. Go back to « Labeling » and click on « Formulate » to see the modifications appear. Indeed, modifications done manually prevail on the by default modifications.

Modifications to be done:

Before modifications:

After modifications:

Synchronisable State:


There are 3 types of synchronisation for the labelling rules.

Template

  • The rule is registered on the product template : product A (FP, SF, RM);
  • The rule will always be applied to all the product whose model are the product A;
  • The rule isn't visible by the user when he looks at the labelling rules of his products.

Interest: the purpose is to reduce the labelling rules 'list for the finished product. The user will only find the rule on the template.

Synchronisation

  • The rule is registered on the product template : product A (FP, SF, RM);
  • The rule will always be applied to all the product whose template are the product A;
  • The rule is visible by the user when he looks at the labelling rules of his products ;
  • The rule can be changed in the product's template.

Interest: the purpose for this synchronisation is to be used by all the products and to be easily changed. It is also possible to disabled it.

Manual

  • The rule is registered for each product;
  • The rule is visible by the user when he looks at the labelling rules of his products;
  • The rule can be changed in the labelling rules list of the product.

Interest: the purpose for this synchronisation is to stay independant from the other product.

Activate/desactivate a rule.

results matching ""

    No results matching ""