Expanded Yeast edit popup with a Yeast Pack dropdown list. Prepared database product read and write with values for yeast package. They will be stored as json object in the yeast records.

Tue, 31 Jan 2023 16:24:11 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Tue, 31 Jan 2023 16:24:11 +0100
changeset 482
e13763ec829f
parent 481
8a25dbe682eb
child 483
eb0a5f132ea9

Expanded Yeast edit popup with a Yeast Pack dropdown list. Prepared database product read and write with values for yeast package. They will be stored as json object in the yeast records.

src/EditProduct.h file | annotate | diff | comparison | revisions
src/EditProductTab6.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/EditProduct.h	Tue Jan 31 11:10:14 2023 +0100
+++ b/src/EditProduct.h	Tue Jan 31 16:24:11 2023 +0100
@@ -288,7 +288,7 @@
     /*
      * Variables for popup ingredients editing.
      */
-    QComboBox *fselectEdit, *faddedEdit, *hselectEdit,*haddedEdit, *useatEdit, *mselectEdit, *yselectEdit, *splitatEdit;
+    QComboBox *fselectEdit, *faddedEdit, *hselectEdit,*haddedEdit, *useatEdit, *mselectEdit, *yselectEdit, *ypackageEdit, *splitatEdit;
     QLineEdit *fnameEdit, *fsupplierEdit, *hnameEdit, *horiginEdit, *mnameEdit, *ynameEdit, *ylaboratoryEdit, *yproduct_idEdit, *stepnameEdit;
     QDoubleSpinBox *famountEdit, *pctEdit, *fmaxEdit, *hamountEdit, *ibuEdit, *mamountEdit, *yamountEdit, *stepphEdit, *stepsgEdit;
     QDoubleSpinBox *steptempEdit, *endtempEdit, *steptimeEdit, *ramptimeEdit, *stepivolEdit, *stepitmpEdit, *brixEdit;
