QuickBooks v3 .NET API:如何筛选Balance<TotalAmt的发票并避免查询报错
解决QuickBooks v3 .NET API发票筛选查询报错问题
错误原因
你编写的查询触发QueryParserError,核心原因是QuickBooks的查询语言(QQL)不支持在WHERE子句中直接比较两个字段值(比如Balance < TotalAmt这种字段间的比较语法是不允许的)。
可行解决方案
要在API端筛选已支付及部分支付的发票,直接利用QuickBooks发票的Status字段即可,该字段内置三种状态:
Paid:已全额支付PartiallyPaid:部分支付Open:未支付
修改后的查询语句及代码如下:
修正后的查询代码
List<Invoice> paidInvoices = invoiceQueryService.ExecuteIdsQuery("SELECT * FROM Invoice WHERE Status IN ('Paid', 'PartiallyPaid') AND DocNumber IN ('1123', '1124') MAXRESULTS 1000").ToList();
说明
- 该查询通过
Status IN ('Paid', 'PartiallyPaid')直接筛选出目标发票,完全在API端完成过滤,无需加载全量数据到内存后处理 - 保留了你原有的
DocNumber筛选条件和MAXRESULTS限制,符合需求
内容的提问来源于stack exchange,提问作者Calin Vlasin
相关产品推荐
相关产品推荐

