Add dry primary yeasts weights to get a mixed total. Use the parameters from the first and mmost used yeast. Changed in products and recipes. Recalculated WLP purepitch viability and planned next generation purepitch. We need a better way to set these parameters like a packages table. Fixed several yeast edit values due to adding a STA1 column. Removed several unneeded refresh_all() calls as they screwed the sorting of the yeasts during edit. Added STA1 display to recipes. Changed products database starter_viability from integer to float.

Sat, 28 Jan 2023 10:36:59 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 28 Jan 2023 10:36:59 +0100
changeset 478
a3653722b0d6
parent 477
27e179759bf2
child 479
28f0e43e9f08

Add dry primary yeasts weights to get a mixed total. Use the parameters from the first and mmost used yeast. Changed in products and recipes. Recalculated WLP purepitch viability and planned next generation purepitch. We need a better way to set these parameters like a packages table. Fixed several yeast edit values due to adding a STA1 column. Removed several unneeded refresh_all() calls as they screwed the sorting of the yeasts during edit. Added STA1 display to recipes. Changed products database starter_viability from integer to float.

src/EditProductTab6.cpp file | annotate | diff | comparison | revisions
src/EditRecipeTab5.cpp file | annotate | diff | comparison | revisions
src/database/db_product.cpp file | annotate | diff | comparison | revisions
src/global.h file | annotate | diff | comparison | revisions
translations/bmsapp_en.ts file | annotate | diff | comparison | revisions
translations/bmsapp_nl.ts file | annotate | diff | comparison | revisions
ui/EditProduct.ui file | annotate | diff | comparison | revisions
--- a/src/EditProductTab6.cpp	Wed Jan 25 16:17:07 2023 +0100
+++ b/src/EditProductTab6.cpp	Sat Jan 28 10:36:59 2023 +0100
@@ -209,7 +209,6 @@
     bool maybe_starter = false;
 
     qDebug() << "calcYeast()";
-    qDebug() << "  " << product->prop_volume[0] << product->prop_volume[1] << product->prop_volume[2] << product->prop_volume[3];
     ui->yeastProcedure->setCurrentIndex(0);
 
     if (sg <= 1.0001 && product->fg > 1.000)
@@ -230,6 +229,12 @@
 	return;		// No yeast in product.
 
     calcViability();
+    double dry_amount = 0;
+    for (int i = 0; i < product->yeasts.size(); i++) {
+	if (product->yeasts.at(i).use == YEAST_USE_PRIMARY && product->yeasts.at(i).form == YEAST_FORMS_DRY) {
+	    dry_amount += product->yeasts.at(i).amount;
+	}
+    }
 
     for (int i = 0; i < product->yeasts.size(); i++) {
 	if (product->yeasts.at(i).use == YEAST_USE_PRIMARY) {		// Primary
@@ -250,15 +255,16 @@
 		qDebug() << "  sg:" << sg << "og:" << og << "f1:" << f1 << "f2:" << f2 << "multiplier:" << multiplier;
      		double yeast_grams = round(volume * multiplier * 100.0) / product->starter_viability;
      		double yeast_gr_hl = round((yeast_grams / (volume * 0.01)) * 100.0) / 100.0;
-		double pitch_gr_hl = round(((product->yeasts.at(i).amount * 1000.0) / (volume * 0.01)) * 100.0) / 100.0;
+		double pitch_gr_hl = round(((dry_amount * 1000.0) / (volume * 0.01)) * 100.0) / 100.0;
 		ui->dry_needShow->setValue(yeast_grams);
 		ui->dry_pitchrateShow->setValue(yeast_gr_hl);
 		ui->pitch_grShow->setValue(pitch_gr_hl);
 		ui->pitch_grShow->setStyleSheet((pitch_gr_hl < yeast_gr_hl) ? "background-color: red":"");
 
 #ifdef DEBUG_YEAST
-     		qDebug() << "  need" << yeast_grams << "grams, gr/hl:" << yeast_gr_hl << "pitch:" << pitch_gr_hl;
+     		qDebug() << "  Need" << yeast_grams << "grams, gr/hl:" << yeast_gr_hl << "pitch:" << pitch_gr_hl;
 #endif
+		calcBU();
 		return;
 	    } else {
 		/*
@@ -284,6 +290,9 @@
 		    }
 		    is_changed();
 		    ui->pitchrateEdit->setValue(product->yeast_pitchrate);
+#ifdef DEBUG_YEAST
+		    qDebug() << "  Guessed pitchrate" << product->yeast_pitchrate;
+#endif
 		}
 
 		initcells = (product->yeasts.at(i).cells / 1000000) * product->yeasts.at(i).amount * (product->starter_viability / 100.0);
@@ -297,7 +306,7 @@
 		}
 
 #ifdef DEBUG_YEAST
-		qDebug() << "  pitchrate:" << product->yeast_pitchrate << "needed:" << needed << "initcells:" << initcells << "starter" << maybe_starter;
+		qDebug() << "  Pitchrate:" << product->yeast_pitchrate << "needed:" << needed << "initcells:" << initcells << "starter" << maybe_starter;
 #endif
 	    }
 	    break;
@@ -388,7 +397,7 @@
     res.totcells = totcells;
     res.growf = round((ncells / start) * 100.0) / 100.0;
 #ifdef DEBUG_YEAST
-    qDebug() << "  calcStep(" << svol << "," << stype << "," << start << ") irate" << irate
+    qDebug() << "    calcStep(" << svol << "," << stype << "," << start << ") irate" << irate
 	     << "ncells" << res.ncells << "totcells" << res.totcells << "growf" << res.growf;
 #endif
     return res;
@@ -431,8 +440,6 @@
 	    return;
 
 	for (step = 1; step < 5; step++) {
-	    qDebug() << "  step" << step;
-
 	    for (i = lasti; i <= mvols; i++) {
 		lasti = i;
 		svol = uvols[lasti];
@@ -587,7 +594,12 @@
 		vpm = 0.80;
 		max = 97;
 		if (product->yeasts.at(i).laboratory == "White Labs") {	// PurePitch
-		    vpm = 0.95;
+		    /*
+		     * Purepitch 6th month viability point 80,8%.
+		     * Purepitch Next Generation 6th month viability point 94,9%.
+		     */
+		    vpm = 0.9648;	// Purepitch
+		    //vpm = 0.9914;	// Purepitch Next Generation
 		    max = 100;
 		}
 	    } else if (product->yeasts.at(i).form == YEAST_FORMS_DRY) {
@@ -622,11 +634,10 @@
     }
     if (base > max)
 	base = max;