--- a/src/EditProductTab6.cpp	Tue Jan 31 11:10:14 2023 +0100
+++ b/src/EditProductTab6.cpp	Tue Jan 31 16:24:11 2023 +0100
@@ -956,7 +956,7 @@
 
 void EditProduct::yeast_select_changed(int val)
 {
-    QSqlQuery query;
+    QSqlQuery query, query1;
     bool instock = yinstockEdit->isChecked();
     QString w;
     QTableWidgetItem *item;
@@ -1015,6 +1015,7 @@
     product->yeasts[product->yeasts_row].sg_hi = query.value("sg_hi").toDouble();
     product->yeasts[product->yeasts_row].cost = query.value("cost").toDouble();
     product->yeasts[product->yeasts_row].inventory = query.value("inventory").toDouble();
+    product->yeasts[product->yeasts_row].yp_uuid = QString();
 
     /*
      * Update the visible fields
@@ -1048,6 +1049,22 @@
 	product->yeast_pitchrate = 0;
     }
 
+    /*
+     * Clear package and rebuild package select table.
+     */
+    this->ypackageEdit->setCurrentIndex(-1);
+    this->ypackageEdit->clear();
+    this->ypackageEdit->addItem("");	// Start with empty value
+    query1.prepare("SELECT * FROM inventory_yeastpack WHERE laboratory=:laboratory AND form=:form AND valid='1' ORDER BY laboratory,package");
+    query1.bindValue(":laboratory", query.value("laboratory").toString());
+    query1.bindValue(":form", query.value("form").toInt());
+    qDebug() << "  search" << query.value("laboratory").toString() << query.value("form").toInt();
+    query1.exec();
+    while (query1.next()) {
+	this->ypackageEdit->addItem(query1.value("laboratory").toString()+" - "+query1.value("package").toString());
+	qDebug() << "  add package" << query1.value("laboratory").toString() << query1.value("package").toString();
+    }
+
     ui->yeastsTable->setItem(product->yeasts_row, 0, new QTableWidgetItem(product->yeasts.at(product->yeasts_row).name));
     ui->yeastsTable->setItem(product->yeasts_row, 1, new QTableWidgetItem(product->yeasts.at(product->yeasts_row).laboratory));
     ui->yeastsTable->setItem(product->yeasts_row, 2, new QTableWidgetItem(product->yeasts.at(product->yeasts_row).product_id));
@@ -1171,10 +1188,10 @@
     Yeasts backup = product->yeasts.at(product->yeasts_row);
 
     QDialog* dialog = new QDialog(this);
-    dialog->resize(738, 260);
+    dialog->resize(738, 290);
     QDialogButtonBox *buttonBox = new QDialogButtonBox(dialog);
     buttonBox->setObjectName(QString::fromUtf8("buttonBox"));
-    buttonBox->setGeometry(QRect(30, 210, 671, 32));
+    buttonBox->setGeometry(QRect(30, 240, 671, 32));
     buttonBox->setLayoutDirection(Qt::LeftToRight);
     buttonBox->setOrientation(Qt::Horizontal);
     buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
@@ -1205,6 +1222,11 @@
     instockLabel->setText(tr("In stock:"));
     instockLabel->setGeometry(QRect(525,100, 121, 20));
     instockLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
+    QLabel *packageLabel = new QLabel(dialog);
+    packageLabel->setObjectName(QString::fromUtf8("packageLabel"));
+    packageLabel->setText(tr("Select package:"));
+    packageLabel->setGeometry(QRect(10,130, 141, 20));
+    packageLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
     yamountLabel = new QLabel(dialog);
     yamountLabel->setObjectName(QString::fromUtf8("amountLabel"));
     if (product->yeasts.at(product->yeasts_row).form == YEAST_FORMS_LIQUID)
@@ -1213,12 +1235,12 @@
 	yamountLabel->setText(tr("Amount in gr:"));
     else
 	yamountLabel->setText(tr("Amount in ml:"));
-    yamountLabel->setGeometry(QRect(10, 130, 141, 20));
+    yamountLabel->setGeometry(QRect(10, 160, 141, 20));
     yamountLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
     QLabel *useatLabel = new QLabel(dialog);
     useatLabel->setObjectName(QString::fromUtf8("useatLabel"));
     useatLabel->setText(tr("Use at:"));
-    useatLabel->setGeometry(QRect(10, 160, 141, 20));
+    useatLabel->setGeometry(QRect(10, 190, 141, 20));
     useatLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
 
     ynameEdit = new QLineEdit(dialog);
@@ -1243,9 +1265,12 @@
     yinstockEdit->setObjectName(QString::fromUtf8("yinstockEdit"));
     yinstockEdit->setGeometry(QRect(655,100, 85, 21));
     yinstockEdit->setChecked(true);
+    ypackageEdit = new QComboBox(dialog);
+    ypackageEdit->setObjectName(QString::fromUtf8("packageEdit"));
+    ypackageEdit->setGeometry(QRect(160,130, 371, 23));
     yamountEdit = new QDoubleSpinBox(dialog);
     yamountEdit->setObjectName(QString::fromUtf8("yamountEdit"));
-    yamountEdit->setGeometry(QRect(160, 130, 121, 24));
+    yamountEdit->setGeometry(QRect(160, 160, 121, 24));
     yamountEdit->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
     yamountEdit->setAccelerated(true);
     yamountEdit->setMaximum(10000.0);
@@ -1265,7 +1290,7 @@
     yamountEdit->setMaximum(1000000000.0);
     useatEdit = new QComboBox(dialog);
     useatEdit->setObjectName(QString::fromUtf8("useatEdit"));
-    useatEdit->setGeometry(QRect(160, 160, 161, 23));
+    useatEdit->setGeometry(QRect(160, 190, 161, 23));
     useatEdit->addItem(tr("Primary"));
     useatEdit->addItem(tr("Secondary"));
     useatEdit->addItem(tr("Tertiary"));
--- a/src/database/db_product.cpp	Tue Jan 31 11:10:14 2023 +0100
+++ b/src/database/db_product.cpp	Tue Jan 31 16:24:11 2023 +0100
@@ -64,11 +64,7 @@
     prod->eq_trub_loss = query.value("eq_trub_loss").toDouble();
     prod->eq_evap_rate = query.value("eq_evap_rate").toDouble();
     prod->eq_boil_time = query.value("eq_boil_time").toDouble();
-//    prod->eq_calc_boil_volume = query.value("eq_calc_boil_volume").toInt() ? true:false;
     prod->eq_top_up_kettle = query.value("eq_top_up_kettle").toDouble();
-//    prod->eq_hop_utilization = query.value("eq_hop_utilization").toDouble();
-//    prod->eq_lauter_volume = query.value("eq_lauter_volume").toDouble();
-//    prod->eq_lauter_height = query.value("eq_lauter_height").toDouble();
     prod->eq_lauter_deadspace = query.value("eq_lauter_deadspace").toDouble();
     prod->eq_kettle_volume = query.value("eq_kettle_volume").toDouble();
     prod->eq_kettle_height = query.value("eq_kettle_height").toDouble();
@@ -438,6 +434,7 @@
 	    } else if (yeasts.isArray()) {
 		for (int i = 0; i < yeasts.array().size(); i++) {
 		    QJsonObject obj = yeasts.array().at(i).toObject();
+		    qDebug() << "yeasts_Json" << i << obj;
 		    Yeasts y;
 		    /* First some defaults for newer fields. */
 		    y.tolerance = y.harvest_time = y.pitch_temperature = y.zymocide = 0;
@@ -446,6 +443,13 @@
                     y.sg_lo = 1.04;
                     y.gr_hl_hi = 80;
                     y.sg_hi = 1.08;
+		    /* Clear Yeast Package data */
+		    y.yp_uuid = QString();
+		    y.yp_package = QString();
+		    y.yp_cells = obj["y_cells"].toDouble();
+		    y.yp_viability = 0.99;
+		    y.yp_max = 100;
+		    y.yp_size = 0.01;
 		    /* Now get what we have got */
 		    y.name = obj["y_name"].toString();
 		    y.laboratory = obj["y_laboratory"].toString();
@@ -485,25 +489,42 @@
             	    yquery.exec();
             	    if (yquery.first()) {
 			if (y.tolerance == 0 || y.cells == 0) {
-			    y.tolerance = yquery.value(0).toDouble();
-			    y.cells = yquery.value(1).toDouble();
+			    y.tolerance = yquery.value("tolerance").toDouble();
+			    y.cells = yquery.value("cells").toDouble();
 			}
-			y.sta1 = yquery.value(2).toInt() ? true:false;
-			y.bacteria = yquery.value(3).toInt() ? true:false;
-			y.harvest_top = yquery.value(4).toInt() ? true:false;
-			y.harvest_time = yquery.value(5).toInt();
-			y.pitch_temperature = yquery.value(6).toDouble();
-			y.pofpos = yquery.value(7).toInt() ? true:false;
-			y.zymocide = yquery.value(8).toInt();
-			y.gr_hl_lo = yquery.value(9).toInt();
-			y.sg_lo = yquery.value(10).toDouble();
-			y.gr_hl_hi = yquery.value(11).toInt();
-			y.sg_hi = yquery.value(12).toDouble();
-			y.inventory = yquery.value(13).toDouble();
+			y.sta1 = yquery.value("sta1").toInt() ? true:false;
+			y.bacteria = yquery.value("bacteria").toInt() ? true:false;
+			y.harvest_top = yquery.value("harvest_top").toInt() ? true:false;
+			y.harvest_time = yquery.value("harvest_time").toInt();
+			y.pitch_temperature = yquery.value("pitch_temperature").toDouble();
+			y.pofpos = yquery.value("pofpos").toInt() ? true:false;
+			y.zymocide = yquery.value("zymocide").toInt();
+			y.gr_hl_lo = yquery.value("gr_hl_lo").toInt();
+			y.sg_lo = yquery.value("sg_lo").toDouble();
+			y.gr_hl_hi = yquery.value("gr_hl_hi").toInt();
+			y.sg_hi = yquery.value("sg_hi").toDouble();
+			y.inventory = yquery.value("inventory").toDouble();
 			y.avail = true;
 		    } else {
 			qDebug() << y.name << y.product_id << "not found for upgrade";
 		    }
+		    /*
+		     * Yeast Pack.
+		     */
+		    if (obj.contains("y_package") && obj["y_package"].isObject()) {
+			qDebug() << "y_package object present";
+			QJsonObject package = obj.value("y_package").toObject();
+			qDebug() << "yeasts_Json package" << i << package;
+			y.yp_uuid = package["uuid"].toString();
+			y.yp_package = package["package"].toString();
+                    	y.yp_cells = package["cells"].toDouble();
+                    	y.yp_viability = package["viability"].toDouble();
+                    	y.yp_max = package["max"].toInt();
+                    	y.yp_size = package["size"].toDouble();
+		    } else {
+			qDebug() << "y_package not present";
+		    }
+
 		    prod->yeasts.append(y);
 		}
 //		qDebug() << "yeasts" << prod->yeasts.size();
@@ -973,7 +994,18 @@
 		obj.insert("y_gr_hl_hi", prod->yeasts.at(i).gr_hl_hi);
 		obj.insert("y_sg_hi", round(prod->yeasts.at(i).sg_hi * 1000) / 1000);
 		obj.insert("y_cost", round(prod->yeasts.at(i).cost * 1000) / 1000);
- //               qDebug() << "yeasts_Json" << i << obj;
+		if (! product->yeasts.at(i).yp_uuid.isNull() && (product->yeasts.at(i).yp_uuid.length() == 36)) {
+		    qDebug() << "yeasts_Json append package";
+		    QJsonObject package;
+		    package.insert("uuid", prod->yeasts.at(i).yp_uuid);
+		    package.insert("package", prod->yeasts.at(i).yp_package);
+		    package.insert("cells", prod->yeasts.at(i).yp_cells);
+		    package.insert("viability", round(prod->yeasts.at(i).yp_viability * 10000) / 10000);
+		    package.insert("max", prod->yeasts.at(i).yp_max);
+		    package.insert("size", round(prod->yeasts.at(i).yp_size * 100000) / 100000);
+		    obj.insert("y_package", package);
+		}
+                qDebug() << "yeasts_Json" << i << obj;
                 array.append(obj);      /* Append this object */
         }
 	QJsonDocument doc;
