Експорт на документи към онлайн магазин (OpenCart, WooCommerce и др.)

Чрез активиране на тази функция (налична във версия 8.12 на "Фактурник") можете да автоматизирате вашата дейност, като изпълнявате допълнителни действия във вашия уеб сайт или онлайн магазин след запис на документ във "Фактурник". Например след запис на документ можете да маркирате поръчката като платена, да съхраните номера и датата на фактурата към поръчката или да изпратите писмо към клиент и др. След попълване на полето "Callback URL" във "Фактурник" и след определено действие в софтуера данните се изпращат автоматично в JSON формат към посочения URL. Скриптът който се изпълнява след зареждането на този URL може да обработи входящите данни и да извърши желаното действие. Тази функция е полезна и в случаите когато част от данните се съдържат в повече от една системата и трябва да се синхронизират след промяна във "Фактурник".


Данни изпращани от Фактурник

Данните които се изпращат от Фактурник се предават чрез асоциативен масив, който съдържа други асоциативни масиви (operation - данни за операцията, header - главната информация за документа, customer - информация за клиента, seller - информация за издателя на фактурата и lines - съдържа редовете на документа):

Описание на предаваните данни в масива operation.

КлючВъзможни стойностиОписание
typedocument-save операция
Описание на предаваните данни в масива header.
КлючВъзможни стойностиОписание
typeinvoice, proforma, receipt, protocol, delivery тип на документа - фактура, проформа, стокова разписка, протокол или доставка
kind0, 1, 2Нормална фактура (0), кредитно известие (1), дебитно известие (2)
idцяло числоID на документа във Фактурник
numberцяло числоНомер на документа (10 цифри)
object_idцяло числоID Търговски обект (номерация) във Фактурник - основен ТО (0)
date_issuedтекст (форм. YYYY-MM-DD)Дата на издаване на документа
date_tax_eventтекст (форм. YYYY-MM-DD)Дата на данъчно събитие
transaction_placeтекстМясто на сделката
completed_byтекстСъставител
attached_doc_numberцяло числоКъм проформа фактура номер
attached_doc_dateтекст (форм. YYYY-MM-DD)Към проформа фактура от дата
vat_percentчислоДанъчна ставка (%)
subtotalчислоДанъчна основа
vat_sumчислоДДС сума
totalчислоОбщо
payment_method_idцяло числоКод на начин на плащане
payment_method_nameтекстНачин на плащане
ibanтекстIBAN - при плащане по банка
transaction_numberтекст№ на транзакция при VPOS
invoice_currency_idцяло числоID на валута при издаване на Invoice
invoice_fixingтекстФиксинг за валута на Invoice
notesтекстДопълнителни бележки и пояснения
note_reasonтекстОснование за кредитно/дебитно известие
null_reasonтекстОснование за нулева ставка или неначисл. на ДДС
cancel0, 1Анулиран (1), в противен случай (0)
payment_status0, 1, 2Неплатен (0), Платен (1), Частично платен (2)
eshop_idцяло числоКод на онлайн магазин във Фактурник
order_idтекст или числоНомер на поръчка
order_dateтекст (форм. YYYY-MM-DD)Дата на поръчка
courier_idцяло числоКод на куриер
waybillтекстНомер на товарителница
Описание на предаваните данни в масива customer.
КлючВъзможни стойностиОписание
idцяло числоID на клиент във Фактурник
nameтекстИме на клиент
company_numberтекстЕИК/ЕГН на клиент
vat_idтекстДанъчен номер (ИН по ДДС)
country_idцяло числоКод на държава
placeтекстНаселено място от дан. адрес
addressтекстДанъчен адрес (без нас. място)
phoneтекстТелефон
emailтекстEmail
directorтекстМОЛ
recipientтекстПолучател
Описание на предаваните данни в масива seller.
КлючВъзможни стойностиОписание
nameтекстИме на доставчик
company_numberтекстЕИК/ЕГН на доставчик
vat_idтекстДанъчен номер (ИН по ДДС)
placeтекстНаселено място от дан. адрес
addressтекстДанъчен адрес (без нас. място)
phoneтекстТелефон
emailтекстEmail
directorтекстМОЛ
Масивът lines е съставен от подмасиви, като всеки подмасив съдържа информация за съответния ред. Съдържание на първия подмасив в lines.
КлючВъзможни стойностиОписание
item_idцяло числоID на стока/услуга във Фактурник
line_numberцяло числоНомер на ред в документ
item_nameтекстНаименование на стока/услуга
item_name_secondтекстНаименование на английски език на стока/услуга
codeтекстАртикулен номер
barcodeтекстБаркод номер
measure_idцяло числоID на мерна единица
measureтекстМерна единица
priceчислоЕд. цена без ДДС
quantityчислоКоличество
discount_percentчислоПроцент търговска отстъпка
amountчислоОбща сума за реда
item_consignmentчислоПартида
item_expirationчислоСрок на годност

Данни предавани от "Фактурник"

