Sat, 23 Feb 2019 19:55:42 +0100
ABV calculation uses Daniels method. sg_to_plato and plato_to_sg functions use brewersfriend calculation. Added sg_to_brix and brix_to_sg functions. Make brewdate tab read only when the primary fermentation is ready. Brix aid input functions for primary end sg and final sg fields. Added tooltips on the fermentation tab. Changes in the layout of the fermentation tab.
<?php require_once('config.php'); #Connect to the database $connect = mysqli_connect(DBASE_HOST, DBASE_USER, DBASE_PASS, DBASE_NAME); if (! $connect) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } mysqli_set_charset($connect, "utf8" ); if (isset($_POST['reduce']) && isset($_POST['uuid'])) { $sql1 = "SELECT * FROM products WHERE uuid = '" . $_POST['uuid'] . "';"; } else { exit; } //syslog(LOG_NOTICE, $sql1); $result1 = mysqli_query($connect, $sql1) or die("SQL Error 1: " . mysqli_error($connect)); while ($row = mysqli_fetch_array($result1, MYSQLI_ASSOC)) { if ($row['stage'] < 6) { syslog(LOG_NOTICE, "code: " . $row['code'] . " cannot reduce inventory, not yet packaged."); exit; } if ($row['inventory_reduced']) { syslog(LOG_NOTICE, "code: " . $row['code'] . " cannot reduce inventory, already reduced."); exit; } syslog(LOG_NOTICE, "Start reducing inventory from ". $row['code'].' '.$row['name']); $fermentables = json_decode($row['json_fermentables'], true); for ($i = 0; $i < count($fermentables); $i++) { $sql2 = "UPDATE inventory_fermentables SET inventory = inventory - " . $fermentables[$i]['f_amount']; $sql2 .= " WHERE name='" . mysqli_real_escape_string($connect, $fermentables[$i]['f_name']); $sql2 .= "' AND origin='" . mysqli_real_escape_string($connect, $fermentables[$i]['f_origin']); $sql2 .= "' AND supplier='" . mysqli_real_escape_string($connect, $fermentables[$i]['f_supplier']); $sql2 .= "' AND inventory >= " . $fermentables[$i]['f_amount']; $sql2 .= " LIMIT 1;"; // syslog(LOG_NOTICE, $sql2); $result2 = mysqli_query($connect, $sql2); $ar = mysqli_affected_rows($connect); if ($ar == 1) { syslog(LOG_NOTICE, "Reduced fermentable `".$fermentables[$i]['f_name']."' from `".$fermentables[$i]['f_supplier']."' with ".$fermentables[$i]['f_amount']." kg"); } else if ($ar == 0) { $sql2 = "UPDATE inventory_fermentables SET inventory = 0"; $sql2 .= " WHERE name='" . mysqli_real_escape_string($connect, $fermentables[$i]['f_name']); $sql2 .= "' AND origin='" . mysqli_real_escape_string($connect, $fermentables[$i]['f_origin']); $sql2 .= "' AND supplier='" . mysqli_real_escape_string($connect, $fermentables[$i]['f_supplier']); $sql2 .= "' AND inventory < " . $fermentables[$i]['f_amount']; $sql2 .= " LIMIT 1;"; // syslog(LOG_NOTICE, $sql2); $result2 = mysqli_query($connect, $sql2); $ar = mysqli_affected_rows($connect); if ($ar == 1) { syslog(LOG_NOTICE, "Reduced fermentable `".$fermentables[$i]['f_name']."' from `".$fermentables[$i]['f_supplier']."' to 0 kg"); } else if ($ar == 0) { syslog(LOG_NOTICE, "Reduced fermentable `".$fermentables[$i]['f_name']."' from `".$fermentables[$i]['f_supplier']."' failed"); } // syslog(LOG_NOTICE, "affected rows: ".$ar); } } $hops = json_decode($row['json_hops'], true); for ($i = 0; $i < count($hops); $i++) { $sql2 = "UPDATE inventory_hops SET inventory = inventory - " . $hops[$i]['h_amount']; $sql2 .= " WHERE name='" . mysqli_real_escape_string($connect, $hops[$i]['h_name']); $sql2 .= "' AND origin='" . mysqli_real_escape_string($connect, $hops[$i]['h_origin']); $sql2 .= "' AND form=" . $hops[$i]['h_form']; $sql2 .= " AND inventory >= " . $hops[$i]['h_amount'] . " LIMIT 1;"; // syslog(LOG_NOTICE, $sql2); $result2 = mysqli_query($connect, $sql2); $ar = mysqli_affected_rows($connect); if ($ar == 1) { syslog(LOG_NOTICE, "Reduced hop `".$hops[$i]['h_name']."' from `".$hops[$i]['h_origin']."' with ".$hops[$i]['h_amount']." kg"); } else if ($ar == 0) { $sql2 = "UPDATE inventory_hops SET inventory = 0"; $sql2 .= " WHERE name='" . mysqli_real_escape_string($connect, $hops[$i]['h_name']); $sql2 .= "' AND origin='" . mysqli_real_escape_string($connect, $hops[$i]['h_origin']); $sql2 .= "' AND form=" . $hops[$i]['h_form']; $sql2 .= " AND inventory < " . $hops[$i]['h_amount'] . " LIMIT 1;"; // syslog(LOG_NOTICE, $sql2); $result2 = mysqli_query($connect, $sql2); $ar = mysqli_affected_rows($connect); if ($ar == 1) { syslog(LOG_NOTICE, "Reduced hop `".$hops[$i]['h_name']."' from `".$hops[$i]['h_origin']."' to 0 kg"); } else if ($ar == 0) { syslog(LOG_NOTICE, "Reduced hop `".$hops[$i]['h_name']."' from `".$hops[$i]['h_origin']."' failed"); } } } $miscs = json_decode($row['json_miscs'], true); for ($i = 0; $i < count($miscs); $i++) { $sql2 = "UPDATE inventory_miscs SET inventory = inventory - " . $miscs[$i]['m_amount']; $sql2 .= " WHERE name='" . mysqli_real_escape_string($connect, $miscs[$i]['m_name']); $sql2 .= "' AND inventory >= " . $miscs[$i]['m_amount'] . " LIMIT 1;"; // syslog(LOG_NOTICE, $sql2); $result2 = mysqli_query($connect, $sql2); $ar = mysqli_affected_rows($connect); if ($ar == 1) { syslog(LOG_NOTICE, "Reduced misc `".$miscs[$i]['m_name']."' with ".$miscs[$i]['m_amount']); } else if ($ar == 0) { $sql2 = "UPDATE inventory_miscs SET inventory = 0"; $sql2 .= " WHERE name='" . mysqli_real_escape_string($connect, $miscs[$i]['m_name']); $sql2 .= "' AND inventory < " . $miscs[$i]['m_amount'] . " LIMIT 1;"; // syslog(LOG_NOTICE, $sql2); $result2 = mysqli_query($connect, $sql2); $ar = mysqli_affected_rows($connect); if ($ar == 1) { syslog(LOG_NOTICE, "Reduced misc `".$miscs[$i]['m_name']."' to 0"); } else if ($ar == 0) { syslog(LOG_NOTICE, "Reduced misc `".$miscs[$i]['m_name']."' failed"); } } } $yeasts = json_decode($row['json_yeasts'], true); for ($i = 0; $i < count($yeasts); $i++) { $sql2 = "UPDATE inventory_yeasts SET inventory = inventory - " . $yeasts[$i]['y_amount']; $sql2 .= " WHERE name='" . mysqli_real_escape_string($connect, $yeasts[$i]['y_name']); $sql2 .= "' AND laboratory='" . mysqli_real_escape_string($connect, $yeasts[$i]['y_laboratory']); $sql2 .= "' AND product_id='" . mysqli_real_escape_string($connect, $yeasts[$i]['y_product_id']); $sql2 .= "' AND form=" . $yeasts[$i]['y_form']; $sql2 .= " AND inventory >= " . $yeasts[$i]['y_amount'] . " LIMIT 1;"; // syslog(LOG_NOTICE, $sql2); $result2 = mysqli_query($connect, $sql2); $ar = mysqli_affected_rows($connect); if ($ar == 1) { syslog(LOG_NOTICE, "Reduced yeast `".$yeasts[$i]['y_product_id'].' '.$yeasts[$i]['y_name']."' from `".$yeasts[$i]['y_laboratory']."' with ".$yeasts[$i]['y_amount']); } else if ($ar == 0) { $sql2 = "UPDATE inventory_yeasts SET inventory = 0"; $sql2 .= " WHERE name='" . mysqli_real_escape_string($connect, $yeasts[$i]['y_name']); $sql2 .= "' AND laboratory='" . mysqli_real_escape_string($connect, $yeasts[$i]['y_laboratory']); $sql2 .= "' AND product_id='" . mysqli_real_escape_string($connect, $yeasts[$i]['y_product_id']); $sql2 .= "' AND form=" . $yeasts[$i]['y_form']; $sql2 .= " AND inventory < " . $yeasts[$i]['y_amount'] . " LIMIT 1;"; // syslog(LOG_NOTICE, $sql2); $result2 = mysqli_query($connect, $sql2); $ar = mysqli_affected_rows($connect); if ($ar == 1) { syslog(LOG_NOTICE, "Reduced yeast `".$yeasts[$i]['y_product_id'].' '.$yeasts[$i]['y_name']."' from `".$yeasts[$i]['y_laboratory']."' to 0"); } else if ($ar == 0) { syslog(LOG_NOTICE, "Reduced yeast `".$yeasts[$i]['y_product_id'].' '.$yeasts[$i]['y_name']."' from `".$yeasts[$i]['y_laboratory']."' failed"); } } } if ($row['w1_name'] != '') { $sql2 = "UPDATE inventory_waters SET inventory = inventory - ".$row['w1_amount']; $sql2 .= " WHERE name='" . mysqli_real_escape_string($connect, $row['w1_name']); $sql2 .= "' AND unlimited_stock=0 AND inventory >= ".$row['w1_amount']." LIMIT 1;"; // syslog(LOG_NOTICE, $sql2); $result2 = mysqli_query($connect, $sql2); $ar = mysqli_affected_rows($connect); if ($ar == 1) { syslog(LOG_NOTICE, "Reduced water `".$row['w1_name']."' with ".$row['w1_amount']." liter"); } else if ($ar == 0) { $sql2 = "UPDATE inventory_waters SET inventory = 0"; $sql2 .= " WHERE name='" . mysqli_real_escape_string($connect, $row['w1_name']); $sql2 .= "' AND unlimited_stock=0 AND inventory < ".$row['w1_amount']." LIMIT 1;"; // syslog(LOG_NOTICE, $sql2); $result2 = mysqli_query($connect, $sql2); $ar = mysqli_affected_rows($connect); if ($ar == 1) { syslog(LOG_NOTICE, "Reduced water `".$row['w1_name']."' to 0 liters"); } else { syslog(LOG_NOTICE, "Reduced water `".$row['w1_name']."' failed or tapwater"); } } } if ($row['w2_name'] != '') { $sql2 = "UPDATE inventory_waters SET inventory = inventory - ".$row['w2_amount']; $sql2 .= " WHERE name='" . mysqli_real_escape_string($connect, $row['w2_name']); $sql2 .= "' AND unlimited_stock=0 AND inventory >= ".$row['w2_amount']." LIMIT 1;"; // syslog(LOG_NOTICE, $sql2); $result2 = mysqli_query($connect, $sql2); $ar = mysqli_affected_rows($connect); if ($ar == 1) { syslog(LOG_NOTICE, "Reduced water `".$row['w2_name']."' with ".$row['w2_amount']." liter"); } else if ($ar == 0) { $sql2 = "UPDATE inventory_waters SET inventory = 0"; $sql2 .= " WHERE name='" . mysqli_real_escape_string($connect, $row['w2_name']); $sql2 .= "' AND unlimited_stock=0 AND inventory < ".$row['w2_amount']." LIMIT 1;"; // syslog(LOG_NOTICE, $sql2); $result2 = mysqli_query($connect, $sql2); $ar = mysqli_affected_rows($connect); if ($ar == 1) { syslog(LOG_NOTICE, "Reduced water `".$row['w2_name']."' to 0 liters"); } else { syslog(LOG_NOTICE, "Reduced water `".$row['w2_name']."' failed or tapwater"); } } } syslog(LOG_NOTICE, "Finished reducing inventory from ". $row['code'].' '.$row['name']); mysqli_free_result($result1); $sql1 = "UPDATE products SET inventory_reduced=1 WHERE uuid = '" . $_POST['uuid'] . "';"; //syslog(LOG_NOTICE, $sql1); $result1 = mysqli_query($connect, $sql1); $ar = mysqli_affected_rows($connect); } exit(0);