快速簿未按优先级执行请求

时间:2019-07-20 07:41:04

标签: php quickbooks qbxml

我正在使用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,那么无论它是否放在最后,它都应该是第一个要执行的请求。可以看到,在所有请求(第一个代码块)的末尾都有该请求,尽管它在末尾先执行,所以很好。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

您会看到第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);