Не удается использовать объект типа QuickBooksOnline \ API \ Data \ IPPLine в качестве массива - при обновлении счета-фактуры с новой позицией? - PullRequest
0 голосов
/ 11 июля 2019

Я добавляю новую позицию в существующий счет-фактуру, используя QuickBook ONline PHP SDK (последняя версия), но для этого я использовал пример сценария из документации QUickBOOK, но при этом всегда возвращается ошибка ниже: невозможно использовать объект типа QuickBooksOnline \ API \ Data \ IPPLine в виде массива

Вот мой код: - `

require_once("vendor/autoload.php");
use QuickBooksOnline\API\DataService\DataService;
use QuickBooksOnline\API\Core\Http\Serialization\XmlObjectSerializer;
use QuickBooksOnline\API\Core\OAuth\OAuth2\OAuth2LoginHelper;
use QuickBooksOnline\API\Facades\Invoice;
use QuickBooksOnline\API\Facades\Line;

// Here is my OAuth token code

$targetInvoiceArray = $dataService->Query("select * from Invoice where DocNumber='7001'");
if(!empty($targetInvoiceArray) && sizeof($targetInvoiceArray) == 1){
$theInvoice = current($targetInvoiceArray);
}

$LineObj = Line::create([
"Description" => "Discount for Alex",
"Amount" => -10.00,
"DetailType" => "SalesItemLineDetail",
"SalesItemLineDetail" => [
"ItemRef" => [
"value" => 21,
"name" => "Discount"
]
]
]);
//Remove last element of Line Item.
$lineArray = array_pop($theInvoice->Line);

$lineArray[] = $LineObj;
// $lineArray.push($LineObj);
$updatedInvoice = Invoice::update($theInvoice, [
"sparse" => true,
"Line" => $lineArray
]);
$updatedResult = $dataService->Update($updatedInvoice);

`

Скрипт, выдающий ошибку в этой строке $lineArray[] = $LineObj;

1 Ответ

0 голосов
/ 12 июля 2019

После лота отладки я обнаружил, что в примере кода QuickBooks PHP SDK есть ошибка. Я решил проблему, изменив несколько строк кода:

Заменить следующие строки:

$lineArray[] = $LineObj;
$updatedInvoice = Invoice::update($theInvoice, [
  "sparse" => true,
  "Line" => $lineArray
]);

С этим кодом

$theInvoice->Line[] = $LineObj;
$updatedInvoice = Invoice::update($theInvoice, [
   "sparse" => true
]); 
...