Php Quickbooks Customer_Mod

问题描述 投票:0回答:2

我正在使用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,我如何得到它?

php quickbooks
2个回答
2
投票

<ListID>是QuickBooks用于标识记录的内部标识符(例如主键)。

<EditSequence>是一个值,表示最后一次更改记录的时间。每次更新记录时(无论是通过UI还是API / SDK发生),EditSequence值都会更改。要更新记录,您必须提供最新的EditSequence值。

您为ListID提供的值绝对不正确。您提供了客户名称,而不是ListID。

无论何时添加或查询客户,都将返回ListID值和EditSequence值。

要进行更新,您应首先查询客户(从QuickBooks获取最新的EditSequence值),然后使用这些最新值执行CustomerMod请求。

如果你正在使用这个开源的QuickBooks PHP DevKit:

然后,您应该编写请求/响应函数以查询客户和更新客户。将QUICKBOOKS_QUERY_CUSTOMER排队,当你收到回复时,排队你的QUICKBOOKS_MOD_CUSTOMER请求,然后将ListIDEditSequence存储在$extra或你自己的数据库中某处。


1
投票

总结:

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

您可以在CustomerModRq中找到所有可能的字段here ListID和EditSequence对于执行更新至关重要。

您需要在QB更新之前下载客户以查看当前的EditSequence值。您还需要在EditSequence中提供从getCustomer查询中获得的确切值。否则CustomerModRq没有效果。

© www.soinside.com 2019 - 2024. All rights reserved.