--- a/src/global.h	Tue Jan 31 11:10:14 2023 +0100
+++ b/src/global.h	Tue Jan 31 16:24:11 2023 +0100
@@ -181,18 +181,12 @@
     double	cost;
     double	inventory;		///< In product, current inventory.
     bool	avail;			///< Product available in database.
-};
-
-
-struct YeastPacks
-{
-    QString	laboratory;
-    QString	package;
-    QString	notes;
-    int		form;
-    double	cells;
-    double	viability;
-    double	size;
+    QString	yp_uuid;		///< Yeast Package uuid or NULL.
+    QString	yp_package;		///< Package name.
+    double	yp_cells;		///< Cells per package.
+    double	yp_viability;		///< Viability degradation per month.
+    int		yp_max;			///< Maximum viability percent.
+    double	yp_size;		///< Yeast Package size in kg or liter.
 };
 
 
--- a/translations/bmsapp_en.ts	Tue Jan 31 11:10:14 2023 +0100
+++ b/translations/bmsapp_en.ts	Tue Jan 31 16:24:11 2023 +0100
@@ -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="1220"/>
+        <location filename="../src/EditProductTab6.cpp" line="1227"/>
         <source>Use at:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4523,7 +4523,7 @@
         <location filename="../src/EditProductTab5.cpp" line="525"/>
         <location filename="../src/EditProductTab5.cpp" line="650"/>
         <location filename="../src/EditProductTab6.cpp" line="1040"/>
