不能使用类型为 QuickBooksOnlineAPIDataIPPLine 的对象作为数组 - 使用新行项



>我正在使用QuickBook ONline PHP SDK(最新版本(向现有发票添加新行项目,但是为此,我使用了QUickBOOK文档中的示例脚本,但这总是返回以下错误: 不能将类型为 QuickBooksOnline\API\Data\IPPLine 的对象用作数组

这是我的代码:-`

require_once("vendor/autoload.php");
use QuickBooksOnlineAPIDataServiceDataService;
use QuickBooksOnlineAPICoreHttpSerializationXmlObjectSerializer;
use QuickBooksOnlineAPICoreOAuthOAuth2OAuth2LoginHelper;
use QuickBooksOnlineAPIFacadesInvoice;
use QuickBooksOnlineAPIFacadesLine;
// 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;

经过大量调试,我发现QuickBooks PHP SDK示例代码中存在错误。我通过更改几行代码解决了这个问题:

替换以下行:

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

使用此代码

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

最新更新