207 lines
5.5 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 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' => "",
);
}
// 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'];
// 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;
}
?>