I've just begun to read the QB Developer documentation and have come to the conclusion that to write a web-enabled application that will sync/remote backup QB files between two machines over the Internet, that the QBWC is the 'approved' way to accomplish this task. The .NET application samples in the QB SDK (V12) are not using WCF but WSDL and SOAP.
But before I commit to going that route, I am asking if anyone has a better approach. I'd prefer to use WCF and MS Sync Framework, but I don't want to head down that road if it will mean using a cannon to kill a mosquito.
Thanks
You really hinted at two separate goals here, so I'll address each specifically:
... remote backup QB files between two machines ...
If your goal is BACKUP then the Web Connector is certainly not the answer. The purpose of the Web Connector is to enable integration between QuickBooks and web applications, via the QuickBooks API/SDK. Since not all data stored within QuickBooks is accessible via the API, the Web Connector is not appropriate for backup. It is impossible to get a complete, accurate backup of the entire QuickBooks data set via the Web Connector.
On the other hand...
... web-enabled application that will sync ...
If your goal is to allow integration/sync of data between your web app and QuickBooks, the Web Connector is a decent solution. Yes, it uses SOAP (with a grand total of only about 5 very simple methods). No, you can't use WCF/anything else without writing your own version of the Web Connector.
If you add more details about specifically what you're looking to do with specifically what data, you'll probably get some better answers and suggestions about approach.
Related
There are a lot of ways to have a database on server ( I can use my own server or I can use MS Azure (for Azure I found REST API Description https://msdn.microsoft.com/en-us/library/azure/gg715283.aspx , but I didn't find a way to add some rows to a table or to get information from the table)), but I want to edit the database and get proper rows from the server database from iOS code without having server API. There are a lot of ready solutions such as Backendless.com , but they are not stable.
So is there any way to connect to the remote SQL server database on the remove server or to MS Azure database and to edit rows and fetch data?
May there are some framework for iOS to do than? (for example in .Net there are Linq framework and Entity Framework).
In your question, you linked to a management API for SQL Database service - this has nothing to do with data manipulation; it's strictly a management API for dealing with servers and databases.
If you want to direct-connect from an IOS app to SQL Database Service (or SQL Server in a VM), you'd need to find a client library for IOS (and recommendations of such a library are not in scope for StackOverflow). There is no native SQL Server client library specifically provided through the Azure SDKs / APIs.
Outside of a native client library, there is Azure Mobile Services, which provides an API stack specifically designed around use by mobile apps (whether IOS, Android, Windows Phone, or even JavaScript). The API stack provided here, by default, gives CRUD operations for SQL Database tables. Additionally, it supports adding custom API calls, where you have complete control of your API calls.
Any other API stack would require you to choose the stack and run it yourself (whether in a Linux or Windows VM, Cloud Service, or Web App - there's no single right way to do this).
Documentation for Azure Mobile Apps (and related API feature, such as monitoring) is here.
Since you are developing in Azure consider automatic REST API from SlashDB, which is available from their Marketplace.
https://azure.microsoft.com/en-us/marketplace/partners/vte/slashdb-slashdb-azure/
SlashDB reflects the entire database as URL-linked structure so a lot of queries need not even be written. It supports SELECT, INSERT and UPDATE. In addition to that it allows for defining an API end-point to call a stored procedure or return results of a SQL query.
Disclosure: I am the founder and CEO of the company behind SlashDB, but you don't have to take my word it - just try it.
From what I understand, Intuit is no longer allowing proprietary integrations with QuickBooks Desktop editions through the Sync Manager and only allowing apps that are put into the marketplace. Is this really the case? If so, is there a timeline for when they will start allowing this? Also, it seems that the supported objects for desktop editions is way behind those supported for the online edition. Will these be available any time soon (I.e. reports such as balance sheet, profit/loss, budget, etc.)?
I ask because we have been using the web connector for a couple of years now and it is not built for the type of use we need. To be specific, we are a franchising company that has a hosted QB solution for each of our franchises. We then pull data and pass jobs to and from our proprietary POS application through the web connector. We run into all sorts of problems with multiple web connectors being open on the same system trying to connect to different files and a host of other issues. Because of this, we are hoping that a more reliable integration can be developed through the Sync Manager.
From what I understand, Intuit is no longer allowing proprietary integrations with QuickBooks Desktop editions through the Sync Manager and only allowing apps that are put into the marketplace. Is this really the case?
Correct. QBD integration with SM and V3/V2 REST endpoints are not supported.
Apps.com is the mainly the SaaS marketplace ( mainly focused on QBO).
No new integration using QBD V3 can be created.
Also, it seems that the supported objects for desktop editions is way behind those supported for the online edition. Will these be available any time soon (i.e. reports such as balance sheet, profit/loss, budget, etc.)?
V3 QBD APIs are already marked as deprecated. There will not be any development on this.
Ref - https://developer.intuit.com/docs/0025_quickbooksapi/0058_faq#Does_QuickBooks_API_support_QuickBooks_Desktop_and_QuickBooks_Online.3F
Please refer the following thread on similar topic.
Integrating with QB Desktop products
Thanks
This is more of an architectural question rather than anything code-related. I'm working on a project to auto-create invoices in QuickBooks using data from our ERP, in order to speed up the process of adding that data. It seems that it is a requirement that in order to access data within the QuickBooks company file directly, you need to use the SDK (which actually opens the file using a QuickBooks application instance). Since my application will need to access two company files depending on where the request came from, I can't keep it open, and this opening/closing adds 15ish seconds to each request.
Why is this a requirement, does anyone know? Is there another way to directly access the data and bypass the massive overhead of the QuickBooks application?
Thanks!
Why is this a requirement, does anyone know?
My understanding (based on a really old forum post by an Intuit developer) is that the way the SDK works is by using a GUI message pump Windows COM call to push data to QuickBooks.
No GUI present = no message pump = no connection to QuickBooks. Thus, you need the GUI components of QB in place.
Is there another way to directly access the data and bypass the massive overhead of the QuickBooks application?
No.
If it's a problem, consider batching your requests, queueing them up, and sending more than one at a time in a batch. This is what the Web Connector (and most other QuickBooks integrated apps) do to avoid this issue. It's very, very rare that an application truly needs real-time connections to QuickBooks (and be careful if you think you do - QuickBooks is not a great candidate for real-time access to data - there's a lot of things that can lock you out of QuickBooks so you have to be careful if you're building an app that assumes you'll always be able to connect to it).
I wrote a QB integration a few years ago that uses the Web Connector to read and write data to and from QB desktop products. It works well but I am not in love with the Web Connector.
I am tasked with setting up another QB integration. I was hoping to avoid using the Web Connector this time. There are a few reasons why I am trying to avoid the Web Connector but the main reason is I would like to make this integration work with both Desktop and Online versions of QB.
Is it possible to use the Intuit Sync Manager to sync the company data up to Intuit and then just use the standard Online APIs to connect to that company file? I have done some testing and I can connect to QB Online via the Online APIs but I cannot seem to get it to see the synced company files.
Any help with this would be great. Just looking for a little direction here.
Thanks in advance for any help.
For QBO, of-course, you can use QBO REST APIs(V3) API.
Ref - https://developer.intuit.com/docs/0025_quickbooksapi
But for QBD, QBSDK and web-connector is still the only approach.
QBD V2 and V3 REST APIs are already deprecated.
https://developer.intuit.com/docs/0250_qb
https://developer.intuit.com/docs/0250_qb/0010_get_oriented/0080_quickbooks_web_connector
FAQ
Thanks
I've been asked to develop some software for a friend who has a business that he manages using Quickbooks Desktop. I don't have Quickbooks Desktop, and I'm not quite sure how to get started. I've read the docs for about a week now and can't seem to figure out the first step.
From what I've read, it seems like maybe the Quickbooks application starts a web server and mine application will be issuing HTTP requests against that web server ? It would be nice if I didn't have to have the Quickbooks application to do this development; is there a way to read the data file itself ? Does it cost money to develop software that uses this API ?
It looks like I would probably like to use the V2 XML protocol for what I'm trying to do which is: retrieve checks and deposits, make a monthly summary, format that summary according to his specifications, and create a PDF of the statement.
From what I've read, it seems like maybe the Quickbooks application
starts a web server and mine application will be issuing HTTP requests
against that web server ?
That's one possible way to implement things.
If you give more detail about specifically what you're trying to do (what programming language? what version of QuickBooks?) you'll probably get better recommendations than that route.
It would be nice if I didn't have to have the Quickbooks application
to do this development; is there a way to read the data file itself ?
You will have to have QuickBooks, there's no way to read the raw datafile.
It's cheap on Amazon - buy it there.
Does it cost money to develop software that uses this API ?
There are no charges while developing, and for one-off/custom/in-house integrations like you're talking about, there are no charges at all.
It looks like I would probably like to use the V2 XML protocol for what I'm trying to do which is:
Be aware that v2 and v3 is technically only for SaaS applications (e.g. you have to be reselling this as an app, and allowing many people to connect their QuickBooks to your app).
According to Intuit, you should be using the SDK.