I have an integration running that pulls invoices from QB via the web connector and stores them in SQL. It was always my understanding that the txnID was unique and would not change. I have recently ran into some issues where somehow a long the way some of the txnIDs are changing but it's the same invoice. The invoice number is the same but I end up with duplicates because we use txnID as the unique identifier.
I am not sure if there is just a bug in the code or if there is a case where the txnID will change but it's not actually a new invoice?
Any help on this would be great.
Thanks
TxnIDs do not change.
More than likely, what happened was an end-user deleted the invoice, and then re-created it with the same invoice number.
Did you try querying for the deleted transactions using TxnDeletedQuery to see if they were deleted?
Related
I need to look at the "audit" log for quickbooks using the SDK. I am basically looking to sync quickbooks transactions to a 3rd party platform (for reference purposes)
I cant find a reference to the audit log in the OSR, but I do see "TransactionsQuery". What is not clear to me is if this will be "all" transactions, or if you need to specify a specific customer?
Any ideas?
As William indicated in his answer, the audit log is accessible via a GeneralDetailReport.
As far as actual transactions goes, TransactionQuery will get you all transactions. You do not need to specify a customer.
However, it will only get you summary details of all transactions (e.g. no line items on the invoices, etc.) so if you need detailed information for each transaction, it won't work for you.
If you need details for each transaction, you have to do individual queries for each transaction type (e.g. InvoiceQuery, ReceivePaymentQuery, BillQuery, etc. etc. etc.) so that you get back the details/lines for each.
Look at the GeneralDetailReport, with the GeneralDetailReportType set to AuditTrail.
For most sobjects, they support queries such as find_by_... etc. However,
client.materialize("ActivityHistory")
returns a class that does not support query.
When I try to run ActivityHistory.query("anything")
I get...
Databasedotcom::SalesForceError: entity type ActivityHistory does not support query
I'm trying to extract the ActivityHistory for the last 30 days, and find out the account it lies in, and the user that created it.
Help, please!
I know this is late, putting it here for future reference.
Unfortunately the ActivtyHistory table is not directly accessible, it has to be queried through a relationship e.g. Account. For more info.. https://salesforce.stackexchange.com/questions/8327/accessing-email-sent-in-activity-history-via-api
I am working with the Intuit Web Connector.
I am able to add customers using "customerAdd" and by using "openBalance" it creates an invoice.
I have tried everything to make it create an invoice number (the invoice that gets created has no number, just blank).
I would also like to have the item, qty and description.
Is this a job for "invoiceAdd"?
Thanks for looking.
If you're trying to create an Invoice, you should be using InvoiceAdd.
The only time you should be using OpenBalance is if the customer has an outstanding balance that's not the result of an invoice that you'll have in QuickBooks. e.g. if you're migrating from another accounting platform, you might have an open balance for someone when moving from the other system.
Beyond that, you should never be creating customers with an OpenBalance.
Instead, create an actual invoice. Here are some examples:
qbXML examples
InvoiceAdd example
I have now played with the QBO and QBD APIs and feel I have a fair understanding of how it thinks and how to interact with it. So now it is time to design the actual integration solution.
Inside my application you can create new customers, quote services, perform services, and soon, pass invoices to QuickBooks, sounds easy.
But what if the customer is not in QB yet? No problem - for each invoice I will look up the customer (need the id anyway) and if it doesn’t exist, add it. But if I have to look up the customer for each invoice it seems like it might be slow. I will likely have 30,000 customers and have 500-3000 invoices per day.
So my question is this; what are others doing?
a) Are you storing the QB id for each customer in your data?
b) How do you detect address changes (changed in your app and changed in QB)?
c) Is the batch submission interface so much faster I should use that?
Thanks for your help!
We often times do store the QB id in our database for use. If we post an invoice into QB, we'll then store the QB id for future use if we need to modify it.
As far as detecting changes on the customer record and other info, there's a couple ways to handle the conflict resolution. One is to keep a timestamp on your side as to when changes are made. You can then compare this with the timestamp of the last change on the QB record and then make your decision as to which one gets updated.
FreddyMac,
To detect changes on the Intuit side you can construct a query with a CDCasOf Filter, which will return only the data that has changed since a date you provide. (ChangeDataCapture as of)
https://ipp.developer.intuit.com/0010_Intuit_Partner_Platform/0050_Data_Services/0500_QuickBooks_Windows/0100_Calling_Data_Services/0015_Retrieving_Objects
You need to keep track of data changes on your side.
The batch submission is not faster, its just easier for you to write the code.
The IPP SDK can queue the API calls for your and aggregate the responses.
regards,
Jarred
Maybe my google-fu is failing me, but I cannot seem to find any information on the following:
My Windows user account was recently moved, accidentally, to another domain in my company's Active Directory. While in the other domain, I was unable to access my data stored in TFS 2008 (e.g. shelvesets, pending changes, workspaces, etc). I assume this was because it was associated with my ORIGINALDOMAIN\userId account, rather than NEWDOMAIN\userID account.
My account has now been moved back to ORIGINALDOMAIN, however I still cannot see any of my data in TFS. In fact, it appears that all of my data (all my shelvesets!) have been deleted. It is almost as if TFS saw that my userId had disappeared from ORIGINALDOMAIN and assumed that I had been "deleted" and thus deleted all my data.
Has anybody else encountered this? Is there hope for my data or am I royally stuffed?
Thanks in advance,
Steve
Update: I have now managed to track down some of my old shelvesets by doing a search for "*". Oddly, the shelvesets are now associated with NEWDOMAIN\userId. If I do an explicit search for shelvesets belonging to NEWDOMAIN\userId (or ORIGINALDOMAIN\userId) nothing is found. Still no trace of my pending changes or workspaces though...
So, I think I have (partially) got to the bottom of the problem. It appears that my data has been assigned to a user id of the form DOMAIN\userid:number, instead of simply DOMAIN/userid as might be expected.
This means that I can now find my shelvesets by searching for the fully qualified id. I still don't see any solution for resurrecting my previous pending changes or workspaces, however at least I can now retrieve the shelvesets back into my correct id.
Panic over for now.