-        <location filename="../src/EditProductTab6.cpp" line="1213"/>
+        <location filename="../src/EditProductTab6.cpp" line="1220"/>
         <source>Amount in gr:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4563,7 +4563,7 @@
         <location filename="../src/EditProductTab5.cpp" line="528"/>
         <location filename="../src/EditProductTab5.cpp" line="652"/>
         <location filename="../src/EditProductTab6.cpp" line="1047"/>
-        <location filename="../src/EditProductTab6.cpp" line="1215"/>
+        <location filename="../src/EditProductTab6.cpp" line="1222"/>
         <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="1269"/>
+        <location filename="../src/EditProductTab6.cpp" line="1281"/>
         <source>Primary</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../src/EditProductTab5.cpp" line="721"/>
-        <location filename="../src/EditProductTab6.cpp" line="1270"/>
+        <location filename="../src/EditProductTab6.cpp" line="1282"/>
         <source>Secondary</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4742,7 +4742,7 @@
     </message>
     <message>
         <location filename="../src/EditProductTab6.cpp" line="1032"/>
-        <location filename="../src/EditProductTab6.cpp" line="1211"/>
+        <location filename="../src/EditProductTab6.cpp" line="1218"/>
         <source>Total packs:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4763,12 +4763,17 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1271"/>
