Certain invoices missing from the "All Invoices" API response - intuit-partner-platform

We use the Intuit API V2 to import Invoices from QuickBooks Desktop.
At one point we imported a few invoices that no longer show up in the list of "all invoices".
But if we request the invoices "by id" (one at a time) we do get them. They still have an open balance > 0.
Is there a reason why these invoices don't show up in the "all invoices" list? We did request all the pages.
Something that we noticed is that the problematic invoices all have Lines with SalesTaxCodeId 2 and seem to be "Tax returns".

Florin,
I have answered this question many times on Stackoverflow. You need to review the Sync Activity and Sync Status for any error the object may have encountered while syncing from Intuit to the customer's desktop QuickBooks file.
Objects that encounter an error are flagged and no longer appear in a query unless you set a filter to retrieve errored objects.
Lastly, you should always post your xml requests one for the query all and one for the individual.
For your reference:
http://docs.developer.intuit.com/0025_Intuit_Anywhere/0050_Data_Services/v2/0500_QuickBooks_Windows/0600_Object_Reference/SyncActivity
http://docs.developer.intuit.com/0025_Intuit_Anywhere/0050_Data_Services/v2/0500_QuickBooks_Windows/0600_Object_Reference/SyncStatus
http://docs.developer.intuit.com/0025_Intuit_Anywhere/0050_Data_Services/v2/0500_QuickBooks_Windows/0100_Calling_Data_Services/0015_Retrieving_Objects#Objects_in_Error_State

Related

Magneto2 NO customer order history on frontend under My Account, orders only visible from Admin?

Testing our Magento 2.3.1 site after migration and new development completed. We are about to go live then I saw a problem with viewing the customer order history under My Account > My Orders. Shows the following message "You have placed no orders."
I can view this test customers orders in Admin, all old orders and new orders show up normally. This lack of order history happens with old and newly created customers.
I feel there is something weird going on with how the customer account relates/configured to the store. If so where in the DB should I be looking to validate this hunch?
Has anyone seen anything like this, Thanks for your help!
I have tested this using old imported customers from 1.9.4 and new customers. No change in order history shown.
I expect to see the full history of my customers orders. instead, I'm greeted with a "You have placed no orders." message.

How to query conversations by folder via Graph Api?

