Current File : /home/users/barii/public_html/finansenl.com.pl/wodki/application/classes/Model/invoice.php
<?php defined('SYSPATH') or die('No direct access allowed.');

class Model_Invoice extends ORM {

	protected $_belongs_to = array('User' => array('foreign_key' => 'customers_id'), 'customer' => array('foreign_key' => 'customers_id'), 'user' => array('model' => 'User', 'foreign_key' => 'user_id'), 'case' => array('model' => 'case', 'foreign_key' => 'cases_id'));
	
	static public function getSumInvoiceDetail( $invoice_id ) {
	$suma = 0;
		foreach( ORM::Factory('invoice_detail')->where('invoices_id','=', $invoice_id)->find_all() as $id) {
			
			
			$suma += ORM::Factory('booking', $id->bookings_id)->price;
			
		}
		return $suma;
		
	}
	
	static public function getInvoice($customers_id, $start, $end ) {
		//if( $month < 10 ) $month = "0".$month;
		$invoice = ORM::Factory('invoice')->where('customers_id','=', $customers_id)->where(DB::expr('DATE_FORMAT(`settlement_period`,"%Y-%m-%d")'),'=', $start)->where(DB::expr('DATE_FORMAT(`settlement_period_end`,"%Y-%m-%d")'),'=', $end)->find();
		if( $invoice->loaded() ) return $invoice; else return false;
	}
	
		
	static public function getInvoices($customers_id, $start, $end ) {
		//if( $month < 10 ) $month = "0".$month;
		// tutaj jednak szukamy wszystkich rozliczeń w zadanym okresie a nie tylko konkretnych dat settlement_period_end settlement_period
		$invoice = ORM::Factory('invoice')->where('customers_id','=', $customers_id)->where(DB::expr('DATE_FORMAT(`settlement_period`,"%Y-%m-%d")'),'>=', $start)->where(DB::expr('DATE_FORMAT(`settlement_period_end`,"%Y-%m-%d")'),'<=', $end)->find_all();
		if( $invoice->count() == 0 ) return false;
		//if( $invoice->count() == 1 ) return $invoice[0];
		if( $invoice->count() > 0 ) return $invoice;
		
		//if( $invoice->loaded() ) return $invoice; else return false;
	}
	
