2017-06-27 13 views
0

データベースからPHP APIでquickbooksにレコードを更新しようとしましたが、エラーが発生しています。PHP APIからQuickbooksにレコードを更新

このように更新するコードは、dataServiceは正常に動作します。私はクエリレコードフォームquickbooksのためにそれを使用しているので、大丈夫です。

$resultingObj = $dataService->Update($entities[0]); 

Object Dump: 
object(IPPItem)#2586 (54) { 
["Name"]=> string(20) "Factor 46 - X7Y7d-P1" 
["Sku"]=> string(8) "X7Y7d-P1"  
["Description"]=> string(9) "Factor 46" 
["Active"]=> string(4) "true" 
["SubItem"]=> NULL 
["ParentRef"]=> NULL 
["Level"]=>  NULL 
["FullyQualifiedName"]=> string(20) "Factor 46 - X7Y7d-P1"  
["Taxable"]=> string(4) "true" 
["SalesTaxIncluded"]=> NULL  
["PercentBased"]=> NULL 
["UnitPrice"]=> string(8) "11390.00"  
["RatePercent"]=> NULL 
["Type"]=> string(9) "Inventory"  
["PaymentMethodRef"]=> NULL 
["UOMSetRef"]=> NULL  
["IncomeAccountRef"]=> array(2) { 
["value"]=> string(2) "79"  
["name"]=> string(23) "Sales of Product Income" 
} 
["PurchaseDesc"]=> NULL 
["PurchaseTaxIncluded"]=> NULL 
["PurchaseCost"]=>  string(1) "0" 
["ExpenseAccountRef"]=> array(2) {  
["value"]=> string(2) "80"  
["name"]=> string(18) "Cost of Goods Sold" 
} 
["COGSAccountRef"]=> NULL 
["AssetAccountRef"]=> array(2) {  
["value"]=> string(2) "81"  
["name"]=> string(15) "Inventory Asset" 
} 
["PrefVendorRef"]=> NULL 
["AvgCost"]=> NULL 
["TrackQtyOnHand"]=> string(4) "true"  
["QtyOnHand"]=> int(0) 
["QtyOnPurchaseOrder"]=> NULL  
["QtyOnSalesOrder"]=> NULL 
["ReorderPoint"]=> NULL  
["ManPartNum"]=> NULL 
["DepositToAccountRef"]=> NULL  
["SalesTaxCodeRef"]=> NULL 
["PurchaseTaxCodeRef"]=> NULL  
["InvStartDate"]=> string(10) "2016-11-05" 
["BuildPoint"]=>  NULL 
["PrintGroupedItems"]=> NULL 
["SpecialItem"]=> NULL  
["SpecialItemType"]=> NULL 
["ItemGroupDetail"]=> NULL  
["ItemAssemblyDetail"]=> NULL 
["AbatementRate"]=> NULL  
["ReverseChargeRate"]=> NULL 
["ServiceType"]=> NULL  
["ItemCategoryType"]=> NULL 
["ItemEx"]=> NULL 
["Id"]=>  string(2) "19" 
["SyncToken"]=> string(1) "0" 
["MetaData"]=>  object(IPPModificationMetaData)#2569 (6) {  
["CreatedByRef"]=> NULL  
["CreateTime"]=> string(25) "2017-06-22T10:25:37-07:00"  
["LastModifiedByRef"]=> NULL  
["LastUpdatedTime"]=> string(25) "2017-06-22T10:25:37-07:00"  
["LastChangedInQB"]=> NULL  
["Synchronized"]=> NULL 
} 
["CustomField"]=> NULL 
["AttachableRef"]=> NULL 
["domain"]=> NULL 
["status"]=> NULL 
["sparse"]=> NULL 
} 

Exception Call Stack (Class 79 does not exist): 

In  (/data/app/frameworks/yii2/vendor/intuit/QuickBooks/v3-php-sdk-2.4.1/XSD2PHP/src/com/mikebevz/xsd2php/Php2Xml.php) on 257 getXmlFromObj()  
XmlObjectSerializer.php:68 getPostXmlFromArbitraryEntity() 
XmlObjectSerializer.php:175 Serialize() 
DataService.php:447 executeObjectSerializer() 
DataService.php:189 Update() 
QuickBooksApi.php:347 syncProduct() 
QuickBooksController.php:191 actionSyncProduct() : 
call_user_func_array() 
    InlineAction.php:55  runWithParams() 
    Controller.php:154 runAction() 
    Module.php:454 runAction() 
    Application.php:100  handleRequest() 
    Application.php:375  run() 
    index.php:20 

私もそれが正常に更新することができ、そのAPIエクスプローラでJSONとテストに私のオブジェクトを変更してみてください。 私のコードで私の問題は何ですか?

+0

これは、いわゆる空白地獄のいくつかの種類ですか? – Clijsters

答えて

0

不正なオブジェクトによるIPPItemのエラーです。本当に古いv3-php-sdk-2.4.1を使用しています。最新バージョンでは、それを行うには良い方法を提供しています

$ItemObj = Item::update($oldItemObj, [ 
    "Name" => "Rock Fountain", 
    "Description" => "New, updated description for Rock Fountain", 
    "Active" => true, 
    "FullyQualifiedName" => "Rock Fountain", 
    "Taxable" => true, 
    "UnitPrice" => 275, 
    "Type" => "Inventory", 
    "IncomeAccountRef" => [ 
     "value" => "79", 
     "name" => "Sales of Product Income" 
    ], 
    "PurchaseDesc" => "Rock Fountain", 
    "PurchaseCost" => 125, 
    "ExpenseAccountRef" => [ 
     "value" => "80", 
     "name" => "Cost of Goods Sold" 
    ], 
    "AssetAccountRef": [ 
     "value" => "81", 
     "name" => "Inventory Asset" 
    ], 
    "Id" => "5", 
    "SyncToken" => "2" 
]); 

は今v3.2.6 PHPのSDKのための私達のGithubを見てみましょう:https://github.com/intuit/QuickBooks-V3-PHP-SDK

をそれはあなたが問題を修正役立つはずです。

おかげ ハオ

関連する問題