<?php

require_once 'PhonalisaPDF.php';


class InvoiceGenerator {

	private $ucItems = array();
	private $pdf = NULL;
	
	public function init($title = "", $subject = "") {
		
		$this->pdf = new PhonalisaPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
		// set document information
		$this->pdf->SetCreator(PDF_CREATOR);
		$this->pdf->SetAuthor(cfg("PHONALISA_NAME"));
		$this->pdf->SetTitle($title);
		$this->pdf->SetSubject($subject);
		$this->pdf->SetKeywords('Phonalisa, ');
		
		// set default header data
		$this->pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, $title, $subject, array(0,64,255), array(0,64,128));
		$this->pdf->setFooterData(array(0,64,0), array(0,64,128));
		
		// set header and footer fonts
		$this->pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
		$this->pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
		
		// set default monospaced font
		$this->pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
		
		// set margins
		$this->pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
		$this->pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
		$this->pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
		
		// set auto page breaks
		$this->pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
		
		// set image scale factor
		$this->pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
		
		// set some language-dependent strings (optional)
		if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
			require_once(dirname(__FILE__).'/lang/eng.php');
			$this->pdf->setLanguageArray($l);
		}
		
		// ---------------------------------------------------------
		
		// set default font subsetting mode
		$this->pdf->setFontSubsetting(true);
		
		// Set font
		// dejavusans is a UTF-8 Unicode font, if you only need to
		// print standard ASCII chars, you can use core fonts like
		// helvetica or times to reduce file size.
		$this->pdf->SetFont('dejavusans', '', 11, '', true);
	}
	
	public function generatePrepaidInvoice(array $UCItems, $accountBalance) {
		
		$this->pdf->AddPage();
		
		// set text shadow effect
		$this->pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));
		$header = array(__('INVOICE_HEADER_DATE'), __('INVOICE_HEADER_TARGET'), __('INVOICE_HEADER_DURATION'), __('INVOICE_HEADER_PRICE_PER_MINUTE'), __('INVOICE_HEADER_PRICE'));
		$footer = array();
		$data = array();

		$totalPriceCent = 0;
		
		foreach ($UCItems as $UCItem) {
			
			$maskedNumber = $UCItem->remote_number;
			if (strlen($maskedNumber) > 6) {
				$maskedNumber = substr($maskedNumber, 0, strlen($maskedNumber)-4);
				$maskedNumber .= "XXXX";
			}
			
			$set = array();
			$set[] = PhonalisaDate::userDateTime($UCItem->timestamp, true);
			$set[] = $maskedNumber;
			$set[] = RelativeDateFormatter::durationInNumbers($UCItem->duration); // $UCItem->duration;
			$set[] = CurrencyHelper::centToEuroString($UCItem->valueForKey("cent_price_per_minute"));
			$set[] = CurrencyHelper::centToEuroString($UCItem->cent_price);
			$data[$UCItem->timestamp] = $set;
			$totalPriceCent += (int)$UCItem->cent_price;
		}
		
		sort($data);
		$priceWithoutVAT = intval($totalPriceCent * 100 / 119);
		$priceVAT = $totalPriceCent - $priceWithoutVAT; 
		
		$priceSumRow = array();
		$priceSumRow[] = __("INVOICE_PRICE_SUM");
		$priceSumRow[] = CurrencyHelper::centToEuroString($totalPriceCent);
		//echo $totalPriceCent;die();
		$priceVATRow = array();
		$priceVATRow[] = __("INVOICE_PRICE_VAT");
		$priceVATRow[] = CurrencyHelper::centToEuroString($priceVAT);
		
		$priceTOTRow = array();
		$priceTOTRow[] = __("INVOICE_TOTAL_PRICE");
		$priceTOTRow[] = CurrencyHelper::centToEuroString($totalPriceCent);
		
		$moneyOnAccountRow = array();
		$moneyOnAccountRow[] = __("INVOICE_MONEY_ON_ACCOUNT");
		$moneyOnAccountRow[] = $accountBalance." €";
		
		
		$footer[] = $priceSumRow;
		$footer[] = $priceVATRow;
		$footer[] = $priceTOTRow;
		$footer[] = $moneyOnAccountRow;
		
		// print colored table
		$this->pdf->ColoredTable($header, $footer, $data);
		
		// Set some content to print
/*		$html = ' 
<h2>'.__("INVOICE_TOTAL_PRICE").': '.$totalPriceCent.'</h2>
<i>This is the first example of TCPDF library.</i>
<p>This text is printed using the <i>writeHTMLCell()</i> method but you can also use: <i>Multicell(), writeHTML(), Write(), Cell() and Text()</i>.</p>
<p>Please check the source code documentation and other examples for further information.</p>
<p style="color:#CC0000;">TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE <a href="http://sourceforge.net/donate/index.php?group_id=128076">MAKE A DONATION!</a></p>
';
		
		// Print text using writeHTMLCell()
		$this->pdf->writeHTML($html, true, false, true, false, '');
		*/
		// $this->pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
		
		
		$this->pdf->Output('example_001.pdf', 'I');
		
	}
		
	
}