+        <location filename="../src/EditProductTab6.cpp" line="1211"/>
+        <source>Select package:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/EditProductTab6.cpp" line="1283"/>
         <source>Tertiary</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1272"/>
+        <location filename="../src/EditProductTab6.cpp" line="1284"/>
         <source>Bottle</source>
         <translation type="unfinished"></translation>
     </message>
@@ -12309,8 +12314,8 @@
         <location filename="../src/database/db_recipe.cpp" line="654"/>
         <location filename="../src/database/db_recipe.cpp" line="687"/>
         <location filename="../src/database/db_product.cpp" line="31"/>
-        <location filename="../src/database/db_product.cpp" line="1018"/>
-        <location filename="../src/database/db_product.cpp" line="1051"/>
+        <location filename="../src/database/db_product.cpp" line="1050"/>
+        <location filename="../src/database/db_product.cpp" line="1083"/>
         <source>Database error</source>
         <translation type="unfinished"></translation>
     </message>
@@ -12323,8 +12328,8 @@
     <message>
         <location filename="../src/database/db_recipe.cpp" line="655"/>
         <location filename="../src/database/db_recipe.cpp" line="688"/>
-        <location filename="../src/database/db_product.cpp" line="1019"/>
-        <location filename="../src/database/db_product.cpp" line="1052"/>
+        <location filename="../src/database/db_product.cpp" line="1051"/>
+        <location filename="../src/database/db_product.cpp" line="1084"/>
         <source>MySQL error: %1
 %2
 %3</source>
--- a/translations/bmsapp_nl.ts	Tue Jan 31 11:10:14 2023 +0100
+++ b/translations/bmsapp_nl.ts	Tue Jan 31 16:24:11 2023 +0100
@@ -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="1220"/>
+        <location filename="../src/EditProductTab6.cpp" line="1227"/>
         <source>Use at:</source>
         <translation>Toevoegen bij:</translation>
     </message>
@@ -5039,7 +5039,7 @@
         <location filename="../src/EditProductTab5.cpp" line="525"/>
         <location filename="../src/EditProductTab5.cpp" line="650"/>
         <location filename="../src/EditProductTab6.cpp" line="1040"/>
