From 75160b12821f7f4299cce7f0b69c83c1502ae071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Mon, 27 May 2024 13:08:29 +0200 Subject: 2024-02-19 upstream --- frontend/payments/classes/class.UserNarocila.php | 229 ++++++++++++++++++++--- 1 file changed, 200 insertions(+), 29 deletions(-) (limited to 'frontend/payments/classes/class.UserNarocila.php') diff --git a/frontend/payments/classes/class.UserNarocila.php b/frontend/payments/classes/class.UserNarocila.php index e831e33..cc562c2 100644 --- a/frontend/payments/classes/class.UserNarocila.php +++ b/frontend/payments/classes/class.UserNarocila.php @@ -32,6 +32,39 @@ class UserNarocila{ } + // Dobimo podatke zadnjega narocila za dolocenega uporabnika + public function getNarocilo($narocilo_id){ + global $admin_type; + + $return = array(); + + // Dobimo narocilo uporabnika + $sqlNarocilo = sisplet_query("SELECT un.*, up.name AS package_name, up.description AS package_description, up.price AS package_price + FROM user_access_narocilo un, user_access_paket up + WHERE un.id='".$narocilo_id."' AND un.package_id=up.id + "); + + // Uporabnik nima se nobenega narocila + if(mysqli_num_rows($sqlNarocilo) == 0){ + $return['id'] = '0'; + } + else{ + $row = mysqli_fetch_array($sqlNarocilo); + $return = $row; + + // Cena + $cena = $this->getPrice($row['package_name'], $row['trajanje'], $row['discount'], $row['time']); + + // Zavezanec iz tujine nima ddv-ja + if($this->isWithoutDDV($row['id'])) + $return['koncna_cena'] = $cena['final_without_tax']; + else + $return['koncna_cena'] = $cena['final']; + } + + return $return; + } + // Dobimo array narocil (vseh oz. za dolocenega uporabnika) private function getNarocila($usr_id=0){ global $admin_type; @@ -77,6 +110,30 @@ class UserNarocila{ return $narocila; } + // Dobimo podatke zadnjega narocila za dolocenega uporabnika + public function getLastNarocilo($usr_id){ + global $admin_type; + + $return = array(); + + // Dobimo zadnje narocilo uporabnika + $sqlNarocilo = sisplet_query("SELECT un.*, up.name AS package_name, up.description AS package_description, up.price AS package_price + FROM user_access_narocilo un, user_access_paket up + WHERE un.usr_id='".$usr_id."' AND un.package_id=up.id + ORDER BY un.time DESC + "); + + // Uporabnik nima se nobenega narocila + if(mysqli_num_rows($sqlNarocilo) == 0){ + $return['id'] = '0'; + } + else{ + $return = mysqli_fetch_array($sqlNarocilo); + } + + return $return; + } + // Izracunamo koncno ceno glede na paket, trajanje in popust (v eur) public function getPrice($package_name, $trajanje, $discount=0, $time=''){ @@ -294,16 +351,71 @@ class UserNarocila{ $ua = UserAccess::getInstance($global_user_id); $user_access = $ua->getAccess(); - // Ce ni polja v bazi oz je nastavljen paket na 1 ima osnovni paket - if(!$user_access || $user_access['package_id'] == '1'){ - echo '

'.$lang['srv_narocila_current_package'].': 1KA

