The following code that is written to retrieve paid invoices and partially paid invoices:
List<Invoice> paidInvoices = invoiceQueryService.ExecuteIdsQuery("SELECT * FROM Invoice WHERE Balance < TotalAmt AND DocNumber IN ('1123', '1124') MAXRESULTS 1000").ToList();
This line throws the following exception:
'BadRequest. Details: QueryParserError: Encountered " "<" "< "" at line 1, column 69.
Was expecting one of:
<EOF>
"." ...
<AND> ...
"between" ...
"contains" ...
"=" ...
"in" ...
"iterator" ...
"like" ...
"maxresults" ...
"!=" ...
<NOT> ...
<OR> ...
"order" ...
"orderby" ...
"startposition" ...
"=" ...
"!=" ...
"=" ...
"!=" ...
"=" ...
"!=" ...
"." ...
, '
Is there any way to retrieve this Invoices without bringing all to memory and then filter them?
I want to do the filtering on QuickBooks API.
The API does not allow you to use another field as a value parameter. The value parameter must be a literal, i.e. 'true', 'false', '0.0'
.
So if you wanted to obtain all paid invoices you should use:
List<Invoice> paidInvoices = invoiceQueryService.ExecuteIdsQuery("SELECT * FROM Invoice WHERE Balance = '0.0' AND DocNumber IN ('1123', '1124') MAXRESULTS 1000").ToList();
Try the API explorer at: https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/invoice
Here you can run your query to see if the syntax is correct.
Here's more information on how to structure your queries: https://developer.intuit.com/app/developer/qbo/docs/learn/explore-the-quickbooks-online-api/data-queries