Quickbooks 不按优先级执行请求

Quickbooks not executing request by priority

我正在使用 QuickBooks SDK 在 QuickBooks 和我的 Volusion 网站之间同步订单。为此,我创建了 6 种不同类型的请求,并按优先级执行。下面你可以看到我的请求。

$Queue->enqueue(QUICKBOOKS_IMPORT_ITEM, QB_PRIORITY_ITEM);
$Queue->enqueue(QUICKBOOKS_IMPORT_SALESORDER, QB_PRIORITY_SALESORDER);
$Queue->enqueue(QUICKBOOKS_ADD_CUSTOMER, QB_PRIORITY_ADD_CUSTOMER);
$Queue->enqueue(QUICKBOOKS_ADD_INVENTORYITEM, QB_PRIORITY_ADD_ITEM);
$Queue->enqueue(QUICKBOOKS_ADD_SALESORDER,QB_PRIORITY_ADD_SALESORDER);
$Queue->enqueue(QUICKBOOKS_IMPORT_CUSTOMER, QB_PRIORITY_CUSTOMER);

这些请求的优先级如下

define('QB_PRIORITY_CUSTOMER', 1);
define('QB_PRIORITY_ITEM', 2);
define('QB_PRIORITY_SALESORDER', 3);
define('QB_PRIORITY_ADD_CUSTOMER', 4);
define('QB_PRIORITY_ADD_ITEM', 5);
define('QB_PRIORITY_ADD_SALESORDER', 6);

所以根据我的知识请求应该遵循这些优先级。假设 QUICKBOOKS_IMPORT_CUSTOMER 请求的优先级为 1,那么无论它是否放在最后,它都应该是第一个被执行的。正如你所看到的,我在所有请求的末尾都有那个请求(第一个代码块),即使它在最后它首先执行,所以它很好。

现在可以看到 QUICKBOOKS_ADD_INVENTORYITEM 优先级为 5 的请求。但问题是当我 运行 Web 连接器时它没有执行(我正在使用它在 QB 之间同步数据和 Volusion)第一次。

当我随后 运行 Web 连接器时,从该方法 (QUICKBOOKS_ADD_INVENTORYITEM) 开始执行,然后执行该方法的其余部分。我不知道为什么会这样。我清除了数据库 3 次并尝试再次同步,但它不起作用。

所以请帮助我。我正在使用 QuickBooks Desktop Enterprise 19 和网络连接器 2.3

您传递给函数的参数不正确。如果您查看函数签名:

可以看到第3个参数优先:

public function enqueue($action, $ident = null, $priority = 0, $extra = null, $user = null, $qbxml = null, $replace = true)

当您尝试将您的优先级作为 第二个参数 传递时:

$Queue->enqueue(QUICKBOOKS_IMPORT_ITEM, QB_PRIORITY_ITEM);

修复您的代码:

$Queue->enqueue(QUICKBOOKS_IMPORT_ITEM, null, QB_PRIORITY_ITEM);

另外,请注意优先级较高运行优先。例如您所做的声明是不正确的。在您的示例中,销售订单将首先运行,因为它具有最高优先级:

Suppose priority for QUICKBOOKS_IMPORT_CUSTOMER request is 1 so it should be the first one to be executed no matter if it's placed at last.