'; + $sqlA = sisplet_query("SELECT ua.time_activate, ua.time_expire, uap.id AS package_id, uap.name AS package_name + FROM user_access ua, user_access_paket uap + WHERE ua.usr_id='$global_user_id' AND uap.id=ua.package_id + "); + $rowA = mysqli_fetch_array($sqlA); + + echo '
'; + + echo ''; + + echo ''; + + echo '
'; echo ''; @@ -337,37 +449,55 @@ class UserNarocila{ echo ' '; echo ' '; - echo ' '.$lang['srv_narocilo_paket'].''; - echo ' '.$lang['srv_narocilo_trajanje'].' ('.$lang['srv_narocilo_trajanje_mesecev'].')'; echo ' '.$lang['srv_narocilo_cas'].''; - echo ' '.$lang['srv_narocilo_nacin_placila'].''; - echo ' '.$lang['srv_narocilo_cena'].''; + echo ' '.$lang['srv_narocilo_paket'].''; + echo ' '.$lang['srv_narocilo_veljavnodo'].''; + echo ' '.$lang['srv_narocilo_samo_cena'].''; echo ' '.$lang['srv_narocilo_status'].''; - echo ' '.$lang['srv_narocilo_pdf'].''; - + echo ' '.$lang['srv_narocilo_pdf_predracun'].''; + echo ' '.$lang['srv_narocilo_pdf_racun'].''; echo ' '; echo ' '; // Vsebina tabele echo ' '; + $userAccess = UserAccess::getInstance($global_user_id); + foreach($data as $usr_id => $data_row){ + $package_name = $userAccess->getPackageName($data_row['package_id']); + echo ''; - echo ''.$data_row['package_name'].''; - echo ''.$data_row['trajanje'].''; echo ''.date("j.n.Y H:i", strtotime($data_row['time'])).''; - echo ''.$data_row['payment_method'].''; + + //Sklanjanje za število mesecev + if ($data_row['trajanje'] == 1) + $trajanje = $data_row['trajanje'] .' '. $lang['srv_narocilo_trajanje_1']; + else if ($data_row['trajanje'] == 2) + $trajanje = $data_row['trajanje'] .' '. $lang['srv_narocilo_trajanje_2']; + else if ($data_row['trajanje'] == 3 || $data_row['trajanje'] == 4) + $trajanje = $data_row['trajanje'] .' '. $lang['srv_narocilo_trajanje_3_4']; + else + $trajanje = $data_row['trajanje'] .' '. $lang['srv_narocilo_trajanje_5']; + + echo ''.$package_name.' ('.$trajanje.')'; + + //Veljavnost paketa + $meseci = $data_row['trajanje']; + $veljaven_do = date("j.n.Y H:i", strtotime("+$meseci months", strtotime($data_row['time']))); + + echo ''.$veljaven_do.''; // Cena $cena = $this->getPrice($data_row['package_name'], $data_row['trajanje'], $data_row['discount'], $data_row['time']); // Zavezanec iz tujine nima ddv-ja if($this->isWithoutDDV($data_row['id'])) - echo ''.$cena['final_without_tax'].''; + echo ''.$cena['final_without_tax'].'€'; else - echo ''.$cena['final'].''; + echo ''.$cena['final'].'€'; if($data_row['status'] == '0') $status_color = 'red'; @@ -378,12 +508,13 @@ class UserNarocila{ echo ''.$lang['srv_narocilo_status_'.$data_row['status']].''; // PDF - echo ''; - echo ''.$lang['srv_narocilo_pdf_predracun'].''; + echo ''; + if($data_row['status'] == '1'){ - echo ' | '.$lang['srv_narocilo_pdf_racun'].''; + echo ''; } - echo ''; + else + echo ''; echo ''; } @@ -395,16 +526,16 @@ class UserNarocila{ // Izpisemo seznam vseh narocil - admin public function displayNarocilaTableAdmin(){ - global $lang, $global_user_id, $app_settings; + global $lang, $global_user_id; // Admini vidijo vsa narocila $data = $this->getNarocila(); // Filtri po statusu echo '
'; - echo ''; - echo ''; - echo ''; + echo ' narocila_filter['neplacana'] == 1 ? 'checked="checked"' : '').' onClick="filterNarocila(\'0\', this.checked)">'; + echo ' narocila_filter['placana'] == 1 ? 'checked="checked"' : '').' onClick="filterNarocila(\'1\', this.checked)">'; + echo ' narocila_filter['stornirana'] == 1 ? 'checked="checked"' : '').' onClick="filterNarocila(\'2\', this.checked)">'; echo '
'; echo ''; @@ -468,7 +599,7 @@ class UserNarocila{ echo $lang['srv_narocilo_status_'.$data_row['status']]; // Na www.1ka.si lahko narocilo placa samo Goran - if($data_row['status'] != '1' && $data_row['status'] != '2' && ($app_settings['app_name'] != 'www.1ka.si' || $global_user_id == '112696')){ + if($data_row['status'] != '1' && $data_row['status'] != '2' && (AppSettings::getInstance()->getSetting('app_settings-app_name') != 'www.1ka.si' || $global_user_id == '112696')){ echo '
'; echo ''.$lang['srv_narocilo_placaj'].''; @@ -761,6 +892,10 @@ class UserNarocila{ return $response; } + + // Ce je slucajno drzava prazna jo nastavimo na slovenijo - zankrat pustimo, da vidimo, ce se se kdaj poslje prazno polje (naceloma se nebi smelo) + /*if($podjetje_drzava == '') + $podjetje_drzava = 'Slovenija';*/ // Nastavimo ce placa DDV (zavezanci iz EU ga ne placajo) if(self::checkPayDDV($podjetje_davcna, $podjetje_drzava)) @@ -1112,8 +1247,27 @@ class UserNarocila{ // Ustvarimo racun - $cebelica = new UserNarocilaCebelica($narocilo_id); - $response['racun'] = $cebelica->getNarociloRacun(); + try{ + $cebelica = new UserNarocilaCebelica($narocilo_id); + $response['racun'] = $cebelica->getNarociloRacun(); + } + // Napaka pri komunikaciji s cebelco - posljemo mail Goranu + catch (Exception $e){ + + // Posljemo mail Goranu, da je prislo do napake pri generiranju racuna + $subject = '1ka - napaka pri generiranju računa'; + $content = 'Prišlo je do napake pri generiranju računa (komunikacija s čebelco) pri naročilu št. '.$rowNarocilo['id'].' (uporabnik '.$rowNarocilo['email'].')!'; + $content .= '