My organisation recently started using folders on their Facebook page. The conversations then can be categorized as Inbox, Unread, Follow Up, Done and Spam.
I regularly download the messages via Graph API and everything worked fine when they kept all the conversations in the Inbox. However recently they categorized the conversations, so the inbox has only 7 elements at the moment, 0 elements in the Unread and Follow Up and countless elements in the Done and Spam folders.
I used the following query before:
me/conversations?fields=updated_time,messages.limit(100){message,from,created_time}&limit=100
Now it only returns the elements from the inbox.
The Graph API reference vaguely describes parameters like folder and tags. I tried to use the folder parameter like:
me/conversations?folder=done
me/conversations?folder=unread
me/conversations?folder=randomstring
It all the time returned the same 7 elements from the inbox.
However, if I query me/conversations?folder=spam it returns 10 different elements, which does not overlap with the actual "Spam" folder and contains elements marked as "Done". (They are quite fishy conversations, so they might have been marked as spam and there might be two different definitions of being spam as marked as spam or being in the spam folder, I don't know.)
The API reference does not specify how to actually use the folder and the tags parameter and does not say anything how to query messages in the other folders.
Any idea how to access the conversations in the other folders? It's fine for me to query the folders one-by-one or to query from all folders as well.
The documentation might need some updating. But for now, I can query messages in "DONE" via:
/{page-id}/conversations?tags=action:archived
After investigating this endpoint, I think ?folders is some ancient param before the rework of the messaging from messages in folders to conversations to pages. If I query my page for the spam folder, I never get messages listed, even though I flagged some with spam. And while they are flagged with spam, I do not get those on the conversations query (without folder=spam).
I believe, facebook changed the system into tags on conversations. You can get those like so: [page_id]/conversations?fields=participants,messages{tags,message}&folder=sent.
Note: The marked "no sent tag" is not related to the folder applied (as they dont work). Maybe the tagging on conversations is the reason you get the same result from querying threads at [page_id]?fields=threads{participants,messages{tags,message}}
So for now I think, one has to get over everthing there to read the inbox. Yet I am a bit sad about not getting flagged spam messages from the graph. I will investigate this a bit further later^^
Call folder=page_done with Page Access Token to retrieve all threads/messages in Done folder of Page inbox.
{page-id}/conversations?folder=page_done
To get Page Access Token
{page-id}?fields=access_token

RESTful way to check if I can POST a resource?

I have a set of resources represented by the /ticket/ endpoint. Users can POST a request to this endpoint in order to book a ticket, but this may fail due to various unpredictable situations (e.g. tickets have sold out).
I would like to be able to check before they start the booking process whether they will be able to complete the booking. For example, I make some status request and the server replies with "Nope, those are already sold out" and I don't bother filling in the booking form.
I feel like ideally this would be represented by some method on the same /ticket/ endpoint, but I don't know which one would be most appropriate. I guess I could create a new endpoint /ticket/availability or something but that doesn't feel as tidy.
I found this discussion, but it's about GET rather than POST: https://stackoverflow.com/a/10259779/1590962
Here's what I would do. First, I'd make a POST to a /reservation which in the backend will put my tickets into a "reserved" state. Then, I'd make a second POST to the /booking resource in order to complete the transaction.
If the first POST to reservation fails (tickets are sold out), then the second POST (the booking process, filling forms, etc.) would be cancelled.
Feel free to change the URL resource names as you see fit.
The problem with your suggestion (to check the availability first) is that it could respond with an "OK, tickets available", you start filling forms, another user starts the same process and finishes the booking process faster than you and takes the tickets. By the time you finish filling your forms, the tickets have been given to someone else.
In my case, if another user tries to make a reservation, it would fail because it would check only tickets that are not in a "reserved" state.

Could not execute specified command - Not able to add customer record in Quickbooks

We are trying to query Customer Master for "TEST CUSTOMER", But Quickbooks is returning an error saying "The name "[TEST CUSTOMER]" of the list element is already in use."
We tried searching customer master for the above customer, but could not find it in QB. We searched the entire list of customer which includes inactive as well but no luck.
We are using RSSBUS ADO.Net Provider for integration. When we communicated to them, they said, there might me issue with the Company File.
Can you please help us resolve the issue, or tell us the cause of the issue?
-Santosh
QuickBooks has a UNIQUE constraint across the combination of (vendors, customers, employees, "other names").
So, it could be that a vendor or employee already exists with that name.
You might also check to see if the customer is marked inactive (inactive customers don't show up in default queries).

Using GA Data Export API to Get All UA's

I am using the GA Data Export API to interact with Google Analytics and I'm making a lot of progress, I am using this URL Endpoint initially to pull all the profiles under an account:
https://www.google.com/analytics/feeds/accounts/default
This URL retrieves each GA ID (profile) and each UA. One thing I've realized is one account can contain multiple UAs and when this happens, this request pulls all profiles. We have a client who has about 115 profiles under like 10 different UAs, and the request takes about 30 seconds for the initial request (and then I believe it must be cached, because it speeds up considerably after this, but then the next day the same thing occurs).
Is there a way to get a list of UA's without pulling the profiles? This way I can query the UA specifically for the profiles instead of pulling each one.
Any advice on this would be really helpful!
Thanks
UPDATE: Here's some documentation on the specific call I am using right now:
http://code.google.com/apis/analytics/docs/gdata/gdataReferenceAccountFeed.html
UPDATE 1: I have found some interesting information in the docs
Once your application has verified
that the user has Analytics access,
its next step is to find out which
Analytics accounts the user has access
to. Remember, users can have access to
many different accounts, and within
them, many different profiles. For
this reason, your application cannot
access any report information without
first requesting the list of accounts
available to the user. The resulting
accounts feed returns that list, but
most importantly, the list also
contains the account profiles that the
user can view.
So this means that you have to use the default accounts call to get these back? Surely, somebody has had this issue before?
So apparently, you can query the account if you know the UA-ID, however there is no way to get back a list of only UA IDs.
One way you can do it is have the user enter their own UA ID instead of having them choose one; not as user-friendly as it could be but better than making the user wait 30 seconds!