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;
}
}
}