I am trying to fulfill a request for all open balance invoices using IPP, but I keep getting 0 results. Am I doing something wrong in the code?
Here is my C # code snippet that I am trying to do with the filtering applied
InvoiceQuery qboInvoiceQuery = new InvoiceQuery(); int iMaxPageNumber = QUERY_MAX_PAGE_NUMBER; // A Constant with the Maximum Page Number allowed in a query int iResultsPerPage = QUERY_MAX_NUM_PER_PAGE_INVOICE; // A Constant with the Maximum Results per page // Paging Information qboInvoiceQuery.PageNumber = QUERY_START_PAGE_NUMBER; qboInvoiceQuery.ResultsPerPage = iResultsPerPage; #region Query Filtering ////////////////////////////////////////////// // initial filtering via Query Criteria // ////////////////////////////////////////////// // Get only Open (Unpaid) Invoices qboInvoiceQuery.OpenBalance = (decimal)0.00; qboInvoiceQuery.SpecifyOperatorOption(FilterProperty.OpenBalance, FilterOperatorType.AFTER); ////////////////////////////////////////////// // END initial filtering via Query Criteria // ////////////////////////////////////////////// #endregion // Complete the Query calls to build the list IEnumerable<Invoice> results = qboInvoiceQuery.ExecuteQuery<Invoice>(_ServiceContext); IEnumerable<Invoice> qboInvoices = results; int iCount = results.Count(); while (iCount > 0 && iCount == iResultsPerPage && qboInvoiceQuery.PageNumber <= iMaxPageNumber) { qboInvoiceQuery.PageNumber++; results = qboInvoiceQuery.ExecuteQuery<Invoice>(_ServiceContext); iCount = results.Count(); qboInvoices = qboInvoices.Concat(results); }
*** UPDATE ***
I followed peterl's answer and now have the following code. However, I now ran into a new problem that my code always defaults back to 10 accounts by default and does not take my body into account. Even if I set it to a different page number or the value of ResultsPerPage, I returned the first page and 10 results. Any ideas?
private Dictionary<string, Invoice> GetUnpaidInvoicesDictionary(IdType CustomerId, bool bById = true) { Dictionary<string, Invoice> dictionary = new Dictionary<string, Invoice>(); int iMaxPageNumber = 100; int iResultsPerPage = 100; try { OAuthConsumerContext consumerContext = new OAuthConsumerContext { ConsumerKey = _sConsumerKey, SignatureMethod = SignatureMethod.HmacSha1, ConsumerSecret = _sConsumerSecret }; string sBaseURL = "https://oauth.intuit.com/oauth/v1"; string sUrlRequestToken = "/get_request_token"; string sUrlAccessToken = "/get_access_token"; OAuthSession oSession = new OAuthSession(consumerContext, sBaseURL + sUrlRequestToken, sBaseURL, sBaseURL + sUrlAccessToken); oSession.AccessToken = new TokenBase { Token = _sAccessToken, ConsumerKey = _sConsumerKey, TokenSecret = _sAccessTokenSecret }; int iPageNumber = QUERY_START_PAGE_NUMBER; string sCustomerId = CustomerId.Value; string sBodyBase = "PageNum={0}&ResultsPerPage={1}&Filter=OpenBalance :GreaterThan: 0.00 :AND: CustomerId :EQUALS: {2}"; string sBody = String.Format(sBodyBase, iPageNumber, iResultsPerPage, sCustomerId); IConsumerRequest conReq = oSession.Request(); conReq = conReq.Post().WithRawContentType("application/x-www-form-urlencoded").WithRawContent(System.Text.Encoding.ASCII.GetBytes(sBody)); ; conReq = conReq.ForUrl(_DataService.ServiceContext.BaseUrl + "invoices/v2/" + _DataService.ServiceContext.RealmId); conReq = conReq.SignWithToken();
* UPDATE *
There is a similar problem that is associated with the new apiter. This may be due to this problem, and they are currently studying it.
Stack Overflow: QuickBooks Online Request with 401 Filter Returns Each Time
c # devkit intuit-partner-platform quickbooks-online
cepatt
source share