Preverjanje pri nakupu ce je podjetje iz EU in zavezanec - potem se mu ne obracuna ddv

This commit is contained in:
pero1203 2020-11-04 13:46:53 +01:00
parent 1110c2ab5e
commit 6f0d9312f1
4 changed files with 87 additions and 16 deletions

View File

@ -163,7 +163,7 @@ class UserNarocila{
// Preverimo, ce narocilo slucajno nima ddv-ja (zavezanec za ddv iz tujine) // Preverimo, ce narocilo slucajno nima ddv-ja (zavezanec za ddv iz tujine)
public function isWithoutDDV($narocilo_id){ 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 FROM user_access_narocilo
WHERE id='".$narocilo_id."' WHERE id='".$narocilo_id."'
"); ");
@ -171,7 +171,13 @@ class UserNarocila{
$rowNarocilo = mysqli_fetch_array($sqlNarocilo); $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; return true;
} }
} }
@ -593,10 +599,10 @@ class UserNarocila{
echo '</div>'; echo '</div>';
echo '<div class="edit_narocilo_line">'; echo '<div class="edit_narocilo_line">';
echo '<span class="nastavitveSpan5">'.$lang['srv_narocilo_podjetje_zavezanec'].':</span> '; echo '<span class="nastavitveSpan5">'.$lang['srv_narocilo_podjetje_no_ddv'].':</span> ';
echo '<select name="podjetje_zavezanec">'; echo '<select name="podjetje_no_ddv">';
echo '<option value="0" '.($rowNarocilo['podjetje_zavezanec'] == '0' ? 'selected="selected"' : '').'>'.$lang['no'].'</option>'; echo '<option value="0" '.($rowNarocilo['podjetje_no_ddv'] == '1' ? 'selected="selected"' : '').'>'.$lang['no'].'</option>';
echo '<option value="1" '.($rowNarocilo['podjetje_zavezanec'] == '1' ? 'selected="selected"' : '').'>'.$lang['yes'].'</option>'; echo '<option value="1" '.($rowNarocilo['podjetje_no_ddv'] == '0' ? 'selected="selected"' : '').'>'.$lang['yes'].'</option>';
echo '</select>'; echo '</select>';
echo '</div>'; echo '</div>';
@ -651,7 +657,6 @@ class UserNarocila{
$podjetje_posta = isset($narocilo_data['podjetje_posta']) ? $narocilo_data['podjetje_posta'] : ''; $podjetje_posta = isset($narocilo_data['podjetje_posta']) ? $narocilo_data['podjetje_posta'] : '';
$podjetje_drzava = isset($narocilo_data['podjetje_drzava']) ? $narocilo_data['podjetje_drzava'] : ''; $podjetje_drzava = isset($narocilo_data['podjetje_drzava']) ? $narocilo_data['podjetje_drzava'] : '';
$podjetje_davcna = isset($narocilo_data['podjetje_davcna']) ? $narocilo_data['podjetje_davcna'] : ''; $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'; $podjetje_eracun = isset($narocilo_data['podjetje_eracun']) ? '1' : '0';
$language = isset($narocilo_data['lang']) ? $narocilo_data['lang'] : 'sl'; $language = isset($narocilo_data['lang']) ? $narocilo_data['lang'] : 'sl';
@ -663,6 +668,12 @@ class UserNarocila{
return $response; 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; $brezplacen_preklop = false;
// Preverimo, ce ima uporabnik ze aktiven paket - po novem lahko to predhodno preklaplja, ker se to preracuna v popust // Preverimo, ce ima uporabnik ze aktiven paket - po novem lahko to predhodno preklaplja, ker se to preracuna v popust
@ -691,9 +702,9 @@ class UserNarocila{
} }
$sqlNarocilo = sisplet_query("INSERT INTO user_access_narocilo $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 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){ if (!$sqlNarocilo){
$response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']); $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_posta']) ? ', podjetje_posta='.$narocilo_data['podjetje_posta'] : '';
$update .= isset($narocilo_data['podjetje_drzava']) ? ', podjetje_drzava='.$narocilo_data['podjetje_drzava'] : ''; $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_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 .= isset($narocilo_data['podjetje_eracun']) ? ', podjetje_eracun='.$narocilo_data['podjetje_eracun'] : '';
$update = substr($update, 1); $update = substr($update, 1);
@ -1176,6 +1187,64 @@ class UserNarocila{
return $response; 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 // Dobimo podatke o vseh paketih
private function cachePackages(){ private function cachePackages(){
@ -1221,7 +1290,7 @@ class UserNarocila{
$update .= (isset($_POST['podjetje_posta'])) ? " podjetje_posta='".$_POST['podjetje_posta']."'," : ""; $update .= (isset($_POST['podjetje_posta'])) ? " podjetje_posta='".$_POST['podjetje_posta']."'," : "";
$update .= (isset($_POST['podjetje_drzava'])) ? " podjetje_drzava='".$_POST['podjetje_drzava']."'," : ""; $update .= (isset($_POST['podjetje_drzava'])) ? " podjetje_drzava='".$_POST['podjetje_drzava']."'," : "";
$update .= (isset($_POST['podjetje_davcna'])) ? " podjetje_davcna='".$_POST['podjetje_davcna']."'," : ""; $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']."'," : ""; $update .= (isset($_POST['podjetje_eracun'])) ? " podjetje_eracun='".$_POST['podjetje_eracun']."'," : "";
if($update != ''){ if($update != ''){

View File

@ -7402,7 +7402,7 @@ $lang = array (
'srv_narocilo_podjetje_posta' => "Pošta", 'srv_narocilo_podjetje_posta' => "Pošta",
'srv_narocilo_podjetje_postna' => "Poštna št.", 'srv_narocilo_podjetje_postna' => "Poštna št.",
'srv_narocilo_podjetje_drzava' => "Država", '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_podjetje_eracun' => "E-račun",
'srv_narocilo_placaj' => "Plačaj", 'srv_narocilo_placaj' => "Plačaj",

View File

@ -7285,7 +7285,7 @@ $lang = array (
'srv_narocilo_podjetje_posta' => "Post", 'srv_narocilo_podjetje_posta' => "Post",
'srv_narocilo_podjetje_postna' => "Postcode", 'srv_narocilo_podjetje_postna' => "Postcode",
'srv_narocilo_podjetje_drzava' => "Country", '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_podjetje_eracun' => "E-invoice",
'srv_narocilo_placaj' => "Pay", 'srv_narocilo_placaj' => "Pay",

View File

@ -9339,3 +9339,5 @@ UPDATE misc SET value='20.10.25' WHERE what="version";
INSERT INTO srv_help (help, what) VALUES ('Pri po&#353;iljanju email vabil na ve&#269; naslovov je vklopljena zakasnitev, kar pomeni da med e-po&#353;tnim sporo&#269;ilom, poslanim enemu naslovniku, in e-po&#353;tnim sporo&#269;ilom, poslanim naslednjemu naslovniku, prete&#269;e najmanj 2 sekundi. Ta &#269;as lahko po potrebi spremenite (glede na zmogljivosti va&#353;ega stre&#382;nika). ', 'srv_inv_delay'); INSERT INTO srv_help (help, what) VALUES ('Pri po&#353;iljanju email vabil na ve&#269; naslovov je vklopljena zakasnitev, kar pomeni da med e-po&#353;tnim sporo&#269;ilom, poslanim enemu naslovniku, in e-po&#353;tnim sporo&#269;ilom, poslanim naslednjemu naslovniku, prete&#269;e najmanj 2 sekundi. Ta &#269;as lahko po potrebi spremenite (glede na zmogljivosti va&#353;ega stre&#382;nika). ', 'srv_inv_delay');
UPDATE misc SET value='20.10.29' WHERE what="version"; 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;