www/prod_forum.php

Sat, 11 May 2019 23:13:40 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 11 May 2019 23:13:40 +0200
changeset 358
3be8c2278fd7
parent 357
74d56bed75b9
child 392
544d7d0183b2
permissions
-rw-r--r--

Added flags for each ingredient group for the supplies state. On the main screen show the state of the supplies if the product stage is not yet packaged. Calculate the state of the supplies for fermentables, hops, yeasts and miscs. In the grids don't show the inventory values after they are used and reduced. On the fermentables tab show the weight of the grains to mash.

<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/includes/global.inc.php');
require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php');


$link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
if (! $link) {
	die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
}
if (! mysqli_set_charset($link, "utf8" )) {
	echo "error";
	return 1;
}

setlocale ( LC_ALL, 'nl_NL.UTF-8');
$record = $_GET["record"];
$result = mysqli_query($link, "SELECT * FROM products WHERE record='".$record."'");
$row = mysqli_fetch_array($result);

$preboil_sg = 0;
date_default_timezone_set('Europe/Amsterdam');
$prdate = date(DATE_RFC2822);

?>
<!DOCTYPE html>
<html lang=nl-NL>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <title>BMS v<?php echo $my_version;?> - Export recipe</title>
  <meta name="viewport" content="width=device-width, initial-scale=1 maximum-scale=1 minimum-scale=1" />
 </head>
 <body>
  <pre>
<?php

$recipetype  = array( 'Extract', 'Deelmaisch', 'Mout' );
$colormethod = array( 'Morey', 'Mosher', 'Daniels' );
$ibumethod   = array( 'Tinseth', 'Rager', 'Daniels' );
$added       = array( 'Maischen', 'Koken', 'Vergisten', 'Nagisten/lageren', 'Bottelen' );
$hopform     = array( 'Pellets', 'Plugs', 'Bellen', 'Hop nat' );
$hopuse      = array( 'Maischen', 'First wort', 'Koken', 'Vlamuit', 'Whirlpool', 'Koudhop' );
$misctype    = array( 'Specerij', 'Kruid', 'Smaakstof', 'Klaringsmiddel', 'Brouwzout', 'Gistvoeding', 'Anders' );
$miscuse     = array( 'Starter', 'Maischen', 'Koken', 'Hoofdvergisting', 'Nagisting/lagering', 'Bottelen' );
$yeastform   = array( 'Vloeibaar', 'Droog', 'Schuine buis', 'Slurry', 'Ingevroren', 'Depot' );
$yeastuse    = array( 'Hoofdgisting', 'Nagisting', 'Lagering', 'Bottelen' );
$steptype    = array( 'Infusie', 'Directe verwarming', 'Decoctie' );
$acidtype    = array( 'Melkzuur', 'Zoutzuur', 'Fosforzuur', 'Zwavelzuur' );


function itemline($item, $content) {

	echo $item . " ";
	for ($i = strlen($item); $i < 40; $i++)
		echo ".";	
	echo ": " . $content . PHP_EOL;
}


function formatstr($strin, $len) {

	$strout = null;
	$cnt = 0;

        for ($i = 0; $i < strlen($strin); $i++) {
                $ord = ord($strin[$i]);
		if ($ord != 195)
			$cnt++;

                switch ($strin[$i]) {
                        case '<':
                                        $strout .= '&lt;';
                                        break;
                        case '>':
                                        $strout .= '&gt;';
                                        break;
                        case '&':
                                        $strout .= '&amp;';
                                        break;
                        case '"':
                                        $strout .= '&quot;';
                                        break;
                        default:
                                        $strout .= $strin[$i];
        	}

		if ($cnt >= $len)
			break;
        }

	for ($i = $cnt; $i < $len; $i++)
		$strout .= " ";
        return $strout;
}


