getSetting('cebelica_api')); if($narocilo_id > 0){ // Dobimo podatke narocila $sqlNarocilo = sisplet_query("SELECT un.*, u.name, u.surname, u.email, up.name AS package_name, up.description AS package_description, up.price AS package_price FROM user_access_narocilo un, users u, user_access_paket up WHERE un.id='".$narocilo_id."' AND un.usr_id=u.id AND un.package_id=up.id"); if(mysqli_num_rows($sqlNarocilo) > 0){ $this->narocilo = mysqli_fetch_array($sqlNarocilo); } else{ die("Napaka pri komunikaciji s čebelico! Narocilo ne obstaja."); } } else { die("Napaka pri komunikaciji s čebelico! Manjka ID naročila."); } } // Zgeneriramo in vrnemo link do pdf-ja racuna za narocilo public function getNarociloRacun($eracun=false){ global $global_user_id; // Preverimo, ce racun ze obstaja if($this->narocilo['cebelica_id_racun'] != '0' && file_exists(SITE_ROOT.MAPA_RACUNI.'1ka_racun_'.$this->narocilo['cebelica_id_racun'].'.pdf')){ // Dobimo hashiran url do dokumenta $pdf_url = $this->getPdfUrl($type='racun', $this->narocilo['cebelica_id_racun']); return $pdf_url; } // Ce predracun ne obstaja ga moramo najprej zgenerirati if($this->narocilo['cebelica_id_predracun'] == '0'){ $this->getNarociloPredracun(); } // Zgeneriramo pdf racun na podlagi predracuna $cebelica_id_new = $this->generatePdf($this->narocilo['cebelica_id_predracun'], $eracun); // Vstavimo id cebelice predracuna v bazo $sqlNarocilo = sisplet_query("UPDATE user_access_narocilo SET cebelica_id_racun='".$cebelica_id_new."' WHERE id='".$this->narocilo['id']."'"); // Dobimo hashiran url do dokumenta $pdf_url = $this->getPdfUrl($type='racun', $cebelica_id_new); return $pdf_url; } // Zgeneriramo in vrnemo link do pdf-ja predracuna za narocilo public function getNarociloPredracun(){ global $global_user_id; // Preverimo, ce predracun ze obstaja if($this->narocilo['cebelica_id_predracun'] != '0' && file_exists(SITE_ROOT.MAPA_PREDRACUNI.'1ka_predracun_'.$this->narocilo['cebelica_id_predracun'].'.pdf')){ // Dobimo hashiran url do dokumenta $pdf_url = $this->getPdfUrl($type='predracun', $this->narocilo['cebelica_id_predracun']); return $pdf_url; } // Zgeneriramo pdf predracun na podlagi podatkov narocila (cebelica) $cebelica_id_new = $this->generatePdf($cebelica_id=0); // Vstavimo id cebelice predracuna v bazo $sqlNarocilo = sisplet_query("UPDATE user_access_narocilo SET cebelica_id_predracun='".$cebelica_id_new."' WHERE id='".$this->narocilo['id']."'"); // Popravimo se id v arrayu ce gre za generiranje predracuna pred generiranjem racuna $this->narocilo['cebelica_id_predracun'] = $cebelica_id_new; // Dobimo hashiran url do dokumenta $pdf_url = $this->getPdfUrl($type='predracun', $cebelica_id_new); return $pdf_url; } // Poklicemo cebelico in zgeneriramo predracun oz. racun private function generatePdf($cebelica_id=0, $eracun=false){ global $site_path; // Api za povezavo s cebelico require_once($site_path.'frontend/payments/cebelica/InvoiceFox/cebelcaApi.php'); $UA = new UserNarocila(); // Dobimo ceno $cena = $UA->getPrice($this->narocilo['package_name'], $this->narocilo['trajanje'], $this->narocilo['discount'], $this->narocilo['time']); // Dobimo jezik za predracun/racun $lang = $UA->getNarociloLanguage($this->narocilo['id']); // Slovenki racun/predracun if($lang == 'si'){ if($this->narocilo['trajanje'] == 1) $months_string = 'mesec'; elseif($this->narocilo['trajanje'] == 2) $months_string = 'meseca'; elseif($this->narocilo['trajanje'] == 3 || $this->narocilo['trajanje'] == 4) $months_string = 'mesece'; else $months_string = 'mesecev'; $ime_storitve = '1KA naročnina (paket '.strtoupper($this->narocilo['package_name']). ' - '.$this->narocilo['trajanje'].' '.$months_string.')'; } // Angleski racun/predracun else{ if($this->narocilo['trajanje'] == 1) $months_string = 'month'; else $months_string = 'months'; $ime_storitve = '1KA subscription (package '.strtoupper($this->narocilo['package_name']). ' - '.$this->narocilo['trajanje'].' '.$months_string.')'; } // Zavezanec iz tujine ima racun/predracun brez ddv if($UA->isWithoutDDV($this->narocilo['id'])){ $ddv = 0; $cena_za_placilo = $cena['final_without_tax']; } else{ $ddv = 1; $cena_za_placilo = $cena['final']; } // Kartica if($this->narocilo['payment_method'] == '3') $tip_placila = 3; // Paypal elseif($this->narocilo['payment_method'] == '2') $tip_placila = 5; // TRR else $tip_placila = 1; $podatki = array( 'narocilo_id' => $this->narocilo['id'], // id narocila 'stranka' => $this->narocilo['ime'], // ime kupca 'email' => $this->narocilo['email'], // email kupca 'datum' => date("j.n.Y"), // datum izdaje računa 'telefon' => $this->narocilo['phone'], 'drzava' => $this->narocilo['podjetje_drzava'], 'podjetjeime' => $this->narocilo['podjetje_ime'], 'podjetjenaslov'=> $this->narocilo['podjetje_naslov'], 'podjetjepostna'=> $this->narocilo['podjetje_postna'], 'podjetjeposta' => $this->narocilo['podjetje_posta'], 'podjetjedavcna'=> $this->narocilo['podjetje_davcna'], // davčna številka kupca, če je podjetje 'ime_storitve' => $ime_storitve, 'cena' => $cena['final_without_tax'], // cena brez DDV 'za_placilo' => $cena_za_placilo, // znesek za plačilo ///'popust' => $cena['discount_percentage'], // procent s celo številko. 5 pomeni 5% 'veljavnost' => "3", // veljavnost predračuna v dnevih 'ddv' => $ddv, // Obracunan ddv (zavezanec iz tujine ga nima) 'tip_placila' => $tip_placila // Tip placila - 1=nakazilo, 3=kartica, 5=paypal ); // 0 generira predračun, številka naredi račun iz predračuna $cebelica_id_new = vnosRacunaCebelca($podatki, $debug=false, $cebelica_id, $lang, $eracun); if($cebelica_id_new){ return $cebelica_id_new; } else{ throw new Exception("Napaka pri vnosu dokumenta v cebelca.biz."); return "Napaka pri vnosu dokumenta v cebelca.biz."; } } // Dobimo hash za url do pdf-ja private function getPdfUrl($type, $id){ global $site_url; $params = array( 'type' => $type, // "racun" ali "predracun" 'id' => $id // ID pdf dokumenta ); // Array s podatki zaheshiramo $hash = base64_encode(urlencode(serialize($params))); $url = $site_url.'/payment/'.$hash; return $url; } }