2017-04-12 42 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