QBO v2 API发票查询蓬勃发展

时间:2013-11-23 03:53:44

标签: intuit-partner-platform

偷看!我正在尝试使用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是无效的属性。有没有其他人成功按号码查询发票?

2 个答案:

答案 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);

由于