Preveri in samo še enkrat odpri račun za to plačilo preko vmesnika (ga bo zgeneriralo avtomatsko).'; + + $MA = new MailAdapter($anketa=null, $type='payments'); + $MA->addRecipients('goran@go-tel.si'); + $MA->addRecipients('peter@1ka.si'); + $resultX = $MA->sendMail($content, $subject); + + $response['false'] = true; + + return $response; + } // Posljemo mail z racunom @@ -1314,6 +1468,22 @@ class UserNarocila{ // Lastna instalacija - paket $strinjanje_s_pogoji = isset($narocilo_data['strinjanje_s_pogoji']) ? $narocilo_data['strinjanje_s_pogoji'] : ''; + // Varnostno preverimo, če robot izpolni polje + $varnostno_polje = isset($narocilo_data['varnostno-polje']) ? $narocilo_data['varnostno-polje'] : ''; + if(!empty($varnostno_polje)){ + return ['false' => true]; + } + + // Preverimo ReCaptcha + if (in_array($paket, [1,2,3]) && AppSettings::getInstance()->getSetting('google-secret_captcha') !== false) { + $recaptchaResponse = isset($narocilo_data['g-recaptcha-response']) ? $narocilo_data['g-recaptcha-response'] : ''; + $requestReCaptcha = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . AppSettings::getInstance()->getSetting('google-secret_captcha') . '&response=' . $recaptchaResponse); + + if (!strstr($requestReCaptcha, 'true')) { + return ['false' => true]; + } + } + // Posljemo mail s podatki povprasevanja $subject = $lang['srv_narocilo_poslovni_email_1ka_subject']; @@ -1414,6 +1584,7 @@ class UserNarocila{ $countries_eu['Bulgaria'] = 'BG'; $countries_eu['Cyprus'] = 'CY'; $countries_eu['Czech Republic'] = 'CZ'; + $countries_eu['Czechia'] = 'CZ'; $countries_eu['Germany'] = 'DE'; $countries_eu['Denmark'] = 'DK'; $countries_eu['Estonia'] = 'EE'; -- cgit v1.2.3