-    base = round(base);
-    product->starter_viability = base;
+    product->starter_viability = round(base * 10) / 10;
     ui->conditionShow->setValue(product->starter_viability);
 #ifdef DEBUG_YEAST
-    qDebug() << "age" << timeDiff << "degrade" << degrade << "base" << base ;
+    qDebug() << "age" << timeDiff << "degrade" << degrade << "viability" << product->starter_viability;
 #endif
 }
 
@@ -899,7 +910,7 @@
         return;
 
     product->yeasts.removeAt(row);
-    bool primary = false;
+    bool primary = false;	/* Check if any primary yeast is left */
     for (int i = 0; i < product->yeasts.size(); i++) {
 	if (product->yeasts.at(i).use == YEAST_USE_PRIMARY)
 	    primary = true;
@@ -936,7 +947,7 @@
         item = new QTableWidgetItem(QString("%1 ml").arg(val, 3, 'f', 2, '0'));
     }
     item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
-    ui->yeastsTable->setItem(product->yeasts_row, 9, item);
+    ui->yeastsTable->setItem(product->yeasts_row, 10, item);
 
     calcYeast();
     is_changed();
@@ -1019,6 +1030,7 @@
 	yamountEdit->setDecimals(0);
 	yamountEdit->setSingleStep(1.0);
 	yamountLabel->setText(tr("Total packs:"));
+	product->yeast_pitchrate = 0;
     } else if ((product->yeasts.at(product->yeasts_row).form == YEAST_FORMS_DRY) || (product->yeasts.at(product->yeasts_row).form == YEAST_FORMS_DRIED)) {
 	if (oldform == YEAST_FORMS_LIQUID)
 	    product->yeasts[product->yeasts_row].amount = 0.01;
@@ -1033,6 +1045,7 @@
 	yamountEdit->setDecimals(1);
 	yamountEdit->setSingleStep(0.5);
 	yamountLabel->setText(tr("Amount in ml:"));
+	product->yeast_pitchrate = 0;
     }
 
     ui->yeastsTable->setItem(product->yeasts_row, 0, new QTableWidgetItem(product->yeasts.at(product->yeasts_row).name));
@@ -1100,7 +1113,6 @@
     }
 
     is_changed();
-    emit refreshAll();
 }
 
 
@@ -1139,9 +1151,8 @@
     product->yeasts[product->yeasts_row].use = val;
     QTableWidgetItem *item = new QTableWidgetItem(QCoreApplication::translate("YeastUse", g_yeast_use[val]));
     item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);
-    ui->yeastsTable->setItem(product->yeasts_row, 5, item);
+    ui->yeastsTable->setItem(product->yeasts_row, 4, item);
     is_changed();
-    emit refreshAll();
 }
 
 
--- a/src/EditRecipeTab5.cpp	Wed Jan 25 16:17:07 2023 +0100
+++ b/src/EditRecipeTab5.cpp	Sat Jan 28 10:36:59 2023 +0100
@@ -38,21 +38,22 @@
     std::sort(recipe->yeasts.begin(), recipe->yeasts.end(), yeast_sort_test);
 
     const QStringList labels({tr("Yeast"), tr("Laboratory"), tr("Code"), tr("Type"), tr("Use for"), tr("Min. °C"), tr("Max. °C"),
-		              tr("Tol. %"), tr("Attn. %"), tr("Amount"), tr("Delete"), tr("Edit") });
+		              tr("Tol. %"), tr("Attn. %"), tr("STA"), tr("Amount"), tr("Delete"), tr("Edit") });
 
-    ui->yeastsTable->setColumnCount(12);
+    ui->yeastsTable->setColumnCount(13);
     ui->yeastsTable->setColumnWidth(0, 200);	/* Yeast	*/
     ui->yeastsTable->setColumnWidth(1, 125);	/* Laboratory	*/
     ui->yeastsTable->setColumnWidth(2,  80);	/* Code		*/
     ui->yeastsTable->setColumnWidth(3,  80);	/* Type		*/
     ui->yeastsTable->setColumnWidth(4, 100);	/* Usage	*/
-    ui->yeastsTable->setColumnWidth(5,  60);	/* Min. 	*/
-    ui->yeastsTable->setColumnWidth(6,  60);	/* Max.		*/
-    ui->yeastsTable->setColumnWidth(7,  60);	/* Tolerance	*/
-    ui->yeastsTable->setColumnWidth(8,  60);	/* Attenuation	*/
-    ui->yeastsTable->setColumnWidth(9,  90);	/* Amount	*/
-    ui->yeastsTable->setColumnWidth(10, 80);	/* Delete	*/
-    ui->yeastsTable->setColumnWidth(11, 80);	/* Edit		*/
+    ui->yeastsTable->setColumnWidth(5,  50);	/* Min. 	*/
+    ui->yeastsTable->setColumnWidth(6,  50);	/* Max.		*/
+    ui->yeastsTable->setColumnWidth(7,  50);	/* Tolerance	*/
+    ui->yeastsTable->setColumnWidth(8,  50);	/* Attenuation	*/
+    ui->yeastsTable->setColumnWidth(9,  40);	/* STA1 gen     */
+    ui->yeastsTable->setColumnWidth(10, 90);	/* Amount	*/
+    ui->yeastsTable->setColumnWidth(11, 80);	/* Delete	*/
+    ui->yeastsTable->setColumnWidth(12, 80);	/* Edit		*/
     ui->yeastsTable->setHorizontalHeaderLabels(labels);
     ui->yeastsTable->verticalHeader()->hide();
     ui->yeastsTable->setRowCount(recipe->yeasts.size());
@@ -87,14 +88,28 @@
         item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
         ui->yeastsTable->setItem(i, 8, item);
 
-	if (recipe->yeasts.at(i).form == 0)
+	if (recipe->yeasts.at(i).use != YEAST_USE_BOTTLE && recipe->yeasts.at(i).sta1) {
+            QWidget *pWidget = new QWidget();
+            QLabel *label = new QLabel;
+            label->setPixmap(QPixmap(":icons/silk/tick.png"));
+            QHBoxLayout *pLayout = new QHBoxLayout(pWidget);
+            pLayout->addWidget(label);
+            pLayout->setAlignment(Qt::AlignCenter);
+            pLayout->setContentsMargins(0, 0, 0, 0);
+            pWidget->setLayout(pLayout);
+            ui->yeastsTable->setCellWidget(i, 9, pWidget);
+        } else {
+            ui->yeastsTable->removeCellWidget(i, 9);
+        }
+
+	if (recipe->yeasts.at(i).form == YEAST_FORMS_LIQUID)
             item = new QTableWidgetItem(QString("%1 pack").arg(recipe->yeasts.at(i).amount, 1, 'f', 0, '0'));
