# HG changeset patch # User Michiel Broek # Date 1651265372 -7200 # Node ID 512f492358e3e778aa10939dc920f06426e2947c # Parent 1091fd9feffe3eda59ba3c4767fe7f62a4b9351f 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. diff -r 1091fd9feffe -r 512f492358e3 src/EditProduct.cpp --- 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); } diff -r 1091fd9feffe -r 512f492358e3 src/EditProductTab5.cpp --- 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); } /* diff -r 1091fd9feffe -r 512f492358e3 src/EditProductTab6.cpp --- 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); } }