我正在使用Quickbooks Web连接器,Customer Add非常有效。现在我想修改我的客户,这是我的xml。
<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,我如何得到它?
<ListID>
是QuickBooks用于标识记录的内部标识符(例如主键)。
<EditSequence>
是一个值,表示最后一次更改记录的时间。每次更新记录时(无论是通过UI还是API / SDK发生),EditSequence
值都会更改。要更新记录,您必须提供最新的EditSequence
值。
您为ListID
提供的值绝对不正确。您提供了客户名称,而不是ListID。
无论何时添加或查询客户,都将返回ListID
值和EditSequence
值。
要进行更新,您应首先查询客户(从QuickBooks获取最新的EditSequence
值),然后使用这些最新值执行CustomerMod
请求。
如果你正在使用这个开源的QuickBooks PHP DevKit:
然后,您应该编写请求/响应函数以查询客户和更新客户。将QUICKBOOKS_QUERY_CUSTOMER
排队,当你收到回复时,排队你的QUICKBOOKS_MOD_CUSTOMER
请求,然后将ListID
和EditSequence
存储在$extra
或你自己的数据库中某处。
总结:
<ListID>13912179</ListID>
<EditSequence>1565684445</EditSequence>
您可以在CustomerModRq
中找到所有可能的字段here ListID和EditSequence对于执行更新至关重要。
您需要在QB更新之前下载客户以查看当前的EditSequence值。您还需要在EditSequence
中提供从getCustomer查询中获得的确切值。否则CustomerModRq
没有效果。