diff --git a/frontend/payments/classes/class.UserNarocila.php b/frontend/payments/classes/class.UserNarocila.php index eb01c87d0..56a65c826 100644 --- a/frontend/payments/classes/class.UserNarocila.php +++ b/frontend/payments/classes/class.UserNarocila.php @@ -163,7 +163,7 @@ class UserNarocila{ // Preverimo, ce narocilo slucajno nima ddv-ja (zavezanec za ddv iz tujine) public function isWithoutDDV($narocilo_id){ - $sqlNarocilo = sisplet_query("SELECT podjetje_drzava, podjetje_zavezanec + $sqlNarocilo = sisplet_query("SELECT podjetje_drzava, podjetje_no_ddv FROM user_access_narocilo WHERE id='".$narocilo_id."' "); @@ -171,7 +171,13 @@ class UserNarocila{ $rowNarocilo = mysqli_fetch_array($sqlNarocilo); - if($rowNarocilo['podjetje_drzava'] != 'Slovenija' && $rowNarocilo['podjetje_drzava'] != 'Slovenia' && $rowNarocilo['podjetje_zavezanec'] == '1'){ + // Slovenija ima vedno ddv + if($rowNarocilo['podjetje_drzava'] == 'Slovenija' || $rowNarocilo['podjetje_drzava'] == 'Slovenia'){ + return false; + } + + // Ce ni iz slovenije in ima oznaceno da ne placa ddv-ja + if($rowNarocilo['podjetje_no_ddv'] == '1'){ return true; } } @@ -593,10 +599,10 @@ class UserNarocila{ echo ''; echo '
'; - echo ''.$lang['srv_narocilo_podjetje_zavezanec'].': '; - echo ''; + echo ''; + echo ''; echo ''; echo '
'; @@ -651,17 +657,22 @@ class UserNarocila{ $podjetje_posta = isset($narocilo_data['podjetje_posta']) ? $narocilo_data['podjetje_posta'] : ''; $podjetje_drzava = isset($narocilo_data['podjetje_drzava']) ? $narocilo_data['podjetje_drzava'] : ''; $podjetje_davcna = isset($narocilo_data['podjetje_davcna']) ? $narocilo_data['podjetje_davcna'] : ''; - $podjetje_zavezanec = isset($narocilo_data['podjetje_ddv']) ? $narocilo_data['podjetje_ddv'] : ''; $podjetje_eracun = isset($narocilo_data['podjetje_eracun']) ? '1' : '0'; - + $language = isset($narocilo_data['lang']) ? $narocilo_data['lang'] : 'sl'; - + if($usr_id <= 0){ $response['error'] = 'ERROR! Missing user ID.'; $response['success'] = false; - + return $response; } + + // Nastavimo ce placa DDV (zavezanci iz EU ga ne placajo) + if($this->checkPayDDV($podjetje_davcna, $podjetje_drzava)) + $podjetje_no_ddv = '0'; + else + $podjetje_no_ddv = '1'; $brezplacen_preklop = false; @@ -691,9 +702,9 @@ class UserNarocila{ } $sqlNarocilo = sisplet_query("INSERT INTO user_access_narocilo - (usr_id, status, time, package_id, ime, payment_method, discount, trajanje, phone, podjetje_ime, podjetje_naslov, podjetje_postna, podjetje_posta, podjetje_drzava, podjetje_davcna, podjetje_zavezanec, podjetje_eracun, language) + (usr_id, status, time, package_id, ime, payment_method, discount, trajanje, phone, podjetje_ime, podjetje_naslov, podjetje_postna, podjetje_posta, podjetje_drzava, podjetje_davcna, podjetje_no_ddv, podjetje_eracun, language) VALUES - ('".$usr_id."', '".$status."', NOW(), '".$package_id."', '".$ime_na_racunu."', '".$payment_method."', '".$discount."', '".$trajanje."', '".$phone."', '".$podjetje_ime."', '".$podjetje_naslov."', '".$podjetje_postna."', '".$podjetje_posta."', '".$podjetje_drzava."', '".$podjetje_davcna."', '".$podjetje_zavezanec."', '".$podjetje_eracun."', '".$language."') + ('".$usr_id."', '".$status."', NOW(), '".$package_id."', '".$ime_na_racunu."', '".$payment_method."', '".$discount."', '".$trajanje."', '".$phone."', '".$podjetje_ime."', '".$podjetje_naslov."', '".$podjetje_postna."', '".$podjetje_posta."', '".$podjetje_drzava."', '".$podjetje_davcna."', '".$podjetje_no_ddv."', '".$podjetje_eracun."', '".$language."') "); if (!$sqlNarocilo){ $response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']); @@ -878,7 +889,7 @@ class UserNarocila{ $update .= isset($narocilo_data['podjetje_posta']) ? ', podjetje_posta='.$narocilo_data['podjetje_posta'] : ''; $update .= isset($narocilo_data['podjetje_drzava']) ? ', podjetje_drzava='.$narocilo_data['podjetje_drzava'] : ''; $update .= isset($narocilo_data['podjetje_davcna']) ? ', podjetje_davcna='.$narocilo_data['podjetje_davcna'] : ''; - $update .= isset($narocilo_data['podjetje_ddv']) ? ', podjetje_zavezanec='.$narocilo_data['podjetje_ddv'] : ''; + $update .= isset($narocilo_data['podjetje_no_ddv']) ? ', podjetje_no_ddv='.$narocilo_data['podjetje_no_ddv'] : ''; $update .= isset($narocilo_data['podjetje_eracun']) ? ', podjetje_eracun='.$narocilo_data['podjetje_eracun'] : ''; $update = substr($update, 1); @@ -1176,6 +1187,64 @@ class UserNarocila{ return $response; } + // Izvede api klic kjer preveri davcno stevilko in zavezanost za DDV + private function checkPayDDV($davcna_stevilka, $drzava){ + global $lang; + global $global_user_id; + + // Drzave EU brez slovenije + $countries_eu = array(); + $countries_eu['Austria'] = 'AT'; + $countries_eu['Belgium'] = 'BE'; + $countries_eu['Bulgaria'] = 'BG'; + $countries_eu['Cyprus'] = 'CY'; + $countries_eu['Czech Republic'] = 'CZ'; + $countries_eu['Germany'] = 'DE'; + $countries_eu['Denmark'] = 'DK'; + $countries_eu['Estonia'] = 'EE'; + $countries_eu['Spain'] = 'ES'; + $countries_eu['Finland'] = 'FI'; + $countries_eu['France'] = 'FR'; + $countries_eu['United Kingdom'] = 'GB'; + $countries_eu['Greece'] = 'GR'; + $countries_eu['Hungary'] = 'HU'; + $countries_eu['Croatia'] = 'HR'; + $countries_eu['Ireland'] = 'IE'; + $countries_eu['Italy'] = 'IT'; + $countries_eu['Lithuania'] = 'LT'; + $countries_eu['Luxembourg'] = 'LU'; + $countries_eu['Latvia'] = 'LV'; + $countries_eu['Malta'] = 'MT'; + $countries_eu['Netherlands'] = 'NL'; + $countries_eu['Poland'] = 'PL'; + $countries_eu['Portugal'] = 'PT'; + $countries_eu['Romania'] = 'RO'; + $countries_eu['Sweden'] = 'SE'; + //$countries_eu['Slovenia'] = 'SI'; + $countries_eu['Slovakia'] = 'SK'; + + + // Ce ni drzava s seznama vedno placa DDV + if(!isset($countries_eu[$drzava])) + return true; + + + // Drugace gre za tujca iz EU - preverimo ce je zavezanec + $client = new SoapClient("http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"); + try{ + $response = $client->checkVat( array('countryCode' => $countries_eu[$drzava], 'vatNumber' => $davcna_stevilka) ); + } + catch (Exception $e) { + return true; + } + + // Je valid zavezanec iz EU + if(isset($response->valid) && $response->valid == true) + return false; + + return true; + } + // Dobimo podatke o vseh paketih private function cachePackages(){ @@ -1221,7 +1290,7 @@ class UserNarocila{ $update .= (isset($_POST['podjetje_posta'])) ? " podjetje_posta='".$_POST['podjetje_posta']."'," : ""; $update .= (isset($_POST['podjetje_drzava'])) ? " podjetje_drzava='".$_POST['podjetje_drzava']."'," : ""; $update .= (isset($_POST['podjetje_davcna'])) ? " podjetje_davcna='".$_POST['podjetje_davcna']."'," : ""; - $update .= (isset($_POST['podjetje_zavezanec'])) ? " podjetje_zavezanec='".$_POST['podjetje_zavezanec']."'," : ""; + $update .= (isset($_POST['podjetje_no_ddv'])) ? " podjetje_no_ddv='".$_POST['podjetje_no_ddv']."'," : ""; $update .= (isset($_POST['podjetje_eracun'])) ? " podjetje_eracun='".$_POST['podjetje_eracun']."'," : ""; if($update != ''){ diff --git a/lang/1.php b/lang/1.php index 1a0a18c36..062c241fe 100644 --- a/lang/1.php +++ b/lang/1.php @@ -7402,7 +7402,7 @@ $lang = array ( 'srv_narocilo_podjetje_posta' => "Pošta", 'srv_narocilo_podjetje_postna' => "Poštna št.", 'srv_narocilo_podjetje_drzava' => "Država", - 'srv_narocilo_podjetje_zavezanec' => "Zavezanec za DDV", + 'srv_narocilo_podjetje_no_ddv' => "Ne plača DDV", 'srv_narocilo_podjetje_eracun' => "E-račun", 'srv_narocilo_placaj' => "Plačaj", diff --git a/lang/2.php b/lang/2.php index 5e63f381e..055ad3d6f 100644 --- a/lang/2.php +++ b/lang/2.php @@ -7285,7 +7285,7 @@ $lang = array ( 'srv_narocilo_podjetje_posta' => "Post", 'srv_narocilo_podjetje_postna' => "Postcode", 'srv_narocilo_podjetje_drzava' => "Country", - 'srv_narocilo_podjetje_zavezanec' => "VAT", + 'srv_narocilo_podjetje_no_ddv' => "Does not pay VAT", 'srv_narocilo_podjetje_eracun' => "E-invoice", 'srv_narocilo_placaj' => "Pay", diff --git a/sql/update2.sql b/sql/update2.sql index ffdf3e6fa..5c4cf4e13 100644 --- a/sql/update2.sql +++ b/sql/update2.sql @@ -9339,3 +9339,5 @@ UPDATE misc SET value='20.10.25' WHERE what="version"; INSERT INTO srv_help (help, what) VALUES ('Pri pošiljanju email vabil na več naslovov je vklopljena zakasnitev, kar pomeni da med e-poštnim sporočilom, poslanim enemu naslovniku, in e-poštnim sporočilom, poslanim naslednjemu naslovniku, preteče najmanj 2 sekundi. Ta čas lahko po potrebi spremenite (glede na zmogljivosti vašega strežnika). ', 'srv_inv_delay'); UPDATE misc SET value='20.10.29' WHERE what="version"; + +ALTER TABLE user_access_narocilo MODIFY COLUMN podjetje_zavezanec podjetje_no_ddv ENUM('0', '1') NOT NULL DEFAULT '0' AFTER podjetje_davcna;