我正在工作的Quickbook网络连接器和客户添加工作非常好。现在我想修改我的客户,这是我的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是什么?我如何得到它?
发布于 2014-10-18 11:35:40
<ListID>是QuickBooks用来标识记录的内部标识符(例如主键)。
<EditSequence>是一个值,它指示最后一次更改记录的时间。每次更新记录时(不管是通过UI还是通过API/SDK),EditSequence值都会发生变化。若要更新记录,必须提供最新的EditSequence值。
您为ListID提供的值肯定是不正确的。您提供了客户名称,而不是ListID。
无论何时添加或查询客户,都将返回ListID值和EditSequence值。
要执行更新,您应该先查询客户(从EditSequence获取最新的QuickBooks值),然后使用这些最新值执行CustomerMod请求。
如果您正在使用这个开源的QuickBooks DevKit:
然后,您应该编写请求/响应函数,以查询客户并更新客户。将QUICKBOOKS_QUERY_CUSTOMER排队,当您返回响应时,将您的QUICKBOOKS_MOD_CUSTOMER请求排队,要么将ListID和EditSequence存储在$extra中,要么存储在您自己的数据库中。
发布于 2018-01-04 16:58:15
总结:
<ListID>13912179</ListID>
<EditSequence>1565684445</EditSequence>您可以在CustomerModRq 这里中看到所有可能的字段,ListID和EditSequence 都是执行更新的关键。
您的需要在QB中更新之前下载客户,以查看当前的EditSequence值。此外,您还需要为提供从getCustomer查询中获得的确切值EditSequence。否则,CustomerModRq不起作用。
https://stackoverflow.com/questions/26437784
复制相似问题