-	else if (recipe->yeasts.at(i).form == 1)
+	else if (recipe->yeasts.at(i).form == YEAST_FORMS_DRY || recipe->yeasts.at(i).form == YEAST_FORMS_DRIED)
 	    item = new QTableWidgetItem(QString("%1 gr").arg(recipe->yeasts.at(i).amount * 1000.0, 3, 'f', 2, '0'));
 	else
 	    item = new QTableWidgetItem(QString("%1 ml").arg(recipe->yeasts.at(i).amount * 1000.0, 3, 'f', 2, '0'));
         item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
-        ui->yeastsTable->setItem(i, 9, item);
+        ui->yeastsTable->setItem(i, 10, item);
 
 	pWidget = new QWidget();
         QPushButton* btn_dele = new QPushButton();
@@ -105,7 +120,7 @@
         pLayout->addWidget(btn_dele);
         pLayout->setContentsMargins(5, 0, 5, 0);
         pWidget->setLayout(pLayout);
-        ui->yeastsTable->setCellWidget(i, 10, pWidget);
+        ui->yeastsTable->setCellWidget(i, 11, pWidget);
 
         pWidget = new QWidget();
         QPushButton* btn_edit = new QPushButton();
@@ -116,7 +131,7 @@
         pLayout->addWidget(btn_edit);
         pLayout->setContentsMargins(5, 0, 5, 0);
         pWidget->setLayout(pLayout);
-        ui->yeastsTable->setCellWidget(i, 11, pWidget);
+        ui->yeastsTable->setCellWidget(i, 12, pWidget);
     }
 }
 