	static public function updateInvoice( $data, $id ) {
	
		$inv = ORM::Factory('invoice', $id);
		foreach( $data as $key => $val ) {
			$inv->$key = $val;
		}
		$inv->save();
		
	}
	
	
		static public function settlementCommissionRange($user_id, $date_start, $date_end ) {
		
		
		$portal1 = Model_Booking::getCommissionRange( $user_id, $date_start, $date_end, "REZERWUJCZARTER");
		$portal2 = Model_Booking::getCommissionRange( $user_id, $date_start, $date_end, "BOOKANDSAIL");
		$widget = Model_Booking::getCommissionRange( $user_id, $date_start, $date_end, "WIDGET");
	
		$all_commission = $portal1['commission']+$portal2['commission']+$widget['commission'];
		$all_commission = number_format(round($all_commission*(1+(SimpleAuth::instance()->get_user()->tax/100))), 2, '.', '');
		
		$user = SimpleAuth::instance()->get_user();

$booking =  ORM::Factory('booking')
						->join('auth_users','LEFT')
						->on('auth_users.id', '=', 'booking.user_id')
						->select('booking.id')
						->where(DB::expr('DATE_FORMAT(`reservation_date`,"%Y-%m-%d")'),'>=', $date_start )
						->where(DB::expr('DATE_FORMAT(`reservation_date`,"%Y-%m-%d")'),'<=', $date_end )
						->and_where_open()
						->where('booking.user_id','=',  Model_User::topLevel($user_id) )
						->or_where('auth_users.level','=',  Model_User::topLevel($user_id) )
						->and_where_close()
						->where('booking.source','=', 'REZERWUJCZARTER')
						->where('booking.status','>=', 8)
						->where('booking.settlement','=', 0)
						->find_all();
						
						
		
$booking2 =  ORM::Factory('booking')
						->join('auth_users','LEFT')
						->on('auth_users.id', '=', 'booking.user_id')
						->select('booking.id')
						->where(DB::expr('DATE_FORMAT(`reservation_date`,"%Y-%m-%d")'),'>=', $date_start )
						->where(DB::expr('DATE_FORMAT(`reservation_date`,"%Y-%m-%d")'),'<=', $date_end )
						->and_where_open()
						->where('booking.user_id','=',  Model_User::topLevel($user_id) )
						->or_where('auth_users.level','=',  Model_User::topLevel($user_id) )
						->and_where_close()
						->where('booking.source','=', 'BOOKANDSAIL')
						->where('booking.status','>=', 8)
						->where('booking.settlement','=', 0)
						->find_all();

$booking3 =  ORM::Factory('booking')
						->join('auth_users','LEFT')
						->on('auth_users.id', '=', 'booking.user_id')
						->select('booking.id')
						->where(DB::expr('DATE_FORMAT(`reservation_date`,"%Y-%m-%d")'),'>=', $date_start )
						->where(DB::expr('DATE_FORMAT(`reservation_date`,"%Y-%m-%d")'),'<=', $date_end )
						->and_where_open()
						->where('booking.user_id','=',  Model_User::topLevel($user_id) )
						->or_where('auth_users.level','=',  Model_User::topLevel($user_id) )
						->and_where_close()
						->where('booking.source','=', 'WIDGET')
						->where('booking.status','>=', 8)
						->where('booking.settlement','=', 0)
						->find_all();						
		//$booking = ORM::factory('booking')->join('auth_users','LEFT')->on('auth_users.id', '=', 'booking.user_id')->and_where_open()->where('booking.user_id','=',  Model_User::topLevel($user_id) )->or_where('auth_users.level','=',  Model_User::topLevel($user_id) )->and_where_close()->where('reservation_date','LIKE', $year.'-'.$month.'%')->where('booking.source','=', 'REZERWUJCZARTER')->find_all();
		//$booking2 = ORM::factory('booking')->join('auth_users','LEFT')->on('auth_users.id', '=', 'booking.user_id')->and_where_open()->where('booking.user_id','=',  Model_User::topLevel($user_id) )->or_where('auth_users.level','=',  Model_User::topLevel($user_id) )->and_where_close()->where('reservation_date','LIKE', $year.'-'.$month.'%')->where('booking.source','=', 'BOOKANDSAIL')->find_all();
		//$booking3 = ORM::factory('booking')->join('auth_users','LEFT')->on('auth_users.id', '=', 'booking.user_id')->and_where_open()->where('booking.user_id','=',  Model_User::topLevel($user_id) )->or_where('auth_users.level','=',  Model_User::topLevel($user_id) )->and_where_close()->where('reservation_date','LIKE', $year.'-'.$month.'%')->where('booking.source','=', 'WIDGET')->find_all();
		
		// Sprawdzamy czy nie jest to rozliczenie miesięczne przypadkiem....
		
		$invoice_id = self::createInvoice("Opłata prowizyjna ".$date_start."-".$date_end, $all_commission, $user_id, $user->id, $date_start, $date_end, 1 );
		
		if( $invoice_id != false ) {
			
			$sum_reservation_price=0;
				
				// Szczegóły FV
					foreach( $booking as $row ) {
					
							$row->settlement = 1;
							$row->save(); // rozliczono rezerwację...
							$inv_det = ORM::Factory('invoice_detail');
							$inv_det->invoices_id = $invoice_id;
							$inv_det->bookings_id = $row->id;
							$inv_det->save();
							
							$sum_reservation_price += $row->price;
						}
					foreach( $booking2 as $row ) {
						$row->settlement = 1;
							$row->save(); // rozliczono rezerwację...
							$inv_det = ORM::Factory('invoice_detail');
							$inv_det->invoices_id = $invoice_id;
							$inv_det->bookings_id = $row->id;
							$inv_det->save();
							
							$sum_reservation_price += $row->price;
						}
					foreach( $booking3 as $row ) {
						$row->settlement = 1;
							$row->save(); // rozliczono rezerwację...
							$inv_det = ORM::Factory('invoice_detail');
							$inv_det->invoices_id = $invoice_id;
							$inv_det->bookings_id = $row->id;
							$inv_det->save();
							
							$sum_reservation_price += $row->price;
						}
						
							
				$inv_update = ORM::Factory('invoice', $invoice_id);
				$inv_update->sum_reservation_price = $sum_reservation_price;
				$inv_update->save(); // Aktualizacji sumy rezerewacji, pozniej potrzemna - wartosc-prowizja do wyplacenia aramtorowi
				
		
		$invoice = self::createInvoicePDF( $invoice_id );
		$confirmation_file_name = self::createConfirmationPDF( $booking, $booking2, $booking3, $invoice );

		$params = array();
	//	$params['item'] = ORM::Factory('item', $booking->items_id);
	//	$params['booking'] = $booking;
		$params['customer'] = $invoice->customer;
	
		$email_template = cms::getTemplateEmail('SEND_INVOICE', $params);
		//echo $invoice->auth_user->email;
		
		$attachments = array(0=>$confirmation_file_name);
		if( $invoice->is_commission == 0 ) { // wysyłamy FV, gdyż jest rozliczenie miesięczne
			$attachments[1] = $invoice->file_name;
		} 
		
		//cms::standardEmail($invoice->auth_user->email, $email_template['subject'], $email_template['text'], true, null, $attachments);
		
		return true;
		} else { return false; }
		
	}
	
