Added create splitted batches. Fixed rounding amount values at several places.

Wed, 08 Jun 2022 20:20:57 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Wed, 08 Jun 2022 20:20:57 +0200
changeset 270
a0f72d7ace1f
parent 269
f92db2eabd0d
child 271
f56c0dff0a3d

Added create splitted batches. Fixed rounding amount values at several places.

src/EditProductExport.cpp file | annotate | diff | comparison | revisions
src/database/db_product.cpp file | annotate | diff | comparison | revisions
--- a/src/EditProductExport.cpp	Wed Jun 08 17:14:37 2022 +0200
+++ b/src/EditProductExport.cpp	Wed Jun 08 20:20:57 2022 +0200
@@ -888,6 +888,64 @@
     if (! doit)
 	return;
     qInfo() << "split starts now";
+    for (int i = 0; i < product->splits.size(); i++) {
+	Product *sp = new Product;
+	if (DB_product::load(sp, this, product->record)) {
+	    double factor = round((product->splits.at(i).size / vol_availEdit->value()) * 1000.0) / 1000.0;
+	    qDebug() << "split prep" << i + 1 << product->splits.at(i).code << "factor" << factor;
+	    sp->record = -1;
+	    sp->uuid = "";
+	    sp->name = product->splits.at(i).name;
+	    sp->code = product->splits.at(i).code;
+	    sp->divide_type = product->divide_type;
+	    sp->divide_size = product->splits.at(i).size;
+	    sp->divide_factor = factor;
+	    sp->divide_parts = product->splits.size();
+	    sp->divide_part = i + 1;
+	    /* Now adjust the volumes */
+	    sp->brew_sparge_est = sp->brew_sparge_est * factor;
+	    sp->brew_preboil_volume = sp->brew_preboil_volume * factor;
+	    sp->brew_aboil_volume = sp->brew_aboil_volume * factor;
+	    sp->brew_fermenter_volume = sp->brew_fermenter_volume * factor;
+	    sp->brew_fermenter_extrawater = sp->brew_fermenter_extrawater * factor;
+	    sp->brew_fermenter_tcloss = sp->brew_fermenter_tcloss * factor;
+	    sp->package_volume = sp->package_volume * factor;
+	    sp->package_infuse_amount = sp->package_infuse_amount * factor;
+	    sp->bottle_amount = sp->bottle_amount * factor;
+	    sp->bottle_priming_water = sp->bottle_priming_water * factor;
+	    sp->keg_amount = sp->keg_amount * factor;
+	    sp->keg_priming_water = sp->keg_priming_water * factor;
+	    sp->batch_size = sp->batch_size * factor;
+	    sp->boil_size = sp->boil_size * factor;
+	    sp->sparge_volume = sp->sparge_volume * factor;
+	    sp->sparge_acid_amount = sp->sparge_acid_amount * factor;
+	    sp->w1_amount = sp->w1_amount * factor;
+	    sp->w2_amount = sp->w2_amount * factor;
+	    sp->wg_amount = sp->wg_amount * factor;
+	    sp->prop_volume[0] = sp->prop_volume[0] * factor;
+	    sp->prop_volume[1] = sp->prop_volume[1] * factor;
+	    sp->prop_volume[2] = sp->prop_volume[2] * factor;
+	    sp->prop_volume[3] = sp->prop_volume[3] * factor;
+	    for (int j = 0; j < sp->fermentables.size(); j++) {
+		sp->fermentables[j].f_amount = round(sp->fermentables.at(j).f_amount * factor * 100000) / 100000;
+	    }
+	    for (int j = 0; j < sp->hops.size(); j++) {
+		sp->hops[j].h_amount = round(sp->hops.at(j).h_amount * factor * 100000) / 100000;
+	    }
+	    for (int j = 0; j < sp->miscs.size(); j++) {
+                sp->miscs[j].m_amount = round(sp->miscs.at(j).m_amount * factor * 100000) / 100000;
+            }
+	    for (int j = 0; j < sp->yeasts.size(); j++) {
+                sp->yeasts[j].y_amount = round(sp->yeasts.at(j).y_amount * factor * 100000) / 100000;
+            }
+	    for (int j = 0; j < sp->mashs.size(); j++) {
+                sp->mashs[j].step_volume = round(sp->mashs.at(j).step_volume * factor * 100) / 100;
+		sp->mashs[j].step_infuse_amount = round(sp->mashs.at(j).step_infuse_amount * factor * 100) / 100;
+            }
+	    DB_product::save(sp, this);
+	}
+	delete sp;
+    }
 
     /* Make sure the product editor is closed after splitting */
     qInfo() << "split ready, destroy windows";
--- a/src/database/db_product.cpp	Wed Jun 08 17:14:37 2022 +0200
+++ b/src/database/db_product.cpp	Wed Jun 08 20:20:57 2022 +0200
@@ -829,7 +829,7 @@
     query.bindValue(":prop4_volume", round(prod->prop_volume[3] * 1000) / 1000);
     query.bindValue(":divide_type", prod->divide_type);
     query.bindValue(":divide_size", round(prod->divide_size * 10) / 10);
-    query.bindValue(":divide_factor", round(prod->divide_factor * 100) / 100);
+    query.bindValue(":divide_factor", round(prod->divide_factor * 10000) / 10000);
     query.bindValue(":divide_parts", prod->divide_parts);
     query.bindValue(":divide_part", prod->divide_part);
 
@@ -877,7 +877,7 @@
                 QJsonObject obj;
 		obj.insert("h_name", prod->hops.at(i).h_name);
                 obj.insert("h_origin", prod->hops.at(i).h_origin);
-		obj.insert("h_amount", round(prod->hops.at(i).h_amount * 10000) / 10000);
+		obj.insert("h_amount", round(prod->hops.at(i).h_amount * 100000) / 100000);
 		obj.insert("h_cost", round(prod->hops.at(i).h_cost * 100) / 100);
 		obj.insert("h_type", prod->hops.at(i).h_type);
 		obj.insert("h_form", prod->hops.at(i).h_form);
@@ -906,7 +906,7 @@
         for (int i = 0; i < prod->miscs.size(); i++) {
                 QJsonObject obj;
 		obj.insert("m_name", prod->miscs.at(i).m_name);
-		obj.insert("m_amount", round(prod->miscs.at(i).m_amount * 10000) / 10000);
+		obj.insert("m_amount", round(prod->miscs.at(i).m_amount * 100000) / 100000);
 		obj.insert("m_type", prod->miscs.at(i).m_type);
 		obj.insert("m_use_use", prod->miscs.at(i).m_use_use);
 		obj.insert("m_time", round(prod->miscs.at(i).m_time));
@@ -929,7 +929,7 @@
 		obj.insert("y_name", prod->yeasts.at(i).y_name);
 		obj.insert("y_laboratory", prod->yeasts.at(i).y_laboratory);
 		obj.insert("y_product_id", prod->yeasts.at(i).y_product_id);
-		obj.insert("y_amount", round(prod->yeasts.at(i).y_amount * 10000) / 10000);
+		obj.insert("y_amount", round(prod->yeasts.at(i).y_amount * 100000) / 100000);
 		obj.insert("y_type", prod->yeasts.at(i).y_type);
 		obj.insert("y_form", prod->yeasts.at(i).y_form);
 		obj.insert("y_min_temperature", round(prod->yeasts.at(i).y_min_temperature * 10) / 10);

mercurial