查询和导入请求之间有什么区别?

What's the difference between Query and Import requests?

使用 QuickBooks PHP DevKit,我注意到有很多类型的请求,其中大多数映射到 qbXML API 中的特定请求。但是,有两个请求很突出,我不确定有什么区别。这是一个例子:

QUICKBOOKS_QUERY_INVOICE
QUICKBOOKS_IMPORT_INVOICE

还有一个

QUICKBOOKS_QUERY_DELETEDTXNS
QUICKBOOKS_IMPORT_DELETEDTXNS

这两者有什么区别?它们分别映射到 qbXML 中的 InvoiceQueryTxnDeletedQuery ... 那么为什么要区分它们呢?

如果您需要区分大量导入数据和查询特定 record/set 记录,它们只是作为方便常量提供的。

例如,考虑这样一个场景,您正在使用您的应用程序对 QuickBooks 客户进行完整的双向同步——每当 QuickBooks 中发生变化时,您就抓住变化,而每当您的应用程序中发生变化时,您就推送对 QuickBooks 的更改。

这要求您能够:

  1. 经常轮询 QuickBooks 以了解所有更改("import" 来自 QuickBooks 的数据)
  2. 要在 QuickBooks 中修改客户,您首先需要查询该客户以获取最新的 QuickBooks EditSequence 值("query" 为该特定客户获取 EditSequence )

因此,为了方便起见,我们提供了两个单独的常量,以便您可以区分这两种不同类型的请求。

意识到所有的常量都只是为了方便——你使用什么 value/constant 并不重要,只要你在 $map 中的内容与你的匹配排队 $Queue->enqueue($action, $id, ...)。例如,这也可以正常工作:

$map = array(
   'YourMommyWearsArmyBoots' => array( 'your_request_callback', 'your_response_callback' )
  );

...

$Queue->enqueue('YourMommyWearsArmyBoots', $id);

框架所做的全部工作是将 $action 参数与 ->enqueue(...) 中的相应键匹配到 $map 中。