echo "BMS v" . $my_version . " - Datum export: " . $prdate . PHP_EOL;
echo "----------------------------------------------------------" . PHP_EOL;
itemline("Bier naam", $row['code'].' '.$row['name']);
itemline("Bier stijl", $row['st_name']);
itemline("Recept type", $recipetype[$row['type']]);
itemline("Batch grootte", $row['batch_size'].' liter');
itemline("Kooktijd", $row['boil_time'].' minuten');
itemline("Brouwzaal rendement", $row['efficiency'].' %');
itemline("Geschatte begin densiteit", sprintf("%.3f",$row['est_og']).' SG/ '.sprintf("%.1f", sg_to_plato($row['est_og'])).'&deg;P');
itemline("Geschatte eind densiteit", sprintf("%.3f",$row['est_fg']).' SG/ '.sprintf("%.1f", sg_to_plato($row['est_fg'])).'&deg;P');
itemline("Geschat alcohol", sprintf("%.1f",$row['est_abv']).'% vol');
itemline("Kleur (" . $colormethod[$row['color_method']] . ")", $row['est_color'] . ' EBC');
itemline("Bitterheid (" . $ibumethod[$row['ibu_method']] . ")", $row['est_ibu'] . ' IBU');
echo PHP_EOL . PHP_EOL;

$sugarsm = 0;
$grainabsorbtion = 0;
$mashwater = 0;

$arr = json_decode($row['json_fermentables'], true);
echo "Mout, granen en suikers                  EBC Gewicht kg     % Gebruik tijdens" . PHP_EOL;
echo "---------------------------------------- --- ---------- ----- ----------------" . PHP_EOL;
foreach($arr as $item) {
	$name = formatstr($item['f_name'] . " (" . $item['f_supplier'] . ")", 40);
	$amount   = floatval($item['f_amount']);
	$d = $amount * (floatval($item['f_yield']) / 100) * (1 - floatval($item['f_moisture']) / 100);
        if ($item['f_added']  == 0) {
        	$d = floatval($row['efficiency']) / 100 * $d;
                $sugarsm += $d;
		$grainabsorbtion += $item['f_amount'];
        }
	echo sprintf("%s %3.0f %10.3f %5.1f ", $name, floatval($item['f_color']), $amount, floatval($item['f_percentage']));
	echo $added[$item['f_added']] . PHP_EOL;
}
$preboil_sg = estimate_sg($sugarsm, floatval($row['boil_size']));
echo PHP_EOL . PHP_EOL;


echo "Hop                                      Vorm      &alpha; %   IBU   Gram Toevoegen moment" . PHP_EOL;
echo "---------------------------------------- ------- ----- ----- ------ --------------------" . PHP_EOL;
$arr = json_decode($row['json_hops'], true);
foreach($arr as $item) {
	$name   = formatstr($item['h_name'] . " (" . $item['h_origin'] . ")", 40);
	$amount = floatval($item['h_amount']) * 1000;
	$time   = floatval($item['h_time']);
        $alpha  = floatval($item['h_alpha']);
	$ibu    = calc_IBU($item['h_useat'], $item['h_form'], $preboil_sg, floatval($row['batch_size']), $amount, $time, $alpha, $row['ibu_method']);
	$moment = $hopuse[$item['h_useat']];
        if ($item['h_useat'] == 2) {    // Boil
        	$moment = "Kook ".$time." minuten";
        }

	echo sprintf("%s %-7s %5.1f %5.1f %6.1f %-20s", $name, $hopform[$item['h_form']], $alpha, $ibu, $amount, $moment);
	echo PHP_EOL;
}
echo PHP_EOL . PHP_EOL;

echo "Specerij, kruid, brouwzout etc Type grondstof  Gebruik tijdens          Hoeveel" . PHP_EOL;
echo "------------------------------ --------------- -------------------- -----------" . PHP_EOL;
$arr = json_decode($row['json_miscs'], true);
foreach($arr as $item) {
	$amount  = floatval($item['m_amount']) * 1000;
	$aiw     = $item['m_amount_is_weight'];
	$use_use = $item['m_use_use'];
	$time    = floatval($item['m_time']);

	if ($use_use == 2)      // Boil
        	$gebruik = sprintf("%s %d min",$miscuse[$use_use],$time);
        else
        	$gebruik = $miscuse[$use_use];
	$hoeveel = sprintf("%.2f %s",$amount,$aiw ? "gr":"ml");

	echo sprintf("%s %-15s %-20s %11s", formatstr($item['m_name'], 30), $misctype[$item['m_type']], $gebruik, $hoeveel) . PHP_EOL;
}
echo PHP_EOL . PHP_EOL;

