diff --git a/admin/survey/script/narocila.js b/admin/survey/script/narocila.js index c2a078f8d..103c8c253 100644 --- a/admin/survey/script/narocila.js +++ b/admin/survey/script/narocila.js @@ -230,6 +230,15 @@ function urediNarociloPay(narocilo_id){ $('#fade').fadeOut('slow'); }); } +// Urejanje narocila - placaj eracun +function urediNarociloPayEracun(narocilo_id){ + + $("#narocila").load('ajax.php?t=userNarocila&a=payNarociloEracun', {narocilo_id: narocilo_id, payment_method: '1'}, function () { + + $('#user_narocila_popup').hide().html(''); + $('#fade').fadeOut('slow'); + }); +} // Urejanje narocila - zapri function urediNarociloClose(){ diff --git a/frontend/payments/cebelica/InvoiceFox/cebelcaApi.php b/frontend/payments/cebelica/InvoiceFox/cebelcaApi.php index fe2581fbe..fc4adfc45 100644 --- a/frontend/payments/cebelica/InvoiceFox/cebelcaApi.php +++ b/frontend/payments/cebelica/InvoiceFox/cebelcaApi.php @@ -4,24 +4,24 @@ require_once('lib/strpcapi.php'); require_once('lib/invfoxapi.php'); // debugMode = true izpisuje klice in njihove rezultate -function vnosRacunaCebelca($podatki, $debugMode, $proformaId, $lang='si') { +function vnosRacunaCebelca($podatki, $debugMode, $proformaId, $lang='si', $eracun) { $api = new InvfoxAPI(API_KODA, "www.cebelca.biz", $debugMode); if($proformaId != 0) - $id = racunIzPredracuna($api,$podatki,$proformaId,$lang); + $id = racunIzPredracuna($api, $podatki, $proformaId, $lang, $eracun); else - $id = ustvariPredracun($api,$podatki,$lang); + $id = ustvariPredracun($api, $podatki, $lang); return $id; } -function racunIzPredracuna($api,$podatki,$proformaId,$lang='si') { +function racunIzPredracuna($api, $podatki, $proformaId, $lang='si', $eracun=false) { // parametri za glavo predracuna $argumentiProforma = array( "id" => $proformaId, "date_sent" => date("d.m.Y"), - "date_to_pay" => date("d.m.Y"), + "date_to_pay" => ($eracun) ? date("d.m.Y", strtotime('-30 days')) : date("d.m.Y"), "date_served" => date("d.m.Y",strtotime($podatki['datum'])) ); @@ -44,8 +44,9 @@ function racunIzPredracuna($api,$podatki,$proformaId,$lang='si') { 'id_payment_method' => $tip_placila // 1=trr, 3=kartica, 5=paypal ); - // nastavi, da je plačano - $api->markPayed($header); + // nastavi, da je plačano - eracun ni placan! + if(!$eracun) + $api->markPayed($header); // kartica in paypal se potrjujeta if($tip_placila == 3 || $tip_placila == 5){ diff --git a/frontend/payments/classes/class.UserNarocila.php b/frontend/payments/classes/class.UserNarocila.php index 415b19138..a29d98191 100644 --- a/frontend/payments/classes/class.UserNarocila.php +++ b/frontend/payments/classes/class.UserNarocila.php @@ -430,8 +430,13 @@ 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')) - echo ' | '.$lang['srv_narocilo_placaj'].''; + if($data_row['status'] != '1' && $data_row['status'] != '2' && ($app_settings['app_name'] != 'www.1ka.si' || $global_user_id == '112696')){ + echo '
'; + echo ''.$lang['srv_narocilo_placaj'].''; + + if($data_row['podjetje_eracun'] == '1') + echo ' | '.$lang['srv_narocilo_placaj_eracun'].''; + } echo ''; @@ -1106,6 +1111,147 @@ class UserNarocila{ return $response; } + // Placa narocilo - za eracune, kjer se jih zabelezi kot placane ampak imajo 30 dnevni rok + public function payNarociloEracun($narocilo_id){ + global $global_user_id; + global $lang; + + $response = array(); + + // Ce nimamo id-ja narocila vrnemo error + if($narocilo_id == 0){ + $response['error'] = 'Napaka! Manjka ID narocila!'; + $response['success'] = false; + + return $response; + } + + + // Dobimo podatke narocila + $sqlNarocilo = sisplet_query("SELECT n.*, u.email FROM user_access_narocilo n, users u WHERE n.id='".$narocilo_id."' AND u.id=n.usr_id"); + $rowNarocilo = mysqli_fetch_array($sqlNarocilo); + + // Ce je bil racun ze placan ne naredimo nicesar + if($rowNarocilo['status'] == 1){ + $response['error'] = 'Napaka! Račun je že plačan!'; + $response['success'] = false; + + return $response; + } + + + // Nastavimo ustrezen jezik - mail mora biti v istem jeziku kot je bilo narocilo + if($rowNarocilo['language'] == 'en'){ + include('../../lang/2.php'); + } + + + // Preverimo, ce ima uporabnik ze aktiven paket in ce je ta paket isti kot ta, ki ga je kupil + $sqlAccessCheck = sisplet_query("SELECT * FROM user_access WHERE usr_id='".$rowNarocilo['usr_id']."' AND package_id != '1' AND time_expire > NOW()"); + if(mysqli_num_rows($sqlAccessCheck) > 0){ + + $rowAccessCheck = mysqli_fetch_array($sqlAccessCheck); + + // Ce zeli uporabnik kupiti drug placljiv paket kot ga ima trenutno, ga zavrnemo - po novem normalno izvedemo ker preracunamo v popust + if($rowAccessCheck['package_id'] != $rowNarocilo['package_id']){ + + // Nastavimo dostop uporabniku + $sqlAccess = sisplet_query("INSERT INTO user_access + (usr_id, time_activate, time_expire, package_id) + VALUES + ('".$rowNarocilo['usr_id']."', NOW(), NOW() + INTERVAL '".$rowNarocilo['trajanje']."' MONTH, '".$rowNarocilo['package_id']."') + ON DUPLICATE KEY UPDATE + time_activate=NOW(), time_expire=NOW() + INTERVAL '".$rowNarocilo['trajanje']."' MONTH, package_id='".$rowNarocilo['package_id']."' + "); + if (!$sqlAccess){ + $response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']); + $response['success'] = false; + + return $response; + } + } + // Uporabnik kupuje isti paket kot ga ze ima - mu ga samo podaljsamo + else{ + $sqlAccess = sisplet_query("UPDATE user_access SET time_expire = time_expire + INTERVAL '".$rowNarocilo['trajanje']."' MONTH WHERE usr_id='".$rowNarocilo['usr_id']."'"); + if (!$sqlAccess){ + $response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']); + $response['success'] = false; + + return $response; + } + } + } + else{ + + // Nastavimo dostop uporabniku + $sqlAccess = sisplet_query("INSERT INTO user_access + (usr_id, time_activate, time_expire, package_id) + VALUES + ('".$rowNarocilo['usr_id']."', NOW(), NOW() + INTERVAL '".$rowNarocilo['trajanje']."' MONTH, '".$rowNarocilo['package_id']."') + ON DUPLICATE KEY UPDATE + time_activate=NOW(), time_expire=NOW() + INTERVAL '".$rowNarocilo['trajanje']."' MONTH, package_id='".$rowNarocilo['package_id']."' + "); + if (!$sqlAccess){ + $response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']); + $response['success'] = false; + + return $response; + } + } + + + // Nastavimo status narocila na placan + $sqlNarociloStatus = sisplet_query("UPDATE user_access_narocilo SET status='1' WHERE id='".$narocilo_id."'"); + if (!$sqlNarociloStatus){ + $response['error'] = 'ERROR! '.mysqli_error($GLOBALS['connect_db']); + $response['success'] = false; + + return $response; + } + + + // Ustvarimo placilo v tabeli placil + $up = new UserPlacila(); + $up->createPlacilo($rowNarocilo, $eracun=true); + + + // Ustvarimo racun - nima "markPayed"! + $cebelica = new UserNarocilaCebelica($narocilo_id); + $response['racun'] = $cebelica->getNarociloRacun($eracun=true); + + + // Posljemo mail z racunom + $subject = $lang['srv_narocilo_email_subject'].' '.$rowNarocilo['id']; + + $content = $lang['srv_narocilo_email_content1_eracun']; + $content .= '
'.$lang['srv_narocilo_email_file'].''; + $content .= '

