Preverjanje pri nakupu ce je podjetje iz EU in zavezanec - potem se mu ne obracuna ddv
This commit is contained in:
parent
1110c2ab5e
commit
6f0d9312f1
@ -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 '</div>';
|
||||
|
||||
echo '<div class="edit_narocilo_line">';
|
||||
echo '<span class="nastavitveSpan5">'.$lang['srv_narocilo_podjetje_zavezanec'].':</span> ';
|
||||
echo '<select name="podjetje_zavezanec">';
|
||||
echo '<option value="0" '.($rowNarocilo['podjetje_zavezanec'] == '0' ? 'selected="selected"' : '').'>'.$lang['no'].'</option>';
|
||||
echo '<option value="1" '.($rowNarocilo['podjetje_zavezanec'] == '1' ? 'selected="selected"' : '').'>'.$lang['yes'].'</option>';
|
||||
echo '<span class="nastavitveSpan5">'.$lang['srv_narocilo_podjetje_no_ddv'].':</span> ';
|
||||
echo '<select name="podjetje_no_ddv">';
|
||||
echo '<option value="0" '.($rowNarocilo['podjetje_no_ddv'] == '1' ? 'selected="selected"' : '').'>'.$lang['no'].'</option>';
|
||||
echo '<option value="1" '.($rowNarocilo['podjetje_no_ddv'] == '0' ? 'selected="selected"' : '').'>'.$lang['yes'].'</option>';
|
||||
echo '</select>';
|
||||
echo '</div>';
|
||||
|
||||
@ -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 != ''){
|
||||
|
@ -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",
|
||||
|
||||
|
@ -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",
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user