Quickbooks XML (qbxml)

The Quickbooks XML module extends the functionality of the Quickbooks Webconnector module by handling incoming and outgoing messages and performing automatic data translation services.

Background

Quickbooks standalone programs perform bookkeeping and accounting functionality on standalone Windows PCs. Intuit provides software called the Webconnector to exchange data with outside web services. For security reasons, the Webconnector always initiates the data exchange acting as an HTTP client while the Quickbooks program acts as the data server.

This also means that there are two very different data communications abstractions: On the one hand, at the SOAP communications level, the Drupal site is acting as a communications server. The Quickbooks Webconnector module performs the low level SOAP server functionality and hands off the data message handling to this module.

On the other hand, the Drupal site must act as a data client requesting and processing data from Quickbooks. The data is formatted according to the Quickbooks XML definition, and hence the name.

There must be definitions for how to translate incoming data into Drupal, and how to format outgoing Drupal data into properly formatted Quickbooks XML requests.

Data synchronization between Quickbooks and Drupal

This module is the brains behind data exchange between Quickbooks and Drupal. It does all of the following:

Provides a qbxml theme hook

The qbxml theme hook is used to properly format outgoing messages. The qbxml theme hook also automatically detects installed qbxml.tpl.php files and adds them to the qbxml theme system and makes theme suggestions based on message metadata.

Queues and coordinates incoming and outgoing messages

Outgoing messages are maintained until an incoming connection is made, then they are submitted. Incoming responses are associated with their appropriate requests.

Large datasets are iterated through automatically.

Automatic processing / importing of incoming messages

The QBXML module provides hooks for other modules to inspect incoming data and to process it. If no other modules process the data, then QBXML provides a default Feeds-based importer that searches for an appropriate Feeds importer (based on the name of the incoming response), and sends the data to the importer to be imported automatically.

If no appropriate Feeds importer is found, then the response is stashed for some other data processing to occur.

Import query functionality built in

QBXML provides an administrative interface that allows you to select many Quickbooks lists and import them into Drupal with a single click (provided that you have data structures and importers defined for them.)

The big picture

The definition of data structures and importers is beyond the scope of QBXML. Stay tuned for the bc and bcfeeds modules that provide all of this (and more) for key accounting data structures.

Related modules

Quickbooks Webconnector
Feeds