-        <location filename="../src/EditProductTab6.cpp" line="1213"/>
+        <location filename="../src/EditProductTab6.cpp" line="1220"/>
         <source>Amount in gr:</source>
         <translation>Gewicht in gr:</translation>
     </message>
@@ -5098,7 +5098,7 @@
         <location filename="../src/EditProductTab5.cpp" line="528"/>
         <location filename="../src/EditProductTab5.cpp" line="652"/>
         <location filename="../src/EditProductTab6.cpp" line="1047"/>
-        <location filename="../src/EditProductTab6.cpp" line="1215"/>
+        <location filename="../src/EditProductTab6.cpp" line="1222"/>
         <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="1269"/>
+        <location filename="../src/EditProductTab6.cpp" line="1281"/>
         <source>Primary</source>
         <translation>Hoofdgisting</translation>
     </message>
     <message>
         <location filename="../src/EditProductTab5.cpp" line="721"/>
-        <location filename="../src/EditProductTab6.cpp" line="1270"/>
+        <location filename="../src/EditProductTab6.cpp" line="1282"/>
         <source>Secondary</source>
         <translation>Nagisting/lagering</translation>
     </message>
@@ -5277,7 +5277,7 @@
     </message>
     <message>
         <location filename="../src/EditProductTab6.cpp" line="1032"/>
-        <location filename="../src/EditProductTab6.cpp" line="1211"/>
+        <location filename="../src/EditProductTab6.cpp" line="1218"/>
         <source>Total packs:</source>
         <translation>Aantal pakken:</translation>
     </message>
@@ -5298,12 +5298,17 @@
         <translation>Kies gist:</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1271"/>
+        <location filename="../src/EditProductTab6.cpp" line="1211"/>
+        <source>Select package:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/EditProductTab6.cpp" line="1283"/>
         <source>Tertiary</source>
         <translation>Lageren</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab6.cpp" line="1272"/>
+        <location filename="../src/EditProductTab6.cpp" line="1284"/>
         <source>Bottle</source>
         <translation>Bottelen</translation>
     </message>
@@ -13962,8 +13967,8 @@
         <location filename="../src/database/db_recipe.cpp" line="654"/>
         <location filename="../src/database/db_recipe.cpp" line="687"/>
         <location filename="../src/database/db_product.cpp" line="31"/>
-        <location filename="../src/database/db_product.cpp" line="1018"/>
-        <location filename="../src/database/db_product.cpp" line="1051"/>
+        <location filename="../src/database/db_product.cpp" line="1050"/>
+        <location filename="../src/database/db_product.cpp" line="1083"/>
         <source>Database error</source>
         <translation>Database fout</translation>
     </message>
@@ -13976,8 +13981,8 @@
     <message>
         <location filename="../src/database/db_recipe.cpp" line="655"/>
         <location filename="../src/database/db_recipe.cpp" line="688"/>
-        <location filename="../src/database/db_product.cpp" line="1019"/>
-        <location filename="../src/database/db_product.cpp" line="1052"/>
+        <location filename="../src/database/db_product.cpp" line="1051"/>
+        <location filename="../src/database/db_product.cpp" line="1084"/>
         <source>MySQL error: %1
 %2
 %3</source>
--- a/ui/EditProduct.ui	Tue Jan 31 11:10:14 2023 +0100
+++ b/ui/EditProduct.ui	Tue Jan 31 16:24:11 2023 +0100
@@ -3484,7 +3484,7 @@
            <number>3</number>
           </property>
           <property name="minimum">
-           <double>0.005000000000000</double>
+           <double>0.000000000000000</double>
           </property>
           <property name="maximum">
            <double>5.000000000000000</double>
@@ -3493,7 +3493,7 @@
            <double>0.010000000000000</double>
           </property>
           <property name="value">
-           <double>0.005000000000000</double>
+           <double>0.000000000000000</double>
           </property>
          </widget>
          <widget class="QLabel" name="pitchrateLabel">

mercurial