	static public function createInvoice( $title, $price, $customers_id, $user_id, $date_start=null, $date_end = null, $is_commission=1, $products_ids) {
	
		$price = (float)$price;
	
	//	if( $price > 0 ) {
	
		$user = ORM::Factory('User', $user_id);
		$customer = ORM::Factory('User', $customers_id);
		/*
		$date_temp = explode("-", $date_start );
		$settlement_month = $date_temp[1];
		$settlement_year = $date_temp[0];
		
		if( $settlement_month < 10 ) $settlement_month = "0".$settlement_month;
		*/
		$max = ORM::Factory('invoice')->select(array(DB::expr('MAX(number_fv)'), 'number'))->find();
		
		$invoice = ORM::Factory('invoice');		
		$invoice->number_fv = ($is_commission==0) ? $max->number+1 : 0;
		$invoice->products_ids = $products_ids;
		//if( $customer->settlement_method = 'COMPANY' )
		//	$invoice->price = $price = Model_Currency::calculateBruttoFromNetto($price, $user->tax);
		//else
			$invoice->price = $price;
		
		$invoice->title =  $title;
		$invoice->settlement_period = $date_start;
		$invoice->settlement_period_end = $date_end;
		//$invoice->settlement_period = $settlement_year.'-'.$settlement_month.'-'.date('t', mktime(0, 0, 0, $settlement_month, 1, $settlement_year)); // ostatni dzien miesiac rozliczeniowego
		$invoice->tax = Model_Currency::calculateTaxFromBrutto($price, $user->tax);
		$invoice->netto = Model_Currency::calculateNettoFromBrutto($price, $user->tax);
		$invoice->status = ($is_commission==1) ? 1 : 0;
		$invoice->is_commission = $is_commission;
		$invoice->customers_id = $customers_id;
		$invoice->user_id = $user_id;
		$invoice->save();
		
		return $invoice->id;
	//	} else return false;
		
	}
	
