使用 IPP Java DevKit 2.0.9(也尝试使用 2.0.6),我实现了一个包装方法,用于通过客户 ID 在 QBO 中查找特定发票并在某个日期之前发生。我正在测试一个在大约 16 个月内有 65 张发票的特定客户,但查询始终返回dateFinish(endTransactionDate)之前发生的 10 张“最新”发票。我也尝试了各种排列:只包括客户 ID 标准,只包括endTransactionDate,添加“非常早”的startTransactionDate,开发版本和生产版本。就好像 API 正在切断结果列表,只包括前 10 条记录,似乎没有充分的理由。
public static List<QBInvoice> findInvoices(PlatformSessionContext context, String dataSource, Calendar dateFinish, List<String> customerIds) throws QBInvalidContextException, Exception {
QBInvoiceService invoiceService = QBServiceFactory.getService(context, QBInvoiceService.class);
QBInvoiceQuery invoiceQuery = new QBInvoiceQuery(context);
invoiceQuery.setEndTransactionDate(QuickbooksUtil.dateToQbDate(dateFinish));
if (!customerIds.isEmpty()) {
IdSet idSet = QuickbooksUtil.stringListToIdSet(context, dataSource, customerIds);
invoiceQuery.setContactIdSet(idSet);
}
return invoiceService.getInvoices(context, invoiceQuery);
}