Miscs updates the current inventory during recipe load. Yeasts updates the current inventory during recipe load and does a better job for the fields to upgrade.

Fri, 29 Apr 2022 22:49:32 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Fri, 29 Apr 2022 22:49:32 +0200
changeset 179
512f492358e3
parent 178
1091fd9feffe
child 180
bbf0f06a5e72

Miscs updates the current inventory during recipe load. Yeasts updates the current inventory during recipe load and does a better job for the fields to upgrade.

src/EditProduct.cpp file | annotate | diff | comparison | revisions
src/EditProductTab5.cpp file | annotate | diff | comparison | revisions
src/EditProductTab6.cpp file | annotate | diff | comparison | revisions
--- a/src/EditProduct.cpp	Fri Apr 29 21:42:00 2022 +0200
+++ b/src/EditProduct.cpp	Fri Apr 29 22:49:32 2022 +0200
@@ -457,6 +457,8 @@
 		    QJsonObject obj = miscs.array().at(i).toObject();
 		    //qDebug() << i << obj;
 		    Miscs m;
+		    m.m_avail = false;
+		    m.m_inventory = 0;
 		    m.m_name = obj["m_name"].toString();
 		    m.m_amount = obj["m_amount"].toDouble();
 		    m.m_type = obj["m_type"].toInt();
@@ -464,6 +466,14 @@
 		    m.m_time = obj["m_time"].toDouble();
 		    m.m_amount_is_weight = obj["m_amount_is_weight"].toInt() ? true:false;
 		    m.m_cost = obj["m_cost"].toDouble();
+		    /* Check and update inventory */
+                    yquery.prepare("SELECT inventory FROM inventory_miscs WHERE name=:name");
+                    yquery.bindValue(":name", m.m_name);
+                    yquery.exec();
+                    if (yquery.first()) {
+                        m.m_avail = true;
+                        m.m_inventory = yquery.value(0).toDouble();
+                    }
 		    product->miscs.append(m);
 		}
 		qDebug() << "miscs" << product->miscs.size();
@@ -485,7 +495,7 @@
 		    Yeasts y;
 		    /* First some defaults for newer fields. */
 		    y.y_tolerance = y.y_harvest_time = y.y_pitch_temperature = y.y_zymocide = 0;
-                    y.y_sta1 = y.y_bacteria = y.y_harvest_top = y.y_pofpos = false;
+                    y.y_avail = y.y_sta1 = y.y_bacteria = y.y_harvest_top = y.y_pofpos = false;
 		    y.y_gr_hl_lo = 50;
                     y.y_sg_lo = 1.04;
                     y.y_gr_hl_hi = 80;
@@ -517,35 +527,36 @@
 		    y.y_gr_hl_hi = obj["y_gr_hl_hi"].toInt();
 		    y.y_sg_hi = obj["y_sg_hi"].toDouble();
 		    y.y_cost = obj["y_cost"].toDouble();
