Formulation of the composition/recipe
The wording used to describe the composition of a product and calculate the product features:
- Costs
- Nutrients
- Ingredients list
- Ingredient Declaration
- Allergens
The composition includes:
- The level of product in the composition
- The components used
- The amount used in the recipe
- The implementation unit (kg, g, L, mL, P, m, m², Perc)
The type of statement:
> Include: the component ingredients are included in the ingredients of the formulated product
> Detail: the component ingredients is listed under the same component it
> Consolidate: to consolidate the group statement (paste, trim, for example)
> Omit: the component ingredients are not included in the ingredients of the formulated product
> Do not include: the component ingredients are included in the ingredients of the formulated product but are not displayed (for example, water, sulfite)
On the formulated product, there are 3 fields necessary for the formulation:
- Quantity after processing: it is the amount of product obtained after the conversion step taking into account the performance-related losses.
- Product Unit (kg, L, P) product sales unit. It is this unity that defined the unit price (€ / kg ; € / L) and nutrient unit (/ 100 or / 100mL).
- Product density: the density to convert a liter or a piece of product in kg.
Filters and Tier 2 items
The section lists of data filters enable to filter lists and display level elements greater than 1. Show Tier 2 items allows you to see the composition of a semifinished present in your composition.
Import raw materials from nutritional databases
beCPG provides CIQUAL and USDA nutritional databases. The import of raw materials is available from the composition of a product:
- Click on the import button
- Type the firt letters of the raw material that you want to import
- The system then suggests a raw material
- Select the raw material you want to import
- Click on OK to import the raw material(you can select multiple raw materials before importing)
- A message tells you that the products have been successfully imported
- You can add the raw material to the composition of your product
Yields
In agribusiness, the yield corresponds to the ratio between the final product net quantity and the initial product net quantity. In fact, the latter undergoes losses during different transformation processes. Water losses during the cooking process are often the most consequent. Consequently, in beCPG, the yield enables the distinction between an uncooked product (100% of its water content) and a cooked product (100 - x water lost during the cooking). When the yield is taken into account, nutritional values are impacted. In fact, when the water content decreases, for example, its dry matter content increases. The yield is calculated thanks to the formula :
YIELD = (Final quantity / Initial quantity) x 100
In beCPG, we name «quantity used» the initial product quantity and «Net quantity» the final product quantity. beCPG takes the yield into account according to four ways :
- Whether by entering the yield for each raw material in the product composition :
- or by entering the net quantity of the final product in the «Net quantity» field (in the product properties).
It is possible to see the «Yield» and «Net quantity» fields with formulated characteristics.
Impact the yield on the water ingredient
The water content of cooked products is reduced by evaporation. The quantities of other ingredients are increased in proportion to their concentration. BeCPG offers an additional parameterization to impact the "water" ingredient yield. "Qty with yield (%)" column of the ingredient tab will display quantities taking into account the evaporation of water in the product.
It is also possible to label quantities after cooking. Click here for more information.
To do this, first install the water aspect on the water ingredient and the water RM(s): Please contact us if you need assistance with this operation.
- Prerequisites : Be a system administrator.
- Retrieve the nodes of the water ingredient and water RM(s). (Only the 100% water ingredient).
- In the Admin console: Apply the following script.
var node=search.findNode('noeud du produit : workspace://....');
node.addAspect('bcpg:waterAspect');
Note: If you label using quantities after yield, remember to enter the legal name of the raw material water.
Manual yield
beCPG doesn't take in account the yield when components are entered in percentages in the recipe of your product. The yield corresponds to the division of the net quantity by the quantity used in the recipe. That result cannot be computed when quantities are entered in percentages.
This is where manual yield comes in action. Enter the composition of your finished product and add a net weight in the properties of your finished good. Once this is done, go back to the composition list of your finished product. In the tab dedicated to dynamic characteristics you will see that you have the option to manually enter your yield. The system will compute the quantity used in the recipe from the yield and the net quantity. To enter manually a yield, click on edit in front of the manual yield formula. Then enter a number corresponding to your yield.
Yield as prepared
On the list of ingredients, you have the possibility to display the percentage of ingredients as prepared
To do this, add the "secondaryYield" rule, making sure to indicate "Pre" in the "Execution order" field:
The “Qty as prepared (%)” column present on the list of ingredients will then be calculated automatically according to the value indicated in “SecondaryYield”.
If you then wish to carry out labeling according to quantities as prepared: [click here] (/utilization/labeling.md)
Loss
The loss in beCPG corresponds to the loss of a product quantity during transportation or production. That loss may be dure to spoilage or damage.
e.g. For cheeses, the loss of matter can be due to lipolysis or proteolysis. for apples, it can correspond to losses of quantity due to peeling.
In the case of losses, only the quantity disminushes as more product is needed to obtain the desired quantity. Therefore, when a loss percentage is entered, costs are impacted but not nutritional values. The loss is calculated with the following formula:
Loss =[ ( Quantity used / Net quantity after loss)* 100] - 100
In beCPG, the loss is added directly in composition for each raw material. e.g. a 10% flour loss on a production line requires to enter 10 in loss %. Costs for this entity will then be up by 10%.
Quantity used = Net quantity after loss * (1 + Loss / 100)
Cost with loss = Coût unitaire * Net quantity after loss * (1 + Loss / 100)
Costs before loss:
Modification of the loss for flour:
Costs after loss:
Dynamic characteristics
Simple dynamic characteristics
Dynamic characteristics are customizable. These characteristics, specific to your activity, will be calculated with the formulation.
example :
- Profit
- Yield
- HPD <78% (% Water x 100) / (100 -% lipids)
Once the product composition has been defined, the system calculates the product's dynamic characteristics when the “Formulate” button is clicked.
To add a dynamic characteristics :
- Click on “Add” (in the “dynamic characteristics” insert of the “Composition” list);
- Enter the name of the calculation;
- Enter the title (multilingual name that can be translated in the application).
- Enter the expression by selecting the list, the characteristic and the desired field (e.g. Nutrients > Salt > Value). The formula then appears in the formula editor.
When creating a dynamic characteristic, several options are available to you for synchronization :
- Model: the calculation is present on the model, but does not appear. The calculation is hidden, to avoid overloading the window,
- Manual**: the calculation is specific to a product,
- Synchronized**: if you modify the calculation, it is automatically synchronized on all products.
Dynamic column characteristics (dynamic columns)
These dynamic characteristics are available in column format in the composition or packaging. These columns are hidden by default. A maximum of 10 dynamic columns can be created.
To add a dynamic characteristic as a column:
- Click on “Add”;
- Enter the name of the Column Characteristic;
- Enter the title (multilingual name that can be translated in the application).
- Enter the column;
Enter the expression by selecting the list, the characteristic and the desired field (e.g.: Nutrients > Salt > Value). The formula then appears in the formula editor.
If it's a RM characteristic, add “dataListItemEntity.” in front of the expression.
- If it's a feature of the formulated product, add “entity.” in front of the expression.
Here are a few examples of dynamic characteristic (to copy them, copy/paste them into the notepad editor):
- Raw material cost (€/kg):
dataListItemEntity.costList.size ()! = 0? dataListItemEntity.costList [0] .value dataListItem.qty / (entity.qty entity.density) : ""
- Raw material cost (€/kg):
dataListItemEntity.costList.size ()! = 0? dataListItemEntity.costList [0] .value * dataListItem.qty : ""
- Each Quantity (kg)
dataListItem.qty * entity.compoListView.dynamicCharactList.?[title == 'Nb Ech'][0].value
- Cost packaging (€ / kg)
dataListItemEntity.costList.size() != 0 ? dataListItemEntity.costList[0].value * (dataListItem.packagingListUnit.toString() == "PP" ? 1/dataListItem.qty : dataListItem.qty) / (entity.qty * entity.density) : ""
- Cost packaging (€ / UVC)
dataListItemEntity.costList.size() != 0 ? dataListItemEntity.costList[0].value * (dataListItem.packagingListUnit.toString() == "PP" ? 1/dataListItem.qty : dataListItem.qty) : ""
There are 2 types of dynamic characteristics:
- 1 characteristic value
- Type characteristics Column (to add columns in the composition)
For now, there is no editor to add a column-type characteristic. To do that, you must write the formula directly. Several variables are available:
- Entity: Air formulated product
- DataListItemEntity: access to the component and its donnnées lists (eg dataListItemEntity.costList provides access to component costs
- DataListItem: access to the element of the composite list (Composition, Packaging)
In this mode the sum (RANGE FORM) and avg (RANGE FORM) are available:
sum(children(dataListItem),"entity.costList[0].value + dataListItem.qty" )
ou sum(entity.compoListView.compoList.?[parent == #root.dataListItem],"entity.costList[0].value + dataListItem.qty" )
More information about the language spel: http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/expressions.html
Format of results
By default, the system displays 4 significant figures. It is possible to specify the format of results as illustrated below:
- new java.text.DecimalFormat("0.00##").format(1.22222222) or @beCPG.formatNumber(1.22222222, "0.00##") display 1,2222
- new java.text.DecimalFormat("0.00##").format(1.2200) or @beCPG.formatNumber(1.2200, "0.00##") display 1,22
- new java.text.DecimalFormat("0.0000").format(1.2200) or @beCPG.formatNumber(1.2200, "0.00\00") display 1,2200
For more information about the possible formats, consult this page: http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html