Moznost "placaj eracun" pri narocilih - izda racun z rokom 30 dni (neplacan) in ustvari placilo

This commit is contained in:
pero1203 2021-02-01 12:45:19 +01:00
parent 4f3e07694a
commit 0da6b81046
7 changed files with 199 additions and 16 deletions

View File

@ -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(){

View File

@ -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);
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,7 +44,8 @@ function racunIzPredracuna($api,$podatki,$proformaId,$lang='si') {
'id_payment_method' => $tip_placila // 1=trr, 3=kartica, 5=paypal
);
// nastavi, da je plačano
// nastavi, da je plačano - eracun ni placan!
if(!$eracun)
$api->markPayed($header);
// kartica in paypal se potrjujeta

View File

@ -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 ' | <span class="as_link" onClick="urediNarociloPay(\''.$data_row['id'].'\')">'.$lang['srv_narocilo_placaj'].'</span>';
if($data_row['status'] != '1' && $data_row['status'] != '2' && ($app_settings['app_name'] != 'www.1ka.si' || $global_user_id == '112696')){
echo '<br />';
echo '<span class="as_link" onClick="urediNarociloPay(\''.$data_row['id'].'\')">'.$lang['srv_narocilo_placaj'].'</span>';
if($data_row['podjetje_eracun'] == '1')
echo ' | <span class="as_link" onClick="urediNarociloPayEracun(\''.$data_row['id'].'\')">'.$lang['srv_narocilo_placaj_eracun'].'</span>';
}
echo '</td>';
@ -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 .= '<br /><a href="'.$response['racun'].'">'.$lang['srv_narocilo_email_file'].'</a>';
$content .= '<br /><br />'.$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') {

View File

@ -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;

View File

@ -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']);

View File

@ -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",
@ -7450,6 +7451,8 @@ $lang = array (
'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,<br/><br/>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,<br/><br/>naročilo je uspešno zaključeno.",
'srv_narocilo_free_email_content2' => "Vaš 1KA uporabniški račun je posodobljen in funkcionalnosti so na voljo za uporabo.",

View File

@ -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",
@ -7333,6 +7334,8 @@ $lang = array (
'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,<br/><br/>You will recieve e-invoice shortly, invoice is available here:",
'srv_narocilo_free_email_subject' => "Finished order no.",
'srv_narocilo_free_email_content1' => "Dear,<br/><br/>Your order has been completed.",
'srv_narocilo_free_email_content2' => "Your 1KA account has been updated and additional functionalities are ready to use.",