Проблема с сохранением данных SalesOrders из вызова REST API в Exact Online

Я давно использую клиентскую библиотеку PHP для Exact Online.

После сохранения учетных записей клиентов, адресов, контактов, а затем фильтрации условий оплаты на основе заказов WooCommerce элементы успешно отображаются на панели мониторинга Exact Online.

Но, к сожалению, звонит в SalesOrders после запроса API. Я не могу сохранить в панели управления Exact Online, хотя для того, чтобы хранить только OrderedBy само по себе достаточно того, что приведено в официальной документации

$ordersn = $order->save();

Picqer\Financials\Exact\ApiException: ошибка 403: запрещено

$order = new SalesOrder($connection);
$lines = new SalesOrderLine($connection);


....

echo'<pre>'; print_r($order); 
$order->SalesOrderLines = $lines;
$ordersn = $order->save();
if ($ordersn->ID)
{
    $orderitem['sync_flag'] = true;
}

Вот детали заказа массива

Picqer\Financials\Exact\SalesOrder Object
(
    ...
    [attributes:protected] => Array
            (
                [WarehouseID] => 26ca2016-453f-499a-8a34-c986009bc78d
                [OrderID] => FC290B7D-766B-4CBB-B7A2-47327AA3841F
                [OrderedBy] => 764a4f6d-4b39-43b4-a86c-265e5478afbd
                [DeliverTo] => 764a4f6d-4b39-43b4-a86c-265e5478afbd
                [OrderDate] => 2019-02-17T19:29:53
                [YourRef] => 75591901YP220320G
                [OrderedByName] => Peter Kerner
                [Description] => 16031_PayPal/Lastschrift/Kreditkarte
                [Remarks] => Order is processing
                [PaymentReference] => 16031
                [PaymentCondition] => 
                [SalesOrderLines] => Picqer\Financials\Exact\SalesOrderLine Object
                    (
                        [attributes:protected] => Array
                            (
                                [OrderID] => FC290B7D-766B-4CBB-B7A2-47327AA3841F
                                [VATAmount] => 5,58
                                [Description] => Goodies Box
                                [Quantity] => 1,00
                                [UnitPrice] => 29,37
                                [Item] => 418d43d6-55fe-410a-8df2-b05cbb72cea5
                            )
                            ...
                    )
            )
    ...
)

Нужно ли нам загружать код НДС или я пропускаю какие-то еще данные, которые должны быть размещены первыми, как показано в приведенном выше массиве заказов, или как нам еще нужно вызывать соответствующий API. Так как для того, чтобы отразить на приборной панели Exact Online. что мы должны следовать?

Из вызова встроенной функции addItem() ниже фрагменты кода:

$soLines = array(
                'OrderID' => $lines->OrderID,
                'Item' => $lines->Item,
                'Description' =>  $lines->Description,
                'Quantity' => $lines->Quantity,
                'UnitPrice' => $lines->UnitPrice,
                'VATAmount' => $lines->VATAmount,
                'VATCode' => $lines->VATCode
           );
$order->addItem($soLines);

Создает результаты с LineNumber быть включенным в SalesOrderLines массив

[attributes:protected] => Array
(
    [WarehouseID] => 26ca2016-453f-499a-8a34-c986009bc78d
    [OrderID] => 65F93F56-97A8-4D54-AE37-C0BDDE774E67
    [OrderedBy] => 9b048b81-f729-413a-b196-526436f11fe7
    [DeliverTo] => 9b048b81-f729-413a-b196-526436f11fe7
    [OrderDate] => 2019-02-17T20:45:34
    [YourRef] => 9Y9593859V795183K
    [OrderedByName] => Katrin Lenk
    [Description] => 16033_PayPal Express
    [Remarks] =>  Order is processing
    [PaymentReference] => 16033
    [PaymentCondition] => 
    [SalesOrderLines] => Array
        (
            [0] => Array
                (
                    [OrderID] => 65F93F56-97A8-4D54-AE37-C0BDDE774E67
                    [Item] => 5c415369-615c-4953-b28c-c7688f61cfaa
                    [Description] => ABC Classic
                    [Quantity] => 2,00
                    [UnitPrice] => 15,08
                    [VATAmount] => 5,73
                    [VATCode] => 
                    [LineNumber] => 1
                )

        )

)

Также обратите внимание, что я не создавал журналы, GLAccounts, Documents & DocumentAttachments API. Влияет ли это на хранение SalesOrders?


РЕДАКТИРОВАТЬ:

В гораздо проще

$salesOrder = new \Picqer\Financials\Exact\SalesOrder($connection);
$salesOrder->WarehouseID = '26ca2016-453f-499a-8a34-c986009bc78d';
$salesOrder->OrderID = '65F93F56-97A8-4D54-AE37-C0BDDE774E67';
$salesOrder->OrderedBy = '9b048b81-f729-413a-b196-526436f11fe7';
$salesOrder->DeliverTo = '9b048b81-f729-413a-b196-526436f11fe7';
$salesOrder->OrderDate = '2019-02-17T20:45:34';
$salesOrder->YourRef = '9Y9593859V795183K';
$salesOrder->OrderedByName = 'Katrin Lenk';
$salesOrder->Description = '16033_PayPal Express';
$salesOrder->Remarks = 'Order is processing';
$salesOrder->PaymentReference = '16033';
$salesOrder->PaymentCondition = 'PP';

$soLines = array(
    'Item' => '5c415369-615c-4953-b28c-c7688f61cfaa',
    'Description' => 'ABC Classic',
    'Quantity' => '1,00',
    'UnitPrice' => '29,37',
    'OrderID' => '65F93F56-97A8-4D54-AE37-C0BDDE774E67'
);

echo '<pre>'; print_r($soLines);
$salesOrder->addItem($soLines);
echo '<pre>'; print_r($salesOrder);
$salesOrder->save();

Результирующее значение сохраняется из soLines массив

[attributes:protected] => Array
(
    [WarehouseID] => 26ca2016-453f-499a-8a34-c986009bc78d
    [OrderID] => 65F93F56-97A8-4D54-AE37-C0BDDE774E67
    [OrderedBy] => 9b048b81-f729-413a-b196-526436f11fe7
    [DeliverTo] => 9b048b81-f729-413a-b196-526436f11fe7
    [OrderDate] => 2019-02-17T20:45:34
    [YourRef] => 9Y9593859V795183K
    [OrderedByName] => Katrin Lenk
    [Description] => 16033_PayPal Express
    [Remarks] =>  Order is processing
    [PaymentReference] => 16033
    [PaymentCondition] => 
    [SalesOrderLines] => Array
        (
            [0] => Array
                (
                    [OrderID] => 65F93F56-97A8-4D54-AE37-C0BDDE774E67
                    [Item] => 5c415369-615c-4953-b28c-c7688f61cfaa
                    [Description] => ABC Classic
                    [Quantity] => 2,00
                    [UnitPrice] => 15,08
                    [VATAmount] => 5,73
                    [VATCode] => 
                    [LineNumber] => 1
                )

        )

)

Фактический результат:

Picqer\Financials\Exact\ApiException: ошибка 403: запрещено

1 ответ

Причина была OrderID значение было включено дважды в SalesOrderLine а также в SalesOrder для двух вызовов API REST и удаления OrderID вход из SalesOrder работал отлично и отражая в Exact Online Dashboard

Вы не можете назначить $order->SalesOrderLines = $lines; непосредственно в результате ошибки в массиве. Единственный способ сделать это - вызвать встроенную функцию addItem() передача объектов массива в него.

Другие вопросы по тегам