echo "Gistlab en code      Omschrijving                   Gebruik      Vorm            Hoeveel" . PHP_EOL;
echo "-------------------- ------------------------------ ------------ ------------ ----------" . PHP_EOL;
$arr = json_decode($row['json_yeasts'], true);
foreach($arr as $item) {
	$name    = formatstr($item['y_name'], 30);
	$product = formatstr($item['y_laboratory']." ".$item['y_product_id'], 20);

	if ($item['y_form'] == 0)       // Liquid
                $amount = sprintf("%.0f",floatval($item['y_amount']))." pak";
        else if ($item['y_form'] == 1)  // Dry
                $amount = sprintf("%.1f",floatval($item['y_amount'])*1000)." gr";
        else
                $amount = sprintf("%.0f",floatval($item['y_amount'])*1000)." ml";

	echo sprintf("%s %s %-12s %-12s %10s", $product, $name, $yeastuse[$item['y_use']], $yeastform[$item['y_form']], $amount) . PHP_EOL;
}
if ($row['starter_enable'] && $row['prop1_volume']) {
	$sv = 0;
	for ($i = 1; $i < 5; $i++) {
		$pv = "prop".$i."_volume";
		if (floatval($row[$pv]) && (floatval($row[$pv]) > $sv)) {
			$sv = floatval($row[$pv]);
		}
	}
	echo PHP_EOL . "Maak een giststarter van " . sprintf("%.1f", $sv) . " liter." . PHP_EOL;
}
echo PHP_EOL . PHP_EOL;

if ($row['w1_name'])
	$mashwater += floatval($row['w1_amount']);
if ($row['w2_name'])
	$mashwater += floatval($row['w2_amount']);

echo "Maisch stap          stap type              stap temp    rusten  opwarmen" . PHP_EOL;
echo "-------------------- ---------------------- --------- --------- ---------" . PHP_EOL;
$arr = json_decode($row['json_mashs'], true);
foreach($arr as $item) {
	
	if ($item['step_type'] == 1) {
		$stype = formatstr($steptype[$item['step_type']], 22);
	} else {
		$stype = formatstr($steptype[$item['step_type']].' '.sprintf("%.1f", $item['step_infuse_amount']).' liter', 22);
	}
	echo sprintf("%s %s %s %s %s", 
		formatstr($item['step_name'], 20), $stype, sprintf("%6.1f &deg;C", $item['step_temp']),
		sprintf("%4.0f min.", $item['step_time']), sprintf("%4.0f min.", $item['ramp_time'])) . PHP_EOL;
}
echo PHP_EOL;
if ($row['w1_name'] && $row['w2_name']) {
	itemline("Maischwater 1", sprintf("%.1f",floatval($row['w1_amount'])).' liter water '.$row['w1_name']);
	itemline("Maischwater 2", sprintf("%.1f",floatval($row['w2_amount'])).' liter water '.$row['w2_name']);
} else {
	itemline("Maischwater", sprintf("%.1f",floatval($row['w1_amount'])).' liter water '.$row['w1_name']);
}
itemline("Maischwater aanzuren tot pH", $row['mash_ph'].' pH');
$spoelw = ($row['boil_size'] - $mashwater + $grainabsorbtion + $row['eq_lauter_deadspace']) * 1.03;     // A small heat correction
itemline("Spoelwater geschat", sprintf("%.1f", $spoelw)." liter");
itemline("Spoelwater temperatuur", $row['sparge_temp'].' &deg;C');
itemline("Spoelwater aanzuren tot pH", sprintf("%.1f",$row['sparge_ph']).' pH');
echo PHP_EOL . PHP_EOL;


?>
  </pre>
 </body>
</html>

mercurial