diff -r d76f623d487c -r 6ee186182c70 www/prod_checklist.php --- a/www/prod_checklist.php Fri Aug 05 11:02:01 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,682 +0,0 @@ -SetFont('Arial','B',10); - $this->Cell(0, 4,$text,0,0,'L',true); - $this->SetFont('Arial','',10); - $this->Ln(6); - } - - function Checkline($text) { - $this->Cell(2, 4,' ',0,0,'L',true); - $this->Cell(4, 4,' ',1,0,'L',true); - $this->Cell(0, 4,' '.$text,0,1,'L',true); - $this->Ln(1); - } - - function CheckInput($text, $prompt) { - if (strlen($text)) { - $this->Cell(2, 4,' ',0,0,'L',true); - $this->Cell(4, 4,' ',1,0,'L',true); - $this->Cell(130, 4,' '.$text,0,0,'L',true); - } else { - $this->Cell(136, 4,' ',0,0,'L',true); - } - $this->Cell(0, 4, 'Gemeten: _________ '.$prompt,0,1,'L',true); - $this->Ln(1); - } - - function Checksplit($moment, $row) { - global $splitat; - if ($row['divide_type'] && $row['divide_type'] == $moment) { - $this->Ln(2); - $this->SetFont('Helvetica','B',14); - $this->Cell(0, 4,$splitat[$row['divide_type']]." splits de batch hier!",0,0,'C',true); - $this->SetFont('Arial','',10); - $this->AddPage(); - return true; - } - return false; - } - - function Checklist($row) { - - global $my_grain_absorbtion; - global $my_brix_correction; - global $acidtype; - $mashwater = 0; - $numsalts = 0; - $factor = 1 / $row['divide_factor']; - - $this->AddPage(); - $this->SetFillColor(255,255,255); - - $ferms = json_decode($row['json_fermentables'], true); - $hops = json_decode($row['json_hops'], true); - $miscs = json_decode($row['json_miscs'], true); - $yeasts = json_decode($row['json_yeasts'], true); - - if ($row['starter_enable'] && $row['prop1_volume']) { - $this->Checkheader('Giststarter maken'); - $days = 0; - $last = 0; - for ($i = 1; $i < 5; $i++) { - $pt = "prop".$i."_type"; - $pv = "prop".$i."_volume"; - if (floatval($row[$pv])) { - $last = $i; - if ($row[$pt] == 0) - $days += 2; - else if ($row[$pt] == 1) - $days += 4; - else - $days += 6; - } - } - $this->Checkline("begin ongeveer ".$days." dagen voor de brouwdag met de giststarter"); - for ($i = 1; $i < 5; $i++) { - $pt = "prop".$i."_type"; - $pv = "prop".$i."_volume"; - if (floatval($row[$pv])) { - $s = "Starter stap ".$i.", van ".sprintf("%.3f",floatval($row[$pv])); - $s .= " liter maken met SG ".sprintf("%.3f",floatval($row['starter_sg'])); - $this->Checkline($s); - if ($row[$pt] == 0) { - $s = "ongeveer 24 uur op een magneetroerder"; - } else if ($row[$pt] == 1) { - $s = "enkele dagen regelmatig schudden"; - } else { - $s = "bijna een week rustig laten staan"; - } - $s .= " tot er voldoende gist is"; - $this->Checkline($s); - if ($i < $last) { - $this->Checkline("starter minstens 24 uur in de koeling laten uitzakken"); - $this->Checkline("starter uit de koelkast halen en afgieten"); - } else { - $this->Checkline("starter in de koeling zetten tot de brouwdag"); - $this->Checkline("starter op de brouwdag uit de koelkast halen en afgieten"); - } - } - } - $this->Ln(5); - } - - $this->Checkheader('Water en -behandeling'); - if ($row['w1_name']) { - $this->Checkline(sprintf("%.1f",floatval($row['w1_amount'] * $factor)).' liter water '.$row['w1_name']); - $mashwater += floatval($row['w1_amount'] * $factor); - } - if ($row['w2_name'] && floatval($row['w2_amount'])) { - $this->Checkline(sprintf("%.1f",floatval($row['w2_amount'] * $factor)).' liter water '.$row['w2_name']); - $mashwater += floatval($row['w2_amount'] * $factor); - } - foreach($miscs as $item) { - if ($item['m_type'] == 4) { // Only the water agents - $unit = ($item['m_amount_is_weight']) ? " gr ":" ml "; - $this->Checkline(sprintf("%.2f",floatval($item['m_amount'] * 1000 * $factor)).$unit.$item['m_name']); - $numsalts++; - } - } - $this->Ln(5); - - $this->Checkheader('Mout afwegen en schroten'); - foreach($ferms as $item) { - if ($item['f_added'] == 0) { // to mash - $s = sprintf("%.3f",floatval($item['f_amount'] * $factor)).' kg `'; - $s .= iconv('UTF-8','windows-1252',$item['f_name']); - $s .= '` ('.iconv('UTF-8','windows-1252',$item['f_supplier']).')'; - $this->Checkline($s); - } - } - $this->Checkline('mout schroten'); - $this->Ln(5); - - $this->Checkheader('Maischen'); - $mvol = 0; - $msugars = 0; // mash sugars - $grainabsorbtion = 0; - $arr = json_decode($row['json_mashs'], true); - if (count($arr) > 0) { - $loop = 0; - foreach($arr as $item) { - if ($item['step_type'] == 0) - $mvol += $item['step_infuse_amount'] * $factor; // We need this later. - if ($loop == 0) { - if ($item['step_type'] == 0) - $l = $item['step_infuse_amount'] * $factor; - else - $l = $mashwater; - $s = sprintf("%.1f",$l).' liter water opwarmen tot '; - $s .= sprintf("%.1f",$item['step_infuse_temp']).DEG.'C ('; - $s .= sprintf("%.1f",kettle_cm($l,$row['eq_tun_volume'],$row['eq_tun_height'])); - $s .= ' cm onder de rand)'; - $this->Checkline($s); - if ($numsalts > 0) - $this->Checkline('brouwzouten en -zuren toevoegen'); - $this->Checkline('mout storten en inmaischen'); - foreach($hops as $item2) { - if ($item2['h_useat'] == 0) { - $s = sprintf("%.1f",$item2['h_amount']*1000 * $factor).' gr `'; - $s .= iconv('UTF-8','windows-1252',$item2['h_name']).'` toevoegen'; - $this->Checkline($s); - } - } - foreach($miscs as $item3) { - if ($item3['m_use_use'] == 1 && $item3['m_type'] != 4) { // Only if not a water agent - $unit = ($item3['m_amount_is_weight']) ? " gr ":" ml "; - $s = sprintf("%.2f",$item3['m_amount']*1000 * $factor).$unit.'`'; - $s .= iconv('UTF-8','windows-1252',$item3['m_name']).'` toevoegen'; - $this->Checkline($s); - } - } - if ($item['step_temp'] != $item['end_temp']) { - $this->CheckInput($item['step_time'].' minuten bij '.$item['step_temp'].DEG.'C'.' tot '.$item['end_temp'].DEG.'C', 'Brix'); - } else { - $this->CheckInput($item['step_time'].' minuten bij '.$item['step_temp'].DEG.'C', 'Brix'); - } - $this->CheckInput('pH meten en bijstellen (doel pH beslag: '.sprintf("%.1f",$row['mash_ph']).' pH)', 'pH'); - } else { - if ($item['step_type'] == 0) { // Infusion - $s = 'toevoegen '.sprintf("%.1f",$item['step_infuse_amount'] * $factor).' liter water van '; - $s .= $item['step_infuse_temp'].DEG.'C'; - } else if ($item['step_type'] == 1) { // Direct heat - $s = 'opwarmen tot '.$item['step_temp'].DEG.'C'; - } else { // Decoction - $s = 'uitnemen, opwarmen, koken en terugstorten van '.sprintf("%.1f",$item['step_infuse_amount']*$factor); - $s .= ' liter deelbeslag'; - } - $this->Checkline($s); - if ($item['step_temp'] != $item['end_temp']) { - $this->CheckInput($item['step_time'].' minuten bij '.$item['step_temp'].DEG.'C'.' tot '.$item['end_temp'].DEG.'C', 'Brix'); - } else { - $this->CheckInput($item['step_time'].' minuten bij '.$item['step_temp'].DEG.'C', 'Brix'); - } - } - $loop++; - } - $est_mash_sg = 0; - foreach($ferms as $item) { - if ($item['f_added'] == 0) { - $d = $item['f_amount'] * $factor * ($item['f_yield'] / 100) * (1 - $item['f_moisture'] / 100); - $mvol += $item['f_amount'] * $factor * $item['f_moisture'] / 100; - $grainabsorbtion += $my_grain_absorbtion * $item['f_amount'] * $factor; - $msugars += $d; - } - } - $sugardensity = 1.611; - $v = $msugars / $sugardensity + $mvol; - $plato = 1000 * $msugars / ($v * 10); // deg. Plato - $mash_sg = plato_to_sg($plato); - $this->CheckInput('doel SG eind maischen: '.density_str($mash_sg), 'SG'); - } - if ($this->GetY() > 200) - $this->AddPage(); - else - $this->Ln(5); - - $this->Checkheader('Filteren en spoelen'); - $s = sprintf("%.1f",$row['sparge_volume'] * $factor).' liter spoelwater opwarmen tot '.sprintf("%.1f",$row['sparge_temp']).DEG.'C'; - $this->Checkline($s); - $s = 'spoelwater aanzuren tot pH <= '.sprintf("%.1f",$row['sparge_ph']).' met '; - $s .= sprintf("%.2f",$row['sparge_acid_amount']*1000*$factor).' ml. '.$acidtype[$row['sparge_acid_type']]; - $this->CheckInput($s, 'pH'); - $spoelw = (($row['boil_size']*$factor) - $mashwater + $grainabsorbtion + $row['eq_lauter_deadspace']) * 1.03; // A small heat correction - $this->Checkline('spoelen met ongeveer '.sprintf("%.1f",$spoelw).' liter spoelwater'); - $s = 'doelvolume in kookketel: '.sprintf("%.1f",$row['boil_size'] * $factor * 1.04).' liter ('; - $s .= sprintf("%.1f",kettle_cm($row['boil_size'] * $factor * 1.04,$row['eq_kettle_volume'],$row['eq_kettle_height'])).' cm onder de rand)'; - $this->CheckInput($s, 'cm'); - $pre_sg = estimate_sg($msugars * floatval($row['efficiency']) / 100,floatval($row['boil_size'] * $factor)); - $this->CheckInput('doel SG in kookketel: '.density_str($pre_sg), 'SG'); - $this->CheckInput('', 'pH'); - foreach($hops as $item2) { - if ($item2['h_useat'] == 1) { - $s = sprintf("%.1f",$item2['h_amount']*1000*$factor).' gr `'; - $s .= iconv('UTF-8','windows-1252',$item2['h_name']).'` toevoegen na het spoelen'; - $this->Checkline($s); - } - } - if ($this->Checksplit(1, $row)) - $factor = 1; - if ($this->GetY() > 200 && $row['boil_time'] > 0) - $this->AddPage(); - else if ($this->GetY() > 270 && $row['boil_time'] == 0) - $this->AddPage(); - else - $this->Ln(5); - - $this->Checkheader('Koken'); - if ($row['boil_time'] > 0) { - $this->Checkline('totale kooktijd: '.$row['boil_time'].' min.'); - for ($i = $row['boil_time']; $i >= 0; $i--) { - if ($i == 10) { - foreach($ferms as $item1) { - if ($item1['f_added'] == 1) { - $s = sprintf("%.3f",$item1['f_amount']*$factor).' kg `'; - $s .= iconv('UTF-8','windows-1252',$item1['f_name']).'` bij 10 minuten voor einde koken'; - $this->Checkline($s); - } - } - if ($row['brew_cooling_method'] == 1) - $this->Checkline('Plaats dompelkoeler bij 10 minuten voor einde koken'); - } - foreach($hops as $item2) { - if (($item2['h_useat'] == 2 || $item2['h_useat'] == 3) && ($item2['h_time'] == $i)) { - $s = sprintf("%.2f",$item2['h_amount']*1000*$factor).' gr `'; - $s .= iconv('UTF-8','windows-1252',$item2['h_name']).'` bij '; - if ($i > 0) - $s .= $i.' minuten voor einde koken'; - else - $s .= 'vlamuit'; - $this->Checkline($s); - } - } - foreach($miscs as $item3) { - if ($item3['m_use_use'] == 2 && $item3['m_time'] == $i) { - $unit = ($item3['m_amount_is_weight']) ? " gr ":" ml "; - $s = sprintf("%.2f",$item3['m_amount']*1000*$factor).$unit.'`'; - $s .= iconv('UTF-8','windows-1252',$item3['m_name']).'` bij '; - if ($i > 0) - $s .= $i.' minuten voor einde koken'; - else - $s .= 'vlamuit'; - $this->Checkline($s); - } - } - - } - $s = 'doelvolume einde koken: '.sprintf("%.1f",$row['batch_size']*$factor*1.04).' liter ('; - $s .= sprintf("%.1f",kettle_cm($row['batch_size']*$factor*1.04,$row['eq_kettle_volume'],$row['eq_kettle_height'])); - $s .= ' cm onder de rand)'; - $this->CheckInput($s, 'cm'); - $this->CheckInput('doel SG einde koken: '.density_str($row['est_og3']), 'SG'); - $this->CheckInput('', 'pH'); - if ($this->Checksplit(2, $row)) - $factor = 1; - } else { - $this->Checkline('Dit is een `no-boil\' recept'); - } - if ($this->GetY() > 200) - $this->AddPage(); - else - $this->Ln(5); - - if (($row['brew_whirlpool9'] + $row['brew_whirlpool7'] + $row['brew_whirlpool6'] + $row['brew_whirlpool2']) > 0) { - $this->Checkheader('Whirlpool en koelen'); - if ($row['brew_whirlpool9'] > 0) { - $s = 'Whirlpool voor '.$row['brew_whirlpool9'].' min. Temperatuur boven 85'.DEG.'C houden'; - $this->Checkline($s); - } - if ($row['brew_whirlpool7'] > 0) { - $this->Checkline('koelen tot 79'.DEG.'C'); - $s = 'Whirlpool voor '.$row['brew_whirlpool7'].' min. Temperatuur tussen 72 en 79'.DEG.'C houden'; - $this->Checkline($s); - } - if ($row['brew_whirlpool6'] > 0) { - $this->Checkline('koelen tot 66'.DEG.'C'); - $s = 'Whirlpool voor '.$row['brew_whirlpool6'].' min. Temperatuur tussen 60 en 66'.DEG.'C houden'; - $this->Checkline($s); - } - foreach($hops as $item2) { - if ($item2['h_useat'] == 4) { - $s = sprintf("%.1f",$item2['h_amount']*1000*$factor).' gr `'; - $s .= iconv('UTF-8','windows-1252',$item2['h_name']).'` voor '; - $s .= $item2['h_time'].' minuten in de whirlpool'; - $this->Checkline($s); - } - } - $this->Checkline('koelen tot '.sprintf("%.1f",$row['brew_cooling_to']).DEG.'C'); - if ($row['brew_whirlpool2'] > 0) { - $s = 'Whirlpool voor '.$row['brew_whirlpool2'].' min.'; - $this->Checkline($s); - } - } else { - $this->Checkheader('Koelen'); - $this->Checkline('koelen tot '.sprintf("%.1f",$row['brew_cooling_to']).DEG.'C'); - } - $this->Checkline('gistvat ontsmetten en evt. pomp en slangen ontsmetten'); - $this->CheckInput('wort naar gistvat overbrengen', 'Liter'); - if ($this->Checksplit(3, $row)) - $factor = 1; - if ($this->GetY() > 240) - $this->AddPage(); - else - $this->Ln(5); - - $climate = $row['brew_cooling_to']; - $this->Checkheader('Gist enten'); - $dry = 0; - foreach ($yeasts as $item) { - $name = iconv('UTF-8','windows-1252',$item['y_name']); - $product_id = iconv('UTF-8','windows-1252',$item['y_product_id']); - if ($item['y_use'] == 0) { // primary - if ($item['y_form'] == 0) { // Liquid - $this->Checkline(($item['y_amount']*$factor).' pak '.$product_id.', '.$name.' gist'); - } else if ($item['y_form'] == 1 || $item['y_form'] == 6) { // Dry or dried Kveik - $s = sprintf("%.1f",$item['y_amount']*$factor*1000).' gram '.$product_id.', '.$name; - $s .= ' gist'; - if ($item['y_form'] == 1) - $dry += $item['y_amount']*$factor*10000; - $this->Checkline($s); - } else { // Slant/Culture/Frozen/Bottle - $s = sprintf("%.0f",$item['y_amount']*$factor*1000).' ml '.$product_id.', '.$name.' gist'; - $this->Checkline($s); - } - if ($item['y_type'] == 6 && floatval($item['y_pitch_temperature']) > 0) { - $s = 'Gist enten bij ' . sprintf("%.1f",floatval($item['y_pitch_temperature'])).DEG.'C'; - $this->Checkline($s); - $climate = $item['y_pitch_temperature']; - } - } - } - if ($dry > 0) { - $this->Checkline('Gist rechtstreeks over het wort strooien'); - } else { - if ($row['starter_enable'] && $row['prop1_volume']) - $this->Checkline('giststarter toevoegen'); - else - $this->Checkline('gist toevoegen'); - } - if ($row['brew_fermenter_extrawater'] > 0) - $this->Checkline(sprintf("%.1f", $row['brew_fermenter_extrawater']*$factor).' liter water toevoegen in gistvat'); - if ($row['brew_aeration_type'] > 0) { - $s = 'wort '.$row['brew_aeration_time'].' minuten beluchten met '; - $s .= ($row['brew_aeration_type'] == 1) ? "lucht":"zuurstof"; - $this->Checkline($s); - } - if ($this->GetY() > 200) - $this->AddPage(); - else - $this->Ln(5); - - $this->Checkheader('Vergisting starten'); - $this->Checkline('klimaatkast instellen op '.sprintf("%.1f",$climate).DEG.'C'); - - /* - * During primary fermentation: fermentables, misc - */ - $lines = 0; - foreach($ferms as $item1) { - if ($item1['f_added'] == 2) - $lines++; - } - foreach($miscs as $item3) { - if ($item3['m_use_use'] == 3) - $lines++; - } - if ($lines) { - if ($this->GetY() > (270 - (5 * $lines))) - $this->AddPage(); - else - $this->Ln(5); - $this->Checkheader('Hoofdgisting'); - } - foreach($ferms as $item1) { - if ($item1['f_added'] == 2) { - $s = sprintf("%.3f",$item1['f_amount']*$factor).' kg `'; - $s .= iconv('UTF-8','windows-1252',$item1['f_name']).'` op dag 3 of 4 toevoegen'; - $this->Checkline($s); - } - } - foreach($miscs as $item3) { - if ($item3['m_use_use'] == 3) { - $unit = ($item3['m_amount_is_weight']) ? " gr ":" ml "; - $s = sprintf("%.1f",$item3['m_amount']*$factor*1000).$unit.'`'; - $s .= iconv('UTF-8','windows-1252',$item3['m_name']).'` op dag 3 of 4 toevoegen'; - $this->Checkline($s); - } - } - if ($this->Checksplit(4, $row)) - $factor = 1; - - /* - * During secondary fermentation: yeast - */ - $lines = 0; - foreach ($yeasts as $item4) { - if ($item4['y_use'] == 1) - $lines++; - if ($item4['y_harvest_time'] > 0) - $lines++; - } - if ($lines) { - if ($this->GetY() > (270 - (5 * $lines))) - $this->AddPage(); - else - $this->Ln(5); - $this->Checkheader('Nagisting'); - } - foreach ($yeasts as $item4) { - if ($item4['y_use'] == 1) { - $name = iconv('UTF-8','windows-1252',$item4['y_name']); - $product_id = iconv('UTF-8','windows-1252',$item4['y_product_id']); - if ($item4['y_form'] == 0) { // Liquid - $this->Checkline(($item4['y_amount']*$factor).' pak '.$product_id.', '.$name.' gist (eventueel met starter)'); - } else if ($item['y_form'] == 1) { // Dry - $s = sprintf("%.1f",$item4['y_amount']*$factor*1000).' gram '.$product_id.', '.$name; - $s .= ' gist'; - $this->Checkline($s); - } else { // Slant/Culture/Frozen/Bottle - $s = sprintf("%.0f",$item4['y_amount']*$factor*1000).' ml '.$product_id.', '.$name.' gist (eventueel met starter)'; - $this->Checkline($s); - } - } - if ($item4['y_harvest_time'] > 0) { - $s = 'Na ' . $item4['y_harvest_time'] . ' uur gist oogsten vanaf de '; - if ($item4['y_harvest_top'] > 0) - $s .= 'bovenzijde'; - else - $s .= 'bodem'; - $this->Checkline($s); - } - } - if ($this->Checksplit(5, $row)) - $factor = 1; - - /* - * During tertiary fermentation: fermentables, hop, yeast, misc - */ - $lines = 0; - foreach($ferms as $item1) { - if ($item1['f_added'] == 3) - $lines++; - } - foreach($hops as $item2) { - if ($item2['h_useat'] == 5) - $lines++; - } - foreach ($yeasts as $item4) { - if ($item4['y_use'] == 2) - $lines++; - } - foreach($miscs as $item3) { - if ($item3['m_use_use'] == 4) - $lines++; - } - if ($lines) { - if ($this->GetY() > (270 - (5 * $lines))) - $this->AddPage(); - else - $this->Ln(5); - $this->Checkheader('Lagering'); - } - foreach($ferms as $item1) { - if ($item1['f_added'] == 3) { - $s = sprintf("%.3f",$item1['f_amount']*$factor).' kg `'; - $s .= iconv('UTF-8','windows-1252',$item1['f_name']).'` toevoegen'; - $this->Checkline($s); - } - } - foreach($hops as $item2) { - if ($item2['h_useat'] == 5) { - $s = sprintf("%.1f",$item2['h_amount']*$factor*1000).' gr `'; - $s .= iconv('UTF-8','windows-1252',$item2['h_name']).'` voor '; - $s .= sprintf("%.0f",$item2['h_time']/1440).' dagen toevoegen'; - $this->Checkline($s); - } - } - foreach ($yeasts as $item4) { - if ($item4['y_use'] == 2) { - $name = iconv('UTF-8','windows-1252',$item4['y_name']); - $product_id = iconv('UTF-8','windows-1252',$item4['y_product_id']); - if ($item4['y_form'] == 0) { // Liquid - $s = ($item4['y_amount']*$factor).' pak '.$product_id.', '.$name.' gist (eventueel met starter)'; - } else if ($item4['y_form'] == 1) { // Dry - $s = sprintf("%.1f",$item4['y_amount']*$factor*1000).' gram '.$product_id.', '.$name; - $s .= ' gist'; - } else { // Slant/Culture/Frozen/Bottle - $s = sprintf("%.0f",$item4['y_amount']*$factor*1000).' ml '.$product_id.', '.$name; - $s .= ' gist (eventueel met starter)'; - } - $this->Checkline($s); - } - } - foreach($miscs as $item3) { - if ($item3['m_use_use'] == 4) { - $unit = ($item3['m_amount_is_weight']) ? " gr ":" ml "; - $s = sprintf("%.1f",$item3['m_amount']*$factor*1000).$unit.'`'; - $s .= iconv('UTF-8','windows-1252',$item3['m_name']).'` voor '; - $s .= sprintf("%.0f",$item3['m_time']/1440).' dagen toevoegen'; - $this->Checkline($s); - } - } - if ($this->Checksplit(6, $row)) - $factor = 1; - - /* - * During packaging: fermentables, yeast, misc - */ - $lines = 0; - foreach($ferms as $item1) { - if ($item1['f_added'] >= 4) - $lines++; - } - $yeasts = json_decode($row['json_yeasts'], true); - foreach ($yeasts as $item4) { - if ($item4['y_use'] == 3) - $lines++; - } - $miscs = json_decode($row['json_miscs'], true); - foreach($miscs as $item3) { - if ($item3['m_use_use'] == 5) - $lines++; - } - if ($lines) { - if ($this->GetY() > (270 - (5 * $lines))) - $this->AddPage(); - else - $this->Ln(5); - $this->Checkheader('Verpakken'); - } - foreach($ferms as $item1) { - if ($item1['f_added'] == 4) { - $s = sprintf("%.3f",$item1['f_amount']*$factor).' kg `'; - $s .= iconv('UTF-8','windows-1252',$item1['f_name']).'`'; - if ($row['bottle_priming_water'] > 0) - $s .= ' met '.sprintf("%.3f",$row['bottle_priming_water']*$factor).' liter water'; - $s .= ' bij bottelen'; - $this->Checkline($s); - } - if ($item1['f_added'] == 5) { - $s = sprintf("%.3f",$item1['f_amount']*$factor).' kg `'; - $s .= iconv('UTF-8','windows-1252',$item1['f_name']).'`'; - if ($row['keg_priming_water'] > 0) - $s .= ' met '.sprintf("%.3f",$row['keg_priming_water']*$factor).' liter water'; - $s .= ' bij op fust zetten'; - $this->Checkline($s); - } - } - foreach ($yeasts as $item4) { - if ($item4['y_use'] == 3) { - $name = iconv('UTF-8','windows-1252',$item4['y_name']); - $product_id = iconv('UTF-8','windows-1252',$item4['y_product_id']); - if ($item4['y_form'] == 0) { // Liquid - $s = '`'.$product_id.', '.$name; - } else if ($item4['y_form'] == 1) { // Dry - $s = sprintf("%.1f",$item4['y_amount']*$factor*1000).' gram `'.$product_id.', '.$name; - } else { // Slant/Culture/Frozen/Bottle - $s = sprintf("%.0f",$item4['y_amount']*$factor*1000).' ml `'.$product_id.', '.$name; - } - $s .= '` als bottelgist'; - $this->Checkline($s); - } - } - foreach($miscs as $item3) { - if ($item3['m_use_use'] == 5) { - $unit = ($item3['m_amount_is_weight']) ? " gr ":" ml "; - $s = sprintf("%.1f",$item3['m_amount']*$factor*1000).$unit.'`'; - $s .= iconv('UTF-8','windows-1252',$item3['m_name']).'` bij bottelen toevoegen'; - $this->Checkline($s); - } - } - } -} - - - -class PDF extends PDF_MySQL_Table { - function Header() { - global $row; - global $prdate; - global $stage; - $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 ($row['divide_parts'] == 0) - $this->Cell(0,5,"Niet gespitst",0,1,'L'); - else - $this->Cell(0,5,"Split batch ".($row['divide_part'] + 1)." van ".($row['divide_parts'] + 1),0,1,'L'); - $this->Ln(2); - // Ensure table header is printed - parent::Header(); - } -} - - -/* - * Generate checklist PDF from recipe data - */ -$pdf = new PDF(); -$pdf->Checklist($row); -$pdf->Output();