2017-04-12 37 views
0

我用下面的过程:使用Consolibyte PHP的Quickbooks的devkit,InvoiceServices查询返回false

  • 我创建了一个跨越90天之内的发票的数组,从今天回到90天前。
  • 我转换这些发票到逗号分隔的字符串$invoiceString,用单引号围绕每个数字
  • 用于$InvoiceService = new QuickBooks_IPP_Service_Invoice();创建一个新的InvoiceService对象。
  • 创建下面的查询,从我们的QB的检索一批发票: $invoices = $InvoiceService->query($Context, $realm, "SELECT * FROM Invoice WHERE DocNumber IN (" . $invoiceString . ") MAXRESULTS 1000");

这将返回false。但是,如果我将发票数量首次收集到的时间范围限制在60天或更短时间内,但是61天或更长时间,它将返回错误。查询将返回的天数有限吗?我在查询中丢失了什么?

在此先感谢您的帮助!

编辑

以下是错误代码后我会收到包含调试语句:

ERROR: 3100: [message=InternalServerError; errorCode=003100; statusCode=500, ]

RESPONSE: HTTP/1.1 500 Server Error Server: nginx Date: Thu, 13 Apr 2017 14:40:44 GMT Content-Type: text/xml Content-Length: 350 Connection: keep-alive Keep-Alive: timeout=5 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <IntuitResponse time="2017-04-13T07:40:44.030-07:00" xmlns="http://schema.intuit.com/finance/v3"> <Fault type="SERVICE"> <Error code="3100"> <Message>message=InternalServerError; errorCode=003100; statusCode=500</Message> </Error> </Fault> </IntuitResponse>

我不知道哪个查询你要求。我已经包含了使用InvoiceServices对象发送的查询。以前的任何SQL查询都只用于创建我在InvoiceService批量查询中使用的invoiceString。该查询只返回约数组的数组。 368发票号码,我然后使用创建invoiceString,逗号分隔,每个发票号码包围单引号。

我找不到任何错误代码列表中的错误代码3100。

+0

你是否检查过它是否记录错误(我不熟悉语法)?查询引擎不支持'BETWEEN DATE_SUB(CURDATE(),INTERVAL 90 DAY)和CURDATE()'之类的东西吗? –

+0

我的另一个猜测是字符串可能太长。这应该显示在日志中。 –

+0

这不是一个有效的SQL查询:“SELECT * FROM Invoice WHERE DocNumber IN(”。$ invoiceString。“它是SQL查询的一部分,但我们不能确定你正在做什么或者重现了这一点,因为我们看不到$ invoiceString的设置。在任何情况下,如果你确定你的SQL查询是有效的,你应该用Intuit提交支持票 - 这是来自Intuit服务器的错误,你可以在响应中看到。 –

回答

0

请看例子,它告诉你如何调试这样的问题:

具体来说,您可以查看忒像这样的原始响应:

print('RESPONSE: <code>' . htmlspecialchars($BillService->lastResponse()) . '</code><br><br><br>'); 

而最后这样的错误:

print('ERROR: ' . $BillService->lastError()); 

另外,如果您发布了一个您正在运行的SQL查询的实际示例,这样做会很有帮助,以便我们可以尝试重现该问题。

+0

我已经编辑了原始问题以回应此问题,谢谢你的帮助。 – jldavis76