Как получить pdf-файл счета-фактуры (уже созданный) из Exactonline
У меня 2 проблемы. PDF-файл счета-фактуры уже создан в точном онлайн-режиме, но когда я извлекаю данные счета-фактуры, он возвращает пустое / пустое поле «Документ» (где-то я читал, что его нужно вручную связать со счетом-фактурой)
Итак, как вручную связать уже созданный PDF-файл счета-фактуры со счетом-фактурой в точном онлайн-режиме (я не хочу воссоздавать счет-фактуру), во-вторых, если вручную связать успешно, правильный ли мой код для их получения?
$ESalesInvoiceObj = new \Picqer\Financials\Exact\SalesInvoice($connection);
$ESalesInvoiceRes=$ESalesInvoiceObj->filter("OrderNumber eq ".$MyOrderNumber, '', '', ['$top'=> 1]);
foreach($ESalesInvoiceRes as $ESalesInvoice)
{
// I got invoice data with null/blank document till now
$documents = new \Picqer\Financials\Exact\Document($connection);
$res = $documents->filter("ID eq guid'".$ESalesInvoice->Document."'");
foreach ($res as $doc)
{ echo $doc->getDownloadUrl(); }
// OR
$DocumentAttachment = new \Picqer\Financials\Exact\DocumentAttachment($connection);
$DocumentAttachments = $DocumentAttachment->filter("Document eq guid'".$ESalesInvoice->Document."'");
foreach( $DocumentAttachments as $invoice_attachment )
{ echo $invoice_attachment->getDownloadUrl(); }
}
А что, если мы не свяжем их вручную, есть ли способ получить счет-фактуру в формате pdf?
И самая важная проблема, с которой я сталкиваюсь, заключается в том, что когда я вхожу в точную онлайн-панель в моем браузере на другой вкладке, я могу извлекать данные, которые я хочу, но не могу получить, когда не вошел в систему - нет ошибки, он просто показывает пустой / белый экран (даже без ошибки php - тот же код возвращает вывод при входе в точную онлайн-версию на другой вкладке)
Весь мой код
<?php error_reporting(E_ALL);
ini_set('display_errors', 'On');
require_once(__DIR__.'/Picqer/Financials/Exact/Connection.php');
require_once(__DIR__.'/Picqer/Financials/Exact/ApiException.php');
require_once(__DIR__.'/Picqer/Financials/Exact/Model.php');
require_once(__DIR__.'/Picqer/Financials/Exact/Query/Findable.php');
require_once(__DIR__.'/Picqer/Financials/Exact/Query/Resultset.php');
require_once(__DIR__.'/Picqer/Financials/Exact/Persistance/Storable.php');
require_once(__DIR__.'/Picqer/Financials/Exact/Persistance/Downloadable.php');
require_once(__DIR__.'/Picqer/Financials/Exact/Me.php');
require_once(__DIR__.'/Picqer/Financials/Exact/Journal.php');
require_once(__DIR__.'/Picqer/Financials/Exact/SalesOrder.php');
require_once(__DIR__.'/Picqer/Financials/Exact/SalesOrderID.php');
require_once(__DIR__.'/Picqer/Financials/Exact/SalesOrderLine.php');
require_once(__DIR__.'/Picqer/Financials/Exact/SalesInvoice.php');
require_once(__DIR__.'/Picqer/Financials/Exact/SalesInvoiceLine.php');
require_once(__DIR__.'/Picqer/Financials/Exact/PrintedSalesInvoice.php');
require_once(__DIR__.'/Picqer/Financials/Exact/Account.php');
require_once(__DIR__.'/Picqer/Financials/Exact/Contact.php');
require_once(__DIR__.'/Picqer/Financials/Exact/Document.php');
require_once(__DIR__.'/Picqer/Financials/Exact/DocumentAttachment.php');
function callAPI($method, $url, $data){
$curl = curl_init();
switch ($method){
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'APIKEY: 111111111111111111111',
'Content-Type: application/json',
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$result = curl_exec($curl);
if(!$result){die("Connection Failure");}
curl_close($curl);
return $result;
}
function getValue($key)
{
$storage = json_decode(file_get_contents('storage.json'), true);
if(array_key_exists($key, $storage)){ return $storage[$key]; }
}
function setValue($key, $value)
{
$storage = json_decode(file_get_contents('storage.json'), true);
$storage[$key] = $value;
file_put_contents('storage.json', json_encode($storage));
}
function authorize()
{
$connection = new \Picqer\Financials\Exact\Connection();
$connection->setRedirectUrl('myshopfrontendurl');
$connection->setExactClientId('ExactClientId');
$connection->setExactClientSecret('ExactClientSecret');
$connection->redirectForAuthorization();
}
function tokenUpdateCallback(\Picqer\Financials\Exact\Connection $connection)
{
setValue('accesstoken', $connection->getAccessToken());
setValue('refreshtoken', $connection->getRefreshToken());
setValue('expires_in', $connection->getTokenExpires());
}
function connect()
{
$connection = new \Picqer\Financials\Exact\Connection();
$connection->setRedirectUrl('myshopfrontendurl');
$connection->setExactClientId('ExactClientId');
$connection->setExactClientSecret('ExactClientSecret');
if(getValue('authorizationcode')){ $connection->setAuthorizationCode(getValue('authorizationcode')); }
if(getValue('accesstoken')){ $connection->setAccessToken(getValue('accesstoken')); }
if(getValue('refreshtoken')){ $connection->setRefreshToken(getValue('refreshtoken')); }
if(getValue('expires_in')){ $connection->setTokenExpires(getValue('expires_in')); }
$connection->setTokenUpdateCallback('tokenUpdateCallback');
try{ $connection->connect(); }
catch(\Exception $e){ throw new Exception('Could not connect to Exact: '.$e->getMessage()); }
return $connection;
}
if(isset($_GET['code']) && is_null(getValue('authorizationcode'))){ setValue('authorizationcode', $_GET['code']); }
if(getValue('authorizationcode') === null){ authorize(); }
$connection = connect();
// then above code to fetch invoice & its downloadable pdf ?>