Wed, 03 Aug 2022 17:24:05 +0200
Phase 4, yeasts as a viewer.
<?php require_once($_SERVER['DOCUMENT_ROOT'].'/includes/global.inc.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/includes/formulas.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/includes/constants.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/fpdf/fpdf.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); $total_fermentables = 0.0; $cost_fermentables = 0.0; $total_hops = 0.0; $cost_hops = 0.0; $cost_yeasts = 0.0; $cost_miscs = 0.0; $pSugar = 0; $pCara = 0; $svg = 77; $colorw = 0; $total_ibus = 0; $preboil_sg = 0; $mashkg = 0; date_default_timezone_set('Europe/Amsterdam'); $prdate = date(DATE_RFC2822); $bottle_sugar = ''; $keg_sugar = ''; $bottle_sugar_amount = 0; $keg_sugar_amount = 0; $est_mash_sg = 0; $divide_parts = $row['divide_parts']; $divide_part = $row['divide_part']; $divide_factor = floatval($row['divide_factor']); class PDF_MySQL_Table extends FPDF { protected $ProcessingTable=false; protected $aCols=array(); protected $TableX; function Header() { // Print the table header if necessary if ($this->ProcessingTable) $this->TableHeader(); } function TableHeader() { $this->SetFont('Helvetica','B',9); $this->SetX($this->TableX); $this->SetFillColor(255,150,100); foreach($this->aCols as $col) $this->Cell($col['w'],5,$col['c'],0,0,$col['a'],true); $this->Ln(); } function AddCol($width=-1, $caption='', $align='L') { $this->aCols[]=array('c'=>$caption,'w'=>$width,'a'=>$align); } function TableGlobal($row) { global $recipetype; global $divide_parts; global $divide_part; global $divide_factor; global $splitat; /* 2 Columns */ $vul = $this->w - $this->rMargin - $this->lMargin - 160; $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->SetFont('Helvetica','B',9); $this->SetX($this->TableX); $this->SetFillColor(255,150,100); $this->Cell(0, 5, 'Recept overzicht',0,0,'C',true); $this->Ln(); $this->SetFont('Helvetica','',9); $this->SetFillColor(210,245,255); $this->SetX($this->TableX); $this->Cell(35,5,'Brouw type',0,0,'L',true); $this->Cell(45,5,$recipetype[$row['type']],0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(35,5,'Batch grootte',0,0,'L',true); if ($divide_parts == 0) $this->Cell(45,5,$row['batch_size'].' liter',0,0,'L',true); else $this->Cell(45,5,$row['batch_size'].' van '.sprintf("%.2f", ($row['batch_size'] * (1 / $divide_factor))).' liter',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(35,5,'Kooktijd',0,0,'L',true); $this->Cell(45,5,$row['boil_time'].' minuten',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(35,5,'Brouwzaal rendement',0,0,'L',true); $this->Cell(45,5,$row['efficiency'].' %',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(35,5,'Bierstijl',0,0,'L',true); $st_name = iconv('UTF-8','windows-1252',$row['st_name']); $this->Cell(45,5,$st_name,0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(35,5,'Installatie',0,0,'L',true); $this->Cell(45,5,$row['eq_name'],0,0,'L',true); $this->Ln(); if ($divide_parts) { $this->SetX($this->TableX); $this->Cell(35,5,'Batch splits moment',0,0,'L',true); $this->Cell(45,5,$splitat[$row['divide_type']],0,0,'L',true); $this->Ln(); } $this->cMargin=$cMargin; } function TableFermentables($row) { global $cost_fermentables; global $total_fermentables; global $pSugar; global $pCara; global $colorw; global $preboil_sg; global $mashkg; global $bottle_sugar; global $bottle_sugar_amount; global $keg_sugar; global $keg_sugar_amount; global $added; global $fermentabletype; global $graintype; global $est_mash_sg; $vul = $this->w - $this->rMargin - $this->lMargin - 125; $this->Ln(); $this->AddCol($vul,'Mout, granen en suikers','L'); $this->AddCol(15,'Procent','R'); $this->AddCol(15,'Opbr.','R'); $this->AddCol(25,'Soort', 'L'); $this->AddCol(30,'Gebruik moment','L'); $this->AddCol(20,'Hoeveel','R'); $this->AddCol(20,'Prijs','R'); $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->TableHeader(); $this->ProcessingTable=true; $sugarsf = 0; $sugarsm = 0; $mashkg = 0; $s = 0; $this->SetFont('Helvetica','',9); $this->SetFillColor(250, 195, 65); $arr = json_decode($row['json_fermentables'], true); foreach($arr as $item) { //foreach element in $arr $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']); $moisture = floatval($item['f_moisture']); $color = floatval($item['f_color']); $percent = floatval($item['f_percentage']); if ($item['f_type'] == 1) // Sugar $pSugar += $percent; if ($item['f_graintype'] == 2) // Crystal $pCara += $percent; if ($item['f_type'] == 0) $soort = iconv('UTF-8','windows-1252',$graintype[$item['f_graintype']]); else $soort = iconv('UTF-8','windows-1252',$fermentabletype[$item['f_type']]); if ($item['f_added'] == 4) { $bottle_sugar = $name; $bottle_sugar_amount = $amount; } if ($item['f_added'] == 5) { $keg_sugar = $name; $keg_sugar_amount = $amount; } $cost = $amount * $costkg; $cost_fermentables += $cost; $total_fermentables += $amount; /* Calculate the amount of sugars */ $d = $amount * ($yield / 100) * (1 - $moisture / 100); if ($item['f_added'] == 0) { $s += $d; $d = floatval($row['efficiency']) / 100 * $d; $sugarsm += $d; $mashkg += $amount; } $sugarsf += $d; $colorw += ($amount * ebc_to_srm($color) / $row['batch_size']) * 8.34436; if ($amount > 100) $amount = sprintf("%.1f",$amount).' kg'; else if ($amount > 10) $amount = sprintf("%.2f",$amount).' kg'; else $amount = sprintf("%.0f",$amount * 1000).' gr'; $this->Cell($vul,5,$name.' ('.$supplier.') '.sprintf("%.0f",$color).' EBC',0,0,'L',true); if ($item['f_added'] < 4) $this->Cell(15,5,sprintf("%.1f%%",$percent),0,0,'R',true); else $this->Cell(15,5,' ',0,0,'R',true); $this->Cell(15,5,sprintf("%.1f%%",$yield),0,0,'R',true); $this->Cell(25,5,$soort,0,0,'L',true); $this->Cell(30,5,$added[$item['f_added']],0,0,'L',true); $this->Cell(20,5,$amount,0,0,'R',true); $this->Cell(20,5,sprintf("%.3f",$cost).EURO,0,0,'R',true); $this->Ln(); } $v = $s / 1.611 + $row['wg_amount']; $s = 1000 * $s / ($v * 10); //deg. Plato $est_mash_sg = plato_to_sg($s); $row['est_og'] = estimate_sg($sugarsf, floatval($row['batch_size'])); $preboil_sg = estimate_sg($sugarsm, floatval($row['boil_size'])); $this->SetFillColor(210,245,255); $this->Cell($vul+105,5,'',0,0,'L',false); $this->Cell(20,5,sprintf("%.3f",$cost_fermentables).EURO,0,0,'R',true); $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } function TableHops($row) { global $total_hops; global $total_ibus; global $cost_hops; global $preboil_sg; global $hopform; global $hopuse; $vul = $this->w - $this->rMargin - $this->lMargin - 122; $this->Ln(); $this->AddCol($vul,'Hop','L'); $this->AddCol(15,'Alpha','R'); $this->AddCol(12,'IBU','R'); $this->AddCol(25,'Soort','L'); $this->AddCol(30,'Gebruik moment','L'); $this->AddCol(20,'Hoeveel','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']); $amount = floatval($item['h_amount']); $mass = $amount * 1000; $costkg = floatval($item['h_cost']); $time = floatval($item['h_time']); $alpha = floatval($item['h_alpha']); $cost = ($amount * $costkg); $cost_hops += $cost; $total_hops += $amount; $moment = $hopuse[$item['h_useat']]; if (($item['h_useat'] == 2) || ($item['h_useat'] == 4)) { // Boil or Whirlpool $moment = $hopuse[$item['h_useat']].' '.$time." min"; } else if ($item['h_useat'] == 5) { // Dryhop $moment = $hopuse[$item['h_useat']].' '.sprintf("%.0f", $time / 1440).' dagen'; } $ibu = calc_IBU($item['h_useat'], $item['h_form'], $preboil_sg, floatval($row['batch_size']), $mass, $time, $alpha, $row['ibu_method'], $row['brew_whirlpool9'], $row['brew_whirlpool7'], $row['brew_whirlpool6']); $total_ibus += $ibu; if ($amount > 1) $amount = sprintf("%.3f",$amount).' kg'; else $amount = sprintf("%.1f",$amount * 1000).' gr'; $this->Cell($vul,5,$name.' ('.$origin.')',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(25,5,$hopform[$item['h_form']],0,0,'L',true); $this->Cell(30,5,$moment,0,0,'L',true); $this->Cell(20,5,$amount,0,0,'R',true); $this->Cell(20,5,sprintf("%.3f",$cost).EURO,0,0,'R',true); $this->Ln(); } $this->SetFillColor(210,245,255); $this->Cell($vul+102,5,'',0,0,'L',false); $this->Cell(20,5,sprintf("%.3f",$cost_hops).EURO,0,0,'R',true); $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } function TableYeasts($row) { global $cost_yeasts; global $svg; global $yeastform; global $yeastuse; $vul = $this->w - $this->rMargin - $this->lMargin - 110; $this->Ln(); $this->AddCol($vul,'Gist','L'); $this->AddCol(15,'Attn','R'); $this->AddCol(25,'Soort','L'); $this->AddCol(30,'Gebruik moment','L'); $this->AddCol(20,'Hoeveel','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); $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']); $attenuation = floatval($item['y_attenuation']); $cost = floatval($item['y_amount']) * floatval($item['y_cost']); $cost_yeasts += $cost; if ($item['y_use'] == 0) // Primary $svg = $attenuation; if ($item['y_form'] == 0) // Liquid $amount = sprintf("%.0f",floatval($item['y_amount']))." pak"; else if ($item['y_form'] == 1 || $item['y_form'] == 6) // Dry $amount = sprintf("%.1f",floatval($item['y_amount'])*1000)." gr"; else $amount = sprintf("%.0f",floatval($item['y_amount'])*1000)." ml"; $this->Cell($vul,5,$laboratory.' '.$product_id.' ('.$name.')',0,0,'L',true); $this->Cell(15,5,sprintf("%.1f%%",$attenuation),0,0,'R',true); $this->Cell(25,5,$yeastform[$item['y_form']],0,0,'L',true); $this->Cell(30,5,$yeastuse[$item['y_use']],0,0,'L',true); $this->Cell(20,5,$amount,0,0,'R',true); $this->Cell(20,5,sprintf("%8.3f",$cost).EURO,0,0,'R',true); $this->Ln(); } if ($row['starter_enable'] && $row['prop1_volume']) { $sv = 0; $st = 0; for ($i = 1; $i < 5; $i++) { $pv = "prop".$i."_volume"; if (floatval($row[$pv])) { $st++; if (floatval($row[$pv]) > $sv) $sv = floatval($row[$pv]); } } $this->Cell($vul,5,$st." staps giststarter",0,0,'L',true); $this->Cell(40,5,'',0,0,'R',true); $this->Cell(30,5,"Vooraf",0,0,'L',true); $this->Cell(20,5,sprintf("%.3f",$sv)." L",0,0,'R',true); $this->Cell(20,5,'',0,0,'R',true); $this->Ln(); } $this->SetFillColor(210,245,255); $this->Cell($vul+90,5,'',0,0,'L',false); $this->Cell(20,5,sprintf("%8.3f",$cost_yeasts).EURO,0,0,'R',true); $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } function TableMiscs($row) { global $cost_miscs; global $misctype; global $miscuse; $vul = $this->w - $this->rMargin - $this->lMargin - 95; if ($this->GetY() > 200) $this->AddPage(); else $this->Ln(); $this->AddCol($vul,'Diversen naam','L'); $this->AddCol(25,'Soort','L'); $this->AddCol(30,'Gebruik moment','L'); $this->AddCol(20,'Hoeveel','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); $arr = json_decode($row['json_miscs'], true); foreach($arr as $item) { $name = iconv('UTF-8','windows-1252',$item['m_name']); $type = $item['m_type']; $use_use = $item['m_use_use']; $amount = floatval($item['m_amount']) * 1000; $costg = floatval($item['m_cost']) / 1000; $time = floatval($item['m_time']); $aiw = $item['m_amount_is_weight']; $cost = $amount * $costg; $cost_miscs += $cost; if ($type == 4) // Water agent $this->SetFillColor(240,140,130); else if ($type == 3) // Fining $this->SetFillColor(95,180,25); else if (($type == 0) || ($type == 1) || ($type == 2) || ($type == 5)) // Spice, Herb, Flavour, Yeast nutrient $this->SetFillColor(240,250,65); else $this->SetFillColor(210,245,255); 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"); $this->Cell($vul,5,$name,0,0,'L',true); $this->Cell(25,5,$misctype[$type],0,0,'L',true); $this->Cell(30,5,$gebruik,0,0,'L',true); $this->Cell(20,5,$hoeveel,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+75,5,'',0,0,'L',false); $this->Cell(20,5,sprintf("%8.3f",$cost_miscs).EURO,0,0,'R',true); $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } function TableMashs($row) { global $cost_yeasts; global $svg; global $mashkg; global $mashtype; $vul = $this->w - $this->rMargin - $this->lMargin - 138; if ($this->GetY() > 250) $this->AddPage(); else $this->Ln(); $this->AddCol($vul,'Maisch stap naam','L'); $this->AddCol(25,'Stap type','L'); $this->AddCol(16,'Start '.DEG.'C','R'); $this->AddCol(16,'Eind '.DEG.'C','R'); $this->AddCol(15,'Rust min','R'); $this->AddCol(15,'Stap min','R'); $this->AddCol(15,'L/Kg','R'); $this->AddCol(18,'Inf/dec L','R'); $this->AddCol(18,'Inf/dec '.DEG.'C','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); $vol = 0; $arr = json_decode($row['json_mashs'], true); foreach($arr as $item) { //foreach element in $arr if ($item['step_type'] == 0) $vol += $item['step_infuse_amount']; if ($mashkg > 0) $thick = $vol / $mashkg; else $thick = 0; $this->Cell($vul,5,$item['step_name'],0,0,'L',true); $this->Cell(25,5,$mashtype[$item['step_type']],0,0,'L',true); $this->Cell(16,5,sprintf("%.1f",$item['step_temp']),0,0,'R',true); $this->Cell(16,5,sprintf("%.1f",$item['end_temp']),0,0,'R',true); $this->Cell(15,5,sprintf("%.0f",$item['step_time']),0,0,'R',true); $this->Cell(15,5,sprintf("%.0f",$item['ramp_time']),0,0,'R',true); $this->Cell(15,5,sprintf("%.2f",$thick),0,0,'R',true); if ($item['step_type'] == 1) { $this->Cell(18,5,' ',0,0,'R',true); $this->Cell(18,5,' ',0,0,'R',true); } else { $this->Cell(18,5,sprintf("%.1f",$item['step_infuse_amount']),0,0,'R',true); $this->Cell(18,5,sprintf("%.1f",$item['step_infuse_temp']),0,0,'R',true); } $this->Ln(); } $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } function TableWaters($row) { $vul = $this->w - $this->rMargin - $this->lMargin - 137; if ($this->GetY() > 250) $this->AddPage(); else $this->Ln(); $this->AddCol($vul,'Water bron','L'); $this->AddCol(20,'Volume','R'); $this->AddCol(15,'Ca','R'); $this->AddCol(15,'Mg','R'); $this->AddCol(15,'Na','R'); $this->AddCol(15,'CaCO3','R'); $this->AddCol(15,'Cl','R'); $this->AddCol(15,'SO4','R'); $this->AddCol(15,'pH','R'); $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->TableHeader(); $this->ProcessingTable=true; $this->SetFont('Helvetica','',9); $this->SetFillColor(120, 255, 250); $this->Cell($vul,5,$row['w1_name'],0,0,'L',true); $this->Cell(20,5,sprintf("%.1f", $row['w1_amount']).' L',0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_calcium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_magnesium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_sodium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_total_alkalinity']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_chloride']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_sulfate']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w1_ph']),0,0,'R',true); $this->Ln(); if ($row['w2_name'] && floatval($row['w2_amount'])) { $this->Cell($vul,5,$row['w2_name'],0,0,'L',true); $this->Cell(20,5,sprintf("%.1f", $row['w2_amount']).' L',0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_calcium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_magnesium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_sodium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_total_alkalinity']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_chloride']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_sulfate']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['w2_ph']),0,0,'R',true); $this->Ln(); $this->Cell($vul,5,'Gemengd water',0,0,'L',true); $this->Cell(20,5,sprintf("%.1f", $row['wg_amount']).' L',0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_calcium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_magnesium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_sodium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_total_alkalinity']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_chloride']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_sulfate']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wg_ph']),0,0,'R',true); $this->Ln(); } $this->Cell($vul,5,'Behandeld water',0,0,'L',true); $this->Cell(20,5,'',0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_calcium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_magnesium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_sodium']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_total_alkalinity']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_chloride']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_sulfate']),0,0,'R',true); $this->Cell(15,5,sprintf("%.1f", $row['wb_ph']),0,0,'R',true); $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } function TableSummary($row) { global $pSugar; global $pCara; global $svg; global $colorw; global $cost_fermentables; global $cost_hops; global $cost_miscs; global $cost_yeasts; global $mashkg; global $colormethod; global $ibumethod; /* 2 Columns */ if ($this->GetY() > 200) $this->AddPage(); else $this->Ln(); $vul = $this->w - $this->rMargin - $this->lMargin - 170; $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->SetFont('Helvetica','B',9); $this->SetX($this->TableX); $this->SetFillColor(255,150,100); $this->Cell(0, 5, 'Recept samenvatting',0,0,'C',true); $this->Ln(); $this->SetFont('Helvetica','',9); $this->SetFillColor(210,245,255); $mashtime = 0; $mashtemp = 0; $mash_infuse = 0; $arr = json_decode($row['json_mashs'], true); foreach($arr as $item) { if ($item['step_type'] == 0) { // infusion $mash_infuse += floatval($item['step_infuse_amount']); } if ($item['step_temp'] < 75) { // ignore mashout temps $mashtime += floatval($item['step_time']); $mashtemp += floatval($item['step_time']) * floatval($item['step_temp']); } } $mashtemp = $mashtemp / $mashtime; if (($mashkg > 0) && ($mash_infuse > 0) && ($mashtime > 0) && ($mashtemp > 0)) { $row['est_fg'] = estimate_fg($pSugar, $pCara, $mash_infuse / $mashkg, $mashtime, $mashtemp, $svg, $row['est_og']); } else { $row['est_fg'] = estimate_fg($pSugar, $pCara, 0, 0, 0, $svg, $row['est_og']); } $this->SetX($this->TableX); $this->Cell(35,5,'Start SG',0,0,'L',true); $this->Cell(25,5,sprintf("%.3f",$row['est_og']),0,0,'L',true); $this->Cell(25,5,'('.sprintf("%.3f",$row['st_og_min']).' - '.sprintf("%.3f",$row['st_og_max']).')',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(35,5,'Eind SG',0,0,'L',true); $this->Cell(25,5,sprintf("%.3f",$row['est_fg']),0,0,'L',true); $this->Cell(25,5,'('.sprintf("%.3f",$row['st_fg_min']).' - '.sprintf("%.3f",$row['st_fg_max']).')',0,0,'L',true); $this->Ln(); $row['est_abv'] = abvol($row['est_og'], $row['est_fg']); $this->SetX($this->TableX); $this->Cell(35,5,'Geschat alcohol',0,0,'L',true); $this->Cell(25,5,sprintf("%.1f",$row['est_abv']).'%',0,0,'L',true); $this->Cell(25,5,'('.sprintf("%.1f",$row['st_abv_min']).' - '.sprintf("%.1f",$row['st_abv_max']).'%)',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(35,5,'Flessen CO2',0,0,'L',true); $this->Cell(25,5,sprintf("%.1f",$row['bottle_carbonation']).'%',0,0,'L',true); $this->Cell(25,5,'('.sprintf("%.1f",$row['st_carb_min']).' - '.sprintf("%.1f",$row['st_carb_max']).'%)',0,0,'L',true); $this->Ln(); $row['est_color'] = kw_to_ebc($row['color_method'], $colorw); $this->SetX($this->TableX); $this->Cell(35,5,'Kleur ('.$colormethod[$row['color_method']].')',0,0,'L',true); $beercolor = ebc_to_color($row['est_color']); if ($row['est_color'] > 30) $this->SetTextColor(250); $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->SetTextColor(0); $this->SetFillColor(210,245,255); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(35,5,'Fusten CO2',0,0,'L',true); $this->Cell(25,5,sprintf("%.1f",$row['keg_carbonation']).'%',0,0,'L',true); $this->Cell(25,5,'('.sprintf("%.1f",$row['st_carb_min']).' - '.sprintf("%.1f",$row['st_carb_max']).'%)',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(35,5,'Bitterheid ('.$ibumethod[$row['ibu_method']].')',0,0,'L',true); $this->Cell(25,5,sprintf("%.0f",$row['est_ibu']).' IBU',0,0,'L',true); $this->Cell(25,5,'('.$row['st_ibu_min'].' - '.$row['st_ibu_max'].' IBU)',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $cost_total = $cost_fermentables + $cost_hops + $cost_miscs + $cost_yeasts; $this->Cell(35,5,'Kosten',0,0,'L',true); $this->Cell(25,5,sprintf("%.2f",$cost_total).EURO,0,0,'L',true); $this->Cell(25,5,sprintf("%.2f",$cost_total/$row['batch_size']).EURO.' / liter',0,0,'L',true); // calorieen $this->ProcessingTable=false; $this->cMargin=$cMargin; $this->aCols=array(); $this->Ln(); } function PrintDiff($v1, $v2, $decimals, $un) { $val1 = floatval($v1); $val2 = floatval($v2); if ($val2 > $val1) $diff = '+' . number_format($val2 - $val1, $decimals) . $un; else $diff = number_format($val2 - $val1, $decimals) . $un; $this->Cell(30,5,$diff,0,0,'L',true); } function Brewday($row) { global $my_brix_correction; global $my_grain_absorbtion; global $coolingtype; global $aerationtype; global $est_mash_sg; global $mashtype; if ($this->GetY() > 100) $this->AddPage(); else $this->Ln(10); $vul = $this->w - $this->rMargin - $this->lMargin - 170; $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->SetFont('Helvetica','B',9); $this->SetX($this->TableX); $this->SetFillColor(255,150,100); $this->Cell(0, 5, 'Brouwdag gegevens',0,0,'C',true); $this->Ln(); $this->SetFont('Helvetica','',9); $this->SetFillColor(210,245,255); $this->SetX($this->TableX); $this->Cell(35,5,'Datum start',0,0,'L',true); $this->Cell(50,5,$row['brew_date_start'],0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(35,5,'Datum eind',0,0,'L',true); $this->Cell(50,5,$row['brew_date_end'],0,0,'L',true); $this->Ln(10); $domash = 0; $arr = json_decode($row['json_mashs'], true); foreach($arr as $item) { if ($item['step_sg'] > 1.005) $domash = 1; } if ($domash) { $this->SetX($this->TableX); $this->SetFont('Helvetica','B',9); $this->SetFillColor(175,175,255); $vul = $this->w - $this->rMargin - $this->lMargin - 125; $this->Cell(5, 5, '',0,0,'L',true); $this->Cell($vul,5, 'Maisch stap',0,0,'L',true); $this->Cell(30,5, 'Type',0,0,'L',true); $this->Cell(30,5, 'Temperatuur',0,0,'L',true); $this->Cell(30,5, 'SG',0,0,'L',true); $this->Cell(30,5, 'pH',0,0,'L',true); $this->Ln(); $this->SetFont('Helvetica','',9); $this->SetFillColor(210,245,255); $arr = json_decode($row['json_mashs'], true); $step = 0; foreach($arr as $item) { $step++; $this->Cell(5,5,$step,0,0,'L',true); $this->Cell($vul,5,$item['step_name'],0,0,'L',true); $this->Cell(30,5,$mashtype[$item['step_type']],0,0,'L',true); $this->Cell(30,5,sprintf("%.1f",$item['step_temp']).'-'.sprintf("%.1f",$item['end_temp']).DEG.'C',0,0,'L',true); $this->Cell(30,5,sprintf("%.3f",$item['step_sg']),0,0,'L',true); $this->Cell(30,5,sprintf("%.2f",$item['step_ph']),0,0,'L',true); $this->Ln(); } $this->Ln(); } $this->SetX($this->TableX); $this->SetFont('Helvetica','B',9); $this->SetFillColor(175,175,255); $vul = $this->w - $this->rMargin - $this->lMargin - 130; $this->Cell($vul, 5, 'Gegeven',0,0,'L',true); $this->Cell(50, 5, 'Gewenst',0,0,'L',true); $this->Cell(50, 5, 'Werkelijk',0,0,'L',true); $this->Cell(30, 5, 'Verschil',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->SetFont('Helvetica','',9); $this->SetFillColor(210,245,255); $this->Cell($vul,5,'Maisch zuurgraad',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", $row['mash_ph']).' pH',0,0,'L',true); $this->Cell(50,5,sprintf("%.2f", $row['brew_mash_ph']).' pH',0,0,'L',true); $this->PrintDiff($row['mash_ph'], $row['brew_mash_ph'], 2, ' pH'); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Maisch densiteit',0,0,'L',true); $this->Cell(50,5,density_str(floatval($est_mash_sg)),0,0,'L',true); $this->Cell(50,5,density_str(floatval($row['brew_mash_sg'])),0,0,'L',true); $this->PrintDiff($est_mash_sg, $row['brew_mash_sg'], 3, ' SG'); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Maisch rendement',0,0,'L',true); $this->Cell(50,5,'100.0%',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", floatval($row['brew_mash_efficiency']))."%",0,0,'L',true); $this->PrintDiff(100.0, $row['brew_mash_efficiency'], 1, '%'); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Spoelwater zuurgraad',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", $row['sparge_ph']).' pH',0,0,'L',true); $this->Cell(50,5,sprintf("%.2f", $row['brew_sparge_ph']).' pH',0,0,'L',true); $this->PrintDiff($row['sparge_ph'], $row['brew_sparge_ph'], 2, ' pH'); $this->Ln(7); $this->SetX($this->TableX); $this->Cell($vul,5,'Voor koken zuurgraad',0,0,'L',true); $this->Cell(50,5,'',0,0,'L',true); $this->Cell(50,5,sprintf("%.2f", $row['brew_preboil_ph'])." pH",0,0,'L',true); $this->Cell(30,5,'',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Voor koken densiteit',0,0,'L',true); $this->Cell(50,5,'',0,0,'L',true); $this->Cell(50,5,density_str(floatval($row['brew_preboil_sg'])),0,0,'L',true); $this->Cell(30,5,'',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Voor koken volume',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", $row['boil_size'] * 1.04)." liter",0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", $row['brew_preboil_volume'])." liter",0,0,'L',true); $this->PrintDiff($row['boil_size'] * 1.04, $row['brew_preboil_volume'], 1, ' liter'); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Voor koken rendement',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", floatval($row['efficiency']))."%",0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", floatval($row['brew_preboil_efficiency']))."%",0,0,'L',true); $this->PrintDiff($row['efficiency'], $row['brew_preboil_efficiency'], 1, '%'); $this->Ln(7); $this->SetX($this->TableX); $this->Cell($vul,5,'Na koken zuurgraad',0,0,'L',true); $this->Cell(50,5,'',0,0,'L',true); $this->Cell(50,5,sprintf("%.2f", $row['brew_aboil_ph'])." pH",0,0,'L',true); $this->Cell(30,5,'',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Na koken densiteit',0,0,'L',true); $this->Cell(50,5,density_str(floatval($row['est_og'])),0,0,'L',true); $this->Cell(50,5,density_str(floatval($row['brew_aboil_sg'])),0,0,'L',true); $this->PrintDiff($row['est_og'], $row['brew_aboil_sg'], 3, ' SG'); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Na koken volume',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", $row['batch_size'] * 1.04)." liter",0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", $row['brew_aboil_volume'])." liter",0,0,'L',true); $this->PrintDiff($row['batch_size'] * 1.04, $row['brew_aboil_volume'], 1, ' liter'); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Na koken rendement',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", floatval($row['efficiency']))."%",0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", floatval($row['brew_aboil_efficiency']))."%",0,0,'L',true); $this->PrintDiff($row['efficiency'], $row['brew_aboil_efficiency'], 1, '%'); $this->Ln(7); $this->SetX($this->TableX); $this->Cell($vul,5,'Koeler & trub verlies',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", floatval($row['eq_trub_chiller_loss'])).' liter',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", floatval($row['brew_fermenter_tcloss'])).' liter',0,0,'L',true); $this->PrintDiff($row['eq_trub_chiller_loss'], $row['brew_fermenter_tcloss'], 1, ' lter'); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Extra water in gistvat',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", floatval($row['eq_top_up_water'])).' liter',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", floatval($row['brew_fermenter_extrawater'])).' liter',0,0,'L',true); $this->PrintDiff($row['eq_top_up_water'], $row['brew_fermenter_extrawater'], 1, ' liter'); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Volume naar gistvat',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", floatval($row['batch_size']) - floatval($row['eq_trub_chiller_loss'])).' liter',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", floatval($row['brew_fermenter_volume'])).' liter',0,0,'L',true); $this->PrintDiff(floatval($row['batch_size']) - floatval($row['eq_trub_chiller_loss']), $row['brew_fermenter_volume'], 1, ' liter'); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Densiteit in gistvat',0,0,'L',true); $this->Cell(50,5,density_str(floatval($row['est_og'])),0,0,'L',true); $this->Cell(50,5,density_str(floatval($row['brew_fermenter_sg'])),0,0,'L',true); $this->PrintDiff($row['est_og'], $row['brew_fermenter_sg'], 3, ' SG'); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Kleur in gistvat',0,0,'L',true); $this->Cell(50,5,sprintf("%.0f", floatval($row['est_color'])).' EBC',0,0,'L',true); $this->Cell(50,5,sprintf("%.0f", floatval($row['brew_fermenter_color'])).' EBC',0,0,'L',true); $this->PrintDiff($row['est_color'], $row['brew_fermenter_color'], 0, ' EBC'); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Bitterheid in gistvat',0,0,'L',true); $this->Cell(50,5,sprintf("%.0f", floatval($row['est_ibu'])).' IBU',0,0,'L',true); $this->Cell(50,5,sprintf("%.0f", floatval($row['brew_fermenter_ibu'])).' IBU',0,0,'L',true); $this->PrintDiff($row['est_ibu'], $row['brew_fermenter_ibu'], 0, ' IBU'); $this->Ln(7); $this->SetX($this->TableX); $this->Cell($vul,5,'Koelen methode',0,0,'L',true); $this->Cell(50,5,$coolingtype[$row['brew_cooling_method']],0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Koelen temperatuur',0,0,'L',true); $this->Cell(50,5,sprintf("%.1f", floatval($row['brew_cooling_to'])).DEG.'C',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell($vul,5,'Koelen tijdsduur',0,0,'L',true); $this->Cell(50,5,sprintf("%.0f", floatval($row['brew_cooling_time'])).' minuten',0,0,'L',true); $this->Ln(7); } function Fermentation($row) { if ($this->GetY() > 230) $this->AddPage(); else $this->Ln(10); $vul = $this->w - $this->rMargin - $this->lMargin - 180; $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->SetFont('Helvetica','B',9); $this->SetX($this->TableX); $this->SetFillColor(255,150,100); $this->Cell(0, 5, 'Vergisting gegevens',0,0,'C',true); $this->Ln(); $this->SetFont('Helvetica','',9); $this->SetFillColor(210,245,255); $this->SetX($this->TableX); $this->Cell(45,5,'Hoofdvergisting start temp.',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f",$row['primary_start_temp']).DEG.'C',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(45,5,'Hoofdvergisting piek temp.',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f",$row['primary_max_temp']).DEG.'C',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Hoofdvergisting eind temp.',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f",$row['primary_end_temp']).DEG.'C',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(45,5,'Hoofdvergisting densiteit',0,0,'L',true); $this->Cell(45,5,sprintf("%.3f",floatval($row['primary_end_sg'])).' SG',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Hoofdvergisting einde',0,0,'L',true); $this->Cell(45,5,$row['primary_end_date'],0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Navergisting tempertuur',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f", $row['secondary_temp']).DEG.'C',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(45,5,'Nagisten densiteit',0,0,'L',true); $this->Cell(45,5,sprintf("%.3f",floatval($row['secondary_end_sg'])).' SG',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Nagisten einde',0,0,'L',true); $this->Cell(45,5,$row['secondary_end_date'],0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Lageren temperatuur',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f",$row['tertiary_temp']).DEG.'C',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(45,5,'Lageren densiteit',0,0,'L',true); $this->Cell(45,5,sprintf("%.3f",floatval($row['fg'])).' SG',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Lageren einde',0,0,'L',true); $this->Cell(45,5,$row['package_date'],0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $svg = calc_svg(floatval($row['brew_fermenter_sg']), floatval($row['fg'])); $this->Cell(45,5,'Schijnbare vergistingsgraad',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f",$svg).'%',0,0,'L',true); $this->Ln(); } function Packaging($row) { global $bottle_sugar; global $bottle_sugar_amount; global $keg_sugar; global $keg_sugar_amount; if ($this->GetY() > 230) $this->AddPage(); else $this->Ln(10); $vul = $this->w - $this->rMargin - $this->lMargin - 180; $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->SetFont('Helvetica','B',9); $this->SetX($this->TableX); $this->SetFillColor(255,150,100); $this->Cell(0, 5, 'Verpakken',0,0,'C',true); $this->Ln(); $this->SetFont('Helvetica','',9); $this->SetFillColor(210,245,255); $this->SetX($this->TableX); $this->Cell(45,5,'Datum verpakken',0,0,'L',true); $this->Cell(45,5,$row['package_date'],0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(45,5,'Hoeveelheid',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f", $row['package_volume']).' liter',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Alcohol volume',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f",$row['package_abv']).'%',0,0,'L',true); if (($row['package_infuse_amount'] > 0) && ($row['package_infuse_abv'] == 0)) { $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(45,5,'Water toevoegen',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f", $row['package_infuse_amount']).' liter',0,0,'L',true); } $this->Ln(7); if (($row['package_infuse_amount'] > 0) && ($row['package_infuse_abv'] > 0)) { $this->SetX($this->TableX); $this->Cell(45,5,'Drank toevoegen',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f",$row['package_infuse_amount']).' liter',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(45,5,'Bevat alcohol volume',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f", $row['package_infuse_abv']).'%',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(180,5,iconv('UTF-8','windows-1252',$row['package_infuse_notes']),0,0,'L',true); $this->Ln(7); } $this->SetX($this->TableX); $this->Cell(45,5,'Flessen volume',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f",$row['bottle_amount']).' liter',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(45,5,'Fusten volume',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f", $row['keg_amount']).' liter',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'CO2 volumes',0,0,'L',true); $this->Cell(45,5,sprintf("%.2f",$row['bottle_carbonation']),0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(45,5,'CO2 volumes',0,0,'L',true); $this->Cell(45,5,sprintf("%.2f", $row['keg_carbonation']),0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Suiker',0,0,'L',true); $this->Cell(45,5,$bottle_sugar,0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(45,5,'Suiker',0,0,'L',true); $this->Cell(45,5,$keg_sugar,0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Hoeveelheid',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f",$row['bottle_priming_amount']).' gram/liter',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); if ($row['keg_forced_carb']) { $this->Cell(45,5,'Geforceerd op druk zetten',0,0,'L',true); $this->Cell(45,5,'Ja',0,0,'L',true); } else { $this->Cell(45,5,'Hoeveelheid',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f", $row['keg_priming_amount']).' gram/liter',0,0,'L',true); } $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Totaal suiker',0,0,'L',true); $this->Cell(45,5,sprintf("%.3f",$bottle_sugar_amount).' kg',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); if ($row['keg_forced_carb']) { $this->Cell(45,5,'Druk op fust',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f",$row['keg_pressure']).' bar',0,0,'L',true); } else { $this->Cell(45,5,'Totaal suiker',0,0,'L',true); $this->Cell(45,5,sprintf("%.3f",$keg_sugar_amount).' kg',0,0,'L',true); } $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Water oplossen',0,0,'L',true); $this->Cell(45,5,sprintf("%.3f",$row['bottle_priming_water']).' liter',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); if (! $row['keg_forced_carb']) { $this->Cell(45,5,'Water oplossen',0,0,'L',true); $this->Cell(45,5,sprintf("%.3f",$row['keg_priming_water']).' liter',0,0,'L',true); } $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Alcohol volume',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f",$row['package_abv'] + $row['bottle_priming_amount'] * 0.47 / 7.907).'%',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(45,5,'Alcohol volume',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f",$row['package_abv'] + $row['keg_priming_amount'] * 0.47 / 7.907).'%',0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Hergisting temperatuur',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f",$row['bottle_carbonation_temp']).DEG.'C',0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(45,5,'Hergisting temperatuur',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f", $row['keg_carbonation_temp']).DEG.'C',0,0,'L',true); $this->Ln(); } function Tasting($row) { if ($this->GetY() > 200) $this->AddPage(); else $this->Ln(10); $vul = $this->w - $this->rMargin - $this->lMargin - 180; $cMargin=$this->cMargin; $this->cMargin=2; $this->TableX=$this->lMargin; $this->SetFont('Helvetica','B',9); $this->SetX($this->TableX); $this->SetFillColor(255,150,100); $this->Cell(0, 5, 'Proef notities',0,0,'C',true); $this->Ln(); $this->SetFont('Helvetica','',9); $this->SetFillColor(210,245,255); $this->SetX($this->TableX); $this->Cell(45,5,'Proeven datum',0,0,'L',true); $this->Cell(45,5,$row['taste_date'],0,0,'L',true); $this->Cell($vul,5,'',0,0,'L',false); $this->Cell(45,5,'Waardering',0,0,'L',true); $this->Cell(45,5,sprintf("%.1f", $row['taste_rate']),0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Kleur',0,0,'L',true); $this->Cell($vul+135,5,iconv('UTF-8','windows-1252',$row['taste_color']),0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Helderheid',0,0,'L',true); $this->Cell($vul+135,5,iconv('UTF-8','windows-1252',$row['taste_transparency']),0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Schuim',0,0,'L',true); $this->Cell($vul+135,5,iconv('UTF-8','windows-1252',$row['taste_head']),0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Aroma',0,0,'L',true); $this->Cell($vul+135,5,iconv('UTF-8','windows-1252',$row['taste_aroma']),0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Smaak',0,0,'L',true); $this->Cell($vul+135,5,iconv('UTF-8','windows-1252',$row['taste_taste']),0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Mondgevoel',0,0,'L',true); $this->Cell($vul+135,5,iconv('UTF-8','windows-1252',$row['taste_mouthfeel']),0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Nasmaak',0,0,'L',true); $this->Cell($vul+135,5,iconv('UTF-8','windows-1252',$row['taste_aftertaste']),0,0,'L',true); $this->Ln(); $this->SetX($this->TableX); $this->Cell(45,5,'Notities',0,0,'L',true); $this->MultiCell(0,5,iconv('UTF-8','windows-1252',$row['taste_notes']),0,'L',true); $this->Ln(); } } class PDF extends PDF_MySQL_Table { function Header() { global $row; global $prdate; global $stage; global $divide_parts; global $divide_part; $this->Image('images/logo.png',10,10,30); // Title $this->SetFont('Helvetica','B',18); $this->SetX(45); $this->Cell(0,8,$row['code'].' '.$row['name'],0,1,'L'); $this->Ln(1); $this->SetFont('Helvetica','',10); $this->SetX(45); $this->Cell(17,5,'Datum:',0,0,'L'); $this->Cell(0,5,$prdate,0,1,'L'); $this->SetX(45); $this->Cell(17,5,'Stijl:',0,0,'L'); $st_name = iconv('UTF-8','windows-1252',$row['st_name']); $this->Cell(0,5,$st_name,0,1,'L'); $this->SetX(45); $this->Cell(17,5,'Fase:',0,0,'L'); $this->Cell(0,5,$stage[$row['stage']],0,1,'L'); $this->SetX(45); $this->Cell(17,5,'Batch:',0,0,'L'); if ($divide_parts == 0) $this->Cell(0,5,"Niet gespitst",0,1,'L'); else $this->Cell(0,5,"Split batch ".($divide_part + 1)." van ".($divide_parts + 1),0,1,'L'); $this->Ln(2); // Ensure table header is printed parent::Header(); } } /* * Generate PDF from recipe data */ $pdf = new PDF(); $pdf->AddPage(); $pdf->TableGlobal($row); $pdf->TableFermentables($row); $pdf->TableHops($row); $pdf->TableYeasts($row); $pdf->TableMiscs($row); $pdf->TableMashs($row); $pdf->TableWaters($row); $pdf->TableSummary($row); if (strlen($row['notes'])) { if ($pdf->GetY() > 200) $pdf->AddPage(); else $pdf->Ln(10); $pdf->SetFillColor(255,150,100); $pdf->SetFont('Helvetica','B',9); $pdf->Cell(0, 5, 'Recept opmerkingen',0,0,'C',true); $pdf->Ln(); $pdf->SetFont('Helvetica','',9); $pdf->SetFillColor(210,245,255); $pdf->MultiCell(0,4,iconv('UTF-8','windows-1252',$row['notes']),0,'L',true); } if ($row['stage'] > 2) { $pdf->Brewday($row); } if ($row['stage'] > 3) { $pdf->Fermentation($row); } if ($row['stage'] > 6) { $pdf->Packaging($row); } if ($row['stage'] > 9) { $pdf->Tasting($row); } $pdf->Output();