'.$lang['srv_narocilo_email_content2']; + + + // Podpis + $signature = Common::getEmailSignature(); + $content .= $signature; + + try{ + $MA = new MailAdapter($anketa=null, $type='payments'); + + $MA->addRecipients($rowNarocilo['email']); + + // Dodamo racun (brez "markPayed") v attachment + $MA->addAttachment(file_get_contents($response['racun']), $file_name='1ka_narocilo_'.$rowNarocilo['id'].'_racun.pdf'); + + $resultX = $MA->sendMail($content, $subject); + } + catch (Exception $e){ + $response['false'] = true; + } + + + $response['success'] = true; + + return $response; + } + // Poslje mail z povprasevanjem za poslovne uporabnike (virtualna domena ali lastna instalacija) public function sendPoslovniUporabniki($narocilo_data){ @@ -1367,6 +1513,24 @@ class UserNarocila{ $this->displayNarocilaTableAdmin(); } + // Placamo narocilo brez racuna + if($_GET['a'] == 'payNarociloEracun') { + + if($narocilo_id > 0){ + + // Ce imamo nastavljen payment_method na 1 pomeni da gre za klik na "placano" v tabeli (Goran) in potem popravimo narocilu, da ima vedno nacin placila preko trr + $payment_method = (isset($_POST['payment_method'])) ? $_POST['payment_method'] : 0; + if($payment_method == '1'){ + $sqlNarociloNacin = sisplet_query("UPDATE user_access_narocilo SET payment_method='1' WHERE id='".$narocilo_id."'"); + } + + $this->payNarociloEracun($narocilo_id); + } + + // Na novo izrisemo tabelo z narocili + $this->displayNarocilaTableAdmin(); + } + // Brisemo narocilo if($_GET['a'] == 'deleteNarocilo') { diff --git a/frontend/payments/classes/class.UserNarocilaCebelica.php b/frontend/payments/classes/class.UserNarocilaCebelica.php index 39ac710c3..a029b1ae9 100644 --- a/frontend/payments/classes/class.UserNarocilaCebelica.php +++ b/frontend/payments/classes/class.UserNarocilaCebelica.php @@ -54,7 +54,7 @@ class UserNarocilaCebelica{ // Zgeneriramo in vrnemo link do pdf-ja racuna za narocilo - public function getNarociloRacun(){ + public function getNarociloRacun($eracun=false){ global $global_user_id; // Preverimo, ce racun ze obstaja @@ -72,7 +72,7 @@ class UserNarocilaCebelica{ } // Zgeneriramo pdf racun na podlagi predracuna - $cebelica_id_new = $this->generatePdf($this->narocilo['cebelica_id_predracun']); + $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']."'"); @@ -113,7 +113,7 @@ class UserNarocilaCebelica{ // Poklicemo cebelico in zgeneriramo predracun oz. racun - private function generatePdf($cebelica_id=0){ + private function generatePdf($cebelica_id=0, $eracun=false){ global $site_path; // Api za povezavo s cebelico @@ -204,7 +204,7 @@ class UserNarocilaCebelica{ // 0 generira predračun, številka naredi račun iz predračuna - $cebelica_id_new = vnosRacunaCebelca($podatki, $debug=false, $cebelica_id, $lang); + $cebelica_id_new = vnosRacunaCebelca($podatki, $debug=false, $cebelica_id, $lang, $eracun); if($cebelica_id_new){ return $cebelica_id_new; diff --git a/frontend/payments/classes/class.UserPlacila.php b/frontend/payments/classes/class.UserPlacila.php index 8a0ba7c3f..3beec6a88 100644 --- a/frontend/payments/classes/class.UserPlacila.php +++ b/frontend/payments/classes/class.UserPlacila.php @@ -69,7 +69,7 @@ class UserPlacila{ } // Ustvarimo placilo iz narocila - public function createPlacilo($narocilo){ + public function createPlacilo($narocilo, $eracun=false){ // Preverimo, ce slucajno se obstaja placilo za to narocilo - vrnemo error $sqlPlaciloCheck = sisplet_query("SELECT id FROM user_access_placilo WHERE narocilo_id='".$narocilo['id']."'"); @@ -90,10 +90,13 @@ class UserPlacila{ // Zavezanec iz tujine je placal brez ddv $cena_placano = ($UA->isWithoutDDV($narocilo['id'])) ? $cena['final_without_tax'] : $cena['final']; + // Ce je placilo eracuna, bo placano sele cez 30 dni + $time = ($eracun) ? 'NOW() + INTERVAL 1 MONTH': 'NOW()'; + $sqlPlacilo = sisplet_query("INSERT INTO user_access_placilo (narocilo_id, note, time, price, payment_method) VALUES - ('".$narocilo['id']."', '".$note."', NOW(), '".$cena_placano."', '".$narocilo['payment_method']."') + ('".$narocilo['id']."', '".$note."', ".$time.", '".$cena_placano."', '".$narocilo['payment_method']."') "); if (!$sqlPlacilo) echo mysqli_error($GLOBALS['connect_db']); diff --git a/lang/1.php b/lang/1.php index b8687a0f4..b886cd7cd 100644 --- a/lang/1.php +++ b/lang/1.php @@ -7430,6 +7430,7 @@ $lang = array ( 'srv_narocilo_podjetje_no_ddv' => "Ne plača DDV", 'srv_narocilo_podjetje_eracun' => "E-račun", 'srv_narocilo_placaj' => "Plačaj", + 'srv_narocilo_placaj_eracun' => "Plačaj e-račun", 'srv_narocilo_status_0' => "Neplačano", 'srv_narocilo_status_1' => "Plačano", @@ -7449,6 +7450,8 @@ $lang = array ( 'srv_narocilo_email_content1' => "Spoštovani,

račun je plačan in dostopen na spodnji povezavi:", 'srv_narocilo_email_content2' => "Vaš 1KA uporabniški račun je posodobljen in funkcionalnosti so na voljo za uporabo.", 'srv_narocilo_email_file' => "PDF - Račun", + + 'srv_narocilo_email_content1_eracun' => "Spoštovani,

e-račun boste prejeli v kratkem, račun je dostopen na spodnji povezavi:", 'srv_narocilo_free_email_subject' => "Zaključeno naročilo št. ", 'srv_narocilo_free_email_content1' => "Spoštovani,

naročilo je uspešno zaključeno.", diff --git a/lang/2.php b/lang/2.php index 8f97e51d5..dae10b71a 100644 --- a/lang/2.php +++ b/lang/2.php @@ -7313,6 +7313,7 @@ $lang = array ( 'srv_narocilo_podjetje_no_ddv' => "Does not pay VAT", 'srv_narocilo_podjetje_eracun' => "E-invoice", 'srv_narocilo_placaj' => "Pay", + 'srv_narocilo_placaj_eracun' => "Pay e-invoice", 'srv_narocilo_status_0' => "Unpaid", 'srv_narocilo_status_1' => "Paid", @@ -7332,7 +7333,9 @@ $lang = array ( 'srv_narocilo_email_content1' => "Dear,

Bill has been paid and is available here:", 'srv_narocilo_email_content2' => "Your 1KA account has been updated and additional functionalities are ready to use.", 'srv_narocilo_email_file' => "PDF - Receipt", - + + 'srv_narocilo_email_content1_eracun' => "Dear,

You will recieve e-invoice shortly, invoice is available here:", + 'srv_narocilo_free_email_subject' => "Finished order no.", 'srv_narocilo_free_email_content1' => "Dear,

Your order has been completed.", 'srv_narocilo_free_email_content2' => "Your 1KA account has been updated and additional functionalities are ready to use.",