346 ((product->inventory_reduced <= PROD_STAGE_PACKAGE) && (product->fermentables.at(i).added == FERMENTABLE_ADDED_KEGS))) && |
343 ((product->inventory_reduced <= PROD_STAGE_PACKAGE) && (product->fermentables.at(i).added == FERMENTABLE_ADDED_KEGS))) && |
347 product->fermentables.at(i).inventory < product->fermentables.at(i).amount) { |
344 product->fermentables.at(i).inventory < product->fermentables.at(i).amount) { |
348 product->fermentables_ok = false; |
345 product->fermentables_ok = false; |
349 } |
346 } |
350 } |
347 } |
351 qDebug() << " adjust to 100" << product->fermentables_use100; |
348 // qDebug() << " adjust to 100" << product->fermentables_use100; |
352 qDebug() << " supplies" << product->fermentables_ok; |
349 // qDebug() << " supplies" << product->fermentables_ok; |
353 qDebug() << " colort" << colort << "colorh" << colorh << "colorn" << colorn; |
350 // qDebug() << " colort" << colort << "colorh" << colorh << "colorn" << colorn; |
354 qDebug() << " psugar" << psugar << "pcara" << pcara << "mvol" << mvol; |
351 // qDebug() << " psugar" << psugar << "pcara" << pcara << "mvol" << mvol; |
355 qDebug() << " sugarsf" << sugarsf << "sugarsm" << sugarsm; |
352 // qDebug() << " sugarsf" << sugarsf << "sugarsm" << sugarsm; |
356 |
353 |
357 double v = s / sugardensity + mvol; |
354 double v = s / sugardensity + mvol; |
358 s = 1000 * s / (v * 10); //deg. Plato |
355 s = 1000 * s / (v * 10); //deg. Plato |
359 product->est_mash_sg = Utils::plato_to_sg(s); |
356 product->est_mash_sg = Utils::plato_to_sg(s); |
360 ui->brew_mashsgShow->setValue(product->est_mash_sg); |
357 ui->brew_mashsgShow->setValue(product->est_mash_sg); |
361 |
358 |
362 /* Estimate total recipe OG */ |
359 /* Estimate total recipe OG */ |
363 product->est_og = Utils::estimate_sg(sugarsf + addedS, product->batch_size); |
360 product->est_og = Utils::estimate_sg(sugarsf + addedS, product->batch_size); |
364 qDebug() << " OG" << ui->est_ogEdit->value() << product->est_og; |
361 // qDebug() << " OG" << ui->est_ogEdit->value() << product->est_og; |
365 if (product->stage > PROD_STAGE_BREW) { |
362 if (product->stage > PROD_STAGE_BREW) { |
366 ui->est_ogLabel->setText(tr("Final OG:")); |
363 ui->est_ogLabel->setText(tr("Final OG:")); |
367 ui->est_ogEdit->setValue(product->og); |
364 ui->est_ogEdit->setValue(product->og); |
368 ui->est_ogShow->setValue(product->og); |
365 ui->est_ogShow->setValue(product->og); |
369 } else { |
366 } else { |
378 ui->brew_aboilsgShow->setValue(product->est_og3); |
375 ui->brew_aboilsgShow->setValue(product->est_og3); |
379 |
376 |
380 /* Estimate SG in kettle before boil */ |
377 /* Estimate SG in kettle before boil */ |
381 product->preboil_sg = Utils::estimate_sg(sugarsm, product->boil_size); |
378 product->preboil_sg = Utils::estimate_sg(sugarsm, product->boil_size); |
382 ui->brew_preboilsgShow->setValue(product->preboil_sg); |
379 ui->brew_preboilsgShow->setValue(product->preboil_sg); |
383 qDebug() << " preboil SG" << product->preboil_sg; |
380 // qDebug() << " preboil SG" << product->preboil_sg; |
384 |
381 |
385 /* |
382 /* |
386 * Recalculate volumes |
383 * Recalculate volumes |
387 */ |
384 */ |
388 double aboil_volume = product->batch_size; |
385 double aboil_volume = product->batch_size; |
456 } else { |
453 } else { |
457 cw = colort / product->batch_size * 8.34436; |
454 cw = colort / product->batch_size * 8.34436; |
458 color = Utils::kw_to_ebc(product->color_method, cw); |
455 color = Utils::kw_to_ebc(product->color_method, cw); |
459 //qDebug() << " oud EBC" << color << "new EBC" << Utils::kw_to_newebc(product->color_method, cw) << "SRM" << Utils::kw_to_srm(product->color_method, cw); |
456 //qDebug() << " oud EBC" << color << "new EBC" << Utils::kw_to_newebc(product->color_method, cw) << "SRM" << Utils::kw_to_srm(product->color_method, cw); |
460 } |
457 } |
461 qDebug() << " color" << ui->est_colorEdit->value() << color << product->est_color; |
458 //qDebug() << " color" << ui->est_colorEdit->value() << color << product->est_color; |
462 product->est_color = color; |
459 product->est_color = color; |
463 ui->est_color2Edit->setValue(color); |
460 ui->est_color2Edit->setValue(color); |
464 ui->est_color2Edit->setStyleSheet(Utils::ebc_to_style(color)); |
461 ui->est_color2Edit->setStyleSheet(Utils::ebc_to_style(color)); |
465 if (product->stage > PROD_STAGE_BREW) { |
462 if (product->stage > PROD_STAGE_BREW) { |
466 ui->est_colorLabel->setText(tr("Final EBC:")); |
463 ui->est_colorLabel->setText(tr("Final EBC:")); |
479 ui->perc_mashShow->setValue(round(product->mashs_kg / product->eq_mash_max * 100)); |
476 ui->perc_mashShow->setValue(round(product->mashs_kg / product->eq_mash_max * 100)); |
480 ui->mash_kgEdit->setValue(product->mashs_kg); |
477 ui->mash_kgEdit->setValue(product->mashs_kg); |
481 ui->perc_sugarsShow->setValue(round(psugar)); |
478 ui->perc_sugarsShow->setValue(round(psugar)); |
482 ui->perc_caraShow->setValue(round(pcara)); |
479 ui->perc_caraShow->setValue(round(pcara)); |
483 if (product->mashs_kg > 0) { |
480 if (product->mashs_kg > 0) { |
484 qDebug() << " lintner" << lintner << " mashkg" << product->mashs_kg << "final" << round(lintner / product->mashs_kg); |
481 // qDebug() << " lintner" << lintner << " mashkg" << product->mashs_kg << "final" << round(lintner / product->mashs_kg); |
485 ui->lintnerShow->setValue(round(lintner / product->mashs_kg)); |
482 ui->lintnerShow->setValue(round(lintner / product->mashs_kg)); |
486 } else { |
483 } else { |
487 qDebug() << " lintner N/A"; |
484 // qDebug() << " lintner N/A"; |
488 ui->lintnerShow->setValue(0); |
485 ui->lintnerShow->setValue(0); |
489 } |
486 } |
490 |
487 |
491 /* |
488 /* |
492 * Calculate the apparant attenuation. |
489 * Calculate the apparant attenuation. |
511 ((product->inventory_reduced <= PROD_STAGE_PACKAGE) && (product->yeasts.at(i).use == 3))) && // Bottle |
508 ((product->inventory_reduced <= PROD_STAGE_PACKAGE) && (product->yeasts.at(i).use == 3))) && // Bottle |
512 (product->yeasts.at(i).inventory < product->yeasts.at(i).amount)) { |
509 (product->yeasts.at(i).inventory < product->yeasts.at(i).amount)) { |
513 product->yeasts_ok = false; |
510 product->yeasts_ok = false; |
514 } |
511 } |
515 } |
512 } |
516 qDebug() << " est SVG" << svg; |
513 // qDebug() << " est SVG" << svg; |
517 } |
514 } |
518 if (svg == 0) |
515 if (svg == 0) |
519 svg = 77.0; |
516 svg = 77.0; |
520 ui->est_svgEdit->setValue(svg); |
517 ui->est_svgEdit->setValue(svg); |
521 |
518 |
522 if (product->mashs_kg > 0 && mashinfuse > 0 && mashtime > 0 && mashtemp > 0) |
519 if (product->mashs_kg > 0 && mashinfuse > 0 && mashtime > 0 && mashtemp > 0) |
523 product->est_fg = Utils::estimate_fg(psugar, pcara, mashinfuse / product->mashs_kg, mashtime, mashtemp, svg, product->est_og); |
520 product->est_fg = Utils::estimate_fg(psugar, pcara, mashinfuse / product->mashs_kg, mashtime, mashtemp, svg, product->est_og); |
524 else |
521 else |
525 product->est_fg = Utils::estimate_fg(psugar, pcara, 0, 0, 0, svg, product->est_og); |
522 product->est_fg = Utils::estimate_fg(psugar, pcara, 0, 0, 0, svg, product->est_og); |
526 qDebug() << " est FG" << ui->est_fgEdit->value() << product->est_fg; |
523 // qDebug() << " est FG" << ui->est_fgEdit->value() << product->est_fg; |
527 product->est_abv = Utils::abvol(product->est_og, product->est_fg); |
524 product->est_abv = Utils::abvol(product->est_og, product->est_fg); |
528 qDebug() << " est ABV" << ui->est_abvEdit->value() << product->est_abv; |
525 // qDebug() << " est ABV" << ui->est_abvEdit->value() << product->est_abv; |
529 |
526 |
530 if (product->stage > PROD_STAGE_TERTIARY) { |
527 if (product->stage > PROD_STAGE_TERTIARY) { |
531 ui->est_fgLabel->setText(tr("Final FG:")); |
528 ui->est_fgLabel->setText(tr("Final FG:")); |
532 ui->est_fgEdit->setValue(product->fg); |
529 ui->est_fgEdit->setValue(product->fg); |
533 ui->est_fgShow->setValue(product->fg); |
530 ui->est_fgShow->setValue(product->fg); |
703 if (product->locked) |
700 if (product->locked) |
704 return; |
701 return; |
705 |
702 |
706 QPushButton *pb = qobject_cast<QPushButton *>(QObject::sender()); |
703 QPushButton *pb = qobject_cast<QPushButton *>(QObject::sender()); |
707 int row = pb->objectName().toInt(); |
704 int row = pb->objectName().toInt(); |
708 qDebug() << "Delete fermentable row" << row << product->fermentables.size(); |
|
709 |
705 |
710 if (product->fermentables.size() < 1) |
706 if (product->fermentables.size() < 1) |
711 return; |
707 return; |
712 |
708 |
713 int rc = QMessageBox::warning(this, tr("Delete fermentable"), tr("Delete %1").arg(product->fermentables.at(row).name), |
709 int rc = QMessageBox::warning(this, tr("Delete fermentable"), tr("Delete %1").arg(product->fermentables.at(row).name), |
853 for (int i = 0; i < product->fermentables.size(); i++) { |
849 for (int i = 0; i < product->fermentables.size(); i++) { |
854 product->fermentables[i].adjust_to_total_100 = false; |
850 product->fermentables[i].adjust_to_total_100 = false; |
855 } |
851 } |
856 product->fermentables[product->fermentables_row].adjust_to_total_100 = true; |
852 product->fermentables[product->fermentables_row].adjust_to_total_100 = true; |
857 } else { |
853 } else { |
858 qDebug() << "bug"; |
854 qWarning() << "ferment_to100_changed(" << val << ") bug triggered"; |
859 return; |
855 return; |
860 } |
856 } |
861 |
857 |
862 for (int i = 0; i < product->fermentables.size(); i++) { |
858 for (int i = 0; i < product->fermentables.size(); i++) { |
863 to100Fermentables(i); |
859 to100Fermentables(i); |