	static public function createInvoicePDF( $id, $preview = false ) {

	//$invoice_count = ORM::Factory('invoice')->where('user_id','=', SimpleAuth::instance()->get_user()->id)->find_all()->count()+1;
	
	$invoice = ORM::Factory('invoice', $id);
	$invoice_count = $invoice->number_fv;
	$user = $invoice->user;

	$customer = $invoice->auth_user; // ARMATOR

	defined('FPDF_FONTPATH') OR define('FPDF_FONTPATH','modules/fpdf/font/');
	
	$height = 10;
	
	require_once('modules/fpdf/fpdf.php');
	$faktura = new FPDF();
	$faktura->SetUTF8(true);
	$faktura->SetDisplayMode('real', 'single');
	$faktura->Open();
	$faktura->AddPage();
	$faktura->AddFont('arial_ce', "", "arial_ce.php");

	$faktura->SetCompression(false);  //włącza kompresję dokumentu

	/* a poniższe tylko dla ambitnych */
	$faktura->SetAuthor('Faktura VAT');  //ustawia autora dokumentu
	$faktura->SetCreator('Faktura VAT');  //ustawia generator dokumentu
	$faktura->SetSubject('Faktura VAT');  //ustawia temat dokumentu
	$faktura->SetTitle('Faktura VAT');  //ustawia tytuł dokumentu

	$faktura->SetDisplayMode(200);  //domyślne powiększenie dokumentu w przeglądarce
	//$faktura->SetMargins(10, 10 , 10);  //ustawia marginesy dla dokumentu
	//$faktura->Image('images/logo.jpg', 28, 15,127,77);					
	
	$z_x = 237;
	$y = 20;
	$faktura->SetFont('arial_ce','',11);	
	$faktura->MultiCell(0, $height-10,  'Data wystawienia: '.$invoice->date, 0, 'R', 0);
	
	$faktura->MultiCell(0, $height+20,  'Data sprzedaży: '.$invoice->date, 0, 'R', 0);
		
	$y += 30;
	if( !empty( $user->logo ) ) {
	//$faktura->Image($user->logo, 10, 20, 193, 59); 
	}
	
	$faktura->SetFont('arial_ce','',22);	
	$faktura->MultiCell(0, $height+15, 'FAKTURA VAT', 0, 'C', 0);						
							
	$y += 5;				
	$faktura->SetFont('arial_ce','',12);		
	$faktura->MultiCell(0, $height,  'F/'.$invoice_count, 0, 'C', 0);
	
	$y += 5;				
	$faktura->SetFont('arial_ce','',6);		
	$faktura->MultiCell(0, $height,  __t('oryginał/kopia'), 0, 'C', 0);

	$faktura->SetFont('arial_ce','',11);	
	$faktura->SetXY(28, 112);
	$faktura->SetFillColor(170,170,170);
	$faktura->MultiCell(260, 20,  __t('Sprzedawca'), 1, 'C', 1);
	$faktura->MultiCell(260, 20,  $user->company, 'LRT', 'L', 0);
	$faktura->MultiCell(260, 20,  $user->address, 'LR', 'L', 0);
	$faktura->MultiCell(260, 20,  $user->postcode.' '.$user->city, 'LR', 'L', 0);
	$faktura->MultiCell(260, 20,  $user->nip, 'LRB', 'L', 0);
	
	$faktura->SetXY(305, 112);
	$faktura->MultiCell(260, 20,  __t('Nabywca'), 1, 'C', 1);
	$faktura->SetXY(305, 132);		
	$faktura->MultiCell(260, 20,  !empty( $customer->billing_company ) ? $customer->billing_company : $customer->firstname.' '.$customer->lastname, 'LRT', 'L', 0);
	$faktura->SetFont('arial_ce','',12);		
	$faktura->SetXY(305, 152);
	$faktura->MultiCell(260, 20,  !empty($customer->billing_address) ? $customer->billing_address : $customer->address, 'LR', 'L', 0);
	$faktura->SetXY(305, 172);
	$city = !empty($customer->billing_city) ? @$customer->billing_city : @$customer->city;
	$faktura->MultiCell(260, 20,  !empty($customer->billing_postcode) ? $customer->billing_postcode : $customer->postcode.' '.$city, 'LR', 'L', 0);
	$faktura->SetXY(305, 192);
	$faktura->MultiCell(260, 20,  @$customer->nip, 'LRB', 'L', 0);
	
	$faktura->SetFillColor(255,255,255);
	
	$faktura->SetXY(28, 230);
	
	$faktura->SetFont('arial_ce','',6);	
	
	$faktura->MultiCell(15, 25, __t("Lp"), 1, 'C', 0);
	$faktura->SetXY(43, 230);
	$faktura->MultiCell(280, 25, __t("Nazwa"), 1, 'L', 0);
	$faktura->SetXY(323, 230);
	$faktura->MultiCell(30, 25, __t("PKWiU"), 1, 'C', 0);
	$faktura->SetXY(353, 230);
	$faktura->MultiCell(20, 25, __t("Ilość"), 1, 'C', 0);
	$faktura->SetXY(373, 230);
	$faktura->MultiCell(50, 25, __t("Cena jedn. netto"), 1, 'C', 0);
	$faktura->SetXY(423, 230);
	$faktura->MultiCell(40, 25, __t("Wart. netto"), 1, 'C', 0);
	$faktura->SetXY(463, 230);
	$faktura->MultiCell(60, 25, __t("Podatek"), 1, 'C', 0);
	$faktura->SetXY(523, 230);
	$faktura->MultiCell(42, 25, __t("Wart. brutto"), 1, 'C', 0);
	
//	$faktura->SetFont('arial_ce','',6);		
	
	$Y_POS = 255;
	
	$wartosc_netto = 0;
	$podatek = 0;
	$wartosc_brutto = 0;
	
	$suma_wartosc_netto = 0;
	$suma_podatek = 0;
	$suma_wartosc_brutto = 0;	
	
	$suma_wartosc_netto23 = 0;
	$suma_podatek23 = 0;
	$suma_wartosc_brutto23 = 0;	
	
	$suma_wartosc_netto8 = 0;
	$suma_podatek8 = 0;
	$suma_wartosc_brutto8 = 0;	
	
	$suma_wartosc_netto3 = 0;
	$suma_podatek3 = 0;
	$suma_wartosc_brutto3 = 0;	
	
	$suma_wartosc_netto0 = 0;
	$suma_podatek0 = 0;
	$suma_wartosc_brutto0 = 0;	
	
	$suma_wartosc_nettozw = 0;
	$suma_podatekzw = 0;
	$suma_wartosc_bruttozw = 0;	
	
	$data['titleposition_1'] = __t($invoice->title);
	$data['jmposition_1'] = __t('szt.');
	$data['pkwiu_1'] = '';
	$data['amountposition_1'] = 1;
	$data['priceposition_1'] = $invoice->price;
	$data['rateposition_1'] = $invoice->tax;

	for( $i = 1; $i < 2; $i++ ) {
	
	$titleposition = $data['titleposition_'.$i];
	$jmposition = $data['jmposition_'.$i];
	$pkwiu = $data['pkwiu_'.$i];
	$amountposition = $data['amountposition_'.$i];
	$priceposition = $data['priceposition_'.$i];
	$rateposition = $data['rateposition_'.$i];

	if( !empty( $titleposition ) ) {

		$wartosc_brutto = $invoice->price;
			
		$wartosc_netto = $invoice->netto;
		
		$podatek = $invoice->tax;
		

		$suma_wartosc_brutto += $wartosc_brutto;

		$suma_wartosc_netto += $wartosc_netto;

		$suma_podatek += $podatek;

		$faktura->SetXY(28, $Y_POS);
		
		$faktura->MultiCell(15, 25, $i.".", 1, 'C', 0);
		$faktura->SetXY(43, $Y_POS);
		$faktura->MultiCell(280, 25, $titleposition, 1, 'L', 0);
		$faktura->SetXY(323, $Y_POS);
		$faktura->MultiCell(30, 25, $pkwiu, 1, 'C', 0);
		$faktura->SetXY(353, $Y_POS);
		$faktura->MultiCell(20, 25, $amountposition, 1, 'C', 0);
		$faktura->SetXY(373, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($wartosc_netto, 2, ',', ' '), 1, 'C', 0);
		$faktura->SetXY(423, $Y_POS);
		$faktura->MultiCell(40, 25, number_format($wartosc_netto, 2, ',', ' '), 1, 'C', 0);
		$faktura->SetXY(463, $Y_POS);
		$faktura->MultiCell(20, 25, $user->tax."%", 1, 'C', 0);
		$faktura->SetXY(483, $Y_POS);
		$faktura->MultiCell(40, 25, number_format($podatek, 2, ',', ' '), 1, 'C', 0);
		$faktura->SetXY(523, $Y_POS);
		$faktura->MultiCell(42, 25, number_format($wartosc_brutto, 2, ',', ' '), 1, 'C', 0);
		
		$Y_POS = $Y_POS+25;
		
	}
	
	}
	
	//$suma_wartosc_brutto = number_format($invoice->price, 2, ',', ' ');

	$faktura->SetXY(323, $Y_POS);
	$faktura->MultiCell(30, 25, __t("Razem"), 1, 'C', 0);
	$faktura->SetXY(353, $Y_POS);
	$faktura->MultiCell(20, 25, "", 1, 'C', 0);
	$faktura->SetXY(373, $Y_POS);
	$faktura->MultiCell(50, 25, "", 1, 'C', 0);
	$faktura->SetXY(423, $Y_POS);
	$faktura->MultiCell(40, 25, number_format($suma_wartosc_netto, 2, ',', ' '), 1, 'C', 0);
	$faktura->SetXY(463, $Y_POS);
	$faktura->MultiCell(20, 25, "X", 1, 'C', 0);
	$faktura->SetXY(483, $Y_POS);
	$faktura->MultiCell(40, 25, number_format($suma_podatek, 2, ',', ' '), 1, 'C', 0);
	$faktura->SetXY(523, $Y_POS);
	$faktura->MultiCell(42, 25,  number_format($invoice->price, 2, ',', ' '), 1, 'C', 0);

	$Y_POS = $Y_POS+25;

	$Y = $faktura->getY()+20;

	//$slownie = cms::words2pay($suma_wartosc_brutto);
	$slownie = '';

	$faktura->SetXY(28, $Y);
	$payment_method = __t('przelew');
	$faktura->MultiCell(0, 15, __t("Termin płatności").": ".date('d-m-Y', strtotime($invoice->date)+300*24*Kohana::$config->load('site.maturity'))."\n".__t("Sposób płatności").": ".$payment_method."\n".__t("Zapłacono").": 0,00 zł\n".__t("Wartosc brutto").": ".$suma_wartosc_brutto." zł\n".__t("Słownie").": ".$slownie."\n".__t("Nazwa banku").": ".$user->bank."\n".__t("Numer konta").": ".$user->number_account , 1, 'L', 0);
	
	//$faktura->SetXY(415, $Y);
	
	//$faktura->MultiCell(150, 25, "Całkowita kwota:  10 000,00 PLN\nZapłacono: 10 000,00 PLN\nDo zapłaty: 10 000,00 PLN" , 1, 'R', 0);
	
	$Y += 145;
	
	$faktura->SetXY(28, $Y);
	
	$faktura->SetFont('arial_ce','',6);	
	
	$faktura->MultiCell(300, 10, "--------------------------\nPodpis osoby upoważnionej do\nwystawienia faktury" , 0, 'L', 0);
	
	$faktura->SetXY(365, $Y);
	
	$faktura->MultiCell(200, 10, "--------------------------\nPodpis osoby upoważnionej do\nodbioru faktury" , 0, 'R', 0);
	
	$Y += 75;
	
	$faktura->SetXY(28, $Y);
	
	$faktura->MultiCell(0, 10, " " , 0, 'C', 0);
	
	$Y += 25;
	$faktura->SetXY(28, $Y);

	$rand = rand(1,100);
	
	$file_name = 'uploaded/pdf/fv_'.md5($id).'.pdf';
	
		if( $preview ) {
			$faktura->Output();
			return 1;
		} else {
			$faktura->Output($file_name,'F');	
					
			$invoice->file_name = $file_name;
			$invoice->save();
			return $invoice;
		}

	}
	
	
	static public function createConfirmationPDF( $booking, $booking2, $booking3, $invoice, $preview = false ) {

	//$invoice_count = ORM::Factory('invoice')->where('user_id','=', SimpleAuth::instance()->get_user()->id)->find_all()->count()+1;
	$user = ORM::Factory('User', $invoice->user_id);
	
	//define('FPDF_FONTPATH','modules/fpdf/font/');
	
	$height = 10;
	
//	require('modules/fpdf/fpdf.php');
	$faktura = new FPDF();
	$faktura->SetUTF8(true);
	$faktura->SetDisplayMode('real', 'single');
	$faktura->Open();
	$faktura->AddPage();
	$faktura->AddFont('arial_ce', "", "arial_ce.php");

	$faktura->SetCompression(false);  //włącza kompresję dokumentu

	/* a poniższe tylko dla ambitnych */
	$faktura->SetAuthor('Podsumowanie');  //ustawia autora dokumentu
	$faktura->SetCreator('Podsumowanie');  //ustawia generator dokumentu
	$faktura->SetSubject('Podsumowanie');  //ustawia temat dokumentu
	$faktura->SetTitle('Podsumowanie');  //ustawia tytuł dokumentu

	$faktura->SetDisplayMode(200);  //domyślne powiększenie dokumentu w przeglądarce
	//$faktura->SetMargins(10, 10 , 10);  //ustawia marginesy dla dokumentu
	//$faktura->Image('images/logo.jpg', 28, 15,127,77);					
	
	if( !empty( $user->logo ) ) {
	$faktura->Image($user->logo, 10, 6, 193, 59); 
	}
	
	$z_x = 237;
	$y = 20;
	$faktura->SetFont('arial_ce','',11);	
	$faktura->MultiCell(0, $height-10,  'Data utworzenia: '.$invoice->date, 0, 'R', 0);

	$y += 30;
	
	$faktura->SetFont('arial_ce','',22);	
	$faktura->MultiCell(0, $height+15, 'Podsumowanie', 0, 'C', 0);						
							
	$y += 5;				
	$faktura->SetFont('arial_ce','',12);		
	//$faktura->MultiCell(0, $height,  'Do Faktury z dnia: '.$invoice->date, 0, 'C', 0);
	$faktura->MultiCell(0, $height,  'Rozliczenie z dnia: '.$invoice->date, 0, 'C', 0);
	
	$y += 5;				
//	//$faktura->MultiCell(0, $height,  __t('oryginał/kopia'), 0, 'C', 0);
$faktura->SetFont('arial_ce','',6);	

	$faktura->MultiCell(0, 55,  'Rezerwujczarter.pl', 0, 'C', 0);
	
	
	$faktura->SetXY(23, 100);
	$faktura->MultiCell(20, 25, __t("Lp"), 1, 'C', 0);
	$faktura->SetXY(43, 100);
	$faktura->MultiCell(100, 25, __t("Jacht"), 1, 'L', 0);
	$faktura->SetXY(143, 100);
	$faktura->MultiCell(120, 25, __t("Klient"), 1, 'C', 0);
	$faktura->SetXY(263, 100);
	$faktura->MultiCell(90, 25, __t("Termin"), 1, 'C', 0);
	$faktura->SetXY(353, 100);
	$faktura->MultiCell(50, 25, __t("Wartość B"), 1, 'C', 0);
	$faktura->SetXY(403, 100);
	$faktura->MultiCell(20, 25, __t("%"), 1, 'C', 0);
	$faktura->SetXY(423, 100);
	$faktura->MultiCell(50, 25, __t("Prowizja N"), 1, 'C', 0);
	$faktura->SetXY(473, 100);
	$faktura->MultiCell(50, 25, __t("VAT prowizji"), 1, 'C', 0);
	$faktura->SetXY(523, 100);
	$faktura->MultiCell(50, 25, __t("Prowizja B"), 1, 'C', 0);
//	$faktura->SetXY(423, 230);

	$Y_POS = 125;
	$i=1;
	$sum_commission=0;
	$sum_commission_brutto=0;
	$sum_commission_vat=0;
	$sum_price=0;
	
//	var_dump($booking);
	
	foreach( $booking as $row ) {

	$commission = (($row->price*(1+($row->auth_user->commission/100)))-$row->price);
		$commission_brutto = number_format(round($commission*(1+(SimpleAuth::instance()->get_user()->tax/100))), 2, '.', '');
		$commission_vat = $commission_brutto-$commission;
		$price = $row->price;
		
		$sum_commission+=$commission;
		$sum_commission_brutto+=$commission_brutto;
		$sum_commission_vat+=$commission_vat;;
		$sum_price+=$price;
		
		$faktura->SetXY(23, $Y_POS);
		
		$faktura->MultiCell(20, 25, $i.".", 1, 'C', 0);
		$faktura->SetXY(43, $Y_POS);
		$faktura->MultiCell(100, 25, $row->item->model->name, 1, 'L', 0);
		$faktura->SetXY(143, $Y_POS);
		$faktura->MultiCell(120, 25, $row->customer->firstname.' '.$row->customer->lastname, 1, 'C', 0);
		$faktura->SetXY(263, $Y_POS);
		$faktura->MultiCell(90, 25, date('Y-m-d', strtotime($row->departure_date)).' - '.date('Y-m-d', strtotime($row->arrival_date)), 1, 'C', 0);
		$faktura->SetXY(353, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($row->price, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
	//	$faktura->SetXY(423, $Y_POS);
		$faktura->SetXY(403, $Y_POS);
		$faktura->MultiCell(20, 25, $row->auth_user->commission, 1, 'C', 0);
		$faktura->SetXY(423, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($commission, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(473, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($commission_vat, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(523, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($commission_brutto, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
	
		$Y_POS = $Y_POS+25;
		$i++;
	}
	if( $i > 1 ) {
	// Podsumowanie wiersz
		$faktura->SetXY(23, $Y_POS);
		$faktura->MultiCell(240, 25,'', 1, 'C', 0);
		$faktura->SetXY(263, $Y_POS);
		$faktura->MultiCell(90, 25, 'Suma', 1, 'C', 0);
		$faktura->SetXY(353, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($sum_price, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(403, $Y_POS);
		$faktura->MultiCell(20, 25, '', 1, 'C', 0);
		$faktura->SetXY(423, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($sum_commission, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(473, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($sum_commission_vat, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(523, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($sum_commission_brutto, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$Y_POS = $Y_POS+25;
	// koniec
	}
	
	$Y_POS = $Y_POS+0;
	$faktura->SetXY(23, $Y_POS);
	$faktura->MultiCell(0, 35,  'Bookandsail.eu', 0, 'C', 0);
	$Y_POS = $Y_POS+25;
	
	$sum_commission=0;
	$sum_commission_brutto=0;
	$sum_commission_vat=0;
	$sum_price=0;
	
	$faktura->SetXY(23, $Y_POS);
	$faktura->MultiCell(20, 25, __t("Lp"), 1, 'C', 0);
	$faktura->SetXY(43, $Y_POS);
	$faktura->MultiCell(100, 25, __t("Jacht"), 1, 'L', 0);
	$faktura->SetXY(143, $Y_POS);
	$faktura->MultiCell(120, 25, __t("Klient"), 1, 'C', 0);
	$faktura->SetXY(263, $Y_POS);
	$faktura->MultiCell(90, 25, __t("Termin"), 1, 'C', 0);
	$faktura->SetXY(353, $Y_POS);
	$faktura->MultiCell(50, 25, __t("Wartość B"), 1, 'C', 0);
	$faktura->SetXY(403, $Y_POS);
	$faktura->MultiCell(20, 25, __t("%"), 1, 'C', 0);
	$faktura->SetXY(423, $Y_POS);
	$faktura->MultiCell(50, 25, __t("Prowizja N"), 1, 'C', 0);
	$faktura->SetXY(473, $Y_POS);
	$faktura->MultiCell(50, 25, __t("VAT prowizji"), 1, 'C', 0);
	$faktura->SetXY(523, $Y_POS);
	$faktura->MultiCell(50, 25, __t("Prowizja B"), 1, 'C', 0);
	
	$i=1;
	$Y_POS = $Y_POS+25;
	foreach( $booking2 as $row ) {
	
		$commission = (($row->price*(1+($row->auth_user->commission/100)))-$row->price);
		$commission_brutto = number_format(round($commission*(1+(SimpleAuth::instance()->get_user()->tax/100))), 2, '.', '');
		$commission_vat = $commission_brutto-$commission;
		$price = $row->price;
		
		$sum_commission+=$commission;
		$sum_commission_brutto+=$commission_brutto;
		$sum_commission_vat+=$commission_vat;;
		$sum_price+=$price;
		
		$faktura->SetXY(23, $Y_POS);
		
		$faktura->MultiCell(20, 25, $i.".", 1, 'C', 0);
		$faktura->SetXY(43, $Y_POS);
		$faktura->MultiCell(100, 25, $row->item->model->name, 1, 'L', 0);
		$faktura->SetXY(143, $Y_POS);
		$faktura->MultiCell(120, 25, $row->customer->firstname.' '.$row->customer->lastname, 1, 'C', 0);
		$faktura->SetXY(263, $Y_POS);
		$faktura->MultiCell(90, 25, date('Y-m-d', strtotime($row->departure_date)).' - '.date('Y-m-d', strtotime($row->arrival_date)), 1, 'C', 0);
		$faktura->SetXY(353, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($row->price, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
	//	$faktura->SetXY(423, $Y_POS);
		$faktura->SetXY(403, $Y_POS);
		$faktura->MultiCell(20, 25, $row->auth_user->commission, 1, 'C', 0);
		$faktura->SetXY(423, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($commission, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(473, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($commission_vat, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(523, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($commission_brutto, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
	
		$Y_POS = $Y_POS+25;
		$i++;
	}
	if( $i > 1 ) {
	// Podsumowanie wiersz
		$faktura->SetXY(23, $Y_POS);
		$faktura->MultiCell(240, 25,'', 1, 'C', 0);
		$faktura->SetXY(263, $Y_POS);
		$faktura->MultiCell(90, 25, 'Suma', 1, 'C', 0);
		$faktura->SetXY(353, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($sum_price, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(403, $Y_POS);
		$faktura->MultiCell(20, 25, '', 1, 'C', 0);
		$faktura->SetXY(423, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($sum_commission, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(473, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($sum_commission_vat, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(523, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($sum_commission_brutto, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$Y_POS = $Y_POS+25;
	// koniec
	}

	$Y_POS = $Y_POS+0;
	$faktura->SetXY(23, $Y_POS);
	$faktura->MultiCell(0, 35,  'WIDGET', 0, 'C', 0);
	$Y_POS = $Y_POS+25;
	
	$i=1;
	
	$sum_commission=0;
	$sum_commission_brutto=0;
	$sum_commission_vat=0;
	$sum_price=0;
	
	$faktura->SetXY(23, $Y_POS);
	$faktura->MultiCell(20, 25, __t("Lp"), 1, 'C', 0);
	$faktura->SetXY(43, $Y_POS);
	$faktura->MultiCell(100, 25, __t("Jacht"), 1, 'L', 0);
	$faktura->SetXY(143, $Y_POS);
	$faktura->MultiCell(120, 25, __t("Klient"), 1, 'C', 0);
	$faktura->SetXY(263, $Y_POS);
	$faktura->MultiCell(90, 25, __t("Termin"), 1, 'C', 0);
	$faktura->SetXY(353, $Y_POS);
	$faktura->MultiCell(50, 25, __t("Wartość B"), 1, 'C', 0);
	$faktura->SetXY(403, $Y_POS);
	$faktura->MultiCell(20, 25, __t("%"), 1, 'C', 0);
	$faktura->SetXY(423, $Y_POS);
	$faktura->MultiCell(50, 25, __t("Prowizja N"), 1, 'C', 0);
	$faktura->SetXY(473, $Y_POS);
	$faktura->MultiCell(50, 25, __t("VAT prowizji"), 1, 'C', 0);
	$faktura->SetXY(523, $Y_POS);
	$faktura->MultiCell(50, 25, __t("Prowizja B"), 1, 'C', 0);
	
	$Y_POS = $Y_POS+25;
	
	foreach( $booking3 as $row ) {
	
		$commission = (($row->price*(1+($row->auth_user->commission/100)))-$row->price);
		$commission_brutto = number_format(round($commission*(1+(SimpleAuth::instance()->get_user()->tax/100))), 2, '.', '');
		$commission_vat = $commission_brutto-$commission;
		$price = $row->price;
		
		$sum_commission+=$commission;
		$sum_commission_brutto+=$commission_brutto;
		$sum_commission_vat+=$commission_vat;;
		$sum_price+=$price;
		
		$faktura->SetXY(23, $Y_POS);
		
		$faktura->MultiCell(20, 25, $i.".", 1, 'C', 0);
		$faktura->SetXY(43, $Y_POS);
		$faktura->MultiCell(100, 25, $row->item->model->name, 1, 'L', 0);
		$faktura->SetXY(143, $Y_POS);
		$faktura->MultiCell(120, 25, $row->customer->firstname.' '.$row->customer->lastname, 1, 'C', 0);
		$faktura->SetXY(263, $Y_POS);
		$faktura->MultiCell(90, 25, date('Y-m-d', strtotime($row->departure_date)).' - '.date('Y-m-d', strtotime($row->arrival_date)), 1, 'C', 0);
		$faktura->SetXY(353, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($row->price, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
	//	$faktura->SetXY(423, $Y_POS);
		$faktura->SetXY(403, $Y_POS);
		$faktura->MultiCell(20, 25, $row->auth_user->commission, 1, 'C', 0);
		$faktura->SetXY(423, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($commission, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(473, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($commission_vat, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(523, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($commission_brutto, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
	
		$Y_POS = $Y_POS+25;
		$i++;
	}
	if( $i > 1 ) {
	// Podsumowanie wiersz
		$faktura->SetXY(23, $Y_POS);
		$faktura->MultiCell(240, 25,'', 1, 'C', 0);
		$faktura->SetXY(263, $Y_POS);
		$faktura->MultiCell(90, 25, 'Suma', 1, 'C', 0);
		$faktura->SetXY(353, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($sum_price, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(403, $Y_POS);
		$faktura->MultiCell(20, 25, '', 1, 'C', 0);
		$faktura->SetXY(423, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($sum_commission, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(473, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($sum_commission_vat, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$faktura->SetXY(523, $Y_POS);
		$faktura->MultiCell(50, 25, number_format($sum_commission_brutto, 2, ',', ' ').Model_Currency::getSymbol($row->auth_user->currencies_id), 1, 'C', 0);
		$Y_POS = $Y_POS+25;
	// koniec
	}
	
	//$rand = rand(1,100);
	
	$file_name = 'uploaded/pdf/confirmation_'.md5($invoice->id).'.pdf';

		if( $preview ) {
			$faktura->Output();
			return 1;
		} else {
			$faktura->Output($file_name,'F');	
					
			$invoice->file_name_confirmation = $file_name;
			$invoice->save();
			return $invoice->file_name_confirmation;
		}

	}
	

}