216 lines
5.9 KiB
PHP
216 lines
5.9 KiB
PHP
<?
|
|
|
|
require_once('lib/strpcapi.php');
|
|
require_once('lib/invfoxapi.php');
|
|
|
|
// debugMode = true izpisuje klice in njihove rezultate
|
|
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, $eracun);
|
|
else
|
|
$id = ustvariPredracun($api, $podatki, $lang);
|
|
|
|
return $id;
|
|
}
|
|
|
|
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" => ($eracun) ? date("d.m.Y", strtotime('-30 days')) : date("d.m.Y"),
|
|
"date_served" => date("d.m.Y",strtotime($podatki['datum']))
|
|
);
|
|
|
|
// naredi račun
|
|
$r = $api->invoiceFromProforma($argumentiProforma);
|
|
if($r->isOk()){ // naredil je račun iz predračuna
|
|
|
|
$invIdA = $r->getData();
|
|
$invId = $invIdA[0]['new_id'];
|
|
|
|
$placilo = $podatki['za_placilo'];
|
|
|
|
$tip_placila = (isset($podatki['tip_placila']) ? $podatki['tip_placila'] : 1);
|
|
|
|
// header ki ga rabi za "dodaj plačilo"
|
|
$header = array(
|
|
'date_of' => date("d.m.Y"),
|
|
'amount' => round($placilo,2),
|
|
'id_invoice_sent' => $invId,
|
|
'id_payment_method' => $tip_placila // 1=trr, 3=kartica, 5=paypal
|
|
);
|
|
|
|
// 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){
|
|
|
|
$id_location = ($tip_placila == 5) ? 4 : 2;
|
|
|
|
$glava = array (
|
|
'id' => $invId,
|
|
"id_location" => $id_location,
|
|
"id_register" => 1,
|
|
"fiscalize" => 1,
|
|
'op-tax-id' => IZDAJATELJ_DAVCNA,
|
|
'op-name' => IZDAJATELJ_IME,
|
|
);
|
|
|
|
// potrdi pri FURS
|
|
$api->fiscalize($glava);
|
|
}
|
|
// racun ni davcno potrjen
|
|
else{
|
|
|
|
$glava = array (
|
|
'id' => $invId,
|
|
'title' => '',
|
|
'doctype' => 0,
|
|
);
|
|
|
|
// izdaj račun
|
|
$api->finalizeInvoiceNonFiscal($glava);
|
|
}
|
|
|
|
// prenesi pdf
|
|
$api->downloadPDF($invId,"invoice-sent",$lang);
|
|
|
|
return $invId;
|
|
}
|
|
else
|
|
return 0; // napaka
|
|
}
|
|
|
|
function ustvariPredracun($api,$podatki,$lang='si') {
|
|
|
|
$invId = 0;
|
|
$vatbound = 0;
|
|
if($podatki['podjetjeime']!="") { // predračun na firmo
|
|
$arr = array(
|
|
'name' => $podatki['podjetjeime'],
|
|
'street' => $podatki['podjetjenaslov'],
|
|
'postal' => $podatki['podjetjepostna'],
|
|
'city' => $podatki['podjetjeposta'],
|
|
'vatid' => $podatki['podjetjedavcna']
|
|
);
|
|
|
|
if (strpos($podatki['podjetjedavcna'], 'SI') !== false) // zavezanec
|
|
$vatbound = 1;
|
|
}
|
|
else { // predračun za končnega kupca
|
|
$arr = array(
|
|
'name' => $podatki['stranka'],
|
|
'street' => "",
|
|
'postal' => "",
|
|
'city' => "",
|
|
'vatid' => "",
|
|
);
|
|
}
|
|
|
|
// Pri sklicevanju na 30. clen mora na racunu pisati drzava
|
|
$country = ($podatki['podjetjeime'] == "" && $podatki['ddv'] != 1) ? $podatki['drzava'] : '';
|
|
|
|
// dodaj partnerja
|
|
$r = $api->assurePartner(
|
|
array(
|
|
'name' => $arr['name'],
|
|
'street' => $arr['street'],
|
|
'postal' => $arr['postal'],
|
|
'city' => $arr['city'],
|
|
'vatid' => $arr['vatid'],
|
|
'phone' => $podatki['telefon'],
|
|
'website' => '',
|
|
'email' => $podatki['email'],
|
|
'notes' => '',
|
|
'vatbound' => $vatbound,
|
|
'custaddr' => '',
|
|
'payment_period' => 1,
|
|
'street2' => '',
|
|
'country' => $country
|
|
)
|
|
);
|
|
|
|
// partner ustrezno dodan
|
|
if ($r->isOk()) {
|
|
|
|
$clientIdA = $r->getData();
|
|
$clientId=0;
|
|
|
|
if(isset($clientIdA[0]['id']))
|
|
$clientId = $clientIdA[0]['id'];
|
|
|
|
|
|
// Sklic na člen glede DDV
|
|
$pub_notes = '';
|
|
|
|
// Podjetje, ki nima ddv (EU zavezanec oz. katerakoli 3. drzava)
|
|
if($podatki['podjetjeime'] != "" && $podatki['ddv'] != 1) {
|
|
|
|
if($lang == 'si')
|
|
$pub_notes = 'V skladu s členom 25/1 ZDDV-1 ni obračunan DDV.';
|
|
else
|
|
$pub_notes = 'According to article 25/1 ZDDV-1 VAT is not included.';
|
|
}
|
|
|
|
// Fizicna oseba iz 3. drzave, ki nima ddv
|
|
if($podatki['podjetjeime'] == "" && $podatki['ddv'] != 1) {
|
|
|
|
if($lang == 'si')
|
|
$pub_notes = 'V skladu s členom 30.d/1 ZDDV-1 ni obračunan DDV.';
|
|
else
|
|
$pub_notes = 'According to article 30.d/1 ZDDV-1 VAT is not included.';
|
|
}
|
|
|
|
|
|
$glava = array (
|
|
'title' => date("y")."-".$clientId,
|
|
'date_sent' => date("d.m.Y"),
|
|
'days_valid' => $podatki['veljavnost'],
|
|
'id_partner' => $clientId,
|
|
'pub_notes' => $pub_notes,
|
|
'date_served' => date("d.m.Y"),
|
|
'date_to_pay' => date("d.m.Y"),
|
|
'date_payed' => date("d.m.Y"),
|
|
'vat_level' => 0,
|
|
'taxnum' => 0
|
|
);
|
|
|
|
// Zavezanec iz tujine nima ddv-ja
|
|
$ddv = DDV * 100;
|
|
if($podatki['ddv'] != 1)
|
|
$ddv = 0;
|
|
|
|
$telo = array(
|
|
array(
|
|
'title' => $podatki['ime_storitve'], // ime storitve
|
|
'qty' => 1, // količina
|
|
'mu' => 'kos',
|
|
'price' => $podatki['cena'],
|
|
'vat' => $ddv,
|
|
'discount' => $podatki['popust'],
|
|
),
|
|
);
|
|
|
|
// ustvari proforma invoice
|
|
$r2 = $api->createProFormaInvoice($glava,$telo);
|
|
|
|
// download pdf
|
|
if ($r2->isOk()) {
|
|
$invIdA = $r2->getData();
|
|
if(isset($invIdA[0]['id'])){
|
|
$invId = $invIdA[0]['id'];
|
|
if($invId)
|
|
$api->downloadPDF($invId,"preinvoice",$lang);
|
|
}
|
|
}
|
|
}
|
|
return $invId;
|
|
}
|
|
|
|
?>
|