www/prod_r_yeast.php

Wed, 16 Oct 2019 21:05:03 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Wed, 16 Oct 2019 21:05:03 +0200
changeset 514
3c680d1dea35
parent 454
f05ced2b5124
child 655
f4e00869f39f
permissions
-rw-r--r--

Added dutch array strings to a global php script. Changed fermentables, hops, yeast and misc inventory scripts to use these strings between the database scripts and javascript scripts. This makes filtering on types strings useable. Added these changes to the product/recipe forum and print exports too.

<?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');


$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');

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

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 TableTotals() {

		global $link;

		$vul = $this->w - $this->rMargin - $this->lMargin - 151;
		$this->AddCol(16,'Code','L');
		$this->AddCol($vul,'Naam','L');
		$this->AddCol(35,'Gist','L');
		$this->AddCol(20,'Hoofdgisting','R');
		$this->AddCol(20,'Nagisten','R');
		$this->AddCol(20,'Lageren','R');
		$this->AddCol(10,'Duur','R');
		$this->AddCol(10,'OG','R');
		$this->AddCol(10,'FG','R');
		$this->AddCol(12,'SVG','R');

		$cMargin=$this->cMargin;
                $this->cMargin=2;
                $this->TableX=$this->lMargin;
		$this->TableHeader();
                $this->ProcessingTable=true;

		$this->SetFont('Helvetica','',9);
                $this->SetFillColor(210,245,255);

		$result = mysqli_query($link, "SELECT * FROM products WHERE package_date AND type='2' ORDER BY json_yeasts");
		while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
			/*
			 * Data is not always available, try to calculate the mssing pieces.
			 */
			$y_name = $y_lab = $y_product = '';
			$yeasts = json_decode($row['json_yeasts'], true);
			foreach($yeasts as $item) {
				if ($item['y_use'] == 0) {
					$y_name = iconv('UTF-8','windows-1252',$item['y_name']);
					$y_lab = iconv('UTF-8','windows-1252',$item['y_laboratory']);
					$y_product = iconv('UTF-8','windows-1252',$item['y_product_id']);
					break;
				}
			}

			// name,brew_date_end,primary_end_date,secondary_end_date,package_date
			$d1 = new DateTime($row['brew_date_end']);
			$d2 = new DateTime($row['primary_end_date']); 
			$d3 = new DateTime($row['secondary_end_date']);
			$d4 = new DateTime($row['package_date']);

			$diff = $d2->diff($d1); 
			$primary_days = $diff->days;
			$diff = $d3->diff($d2);
                        $secondary_days = $diff->days;
			$diff = $d4->diff($d3);
                        $tertiary_days = $diff->days;
			$diff = $d4->diff($d1);
                        $total_days = $diff->days;

			$og = floatval($row['brew_fermenter_sg']);
			$fg = floatval($row['fg']);
			$svg = 100 * ($og - $fg) / ($og - 1);

			$name = iconv('UTF-8','windows-1252',$row['name']);
			$this->SetX($this->TableX);
			$this->Cell(16,5,$row['code'],0,0,'L',true);
			$this->Cell($vul,5,$name,0,0,'L',true);
			$this->Cell(35,5,$y_lab.' '.$y_product,0,0,'L',true);
			$this->Cell(13,5,sprintf("%.1f",$row['primary_end_temp']).DEG,0,0,'R',true);
			$this->Cell( 7,5,sprintf("%d",$primary_days),0,0,'R',true);
			$this->Cell(13,5,sprintf("%.1f",$row['secondary_temp']).DEG,0,0,'R',true);
			$this->Cell( 7,5,sprintf("%d",$secondary_days),0,0,'R',true);
			$this->Cell(13,5,sprintf("%.1f",$row['tertiary_temp']).DEG,0,0,'R',true);
			$this->Cell( 7,5,sprintf("%d",$tertiary_days),0,0,'R',true);
			$this->Cell(10,5,sprintf("%d",$total_days),0,0,'R',true);
			$this->Cell(10,5,sprintf("%.3f",$og),0,0,'R',true);
			$this->Cell(10,5,sprintf("%.3f",$fg),0,0,'R',true);
			$this->Cell(12,5,sprintf("%.1f",$svg).'%',0,0,'R',true);
			$this->Ln();
		}
		$this->ProcessingTable=false;
                $this->cMargin=$cMargin;
                $this->aCols=array();
                $this->Ln();
	}
}



class PDF extends PDF_MySQL_Table {
        function Header() {
		global $prdate;
		global $my_brewery_name;
                $this->Image('images/logo.png',10,10,30);
                // Title
                $this->SetFont('Helvetica','B',18);
                $this->SetX(45);
                $this->Cell(0,8,"Vergisting ".$my_brewery_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->Ln(20);
                // Ensure table header is printed
                parent::Header();
        }
}



/*
 * Generate PDF
 */
$pdf = new PDF();
$pdf->AddPage();
$pdf->TableTotals();
$pdf->Output();

mercurial