-
-		    if (y.y_tolerance == 0 || y.y_cells == 0) {	// More and better tests?
-			/*
-			 * Possible data upgrade needed.
-			 */
-			yquery.prepare("SELECT tolerance,cells,sta1,bacteria,harvest_top,harvest_time,pitch_temperature,"
-				       "pofpos,zymocide,gr_hl_lo,sg_lo,gr_hl_hi,sg_hi "
+		    /*
+		     * Possible data upgrade needed.
+		     */
+		    yquery.prepare("SELECT tolerance,cells,sta1,bacteria,harvest_top,harvest_time,pitch_temperature,"
+				       "pofpos,zymocide,gr_hl_lo,sg_lo,gr_hl_hi,sg_hi,inventory "
 				       "FROM inventory_yeasts WHERE name=:name AND laboratory=:laboratory AND product_id=:product_id");
-			yquery.bindValue(":name", y.y_name);
-			yquery.bindValue(":laboratory", y.y_laboratory);
-			yquery.bindValue(":product_id", y.y_product_id);
-            		yquery.exec();
-            		if (yquery.first()) {
+		    yquery.bindValue(":name", y.y_name);
+		    yquery.bindValue(":laboratory", y.y_laboratory);
+		    yquery.bindValue(":product_id", y.y_product_id);
+            	    yquery.exec();
+            	    if (yquery.first()) {
+			if (y.y_tolerance == 0 || y.y_cells == 0) {
 			    y.y_tolerance = yquery.value(0).toDouble();
 			    y.y_cells = yquery.value(1).toDouble();
-			    y.y_sta1 = yquery.value(2).toInt() ? true:false;
-			    y.y_bacteria = yquery.value(3).toInt() ? true:false;
-			    y.y_harvest_top = yquery.value(4).toInt() ? true:false;
-			    y.y_harvest_time = yquery.value(5).toInt();
-			    y.y_pitch_temperature = yquery.value(6).toDouble();
-			    y.y_pofpos = yquery.value(7).toInt() ? true:false;
-			    y.y_zymocide = yquery.value(8).toInt();
-			    y.y_gr_hl_lo = yquery.value(9).toInt();
-			    y.y_sg_lo = yquery.value(10).toDouble();
-			    y.y_gr_hl_hi = yquery.value(11).toInt();
-			    y.y_sg_hi = yquery.value(12).toDouble();
-			} else {
-			    qDebug() << y.y_name << y.y_product_id << "not found for upgrade";
 			}
+			y.y_sta1 = yquery.value(2).toInt() ? true:false;
+			y.y_bacteria = yquery.value(3).toInt() ? true:false;
+			y.y_harvest_top = yquery.value(4).toInt() ? true:false;
+			y.y_harvest_time = yquery.value(5).toInt();
+			y.y_pitch_temperature = yquery.value(6).toDouble();
+			y.y_pofpos = yquery.value(7).toInt() ? true:false;
+			y.y_zymocide = yquery.value(8).toInt();
+			y.y_gr_hl_lo = yquery.value(9).toInt();
+			y.y_sg_lo = yquery.value(10).toDouble();
+			y.y_gr_hl_hi = yquery.value(11).toInt();
+			y.y_sg_hi = yquery.value(12).toDouble();
+			y.y_inventory = yquery.value(13).toDouble();
+			y.y_avail = true;
+		    } else {
+			qDebug() << y.y_name << y.y_product_id << "not found for upgrade";
 		    }
 		    product->yeasts.append(y);
 		}
--- a/src/EditProductTab5.cpp	Fri Apr 29 21:42:00 2022 +0200
+++ b/src/EditProductTab5.cpp	Fri Apr 29 22:49:32 2022 +0200
@@ -52,16 +52,17 @@
     const QSignalBlocker blocker8(ui->mw_acidPick);
     const QSignalBlocker blocker9(ui->mw_acidvolEdit);
 
-    const QStringList labels({tr("Ingredient"), tr("Type"), tr("Use at"), tr("Time"), tr("Amount"), tr("Delete"), tr("Edit") });
+    const QStringList labels({tr("Ingredient"), tr("Type"), tr("Use at"), tr("Time"), tr("Amount"), tr("Stock"), tr("Delete"), tr("Edit") });
 
-    ui->miscsTable->setColumnCount(7);
-    ui->miscsTable->setColumnWidth(0, 300);	/* Ingredient	*/
-    ui->miscsTable->setColumnWidth(1, 100);	/* Type		*/
-    ui->miscsTable->setColumnWidth(2, 100);	/* Added	*/
+    ui->miscsTable->setColumnCount(8);
+    ui->miscsTable->setColumnWidth(0, 250);	/* Ingredient	*/
+    ui->miscsTable->setColumnWidth(1,  90);	/* Type		*/
+    ui->miscsTable->setColumnWidth(2,  90);	/* Added	*/
     ui->miscsTable->setColumnWidth(3,  75);	/* Time		*/
-    ui->miscsTable->setColumnWidth(4,  90);	/* Amount	*/
-    ui->miscsTable->setColumnWidth(5,  80);	/* Delete	*/
-    ui->miscsTable->setColumnWidth(6,  80);	/* Edit		*/
+    ui->miscsTable->setColumnWidth(4,  80);	/* Amount	*/
+    ui->miscsTable->setColumnWidth(5,  80);	/* Stock	*/
+    ui->miscsTable->setColumnWidth(6,  80);	/* Delete	*/
+    ui->miscsTable->setColumnWidth(7,  80);	/* Edit		*/
     ui->miscsTable->setHorizontalHeaderLabels(labels);
     ui->miscsTable->verticalHeader()->hide();
     ui->miscsTable->setRowCount(product->miscs.size());
@@ -95,13 +96,20 @@
 	item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
         ui->miscsTable->setItem(i, 4, item);
 
+	if (product->miscs.at(i).m_amount_is_weight)
+            item = new QTableWidgetItem(QString("%1 gr").arg(product->miscs.at(i).m_inventory * 1000.0, 3, 'f', 2, '0'));
+        else
+            item = new QTableWidgetItem(QString("%1 ml").arg(product->miscs.at(i).m_inventory * 1000.0, 3, 'f', 2, '0'));
+        item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
+        ui->miscsTable->setItem(i, 5, item);
+
 	/*
 	 * Add the Delete and Edit row buttons.
 	 * Not for water agents, these are set on the water tab.
 	 */
 	if (product->miscs.at(i).m_type == 4) {
-	    ui->miscsTable->removeCellWidget(i, 5);
 	    ui->miscsTable->removeCellWidget(i, 6);
+	    ui->miscsTable->removeCellWidget(i, 7);
 	} else {
             pWidget = new QWidget();
             QPushButton* btn_dele = new QPushButton();
@@ -112,7 +120,7 @@
             pLayout->addWidget(btn_dele);
             pLayout->setContentsMargins(5, 0, 5, 0);
             pWidget->setLayout(pLayout);
-            ui->miscsTable->setCellWidget(i, 5, pWidget);
+            ui->miscsTable->setCellWidget(i, 6, pWidget);
 
             pWidget = new QWidget();
             QPushButton* btn_edit = new QPushButton();
@@ -123,7 +131,7 @@
             pLayout->addWidget(btn_edit);
             pLayout->setContentsMargins(5, 0, 5, 0);
             pWidget->setLayout(pLayout);
-            ui->miscsTable->setCellWidget(i, 6, pWidget);
+            ui->miscsTable->setCellWidget(i, 7, pWidget);
 	}
 
 	/*
--- a/src/EditProductTab6.cpp	Fri Apr 29 21:42:00 2022 +0200
+++ b/src/EditProductTab6.cpp	Fri Apr 29 22:49:32 2022 +0200
@@ -38,22 +38,23 @@
     qDebug() << "refreshYeasts" << product->yeasts.size();
     std::sort(product->yeasts.begin(), product->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") });
+    const QStringList labels({tr("Yeast"), tr("Laboratory"), tr("Code"), tr("Type"), tr("Use for"), tr("Min."), tr("Max."),
+		              tr("Tol."), tr("Attn."), tr("Amount"), tr("Stock"), 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(1, 115);	/* 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(4,  80);	/* Usage	*/
+    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,  80);	/* Amount	*/
+    ui->yeastsTable->setColumnWidth(10, 80);	/* Stock	*/
+    ui->yeastsTable->setColumnWidth(11, 80);	/* Delete	*/
+    ui->yeastsTable->setColumnWidth(12, 80);	/* Edit		*/
     ui->yeastsTable->setHorizontalHeaderLabels(labels);
     ui->yeastsTable->verticalHeader()->hide();
     ui->yeastsTable->setRowCount(product->yeasts.size());
@@ -72,19 +73,19 @@
         item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);
         ui->yeastsTable->setItem(i, 4, item);
 
