182 lines
4.6 KiB
PHP
182 lines
4.6 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') {
|
||
|
|
||
|
$api = new InvfoxAPI(API_KODA, "www.cebelca.biz", $debugMode);
|
||
|
if($proformaId != 0)
|
||
|
$id = racunIzPredracuna($api,$podatki,$proformaId,$lang);
|
||
|
else
|
||
|
$id = ustvariPredracun($api,$podatki,$lang);
|
||
|
|
||
|
return $id;
|
||
|
}
|
||
|
|
||
|
function racunIzPredracuna($api,$podatki,$proformaId,$lang='si') {
|
||
|
|
||
|
// parametri za glavo predracuna
|
||
|
$argumentiProforma = array(
|
||
|
"id" => $proformaId,
|
||
|
"date_sent" => date("d.m.Y"),
|
||
|
"date_to_pay" => 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
|
||
|
$api->markPayed($header);
|
||
|
|
||
|
// kartica in gotovina se potrjujeta
|
||
|
if($tip_placila == 3){
|
||
|
|
||
|
$glava = array (
|
||
|
'id' => $invId,
|
||
|
"id_location" => 2,
|
||
|
"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' => "",
|
||
|
);
|
||
|
}
|
||
|
|
||
|
// 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' => '')
|
||
|
);
|
||
|
|
||
|
if ($r->isOk()) { // partner ustrezno dodan
|
||
|
$clientIdA = $r->getData();
|
||
|
$clientId=0;
|
||
|
if(isset($clientIdA[0]['id']))
|
||
|
$clientId = $clientIdA[0]['id'];
|
||
|
|
||
|
$glava = array (
|
||
|
'title' => date("y")."-".$clientId,
|
||
|
'date_sent' => date("d.m.Y"),
|
||
|
'days_valid' => $podatki['veljavnost'],
|
||
|
'id_partner' => $clientId,
|
||
|
'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;
|
||
|
}
|
||
|
|
||
|
?>
|