偷看!我正在尝试使用Java API的v2在线加载Quickbooks的发票,代码如下:
public String getInvoiceFoo(String docNumber, PlatformSessionContext context) throws QBInvalidContextException, Exception {
QBInvoiceQuery query = new QBInvoiceQuery(context);
query.setDocNumber(docNumber);
QBInvoiceService invoiceService = QBServiceFactory.getService(context, QBInvoiceService.class);
QBInvoice qbInvoice = invoiceService.getInvoices(context, query).get(0);
return qbInvoice.getHeader().getDocNumber();
}
这个看似简单的查询会导致以下错误:
Error: 400 <?xml version="1.0" encoding="UTF-8" standalone="yes"?><FaultInfo xmlns="http://www.intuit.com/sb/cdm/baseexceptionmodel/xsd"><Message>Search Criteria has invalid PropertyName: DocNumber</Message><ErrorCode>BAD_QUERY_REQUEST</ErrorCode><Cause>QUERY_INVALID_SEARCH_CRITERIA</Cause></FaultInfo>
服务器似乎抱怨DocNumber是无效的属性。有没有其他人成功按号码查询发票?
答案 0 :(得分:2)
V2 QBO中的发票不支持按docnumber过滤。 请参考: https://developer.intuit.com/docs/95_deprecated/qbo_v2/0400_qbo_v2_reference/invoice
请使用V3服务。
答案 1 :(得分:1)
使用V2 Invoice时我也遇到了同样的问题。
我试过这个Filter= DocNumber :EQUALS: f96fa
仅为估算实体提供过滤支持。
V2将被弃用。如果可能,请使用V3尝试此操作。它工作正常。
Invoice invoice = GenerateQuery.createQueryEntity(Invoice.class);
String invoiceQuery = select($(invoice)).where($(invoice.getDocNumber()).eq("f96fa")).generate();
//SELECT * FROM Invoice WHERE DocNumber = 'f96fa'
this.service.executeQuery(invoiceQuery);
由于