Open finoptimal-dev opened 10 years ago
Hey @HaPsantran,
I don't really have any plans for this at the moment, my current course of action was to develop it as I needed it. But now that I've posted it in such a public space, it probably makes sense to hash it out. You are more than welcome to branch the repo, and do whatever you need to it. I only ask that I can then merge it back in when you're done :)
I don't see myself (within the work I'm currently doing) adding methods for creating, updating, and deleting objects, though if you like, I can try creating one or two example methods for some of the objects.
However, as I'm currently not in a consistent place, any work I do do on this would have to wait for at least a month.
Simon,
I'm still new to github, but I've forked your repository at https://github.com/HaPsantran/quickbooks-python and added a few things which hopefully are fairly easy to discern:
I have plenty more to add, but I'm definitely restricted to querying and reading for now.
If -- when time permits -- you can manage to get a single one working (ideally one create, one update, and one delete), I will be in much better shape to add functionality and clone it across other QBO Business Objects.
In reading the docs (such as they are), I notices Batch Operations at https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/020_key_concepts/00700_batch_operation and thought it might be a good idea to build the API to just always use this instead of having a separate tool for single operations. If a request has only one operation, it'll be a batch of 1, nbd. What do you think?
One open question for me regards using my application with multiple accounts. My user ID (the "resource owner") is permissioned to work on multiple companies, but I only seem to be able to authenticate successfully for one company, the first one I tried. Do you happen to know anything about this? I posted the question at http://stackoverflow.com/questions/21337924/using-multiple-quickbooks-online-companies-with-one-oauth-connection-qbo-v3.
Thanks again for sharing the work you've done; it was critical in getting things rolling.
@HaPsantran
Have a look here as to how to request me to make a pull:
https://help.github.com/articles/using-pull-requests
The changes that you've made look really solid to me, and I'd be glad to pull them in. The query_object call is something that should have been implemented a while ago.
Out of curiousity, how long does the Quick Report call take to process?
Thanks, Simon. I trust you were notified of the pull request I just made.
Quick Report takes about 30 seconds (on a company with about 1000 total transactions, most of which are Purchase objects). It's not clear that the number of results drives this time (to the extent we aren't using fetch_more to pull additional 500-txn blocks), but I'd still like to figure out how to filter by account. Have you managed to run a successful query using WHERE
For a company with significantly higher transaction volume (which would make this take a lot longer because of the additional requests required for >500 results) and if I can't figure out filtering by account, I'd probably filter by update time in the query and store all the transactions offline so I didn't need to go back to the watering hole for the whole transaction list every time.
The filtering issue has been what is killing me with the QuickBooks API. It causes some of my results about a minute to appear, depending on what it is I'm asking for.
For the two major QB Objects (JournalEntry, Bills) I've been looking up, there seems to be no way to filter by customer, so I've had to fetch all the relevant objects (for fetch_purchases you'll see that I'm first doing a query on the customer to only fetch the purchases after that customer was created, that is something that could be generalized for the other calls for now).
There is some hope for this though, as QuickBooks has said a couple of times that it will make some more specialized reports available through the API. Someone claimed early 2014 for a p&l report here:
and here:
I'll wait to pull after you've done your cleaning up, definitely appreciating your contributions!
Yeah, I really haven't been able to find much online that helped with existing filtering capabilities beyond the specific examples. After I saw your Python-side filtering I didn't explore the issue much because I figured it'd be an ordeal, which it is.
Even for the Invoice filtering by CustomerRef that you did, I'm assuming that you have to use the Id. I can't figure out how to filter by CustomerRef.name, only by Id. Same is true for querying Bills by VendorRef.
I think your answer from Priya probably addresses our issue with a resounding 'no', unfortunately, for the time being, as the documentation doesn't appear to indicate that Line-level properties are filterable (yet):
Simon, this is great and I hope you continue to build it. I'd like to be able to work with all of the object types from Account down to VendorCredit. To the extent you have any plans to work on other objects than the ones you've already implemented, I'd certainly like to coordinate on which so that I don't reinvent the wheel in the mean time.
I'm somewhat of a newbie with Python so my code definitely won't be as pretty, but I might be able to do some of the heavy lifting figuring out the quirks with the various attributes of these objects.
Have you created (or do you have plans to create) any methods for creating, updating, and deleting objects?
Thanks much; this has already been a tremendous help to me.