Quickbooks is coming to drupal soon, but I may need help from the community.
I currently have a module that uses SOAP and the RDS (Remote Data Sharing) server from Intuit (a program that runs locally on your machine locally and runs. It acts as a "proxy" b/t you and your quickbooks file, and accepts SOAP requests and pulls the information from quickbooks for you and returns the information in XML format). The module is pretty simple in form currently.
- On a users "My Account" form, an admin user is presented with a drop down of current customers from Quickbooks. The admin then selects what "customers" the registered user can view.
- A user can view a "customer's" information they have rights to. Currently this includes the customers genreal information, and all invoices.
- A cron runs each night (or on the settings page, you can have it run up to 10 times a day), and it fetches all "new" information by only requesting the information that has been modified and/or created since the last cron run.
These XML files that are returned (if you are running a large quickbooks file) can be somewhat larget. But parsing has not been an issue. Right now, parsing is averaging 2 seconds per 1 MB of XML. I am using the SAX based xml parser in PHP ( http://www.php.net/manual/en/function.xml-parser-create.php ). It is pretty efficient.
However, I need to make more parsers. It is very easy to create a parser if one follows the template I have set forth in qb_customer_parser.class.php. It is just somewhat tedious for me.
Quickbooks is based on what it calls "Lists". What I need now is to create a parser for each major "lists".
These lists include (and this is not an exhastive listing):
- Account Classes
- Tax Codes
- Tax Amounts
My ultimate goal in doing this is an integration with E-commerce module, with Drupal acting a a front in, and "batch synchronization" with the Quickbooks file. Thus, Drupal + E-Commerce becomes the "goto" solution for small businesses with Quickbooks that are looking for a web presence, but do not what the hassel of double entry, or some complicated scheme to keep their quickbooks and e-commerece information/data/accounts in sync.
Futhermore, this will pave the way for E-Commerece to finally have some sort of General Ledger and be a true 'accounting' based solution rather than just an inventory and invoicing system. Not having a GL or any type of accounting rules is my biggiest gripe of an overall awesome module.
My first milestone though is getting this module out and some what stable. I is currently a type of "Read-Only" module in that it just display customer and invoice information from quickbooks, but you can't edit the information. I need to think that totally through, espeically since this is dealing with financial data of a business ('em InnoDB/Transactions ?).
I shall be posting the quickbooks modules to my sandbox in the coming days, and posting something similar to what I have written here on the forums asking for xml-parser help. I thought I would post here for thoughts first.
P.S. Note: The QuickBooks module uses qbXML 1.1 even though the current implementation is 6.0. All prior qbXML's are compatibile with any of the new SDK's, but the new qbXML formats are not backwards compatible. Meaing, you can't use qbXML 6.0 on a QB 2002 installation because 2002 only understands 1.1, but you can use 1.1 on a QB 2006 installation because all prior qbXML's are compatible.