@@ -140,8 +155,8 @@
 	return;		// No yeast in recipe.
 
     for (int i = 0; i < recipe->yeasts.size(); i++) {
-	if (recipe->yeasts.at(i).use == 0) {		// Primary
-	    if (recipe->yeasts.at(i).form == 1) {
+	if (recipe->yeasts.at(i).use == YEAST_USE_PRIMARY) {		// Primary
+	    if (recipe->yeasts.at(i).form == YEAST_FORMS_DRY) {
 		/*
 		 * Dry yeast, build the formule with the yeast parameters.
 		 * Based on https://www.lallemandbrewing.com/en/canada/brewers-corner/brewing-tools/pitching-rate-calculator/
@@ -210,7 +225,9 @@
 {
     Yeasts newy;
 
+#ifdef DEBUG_YEAST
     qDebug() << "Add yeast row";
+#endif
 
     for (int i = 0; i < recipe->yeasts.size(); i++) {
         if (recipe->yeasts.at(i).amount == 0)
@@ -221,8 +238,8 @@
     newy.laboratory = "";
     newy.product_id = "";
     newy.amount = 0;
-    newy.type = 0;
-    newy.form = 0;
+    newy.type = YEAST_TYPES_ALE;
+    newy.form = YEAST_FORMS_LIQUID;
     newy.min_temperature = 0;
     newy.max_temperature = 0;
     newy.flocculation = 0;
@@ -230,7 +247,7 @@
     newy.cells = 0;
     newy.tolerance = 0;
     newy.inventory = 0;
-    newy.use = 0;
+    newy.use = YEAST_USE_PRIMARY;
     newy.sta1 = false;
     newy.bacteria = false;
     newy.harvest_top = false;
@@ -256,7 +273,9 @@
 
     QPushButton *pb = qobject_cast<QPushButton *>(QObject::sender());
     int row = pb->objectName().toInt();
+#ifdef DEBUG_YEAST
     qDebug() << "Delete yeast row" << row << recipe->yeasts.size();
+#endif
 
     int rc = QMessageBox::warning(this, tr("Delete yeast"), tr("Delete %1").arg(recipe->yeasts.at(row).name),
                     QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
@@ -286,7 +305,7 @@
         item = new QTableWidgetItem(QString("%1 ml").arg(val, 3, 'f', 2, '0'));
     }
     item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
-    ui->yeastsTable->setItem(recipe->yeasts_row, 9, item);
+    ui->yeastsTable->setItem(recipe->yeasts_row, 10, item);
 
     calcYeast();
     is_changed();
@@ -303,7 +322,9 @@
     if (val < 1)
         return;
 
+#ifdef DEBUG_YEAST
     qDebug() << "yeast_select_changed()" << recipe->yeasts_row << val << instock;
+#endif
 
     /*
      * Search the yeast pointed by the index and instock flag.
@@ -320,7 +341,9 @@
     for (int i = 0; i < (val - 1); i++) {
         query.next();
     }
+#ifdef DEBUG_YEAST
     qDebug() << "found" << query.value(0).toString() << query.value(2).toString();
+#endif
 
     /*
      * Replace the yeast record contents
@@ -393,7 +416,20 @@
     item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
     ui->yeastsTable->setItem(recipe->yeasts_row, 8, item);
 
-    calcYeast();
+    if (recipe->yeasts.at(product->yeasts_row).use != YEAST_USE_BOTTLE && recipe->yeasts.at(product->yeasts_row).sta1) {
+        QWidget *pWidget = new QWidget();
+        QLabel *label = new QLabel;
+        label->setPixmap(QPixmap(":icons/silk/tick.png"));
+        QHBoxLayout *pLayout = new QHBoxLayout(pWidget);
+        pLayout->addWidget(label);
+        pLayout->setAlignment(Qt::AlignCenter);
+        pLayout->setContentsMargins(0, 0, 0, 0);
+        pWidget->setLayout(pLayout);
+        ui->yeastsTable->setCellWidget(product->yeasts_row, 9, pWidget);
+    } else {
+        ui->yeastsTable->removeCellWidget(product->yeasts_row, 9);
+    }
+
     is_changed();
 }
 
@@ -402,7 +438,9 @@
 {
     QSqlQuery query;
 
+#ifdef DEBUG_YEAST
     qDebug() << "yeast_instock_changed()" << recipe->yeasts_row << val;
+#endif
 
     this->yselectEdit->setCurrentIndex(-1);
     this->yselectEdit->clear();
@@ -424,14 +462,15 @@
 
 void EditRecipe::yeast_useat_changed(int val)
 {
+#ifdef DEBUG_YEAST
     qDebug() << "yeast_useat_changed()" << recipe->yeasts_row << val;
+#endif
 
     recipe->yeasts[recipe->yeasts_row].use = val;
     QTableWidgetItem *item = new QTableWidgetItem(QCoreApplication::translate("YeastUse", g_yeast_use[val]));
     item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);
     ui->yeastsTable->setItem(recipe->yeasts_row, 5, item);
     is_changed();
-    emit refreshAll();
 }
 
 
@@ -444,7 +483,9 @@
 
     QPushButton *pb = qobject_cast<QPushButton *>(QObject::sender());
     recipe->yeasts_row = pb->objectName().toInt();
+#ifdef DEBUG_YEAST
     qDebug() << "Edit yeast row" << recipe->yeasts_row;
+#endif
     Yeasts backup = recipe->yeasts.at(recipe->yeasts_row);
 
     QDialog* dialog = new QDialog(this);
@@ -560,7 +601,9 @@
     dialog->setModal(true);
     dialog->exec();
     if (dialog->result() == QDialog::Rejected) {
+#ifdef DEBUG_YEAST
         qDebug() << "reject and rollback";
+#endif
         recipe->yeasts[recipe->yeasts_row] = backup;
     } else {
 
--- a/src/database/db_product.cpp	Wed Jan 25 16:17:07 2023 +0100
+++ b/src/database/db_product.cpp	Sat Jan 28 10:36:59 2023 +0100
@@ -249,7 +249,7 @@
     prod->starter_enable = query.value("starter_enable").toInt() ? true:false;
     prod->starter_type = query.value("starter_type").toInt();
     prod->starter_sg = query.value("starter_sg").toDouble();
-    prod->starter_viability = query.value("starter_viability").toInt();
+    prod->starter_viability = query.value("starter_viability").toDouble();
     if (query.value("yeast_prod_date").toString().length() == 10)
 	prod->yeast_prod_date = query.value("yeast_prod_date").toDate();
     else
@@ -835,7 +835,7 @@
     query.bindValue(":starter_enable", prod->starter_enable ? 1:0);
     query.bindValue(":starter_type", prod->starter_type);
     query.bindValue(":starter_sg", round(prod->starter_sg * 1000) / 1000);
-    query.bindValue(":starter_viability", prod->starter_viability);
+    query.bindValue(":starter_viability", round(prod->starter_viability * 10) / 10);
     query.bindValue(":yeast_prod_date", prod->yeast_prod_date);
     query.bindValue(":yeast_pitchrate", round(prod->yeast_pitchrate * 1000) / 1000);
     query.bindValue(":prop1_type", prod->prop_type[0]);
--- a/src/global.h	Wed Jan 25 16:17:07 2023 +0100
+++ b/src/global.h	Sat Jan 28 10:36:59 2023 +0100
@@ -14,7 +14,7 @@
 // #define DEBUG_IBU		1
 // #define	DEBUG_FERMENTABLES	1
 #define	DEBUG_YEAST		1
-#define	DEBUG_WATER		1
+// #define	DEBUG_WATER		1
 
 #define Ka1			0.0000004445
 #define Ka2			0.0000000000468
@@ -645,7 +645,7 @@
     bool	starter_enable;
     int		starter_type;
     double	starter_sg;
-    int		starter_viability;
+    double	starter_viability;
     QDate	yeast_prod_date;
     double	yeast_pitchrate;
     int		prop_type[4];
--- a/translations/bmsapp_en.ts	Wed Jan 25 16:17:07 2023 +0100
+++ b/translations/bmsapp_en.ts	Sat Jan 28 10:36:59 2023 +0100
@@ -2350,8 +2350,8 @@
         <location filename="../src/EditProductTab4.cpp" line="149"/>
         <location filename="../src/EditProductTab5.cpp" line="75"/>
         <location filename="../src/EditProductTab5.cpp" line="165"/>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
-        <location filename="../src/EditProductTab6.cpp" line="158"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
+        <location filename="../src/EditProductTab6.cpp" line="164"/>
         <location filename="../src/EditProductExport.cpp" line="874"/>
         <source>Delete</source>
         <translation type="unfinished"></translation>
@@ -3424,7 +3424,7 @@
     </message>
     <message>
         <location filename="../ui/EditProduct.ui" line="7287"/>
-        <location filename="../src/EditProductTab6.cpp" line="329"/>
+        <location filename="../src/EditProductTab6.cpp" line="345"/>
         <location filename="../src/EditProductTab7.cpp" line="35"/>
         <source>Volume</source>
         <translation type="unfinished"></translation>
@@ -4230,7 +4230,7 @@
         <location filename="../src/EditProductTab3.cpp" line="73"/>
         <location filename="../src/EditProductTab4.cpp" line="55"/>
         <location filename="../src/EditProductTab5.cpp" line="75"/>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <location filename="../src/EditProductTab7.cpp" line="34"/>
         <source>Type</source>
         <translation type="unfinished"></translation>
@@ -4254,7 +4254,7 @@
         <location filename="../src/EditProductTab3.cpp" line="74"/>
         <location filename="../src/EditProductTab4.cpp" line="56"/>
         <location filename="../src/EditProductTab5.cpp" line="75"/>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
         <source>Amount</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4262,7 +4262,7 @@
         <location filename="../src/EditProductTab3.cpp" line="74"/>
         <location filename="../src/EditProductTab4.cpp" line="56"/>
         <location filename="../src/EditProductTab5.cpp" line="75"/>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
         <source>Stock</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4283,8 +4283,8 @@
         <location filename="../src/EditProductTab4.cpp" line="160"/>
         <location filename="../src/EditProductTab5.cpp" line="75"/>
         <location filename="../src/EditProductTab5.cpp" line="176"/>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
-        <location filename="../src/EditProductTab6.cpp" line="169"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
+        <location filename="../src/EditProductTab6.cpp" line="175"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4330,9 +4330,9 @@
         <location filename="../src/EditProductTab3.cpp" line="730"/>
         <location filename="../src/EditProductTab4.cpp" line="361"/>
         <location filename="../src/EditProductTab5.cpp" line="399"/>
-        <location filename="../src/EditProductTab6.cpp" line="896"/>
+        <location filename="../src/EditProductTab6.cpp" line="915"/>
         <location filename="../src/EditProductTab7.cpp" line="306"/>
-        <location filename="../src/EditProductTab13.cpp" line="277"/>
+        <location filename="../src/EditProductTab13.cpp" line="279"/>
         <location filename="../src/EditProduct.cpp" line="910"/>
         <source>Delete %1</source>
         <translation type="unfinished"></translation>
@@ -4366,7 +4366,7 @@
     <message>
         <location filename="../src/EditProductTab3.cpp" line="1073"/>
         <location filename="../src/EditProductTab4.cpp" line="633"/>
-        <location filename="../src/EditProductTab6.cpp" line="1195"/>
+        <location filename="../src/EditProductTab6.cpp" line="1228"/>
         <source>Use at:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4380,7 +4380,7 @@
         <location filename="../src/EditProductTab3.cpp" line="1083"/>
         <location filename="../src/EditProductTab4.cpp" line="643"/>
         <location filename="../src/EditProductTab5.cpp" line="674"/>
-        <location filename="../src/EditProductTab6.cpp" line="1180"/>
+        <location filename="../src/EditProductTab6.cpp" line="1213"/>
         <source>In stock:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4522,8 +4522,8 @@
         <location filename="../src/EditProductTab4.cpp" line="619"/>
         <location filename="../src/EditProductTab5.cpp" line="525"/>
         <location filename="../src/EditProductTab5.cpp" line="650"/>
-        <location filename="../src/EditProductTab6.cpp" line="1028"/>
-        <location filename="../src/EditProductTab6.cpp" line="1188"/>
+        <location filename="../src/EditProductTab6.cpp" line="1048"/>
+        <location filename="../src/EditProductTab6.cpp" line="1221"/>
         <source>Amount in gr:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4562,8 +4562,8 @@
     <message>
         <location filename="../src/EditProductTab5.cpp" line="528"/>
         <location filename="../src/EditProductTab5.cpp" line="652"/>
-        <location filename="../src/EditProductTab6.cpp" line="1035"/>
-        <location filename="../src/EditProductTab6.cpp" line="1190"/>
+        <location filename="../src/EditProductTab6.cpp" line="1055"/>
+        <location filename="../src/EditProductTab6.cpp" line="1223"/>
         <source>Amount in ml:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4574,13 +4574,13 @@
     </message>
     <message>
         <location filename="../src/EditProductTab5.cpp" line="720"/>
-        <location filename="../src/EditProductTab6.cpp" line="1244"/>
+        <location filename="../src/EditProductTab6.cpp" line="1277"/>
         <source>Primary</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../src/EditProductTab5.cpp" line="721"/>
-        <location filename="../src/EditProductTab6.cpp" line="1245"/>
+        <location filename="../src/EditProductTab6.cpp" line="1278"/>
         <source>Secondary</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4590,185 +4590,185 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <source>Yeast</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <source>Laboratory</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <source>Code</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <source>Use for</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <source>Min.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <source>Max.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
         <source>Tol.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
         <source>Attn.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
         <source>STA</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="148"/>
-        <location filename="../src/EditProductTab6.cpp" line="152"/>
+        <location filename="../src/EditProductTab6.cpp" line="154"/>
+        <location filename="../src/EditProductTab6.cpp" line="158"/>
         <source>Yeast already used</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="329"/>
+        <location filename="../src/EditProductTab6.cpp" line="345"/>
         <source>Method</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="329"/>
+        <location filename="../src/EditProductTab6.cpp" line="345"/>
         <source>Inj. factor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="329"/>
+        <location filename="../src/EditProductTab6.cpp" line="345"/>
         <source>New cells</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="329"/>
+        <location filename="../src/EditProductTab6.cpp" line="345"/>
         <source>Total cells</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="329"/>
+        <location filename="../src/EditProductTab6.cpp" line="345"/>
         <source>Grow factor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="708"/>
+        <location filename="../src/EditProductTab6.cpp" line="727"/>
         <source>BMSapp - Pitchrate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="720"/>
+        <location filename="../src/EditProductTab6.cpp" line="739"/>
         <source>Beer pitch type:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="728"/>
+        <location filename="../src/EditProductTab6.cpp" line="747"/>
         <source>0.075 Real Kveik</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="729"/>
+        <location filename="../src/EditProductTab6.cpp" line="748"/>
         <source>0.75  Ale, upto 1.060</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="730"/>
+        <location filename="../src/EditProductTab6.cpp" line="749"/>
         <source>1.0   Ale, above 1.060</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="731"/>
+        <location filename="../src/EditProductTab6.cpp" line="750"/>
         <source>1.5   Lager, upto 1.060</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="732"/>
+        <location filename="../src/EditProductTab6.cpp" line="751"/>
         <source>2.0   Lager, above 1.060</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="763"/>
+        <location filename="../src/EditProductTab6.cpp" line="782"/>
         <source>Retry starter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="763"/>
+        <location filename="../src/EditProductTab6.cpp" line="782"/>
         <source>Retry to automatic create starter steps</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="797"/>
+        <location filename="../src/EditProductTab6.cpp" line="816"/>
         <source>Start step type:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="802"/>
+        <location filename="../src/EditProductTab6.cpp" line="821"/>
         <source>Starter step volume:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="809"/>
+        <location filename="../src/EditProductTab6.cpp" line="828"/>
         <source>Stirred</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="810"/>
+        <location filename="../src/EditProductTab6.cpp" line="829"/>
         <source>Shaken</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="811"/>
+        <location filename="../src/EditProductTab6.cpp" line="830"/>
         <source>Simple</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="896"/>
+        <location filename="../src/EditProductTab6.cpp" line="915"/>
         <source>Delete yeast</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1021"/>
-        <location filename="../src/EditProductTab6.cpp" line="1186"/>
+        <location filename="../src/EditProductTab6.cpp" line="1040"/>
+        <location filename="../src/EditProductTab6.cpp" line="1219"/>
         <source>Total packs:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1160"/>
+        <location filename="../src/EditProductTab6.cpp" line="1193"/>
         <source>Yeast name:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1165"/>
-        <location filename="../src/EditProductTab6.cpp" line="1170"/>
+        <location filename="../src/EditProductTab6.cpp" line="1198"/>
+        <location filename="../src/EditProductTab6.cpp" line="1203"/>
         <source>Laboratory:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1175"/>
+        <location filename="../src/EditProductTab6.cpp" line="1208"/>
         <source>Select yeast:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1246"/>
+        <location filename="../src/EditProductTab6.cpp" line="1279"/>
         <source>Tertiary</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1247"/>
+        <location filename="../src/EditProductTab6.cpp" line="1280"/>
         <source>Bottle</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4980,9 +4980,9 @@
     </message>
     <message>
         <location filename="../src/EditProductTab9.cpp" line="645"/>
-        <location filename="../src/EditProductTab13.cpp" line="332"/>
-        <location filename="../src/EditProductTab13.cpp" line="335"/>
-        <location filename="../src/EditProductTab13.cpp" line="358"/>
+        <location filename="../src/EditProductTab13.cpp" line="346"/>
+        <location filename="../src/EditProductTab13.cpp" line="349"/>
+        <location filename="../src/EditProductTab13.cpp" line="369"/>
         <location filename="../src/EditProductExport.cpp" line="37"/>
         <location filename="../src/EditProductExport.cpp" line="40"/>
         <location filename="../src/EditProductExport.cpp" line="264"/>
@@ -5257,72 +5257,72 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="164"/>
+        <location filename="../src/EditProductTab13.cpp" line="166"/>
         <source>Open File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="180"/>
+        <location filename="../src/EditProductTab13.cpp" line="182"/>
         <source>Cannot load %1: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ui/EditProduct.ui" line="12295"/>
-        <location filename="../src/EditProductTab13.cpp" line="208"/>
+        <location filename="../src/EditProductTab13.cpp" line="210"/>
         <source>Image here</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="218"/>
+        <location filename="../src/EditProductTab13.cpp" line="220"/>
         <source>Image type:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="231"/>
+        <location filename="../src/EditProductTab13.cpp" line="233"/>
         <source>Image comment:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="238"/>
+        <location filename="../src/EditProductTab13.cpp" line="240"/>
         <source>The comment for this image.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="277"/>
+        <location filename="../src/EditProductTab13.cpp" line="279"/>
         <source>Delete image</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="333"/>
+        <location filename="../src/EditProductTab13.cpp" line="347"/>
         <source>Files (*.png)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="335"/>
+        <location filename="../src/EditProductTab13.cpp" line="349"/>
         <source>No PNG file selected.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="358"/>
+        <location filename="../src/EditProductTab13.cpp" line="369"/>
         <source>Saved %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../src/EditProductTab13.cpp" line="50"/>
-        <location filename="../src/EditProductTab13.cpp" line="263"/>
-        <location filename="../src/EditProductTab13.cpp" line="291"/>
-        <location filename="../src/EditProductTab13.cpp" line="393"/>
-        <location filename="../src/EditProductTab13.cpp" line="418"/>
+        <location filename="../src/EditProductTab13.cpp" line="265"/>
+        <location filename="../src/EditProductTab13.cpp" line="293"/>
+        <location filename="../src/EditProductTab13.cpp" line="406"/>
+        <location filename="../src/EditProductTab13.cpp" line="430"/>
         <location filename="../src/EditProduct.cpp" line="924"/>
         <source>Database error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../src/EditProductTab13.cpp" line="50"/>
-        <location filename="../src/EditProductTab13.cpp" line="263"/>
-        <location filename="../src/EditProductTab13.cpp" line="291"/>
-        <location filename="../src/EditProductTab13.cpp" line="393"/>
-        <location filename="../src/EditProductTab13.cpp" line="418"/>
+        <location filename="../src/EditProductTab13.cpp" line="265"/>
+        <location filename="../src/EditProductTab13.cpp" line="293"/>
+        <location filename="../src/EditProductTab13.cpp" line="406"/>
+        <location filename="../src/EditProductTab13.cpp" line="430"/>
         <location filename="../src/EditProduct.cpp" line="924"/>
         <source>MySQL error: %1
 %2
--- a/translations/bmsapp_nl.ts	Wed Jan 25 16:17:07 2023 +0100
+++ b/translations/bmsapp_nl.ts	Sat Jan 28 10:36:59 2023 +0100
@@ -2650,8 +2650,8 @@
         <location filename="../src/EditProductTab4.cpp" line="149"/>
         <location filename="../src/EditProductTab5.cpp" line="75"/>
         <location filename="../src/EditProductTab5.cpp" line="165"/>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
-        <location filename="../src/EditProductTab6.cpp" line="158"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
+        <location filename="../src/EditProductTab6.cpp" line="164"/>
         <location filename="../src/EditProductExport.cpp" line="874"/>
         <source>Delete</source>
         <translation>Verwijder</translation>
@@ -3314,7 +3314,7 @@
     </message>
     <message>
         <location filename="../ui/EditProduct.ui" line="7287"/>
-        <location filename="../src/EditProductTab6.cpp" line="329"/>
+        <location filename="../src/EditProductTab6.cpp" line="345"/>
         <location filename="../src/EditProductTab7.cpp" line="35"/>
         <source>Volume</source>
         <translation>Volume</translation>
@@ -4640,10 +4640,10 @@
     </message>
     <message>
         <location filename="../src/EditProductTab13.cpp" line="50"/>
-        <location filename="../src/EditProductTab13.cpp" line="263"/>
-        <location filename="../src/EditProductTab13.cpp" line="291"/>
-        <location filename="../src/EditProductTab13.cpp" line="393"/>
-        <location filename="../src/EditProductTab13.cpp" line="418"/>
+        <location filename="../src/EditProductTab13.cpp" line="265"/>
+        <location filename="../src/EditProductTab13.cpp" line="293"/>
+        <location filename="../src/EditProductTab13.cpp" line="406"/>
+        <location filename="../src/EditProductTab13.cpp" line="430"/>
         <location filename="../src/EditProduct.cpp" line="924"/>
         <source>Database error</source>
         <translation>Database fout</translation>
@@ -4688,10 +4688,10 @@
     </message>
     <message>
         <location filename="../src/EditProductTab13.cpp" line="50"/>
-        <location filename="../src/EditProductTab13.cpp" line="263"/>
-        <location filename="../src/EditProductTab13.cpp" line="291"/>
-        <location filename="../src/EditProductTab13.cpp" line="393"/>
-        <location filename="../src/EditProductTab13.cpp" line="418"/>
+        <location filename="../src/EditProductTab13.cpp" line="265"/>
+        <location filename="../src/EditProductTab13.cpp" line="293"/>
+        <location filename="../src/EditProductTab13.cpp" line="406"/>
+        <location filename="../src/EditProductTab13.cpp" line="430"/>
         <location filename="../src/EditProduct.cpp" line="924"/>
         <source>MySQL error: %1
 %2
@@ -4734,7 +4734,7 @@
         <location filename="../src/EditProductTab3.cpp" line="73"/>
         <location filename="../src/EditProductTab4.cpp" line="55"/>
         <location filename="../src/EditProductTab5.cpp" line="75"/>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <location filename="../src/EditProductTab7.cpp" line="34"/>
         <source>Type</source>
         <translation>Soort</translation>
@@ -4758,7 +4758,7 @@
         <location filename="../src/EditProductTab3.cpp" line="74"/>
         <location filename="../src/EditProductTab4.cpp" line="56"/>
         <location filename="../src/EditProductTab5.cpp" line="75"/>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
         <source>Amount</source>
         <translation>Hoeveel</translation>
     </message>
@@ -4766,7 +4766,7 @@
         <location filename="../src/EditProductTab3.cpp" line="74"/>
         <location filename="../src/EditProductTab4.cpp" line="56"/>
         <location filename="../src/EditProductTab5.cpp" line="75"/>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
         <source>Stock</source>
         <translation>Voorraad</translation>
     </message>
@@ -4787,8 +4787,8 @@
         <location filename="../src/EditProductTab4.cpp" line="160"/>
         <location filename="../src/EditProductTab5.cpp" line="75"/>
         <location filename="../src/EditProductTab5.cpp" line="176"/>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
-        <location filename="../src/EditProductTab6.cpp" line="169"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
+        <location filename="../src/EditProductTab6.cpp" line="175"/>
         <source>Edit</source>
         <translation>Wijzig</translation>
     </message>
@@ -4846,9 +4846,9 @@
         <location filename="../src/EditProductTab3.cpp" line="730"/>
         <location filename="../src/EditProductTab4.cpp" line="361"/>
         <location filename="../src/EditProductTab5.cpp" line="399"/>
-        <location filename="../src/EditProductTab6.cpp" line="896"/>
+        <location filename="../src/EditProductTab6.cpp" line="915"/>
         <location filename="../src/EditProductTab7.cpp" line="306"/>
-        <location filename="../src/EditProductTab13.cpp" line="277"/>
+        <location filename="../src/EditProductTab13.cpp" line="279"/>
         <location filename="../src/EditProduct.cpp" line="910"/>
         <source>Delete %1</source>
         <translation>Verwijder %1</translation>
@@ -4882,7 +4882,7 @@
     <message>
         <location filename="../src/EditProductTab3.cpp" line="1073"/>
         <location filename="../src/EditProductTab4.cpp" line="633"/>
-        <location filename="../src/EditProductTab6.cpp" line="1195"/>
+        <location filename="../src/EditProductTab6.cpp" line="1228"/>
         <source>Use at:</source>
         <translation>Toevoegen bij:</translation>
     </message>
@@ -4896,7 +4896,7 @@
         <location filename="../src/EditProductTab3.cpp" line="1083"/>
         <location filename="../src/EditProductTab4.cpp" line="643"/>
         <location filename="../src/EditProductTab5.cpp" line="674"/>
-        <location filename="../src/EditProductTab6.cpp" line="1180"/>
+        <location filename="../src/EditProductTab6.cpp" line="1213"/>
         <source>In stock:</source>
         <translation>In voorraad:</translation>
     </message>
@@ -5038,8 +5038,8 @@
         <location filename="../src/EditProductTab4.cpp" line="619"/>
         <location filename="../src/EditProductTab5.cpp" line="525"/>
         <location filename="../src/EditProductTab5.cpp" line="650"/>
-        <location filename="../src/EditProductTab6.cpp" line="1028"/>
-        <location filename="../src/EditProductTab6.cpp" line="1188"/>
+        <location filename="../src/EditProductTab6.cpp" line="1048"/>
+        <location filename="../src/EditProductTab6.cpp" line="1221"/>
         <source>Amount in gr:</source>
         <translation>Gewicht in gr:</translation>
     </message>
@@ -5097,8 +5097,8 @@
     <message>
         <location filename="../src/EditProductTab5.cpp" line="528"/>
         <location filename="../src/EditProductTab5.cpp" line="652"/>
-        <location filename="../src/EditProductTab6.cpp" line="1035"/>
-        <location filename="../src/EditProductTab6.cpp" line="1190"/>
+        <location filename="../src/EditProductTab6.cpp" line="1055"/>
+        <location filename="../src/EditProductTab6.cpp" line="1223"/>
         <source>Amount in ml:</source>
         <translation>Hoeveelheid in ml:</translation>
     </message>
@@ -5109,13 +5109,13 @@
     </message>
     <message>
         <location filename="../src/EditProductTab5.cpp" line="720"/>
-        <location filename="../src/EditProductTab6.cpp" line="1244"/>
+        <location filename="../src/EditProductTab6.cpp" line="1277"/>
         <source>Primary</source>
         <translation>Hoofdgisting</translation>
     </message>
     <message>
         <location filename="../src/EditProductTab5.cpp" line="721"/>
-        <location filename="../src/EditProductTab6.cpp" line="1245"/>
+        <location filename="../src/EditProductTab6.cpp" line="1278"/>
         <source>Secondary</source>
         <translation>Nagisting/lagering</translation>
     </message>
@@ -5125,185 +5125,185 @@
         <translation>Bottelen</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <source>Yeast</source>
         <translation>Gist</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <source>Laboratory</source>
         <translation>Laboratorium</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <source>Code</source>
         <translation>Product code</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <source>Use for</source>
         <translation>Toepassing</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <source>Min.</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="54"/>
+        <location filename="../src/EditProductTab6.cpp" line="60"/>
         <source>Max.</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
         <source>Tol.</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
         <source>Attn.</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="55"/>
+        <location filename="../src/EditProductTab6.cpp" line="61"/>
         <source>STA</source>
         <translation>STA</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="148"/>
-        <location filename="../src/EditProductTab6.cpp" line="152"/>
+        <location filename="../src/EditProductTab6.cpp" line="154"/>
+        <location filename="../src/EditProductTab6.cpp" line="158"/>
         <source>Yeast already used</source>
         <translation>Gist is al verwerkt</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="329"/>
+        <location filename="../src/EditProductTab6.cpp" line="345"/>
         <source>Method</source>
         <translation>Methode</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="329"/>
+        <location filename="../src/EditProductTab6.cpp" line="345"/>
         <source>Inj. factor</source>
         <translation>Injectie</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="329"/>
+        <location filename="../src/EditProductTab6.cpp" line="345"/>
         <source>New cells</source>
         <translation>Celgroei</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="329"/>
+        <location filename="../src/EditProductTab6.cpp" line="345"/>
         <source>Total cells</source>
         <translation>Totaal</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="329"/>
+        <location filename="../src/EditProductTab6.cpp" line="345"/>
         <source>Grow factor</source>
         <translation>Groeifactor</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="708"/>
+        <location filename="../src/EditProductTab6.cpp" line="727"/>
         <source>BMSapp - Pitchrate</source>
         <translation>BMSapp - Gist enten</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="720"/>
+        <location filename="../src/EditProductTab6.cpp" line="739"/>
         <source>Beer pitch type:</source>
         <translation>Biergist nodig:</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="728"/>
+        <location filename="../src/EditProductTab6.cpp" line="747"/>
         <source>0.075 Real Kveik</source>
         <translation>0,075 Echte Kveik</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="729"/>
+        <location filename="../src/EditProductTab6.cpp" line="748"/>
         <source>0.75  Ale, upto 1.060</source>
         <translation>0,75  Bovengist tot 1.060</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="730"/>
+        <location filename="../src/EditProductTab6.cpp" line="749"/>
         <source>1.0   Ale, above 1.060</source>
         <translation>1,0   Bovengist hoger 1.060</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="731"/>
+        <location filename="../src/EditProductTab6.cpp" line="750"/>
         <source>1.5   Lager, upto 1.060</source>
         <translation>1,5   Ondergist tot 1.060</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="732"/>
+        <location filename="../src/EditProductTab6.cpp" line="751"/>
         <source>2.0   Lager, above 1.060</source>
         <translation>2,0   Ondergist hoger 1.060</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="763"/>
+        <location filename="../src/EditProductTab6.cpp" line="782"/>
         <source>Retry starter</source>
         <translation>Ververs starter</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="763"/>
+        <location filename="../src/EditProductTab6.cpp" line="782"/>
         <source>Retry to automatic create starter steps</source>
         <translation>Ververs de starter stappen automatisch</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="797"/>
+        <location filename="../src/EditProductTab6.cpp" line="816"/>
         <source>Start step type:</source>
         <translation>Starter stap type:</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="802"/>
+        <location filename="../src/EditProductTab6.cpp" line="821"/>
         <source>Starter step volume:</source>
         <translation>Starter stap volume:</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="809"/>
+        <location filename="../src/EditProductTab6.cpp" line="828"/>
         <source>Stirred</source>
         <translation>Geroerd</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="810"/>
+        <location filename="../src/EditProductTab6.cpp" line="829"/>
         <source>Shaken</source>
         <translation>Geschud</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="811"/>
+        <location filename="../src/EditProductTab6.cpp" line="830"/>
         <source>Simple</source>
         <translation>Simpel</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="896"/>
+        <location filename="../src/EditProductTab6.cpp" line="915"/>
         <source>Delete yeast</source>
         <translation>Verwijder gist</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1021"/>
-        <location filename="../src/EditProductTab6.cpp" line="1186"/>
+        <location filename="../src/EditProductTab6.cpp" line="1040"/>
+        <location filename="../src/EditProductTab6.cpp" line="1219"/>
         <source>Total packs:</source>
         <translation>Aantal pakken:</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1160"/>
+        <location filename="../src/EditProductTab6.cpp" line="1193"/>
         <source>Yeast name:</source>
         <translation>Gist naam:</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1165"/>
-        <location filename="../src/EditProductTab6.cpp" line="1170"/>
+        <location filename="../src/EditProductTab6.cpp" line="1198"/>
+        <location filename="../src/EditProductTab6.cpp" line="1203"/>
         <source>Laboratory:</source>
         <translation>Laboratorium:</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1175"/>
+        <location filename="../src/EditProductTab6.cpp" line="1208"/>
         <source>Select yeast:</source>
         <translation>Kies gist:</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1246"/>
+        <location filename="../src/EditProductTab6.cpp" line="1279"/>
         <source>Tertiary</source>
         <translation>Lageren</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1247"/>
+        <location filename="../src/EditProductTab6.cpp" line="1280"/>
         <source>Bottle</source>
         <translation>Bottelen</translation>
     </message>
@@ -5489,9 +5489,9 @@
     </message>
     <message>
         <location filename="../src/EditProductTab9.cpp" line="645"/>
-        <location filename="../src/EditProductTab13.cpp" line="332"/>
-        <location filename="../src/EditProductTab13.cpp" line="335"/>
-        <location filename="../src/EditProductTab13.cpp" line="358"/>
+        <location filename="../src/EditProductTab13.cpp" line="346"/>
+        <location filename="../src/EditProductTab13.cpp" line="349"/>
+        <location filename="../src/EditProductTab13.cpp" line="369"/>
         <location filename="../src/EditProductExport.cpp" line="37"/>
         <location filename="../src/EditProductExport.cpp" line="40"/>
         <location filename="../src/EditProductExport.cpp" line="264"/>
@@ -5869,53 +5869,53 @@
         <translation>Bevestig dat het proeven gedaan is en opmerkingen ingevuld zijn.</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="164"/>
+        <location filename="../src/EditProductTab13.cpp" line="166"/>
         <source>Open File</source>
         <translation>Open bestand</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="180"/>
+        <location filename="../src/EditProductTab13.cpp" line="182"/>
         <source>Cannot load %1: %2</source>
         <translation>Kan niet laden %1: %2</translation>
     </message>
     <message>
         <location filename="../ui/EditProduct.ui" line="12295"/>
-        <location filename="../src/EditProductTab13.cpp" line="208"/>
+        <location filename="../src/EditProductTab13.cpp" line="210"/>
         <source>Image here</source>
         <translation>Plaatje hier</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="218"/>
+        <location filename="../src/EditProductTab13.cpp" line="220"/>
         <source>Image type:</source>
         <translation>Soort plaatje:</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="231"/>
+        <location filename="../src/EditProductTab13.cpp" line="233"/>
         <source>Image comment:</source>
         <translation>Bijschrift:</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="238"/>
+        <location filename="../src/EditProductTab13.cpp" line="240"/>
         <source>The comment for this image.</source>
         <translation>Het bijschrift of commentaar bij dit plaatje.</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="277"/>
+        <location filename="../src/EditProductTab13.cpp" line="279"/>
         <source>Delete image</source>
         <translation>Wis plaatje</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="333"/>
+        <location filename="../src/EditProductTab13.cpp" line="347"/>
         <source>Files (*.png)</source>
         <translation>Bestanden (*.png)</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="335"/>
+        <location filename="../src/EditProductTab13.cpp" line="349"/>
         <source>No PNG file selected.</source>
         <translation>Geen PNG bestand gekozen.</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab13.cpp" line="358"/>
+        <location filename="../src/EditProductTab13.cpp" line="369"/>
         <source>Saved %1</source>
         <translation>Opgeslagen %1</translation>
     </message>
--- a/ui/EditProduct.ui	Wed Jan 25 16:17:07 2023 +0100
+++ b/ui/EditProduct.ui	Sat Jan 28 10:36:59 2023 +0100
@@ -4128,7 +4128,7 @@
           <normaloff>:/icons/silk/date.png</normaloff>:/icons/silk/date.png</iconset>
         </property>
        </widget>
-       <widget class="QSpinBox" name="conditionShow">
+       <widget class="QDoubleSpinBox" name="conditionShow">
         <property name="geometry">
          <rect>
           <x>170</x>
@@ -4152,8 +4152,8 @@
         <property name="suffix">
          <string> %</string>
         </property>
-        <property name="maximum">
-         <number>100</number>
+        <property name="decimals">
+         <number>1</number>
         </property>
        </widget>
        <widget class="NullDateEdit" name="productionEdit">

mercurial