www/rec_print.php

changeset 83
85521c6e0022
parent 80
75b9227fb98c
child 84
3e5e87f1818d
--- a/www/rec_print.php	Thu Nov 08 20:30:32 2018 +0100
+++ b/www/rec_print.php	Sat Nov 10 17:23:53 2018 +0100
@@ -1,26 +1,36 @@
 <?php
 require_once($_SERVER['DOCUMENT_ROOT'].'/includes/global.inc.php');
+require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php');
 require_once($_SERVER['DOCUMENT_ROOT'].'/fpdf/fpdf.php');
 
-define('EURO', chr(128) );
 
 $link = mysqli_connect(DBASE_HOST,DBASE_USER,DBASE_PASS,DBASE_NAME);
-//mysqli_set_charset($link, "utf8" );
+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 recipes WHERE record='".$record."'");
 $row = mysqli_fetch_array($result);
 
+$total_fermentables = 0.0;
+$cost_fermentables = 0.0;
+$total_hops = 0.0;
+$cost_hops = 0.0;
+$cost_yeasts = 0.0;
+$cost_miscs = 0.0;
+
 
 class PDF_MySQL_Table extends FPDF
 {
 	protected $ProcessingTable=false;
 	protected $aCols=array();
 	protected $TableX;
-	protected $HeaderColor;
-	protected $RowColors;
-	protected $TotalColor;
-	protected $ColorIndex;
 
 	function Header() {
 		// Print the table header if necessary
@@ -31,7 +41,7 @@
 	function TableHeader() {
 		$this->SetFont('Helvetica','B',9);
 		$this->SetX($this->TableX);
-		$this->SetFillColor($this->HeaderColor[0],$this->HeaderColor[1],$this->HeaderColor[2]);
+		$this->SetFillColor(255,150,100);
 		foreach($this->aCols as $col)
 			$this->Cell($col['w'],5,$col['c'],0,0,$col['a'],true);
 		$this->Ln();
@@ -41,23 +51,20 @@
 		$this->aCols[]=array('c'=>$caption,'w'=>$width,'a'=>$align);
 	}
 
-	function TableGlobal($row,$prop) {
+	function TableGlobal($row) {
 		/* 2 Columns */
 		$vul = $this->w - $this->rMargin - $this->lMargin - 170;
 		$cMargin=$this->cMargin;
-		$this->cMargin=$prop['padding'];
+		$this->cMargin=2;
 		$this->TableX=$this->lMargin;
-		$this->HeaderColor=$prop['HeaderColor'];
-		$this->TotalColor=$prop['TotalColor'];
-		$this->RowColors=array($prop['color1'],$prop['color2']);
-		$this->SetFont('Helvetica','B',11);
+		$this->SetFont('Helvetica','B',9);
 		$this->SetX($this->TableX);
-		$this->SetFillColor($this->HeaderColor[0],$this->HeaderColor[1],$this->HeaderColor[2]);
-		$this->Cell(0, 6, 'Recept overzicht',0,0,'C',true);
+		$this->SetFillColor(255,150,100);
+		$this->Cell(0, 5, 'Recept overzicht',0,0,'C',true);
 		$this->Ln();
 
 		$this->SetFont('Helvetica','',9);
-		$this->SetFillColor($this->RowColors[0][0],$this->RowColors[0][1],$this->RowColors[0][2]);
+		$this->SetFillColor(210,245,255);
 
 		$this->SetX($this->TableX);
 		$this->Cell(35,5,'Type',0,0,'L',true);
@@ -101,8 +108,11 @@
 
 		$this->SetX($this->TableX);
 		$this->Cell(35,5,'Kleur ('.$row['color_method'].')',0,0,'L',true);
+		$beercolor = ebc_to_color($row['est_color']);
+		$this->SetFillColor($beercolor[0],$beercolor[1],$beercolor[2]);
 		$this->Cell(25,5,$row['est_color'].' EBC',0,0,'L',true);
 		$this->Cell(25,5,'('.$row['st_color_min'].' - '.$row['st_color_max'].' EBC)',0,0,'L',true);
+		$this->SetFillColor(210,245,255);
 		$this->Cell($vul,5,'',0,0,'L',false);
 		$this->Cell(35,5,'Bitterheid ('.$row['ibu_method'].')',0,0,'L',true);
 		$this->Cell(25,5,sprintf("%.0f",$row['est_ibu']).' IBU',0,0,'L',true);
@@ -112,31 +122,32 @@
 		$this->cMargin=$cMargin;
 	}
 
-	function TableFermentables($row,$prop) {
-		 $vul = $this->w - $this->rMargin - $this->lMargin - 130;
+	function TableFermentables($row) {
+		global $cost_fermentables;
+		global $total_fermentables;
+		$vul = $this->w - $this->rMargin - $this->lMargin - 130;
 		$this->AddCol($vul,'Grondstof','L');
-		$this->AddCol( 30,'Leverancier','L');
-		$this->AddCol( 15,'EBC','R');
-		$this->AddCol( 15,'Moment','L');
-		$this->AddCol( 20,'Kg','R');
-		$this->AddCol( 15,'Procent','R');
-		$this->AddCol( 15,'Opbr.','R');
-		$this->AddCol( 20,'Prijs','R');
+		$this->AddCol(30,'Leverancier','L');
+		$this->AddCol(15,'EBC','R');
+		$this->AddCol(15,'Moment','L');
+		$this->AddCol(20,'Kg','R');
+		$this->AddCol(15,'Procent','R');
+		$this->AddCol(15,'Opbr.','R');
+		$this->AddCol(20,'Prijs','R');
 
 		$cMargin=$this->cMargin;
-		$this->cMargin=$prop['padding'];
+		$this->cMargin=2;
 		$this->TableX=$this->lMargin;
 		$this->TableHeader();
-		$this->ColorIndex=0;
 		$this->ProcessingTable=true;
 
 		$this->SetFont('Helvetica','',9);
-		$this->SetFillColor($this->RowColors[0][0],$this->RowColors[0][1],$this->RowColors[0][2]);
+		$this->SetFillColor(250, 195, 65);
 
 		$arr = json_decode($row['json_fermentables'], true);
 		foreach($arr as $item) { //foreach element in $arr
-			$name     = $item['f_name'];
-			$supplier = $item['f_supplier'];
+			$name     = iconv('UTF-8','windows-1252',$item['f_name']);
+			$supplier = iconv('UTF-8','windows-1252',$item['f_supplier']);
 			$amount   = floatval($item['f_amount']);
 			$costkg   = floatval($item['f_cost']);
 			$yield    = floatval($item['f_yield']);
@@ -149,6 +160,8 @@
 			else
 				$add = $item['f_added'];
 			$cost = $amount * $costkg;
+			$cost_fermentables += $cost;
+			$total_fermentables += $amount;
 			$this->Cell($vul,5,$name,0,0,'L',true);
 			$this->Cell(30,5,$supplier,0,0,'L',true);
 			$this->Cell(15,5,sprintf("%.0f",$color),0,0,'R',true);
@@ -160,10 +173,200 @@
 			$this->Ln();
 		}
 
+		$this->SetFillColor(210,245,255);
+		$this->Cell($vul+60,5,'',0,0,'L',false);
+		$this->Cell(20,5,sprintf("%8.3f",$total_fermentables),0,0,'R',true);
+		$this->Cell(30,5,'',0,0,'L',false);
+		$this->Cell(20,5,sprintf("%8.3f",$cost_fermentables).EURO,0,0,'R',true);
+		$this->Ln();
 		$this->ProcessingTable=false;
 		$this->cMargin=$cMargin;
 		$this->aCols=array();
 	}
+
+	function TableHops($row) {
+		global $total_hops;
+		global $cost_hops;
+		$vul = $this->w - $this->rMargin - $this->lMargin - 135;
+		$this->AddCol($vul,'Hop','L');
+		$this->AddCol(35,'Land','L');
+		$this->AddCol(15,'Soort','L');
+		$this->AddCol(20,'Moment','L');
+		$this->AddCol(15,'Alpha','R');
+		$this->AddCol(12,'IBU','R');
+		$this->AddCol(18,'Gram','R');
+		$this->AddCol(20,'Prijs','R');
+
+		$cMargin=$this->cMargin;
+		$this->cMargin=2;
+		$this->TableX=$this->lMargin;
+		$this->TableHeader();
+		$this->ProcessingTable=true;
+
+		$this->SetFont('Helvetica','',9);
+		$this->SetFillColor(100, 250, 65);
+
+		$arr = json_decode($row['json_hops'], true);
+		foreach($arr as $item) { //foreach element in $arr
+			$name     = iconv('UTF-8','windows-1252',$item['h_name']);
+			$origin   = iconv('UTF-8','windows-1252',$item['h_origin']);
+			$useat    = iconv('UTF-8','windows-1252',$item['h_useat']);
+			$form     = iconv('UTF-8','windows-1252',$item['h_form']);
+			$amount   = floatval($item['h_amount']) * 1000;
+			$mass     = $amount;
+			$costkg   = floatval($item['h_cost']);
+			$time     = floatval($item['h_time']);
+			$alpha    = floatval($item['h_alpha']);
+
+			$cost = ($amount * $costkg) / 1000;
+			$cost_hops += $cost;
+			$total_hops += $amount;
+
+			$fmoment  = 1.0;
+			$moment   = "Kook@".$time;
+			if (($useat == "Dry Hop") || ($useat == "Dry hop")) {
+				$fmoment = 0.0;
+				$moment = "Dry-hop";
+			} else if ($useat == "Whirlpool") {
+				$fmoment = 0.0;
+				$moment = "Whirlpool";
+			} else if ($useat == "Mash") {
+				$fmoment = 0.7;		// Brouwhulp
+				$moment = "Maischen";
+			} else if (($useat == "First Wort") || ($useat == "First wort")) {
+				$fmoment = 1.1;		// Brouwhulp, Louis, Ozzie
+				$moment = "First wort";
+			} else if ($useat == "Aroma") {
+				$fmoment = 0.0;		// Brouwhulp 1.0 redeneert vlamuit.
+				$moment = "Vlamuit";
+			}
+
+			$pfactor  = 1.0;
+			if ($form == "Pellet") {
+				$pfactor = 1.1;
+			}
+
+			/* Tinseth only for now */
+			$AddedAlphaAcids = (($alpha / 100) * $mass * 1000) / floatval($row['batch_size']);
+			$Bigness_factor = 1.65 * pow( 0.000125, floatval($row['est_og']) - 1);
+			$BoilTime_factor = ((1 - exp(-0.04 * $time)) / 4.15);
+			$utiisation = $Bigness_factor * $BoilTime_factor;
+			$ibu = (round($utiisation * $AddedAlphaAcids * $fmoment * $pfactor * 10) / 10.0);
+
+			$this->Cell($vul,5,$name,0,0,'L',true);
+			$this->Cell(35,5,$origin,0,0,'L',true);
+			$this->Cell(15,5,$form,0,0,'L',true);
+			$this->Cell(20,5,$moment,0,0,'L',true);
+			$this->Cell(15,5,sprintf("%.1f%%",$alpha),0,0,'R',true);
+			$this->Cell(12,5,sprintf("%.1f",$ibu),0,0,'R',true);
+			$this->Cell(18,5,sprintf("%.1f",$amount),0,0,'R',true);
+			$this->Cell(20,5,sprintf("%8.3f",$cost).EURO,0,0,'R',true);
+			$this->Ln();
+		}
+
+		$this->SetFillColor(210,245,255);
+		$this->Cell($vul+97,5,'',0,0,'L',false);
+		$this->Cell(18,5,sprintf("%.1f",$total_hops),0,0,'R',true);
+		$this->Cell(20,5,sprintf("%8.3f",$cost_hops).EURO,0,0,'R',true);
+		$this->Ln();
+		$this->ProcessingTable=false;
+		$this->cMargin=$cMargin;
+		$this->aCols=array();
+	}
+
+	function TableYeasts($row) {
+		global $cost_yeasts;
+		$vul = $this->w - $this->rMargin - $this->lMargin - 140;
+		$this->AddCol(27,'Laboratorium','L');
+		$this->AddCol(18,'Product','L');
+		$this->AddCol($vul,'Gist','L');
+		$this->AddCol(20,'Gebruik','L');
+		$this->AddCol(15,'Attn','R');
+		$this->AddCol(22,'Vorm','L');
+		$this->AddCol(18,'Gram','R');
+		$this->AddCol(20,'Prijs','R');
+
+		$cMargin=$this->cMargin;
+		$this->cMargin=2;
+		$this->TableX=$this->lMargin;
+		$this->TableHeader();
+		$this->ProcessingTable=true;
+
+		$this->SetFont('Helvetica','',9);
+		$this->SetFillColor(175, 175, 255);
+		$svg = 70;	/* Conservative SVG% as default */
+
+		$arr = json_decode($row['json_yeasts'], true);
+		foreach($arr as $item) { //foreach element in $arr
+			$name       = iconv('UTF-8','windows-1252',$item['y_name']);
+			$laboratory = iconv('UTF-8','windows-1252',$item['y_laboratory']);
+			$product_id = iconv('UTF-8','windows-1252',$item['y_product_id']);
+			$form       = iconv('UTF-8','windows-1252',$item['y_form']);
+			$use        = iconv('UTF-8','windows-1252',$item['y_use']);
+			$amount     = floatval($item['y_amount']) * 1000;
+			$costg      = floatval($item['y_cost']);
+			$attenuation = floatval($item['y_attenuation']);
+			$cost        = $amount * $costg;
+			$cost_yeasts += $cost;
+
+			if ($use == "Primary") {
+				$svg = $attenuation;
+				$gebruik = 'Hoofdgist';
+			} else if ($use == "Bottle")
+				$gebruik = 'Bottelgist';
+			else
+				$gebruik = $use;
+
+			if ($form == "Liquid")
+				$vorm = 'Vloeibaar';
+			else if ($form == "Dry")
+				$vorm = 'Droog';
+			else if ($form == "Slant")
+				$vorm = 'Schuine buis';
+			else if ($form == "Culture")
+				$vorm = 'Slurry';
+			else if ($form == "Frozen")
+				$vorm = 'Ingevroren';
+			else if ($form == "Bottel")
+				$vorm = 'Depot';
+			else
+				$vorm = $form;
+
+			$this->Cell(27,5,$laboratory,0,0,'L',true);
+			$this->Cell(18,5,$product_id,0,0,'L',true);
+			$this->Cell($vul,5,$name,0,0,'L',true);
+			$this->Cell(20,5,$gebruik,0,0,'L',true);
+			$this->Cell(15,5,sprintf("%.1f%%",$attenuation),0,0,'R',true);
+			$this->Cell(22,5,$vorm,0,0,'L',true);
+			$this->Cell(18,5,sprintf("%.1f",$amount),0,0,'R',true);
+			$this->Cell(20,5,sprintf("%8.3f",$cost).EURO,0,0,'R',true);
+			$this->Ln();
+		}
+
+		$this->SetFillColor(210,245,255);
+		$this->Cell($vul+120,5,'',0,0,'L',false);
+		$this->Cell(20,5,sprintf("%8.3f",$cost_yeasts).EURO,0,0,'R',true);
+		$this->Ln();
+
+		$og = floatval($row['est_og']);
+		$fg = $og - ($svg * ($og - 1.0)) / 100;
+		$this->Cell(0,5,'FG: '.sprintf("%5.3f",$fg),0,0,'L',false);
+		$this->Ln();
+		$this->ProcessingTable=false;
+		$this->cMargin=$cMargin;
+		$this->aCols=array();
+	}
+
+	/*
+	MiscColor:= RGBtoColor(240, 250, 65);
+	WaterAgentColor:= RGBtoColor(240, 140, 130);
+	FiningColor:= RGBtoColor(95, 180, 25);
+	WaterColor:= RGBtoColor(120, 255, 250);
+	*/
+	function TableMiscs($row) {
+		global $cost_miscs;
+		$vul = $this->w - $this->rMargin - $this->lMargin - 135;
+	}
 }
 
 
@@ -188,13 +391,18 @@
  */
 $pdf = new PDF();
 $pdf->AddPage();
-$prop = array('HeaderColor'=>array(255,150,100), 'color1'=>array(210,245,255),
-	                'color2'=>array(255,255,210), 'TotalColor'=>array(255,150,100), 'padding'=>2);
-$pdf->TableGlobal($row,$prop);
+$pdf->TableGlobal($row);
+$pdf->Ln(10);
+$pdf->TableFermentables($row);
 $pdf->Ln(10);
-$pdf->TableFermentables($row,$prop);
+$pdf->TableHops($row);
+$pdf->Ln(10);
+$pdf->TableYeasts($row);
+$pdf->Ln(10);
+$pdf->TableMiscs($row);
 
 //$pdf->SetFont('Helvetica','',10);
 //$pdf->Cell(0,10,'Receptje '.$record,0,1,'C');
-
+// Disclaimer toeveogen dat dit alleen recept ontwikkeling is.
+// Footer sectie met berekende/geschatte uitkomsten zoals FG, ABV, kostprijs per liter enz. 
 $pdf->Output();

mercurial