我正在使用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
答案 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);