-	item = new QTableWidgetItem(QString("%1").arg(product->yeasts.at(i).y_min_temperature, 2, 'f', 1, '0'));
+	item = new QTableWidgetItem(QString("%1°C").arg(product->yeasts.at(i).y_min_temperature, 2, 'f', 1, '0'));
 	item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
         ui->yeastsTable->setItem(i, 5, item);
 
-	item = new QTableWidgetItem(QString("%1").arg(product->yeasts.at(i).y_max_temperature, 2, 'f', 1, '0'));
+	item = new QTableWidgetItem(QString("%1°C").arg(product->yeasts.at(i).y_max_temperature, 2, 'f', 1, '0'));
         item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
         ui->yeastsTable->setItem(i, 6, item);
 
-	item = new QTableWidgetItem(QString("%1").arg(product->yeasts.at(i).y_tolerance, 2, 'f', 1, '0'));
+	item = new QTableWidgetItem(QString("%1%").arg(product->yeasts.at(i).y_tolerance, 2, 'f', 1, '0'));
         item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
         ui->yeastsTable->setItem(i, 7, item);
 
-	item = new QTableWidgetItem(QString("%1").arg(product->yeasts.at(i).y_attenuation, 2, 'f', 1, '0'));
+	item = new QTableWidgetItem(QString("%1%").arg(product->yeasts.at(i).y_attenuation, 2, 'f', 1, '0'));
         item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
         ui->yeastsTable->setItem(i, 8, item);
 
@@ -97,6 +98,15 @@
         item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
         ui->yeastsTable->setItem(i, 9, item);
 
+	if (product->yeasts.at(i).y_form == 0)
+            item = new QTableWidgetItem(QString("%1 pack").arg(product->yeasts.at(i).y_inventory, 1, 'f', 0, '0'));
+        else if (product->yeasts.at(i).y_form == 1)
+            item = new QTableWidgetItem(QString("%1 gr").arg(product->yeasts.at(i).y_inventory * 1000.0, 3, 'f', 2, '0'));
+        else
+            item = new QTableWidgetItem(QString("%1 ml").arg(product->yeasts.at(i).y_inventory * 1000.0, 3, 'f', 2, '0'));
+        item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
+        ui->yeastsTable->setItem(i, 10, item);
+
 	pWidget = new QWidget();
         QPushButton* btn_dele = new QPushButton();
         btn_dele->setObjectName(QString("%1").arg(i));  /* Send row with the button */
@@ -106,7 +116,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();
@@ -117,7 +127,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);
     }
 }
 

mercurial