Данните се предават в JSON формат (utf-8 кодировка) със заглавка от тип съдържание (ContentType) със стойност application/json. Това е един примерен отговор. В следващия раздел сме публикували примерен PHP скрипт, който обработва тези данни.

Array
(
    [operation] => Array
        (
            [type] => document-save
        )

    [header] => Array
        (
            [type] => invoice
            [kind] => 0
            [id] => 1
            [number] => 0000000001
            [object_id] => 0
            [date_issued] => YYYY-MM-DD
            [date_tax_event] => YYYY-MM-DD
            [transaction_place] => Бургас
            [completed_by] => Име на създател
            [attached_doc_number] => 1
            [attached_doc_date] => YYYY-MM-DD
            [vat_percent] => 0
            [subtotal] => 60.00
            [vat_sum] => 0.00
            [total] => 60.00
            [payment_method_id] => 2
            [payment_method_name] => по банков път
            [iban] => BG22FINV....................
            [transaction_number] => 
            [invoice_currency_id] => 0
            [invoice_fixing] => 1
            [notes] => плащане за ...
            [note_reason] => основание за кр.известие
            [null_reason] => основание за 0% ДДС
            [cancel] => 0
            [payment_status] => 1
            [eshop_id] => 1
            [order_id] => 1
            [order_date] => YYYY-MM-DD
            [courier_id] => 0
            [waybill] => 

        )

    [customer] => Array
        (
            [id] => 1
            [name] => Име на клиент
            [company_number] => ЕИК
            [vat_id] => ИН по ДДС
            [country_id] => 17
            [place] => Населено място от дан. адрес
            [address] => Данъчен адрес (без нас. място)
            [phone] => телефон
            [email] => email
            [director] => МОЛ
            [recipient] => Получател
        )

    [seller] => Array
        (
            [name] => Име на доставчик
            [company_number] => ЕИК
            [vat_id] => ИН по ДДС
            [place] => Населено място от дан. адрес
            [address] => Данъчен адрес (без нас. място)
            [phone] => телефон
            [email] => email
            [director] => МОЛ
        )

    [lines] => Array
        (
            [0] => Array
                (
                    [item_id] => 0
                    [line_number] => 1
                    [item_name] => Наименование на стока/услуга
                    [item_name_second] => 
                    [code] => арт. номер
                    [barcode] => баркод
                    [measure_id] => 90
                    [measure] => год.
                    [price] => ед. цена без ДДС
                    [quantity] => к-во
                    [discount_percent] => % отстъпка
                    [amount] => Общо за реда
                    [item_consignment] => Партида
                    [item_expiration] => Срок на годност
                )

        )

)

Примерен код, който обработва резултата

<?php
error_reporting(E_ALL);

define('SOFTWARE_SECRET_KEY', 'тук въведете вашия ключ'); // Секретен ключ за "Callback URL" от Фактурник

if(isset($_SERVER['HTTP_APIAUTHENTICATION'])){
	if($_SERVER['HTTP_APIAUTHENTICATION'] != SOFTWARE_SECRET_KEY){
		$array = array('ok'=>'false', 'message'=>'Wrong API key!');
		echo json_encode($array);
		exit;
	}
}

// Вместо 0.0.0.0 въведете вашето IP и откоментирайте кода ако желаете да защитите достъпа по IP адрес.
/*
define('ALLOWED_IPS', array('0.0.0.0')); 
if(count(ALLOWED_IPS) > 0){
	if(!in_array($_SERVER['REMOTE_ADDR'], ALLOWED_IPS)){
		$array = array('ok'=>'false', 'message'=>'IP address '.$_SERVER['REMOTE_ADDR'].' is not allowed!');
		echo json_encode($array);
		exit;
	}
}
*/

$json = file_get_contents('php://input');
$json = json_decode($json, true);

// Примерен достъп до данните
//$doc_type = $json['header']['type'];
//$customer_name = $json['customer']['name'];
//$item_name = $json['lines'][0]['item_name']; // Поставете във for цикъл ако стоките са повече от 1

// Oткоментирайте реда, за да се уверите, че получавате данни.
// След запис на фактура потърсете файл myfile.json в папката на скрипта.
// file_put_contents('myfile.json', json_encode($json));

// ако всичко е наред се изпраща отговор към Фактурник.
$array = array('ok'=>'true');
// ако има някакви проблеми се изпраща този ред вместо горния, като съобщението се визуализира във Фактурник
//$array = array('ok'=>'false', 'message'=>'Съобщение за грешка!');
echo json_encode($array);

?>

Внимание: “бисквитки”

Съгласно Регламент (ЕС) 2016/679 на Европейския парламент и на Съвета от 27 април 2016 година относно защитата на физическите лица във връзка с обработването на лични данни и относно свободното движение на такива данни (GDPR), за да използвате този уеб сайт и услугите предлагани чрез него, е необходимо да прочетете документите Правила и условия за ползване, Политика за поверителност и Политика за употреба на “бисквитки”, след което да отбележите изрично, че се съгласявате със съдържанието им.