2014-10-18 35 views
0

我正在使用Quickbooks Web連接器和客戶添加工作得很好。現在我想修改我的客戶,這裏是我的XML。Php Quickbooks Customer_Mod

<QBXML> 
<QBXMLMsgsRq onError="stopOnError"> 
<CustomerModRq requestID="'.$requestID.'"> 
    <CustomerMod> 
    <ListID>ConsoliBYTE, LLC (13912179)</ListID> 
    <EditSequence>1365684445</EditSequence> 

    <Name>Test Customer UPDATED</Name> 

    </CustomerMod> 
</CustomerModRq> 
</QBXMLMsgsRq> 
</QBXML> 

記錄的錯誤是 3000: The given object ID "ConsoliBYTE, LLC (13912179)" in the field "list id" is invalid.

什麼是列表ID,我如何得到它?

回答

2

A <ListID>是QuickBooks用於識別記錄的內部標識符(例如主鍵)。

<EditSequence>是指示對記錄進行最後更改的時間的值。每次更新記錄(不管這是通過UI還是API/SDK發生的),EditSequence值都會更改。要更新記錄,您必須提供最新的EditSequence值。

您提供給ListID的值絕對不正確。您提供了一個客戶名稱,而不是一個ListID。

無論您何時添加或查詢客戶,都會返回ListID值和EditSequence值。

要進行更新,您應該首先查詢客戶(從QuickBooks獲取最新的EditSequence值),然後使用這些最新值執行CustomerMod請求。

如果你使用這個開源的PHP的QuickBooks的devkit:

那麼你應該有書面查詢,爲客戶和更新客戶請求/響應功能。排隊一個QUICKBOOKS_QUERY_CUSTOMER,當你收到迴應時,排隊你的QUICKBOOKS_MOD_CUSTOMER請求,然後將ListIDEditSequence存儲在$extra或存儲在你自己的數據庫中。

+0

Hey Keith,更好的是我使用add_customer響應來存儲'listid'和'editsequence',我希望它能夠工作。 – 2014-10-22 14:25:16

+2

請注意,如果有人進入QuickBooks GUI,並在GUI中編輯記錄,EditSequence將發生變化,下次您執行CustomerMod時,它將失敗,除非您首先獲取新的EditSequence。 – 2014-10-22 15:07:49

0

彙總:

<ListID>13912179</ListID> 
<EditSequence>1565684445</EditSequence> 

你可以看到所有可能字段CustomerModRqhere 兩個ListID & EditSequence 是至關重要執行更新。

需要在QB更新之前下載客戶以查看當前的EditSequence值。你還需要給確切的價值你從你的getCustomer查詢中獲得EditSequence。否則CustomerModRq不起作用。