Импортиране на данни от онлайн магазин (OpenCart, WooCommerce и др.)

Във "Фактурник" - версия 8.11 е добавена функция за автоматично извличане на данните от поръчки от онлайн магазин. Ако сте администратор на онлайн магазин вече можете само с натискане на един бутон да пренесете данните от поръчката (поръчаните стоки и данните на клиента) в бланката на вашата фактура, проформа или друг документ.

Настройка на системата

Уверете, че сте включили допълнителна съвместимост за онлайн магазини от меню "Настройки" » "Други настройки" » "Бизнес настройки".



След това отворете меню "Настройки" » "Онлайн магазини" и натиснете бутона "Добавяне", за да добавите данните на онлайн магазина в софтуера. Ако вече виждате онлайн магазина в списъка, кликнете с мишката два пъти върху него, за да се отвори формата за редакция.



В първото поле въведете наименованието на онлайн магазина. В полето домейн въведете домейна на онлайн магазина. В полето "Платформа" изберете платформата, която е използвана за направянето на онлайн магазина. В "Bridge URL" въведете URL адреса на PHP скрипта, който ще се и комуникира с "Фактурник". Например - https://www.freelance.bg/download-order-fakturnik.php. Натиснете бутона със светкавицата, което е разположено вдясно от полето "Секретен ключ", за да се генерира ключ. Генерираният ключ се предава автоматично към PHP скрипта. Използвайте на указаното място в скрипта този ключ, за да се защити комуникацията.

Настройка на онлайн магазина

Създайте PHP файл със следното съдържание и го качете на адреса, който попълнихте в полето "Bridge URL". Заредете адреса в браузъра и се уверете, че връща резултат.

<?php
error_reporting(E_ALL);

define('LICENSE_COMPANY_NO', '***'); // ЕИК с който е лицензиран софтуера.
define('SOFTWARE_SECRET_KEY','***'); // Взима се от Фактурник от полето Секретен ключ в редакция на ЕЛМ и се слага на мястото на ***

if((LICENSE_COMPANY_NO != '***') and (SOFTWARE_SECRET_KEY != '***')){ // ако сте попълнили  ЕИК на ред 4 и
 if($_SERVER['HTTP_APIAUTHENTICATION'] != '@@fakturnik-bridge-2022@@'.LICENSE_COMPANY_NO.'@@'.SOFTWARE_SECRET_KEY){
  echo 'Wrong Secret key';
  exit;
 }
}

/* Допълнителна защита по IP 

// достъп от позволени IP адреси
define('ALLOWED_IPS', array('0.0.0.0', ));

if(count(ALLOWED_IPS) > 0){
 if(!in_array($_SERVER['REMOTE_ADDR'], ALLOWED_IPS)){
  echo 'This IP address is not allowed!';
  exit;
 }
}

*/

try {
 $action = isset($_REQUEST['action'])?$_REQUEST['action']:''; // order

 if($action != ''){
  $secret_key = isset($_REQUEST['sc'])?$_REQUEST['sc']:'';
  define('SECRET_KEY', 'sc2022f'); // Допълнителна защита - не се променя
  if($secret_key == SECRET_KEY){
  
   $order_id = isset($_REQUEST['order_id'])?$_REQUEST['order_id']:0; // orders

   if($action == 'orders'){
    //$orders = $cl->getOrders();
    echo json_encode($orders);
   }elseif($action == 'order'){
    //$order = $cl->getOrder($order_id);

    $res_order = array(
	'order_id'=>1,
	'face'=>'МОЛ',
	'email'=>'email на клиент',
	'phone'=>'телефон на клиент',
	'company'=>'Фирма',
	'country_code'=>'BG',
	'place'=>'Населено място',
	'address'=>'Данъчен адрес',
	'company_number'=>'ЕИК',
	'company_vat'=>'ДДС номер',
	'total'=>'30.66',
	'currency'=>'BGN',
	'errors'=>'', // попълва се в случай, че желаете да изведете съобщение за грешка във Фактурник
	'lines'=>array());



    $res_order['lines'][] = array(
     'product_id' => 133,
     'name'       => 'Име на стока или услуга',
     'quantity'   => 2,
     'measure_id'=>90, // 90 - година, други мерни единици
     // Мерната единица трябва да е добавена във Фактурник от Настройки > Мерни единици
     'price'      => 10, // ед. цена без ДДС
     'total'      => 2*10 // тотал на реда
    );

    /*  ако имате няколко стоки в масив $products 
    foreach ($products as $product) {
     $res_order['lines'][] = array(
      'product_id' => $product['id'],
      'name'       =>  $product['name'],
      'quantity'   => $product['quantity'],
      'measure_id'=>70, // 70 - брой, други мерни единици
      'price'      => $product['price'],
      'total'      => $product['quantity']*$product['price']
     );
    }
    */


    $res_order['lines'][] = array(
     'product_id' => 0,
     'name'       => 'Доставка',
     'measure_id'=>70, //70 - брой, други мерни единици
     'quantity'   => 1,
     'price'      => '5.55',
     'total'      => '5.55'
    );
    $res_order['sub_total'] = '25.55'; // Данъчна основа
    $res_order['vat_percent'] = 20; // ДДС %
    $res_order['vat'] = '5.11'; // ДДС сума

    $res_order['payment_method_id'] = 7; // 7  наложен платеж, кодове на други начини на плащане
    $res_order['paid'] = 1; // 1 - платена, 0 - неплатена
    $res_order['added'] = '04.06.2022'; // дата на поръчка
    $res_order['modified'] = '2022-06-04 13:28:30'; // дата а промяна
    $res_order['comment'] = 'Допълнителни бележки към фактура';
    $res_order['country_id'] = 17; // 17 - България, други държави
    $res_order['courier_id'] = 7; //1 - Български пощи, 2 - Европът, 3 - Еконт, 4 - Интерлогистика, 5 - Лео Експрес, 6 - МиБМ, 7 - Спиди, 8 - DHL, 9 - DPD, 10 - TNT, 11 - UPS, 12 - CVC, 13 - FedEx, 101 - Собствен транспорт
    $res_order['waybill'] = '№ товарителница';

    echo json_encode($res_order);
   }

  }else{
   echo 'General error (2)!';
  }
 }else{
  echo 'General error (3)!';
 }

}catch(Exception $e) {
 echo 'Error: ' .$e->getMessage();
}
?>


Зареждане на данни във Фактурник

Отворете нов документ, например фактура. Изберете онлайн магазин в полето "Онл. магазин" и въведете номера на поръчката. Натиснете бутона вдясно от номера на поръчката, за да се заредят примерните данни. Ако всичко е наред е необходимо да модифицирате PHP скрипта, така че да извличате данните за съответната поръчка (номера се подава като параметър order_id) от базата данни и заместете примерните стойности. Ако вашият онлайн магазин е базиран на OpenCart можете да ни пишете и ще Ви изпратим готов файл.

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

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