Friday, June 23, 2006

Quickbooks Receivables Document Types Added

We have now loaded the following receivables document types as webservice methods to the Is2 QB Xml Server:

1. Invoice
2. SalesReceipt
3. SalesOrder
4. Estimate
5. ReceivePayment
6. CreditMemo

In the next week we will work on the remaining receivables documents. Then we will begin payables documents.

Thursday, June 22, 2006

Quickbooks Item Types Added To Webservice Methods

We have now completed adding additional Item types to the Is2 Xml Soap Server for Quickbooks.

The following Item types were added yesterday:
1. ItemDiscount
2. ItemInventory
3. ItemNonInventory
4. ItemOtherCharge
5. ItemPayment
6. ItemSalesTax
7. ItemService

We will soon add these remaining Item types:
1. ItemFixedAsset
2. ItemGroup
3. ItemInventoryAssembly
4. ItemSalesTaxGroup
5. ItemSubtotal

All the webservice methods for the Item types follow similiar call methods and parameters:
Example:
1. ItemService_Add
2. ItemService_Edit
3. ItemService_Delete
4. ItemService_Lookup
5. ItemService_List
6. ItemService_LookupList

We are now working on Document types - invoice, salesreceipt, salesorder.

Tuesday, June 20, 2006

Is2 QB Xml Soap Server begins online test.

Work is progressing well enough to allow the Is2 Qb Standalone xml soap server to be run full time online with our Adobe Flex 2.0 client application. The backend Quickbooks database being used is one of the sample Premier databases.

Screen shot of the standalone server.

Server Parameters include:
1. Service Ip address.
2. Application name.
3. Company file to be accessed.
4. Server port.
5. Version of Qbxml to be used.

Login Parameters include:
1. Http Basic login required - Yes or No. If required, the user name and password.
2. Webservice Method authentication required - Yes or No. If required, user name and password.

Log Settings include:
1. Is logging to be turned on - Yes or No.
2. Allow raw xml requests. This will allow or disallow user defined xml requests.

Screen shot of the Adobe Flex 2.0 client application running a user defined raw xml request

Currently, we have set up the called methods for all areas to be of a similiar fashion to the following:
1. Customer_Add
2. Customer_Edit
3. Customer_Delete
4. Customer_Lookup
5. Customer_List
6. Customer_LookupList

We have the following areas completed as of today:
1. Accounts - Add, Edit, Delete, Lookup, List, LookupList
2. Customers - Add, Edit, Delete, Lookup, List, LookupList
3. Vendors - Add, Edit, Delete, Lookup, List, LookupList
4. Items - Service - Add, Edit, Delete, Lookup, List, LookupList
5. Classes - Add, Delete, Lookup, List, LookupList
6. Customer Types- Add, Delete, Lookup, List, LookupList
7. Vendor Types- Add, Delete, Lookup, List, LookupList
8. Job Types- Add, Delete, Lookup, List, LookupList
9. Terms- Add, Delete, Lookup, List, LookupList
10. Items - Sales Tax Codes - Add, Delete, Lookup, List, LookupList
11. Sales Tax Codes - Add, Delete, Lookup, List, LookupList
12. Payment Methods - Add, Delete, Lookup, List, LookupList
13. Shipper Methods - Add, Delete, Lookup, List, LookupList
14. Sales Reps - Add, Delete, Lookup, List, LookupList

15. Customer Invoices - Add, Edit, Delete, Lookup, List, LookupList

With the completion of all needed lookup list areas and the working model of the customer invoice area, we can now complete out the document areas.

Ideas for the Xml Soap Server for Quickbooks

To make it easier to build applications that access Quickbooks data, a xml soap server will need to be built that could be pointed to any number of company files.

Due to the limitations of the Quickbooks server, only one company file can be accessed at a time.

The Xml Soap server that is needed to provide the webservice methods to Quickbooks thru the Quickbooks Sdk should probably come in several flavors:

1. A standalone version.
2. A Windows service version.
3. A webserver version running as an IIS isapi dll.

The standalone version would be able to show a visual log of requests and responses. That would make it easy to determine qbxml request problems.

All versions should require either or both http basic login and webservice login user name and password. Certificates could be added for added security. Allow a raw user defined xml requests webservice method in addition to the defined webservice methods.

The xml server should allow defining the company file and ports to be used so that multiples of th server could installed which could point to a number of company files and be accessible thru a number of server ports.

At the beginning, only a single login user name and password will be assigned but future development should address allowing a table of users with their security rights to individual webservice methods. Example would be allowing corporate personnel access to customer and vendor files but website entry only allowed to create a new customer invoice and receipt.

To begin the project, the standalone version will be built so that we can see processing results to speed the application development process side.

We will keep in mind that the server should be built for easy installation not by developers only but also endusers when installed with the applications.

Also we will keep in mind that we will be reselling the server component to other developers.

Thursday, June 15, 2006

If you are wanting to build the new Web 2.0 RIA's, then the Adobe FlexBuilder 2 product shows great promise in developing cross-platform applications which will run on Windows, MacIntosh, and Linux. I am absolutely amazed at how easy it makes the development process for creating mashups that can access data from multiple datasources.


I have built a sample application which accesses Quickbooks data live thru webservice calls to our the Is2 QB webservice server that I built to analyze the possibilities of being able to develop Quickbooks interface applications.

You may check out the wsdl for the xml webservice server by clicking here:
http://shop.is2software.com:24000/wsdl.

View the application at http://shop.is2software.com/is2qb/bin/is2qb.html.

( Note: You will need the latest FlashPlayer 9 Beta to run the application. This is available at www.adobe.com in the Labs section. I have found that uninstalling your existing Flashplayer and then installing the Flashplayer 9 is best. ) .

The program demonstrates several capabilities which should intrigue anyone who develops applications with the Quickbooks SDK.


1. Browse accounts, customers, vendor, and service items.
2. Enter new customer, vendor, account, service item.
3. Modify a customer, vendor, account or service item.
4. Enter a new or edit a customer invoice with line items chosen from a item lookup. Lookup customer terms, sales rep, and shipper method. Modify line items. Add new items when editting an invoice.
5. Run a raw xml statement. Make it anything. Host query. Customer query. Add a new account. Anything that is valid.
6. See returned xml message responses for queries, adds, and modifies.

Question? Can the xml webservices be accessed by programs other than a Flex 2 application. Answer: Absolutely. This is a soap server that is returning QBxml responses. We just thought it would be interesting to show it with a web interface that is similiar to a windows interface. But we originally built a Windows client to test the webservice methods retrieving account, customer, vendor, and invoice data.

Question? What is the setup being used for this demonstration?
Answer: We are running a Quickbooks 2006 Premier on a VMware partition. The Is2 QB Xml server is running on port 24000. The application was built with Adobe Flex Builder 2 beta 3 which generates a flash player 9 application. FlexBuilder 2 beta 3 is currently available as a FREE download to test with.

Our soap server is in constant development at this point in the attempt to surface all the needed functionality to build a full accounting frontend that could be used in creating mashups from multiple data sources in addition to the Quickbooks data. Each day new functionality is added. I am concentrating on the accounts receivable areas in order build a Flex 2 shopping cart capable of showing items with DataExt custom fields for the picture urls that would be able to process a credit card purchase and store immediately to Quickbooks as a sales receipt invoice.

Let me know what you think.

You can email me directly at billbrittain@is2software.com if you have questions.

Wednesday, May 31, 2006

Creating the Lookup Screens

One of the early challenges in designing this application was how to create the lookup screens for the terms, sales reps, shippers, customers, accounts, vendors, etc. that would be used throughout the app in all the document entry areas. We needed a reusuable screen that could be popped up, would pull its own data, allow selection from the grid, and ending with the data selected being distributed back to the calling area.

The use of the TitleWindow with the PopUpManager made this very straightforward. All the lookups were built in the same way with only changes to the webservice query call and the datagrid columns. Otherwise, all follow the same model.

Example: In the customer invoice, you will find the following lookups at the middle of the invoice screen.




By clicking on the lookup icon ( looks like a grid ) for Terms, the following screen will appear.



The screen is modal so you must choose either the Ok or Cancel button to close the screen. The Ok button is enabled only when a selection has occurred in the grid.

If you would like to look at the code for this lookup, you may download from:

http://www.is2software.com/quickbooks/is2qb/Terms_lu.mxml

Also, I have loaded a pdf tutorial where I have tried to describe how the lookups work. Maybe this will help someone who is starting out with Flex.

http://www.is2software.com/quickbooks/is2qb/Build_Terms_Lookup.pdf

If there is a better way, please feel free to tell me. I am by no means a Flex expert. I am still learning how to putter around in Flex Builder 2.

Tuesday, May 30, 2006

Submitted My Flex 2 Derby Entry

Worked all weekend and finally got my application in shape enough to enter it into the Flex 2 Application Derby. My entry is a web front-end to a Quickbooks accounting database.

You can view the work in progress at http://shop.is2software.com/is2qb/bin/is2qb.html.

I had two primary goals in mind when I started this proof-of-concept.

1. Determine how to build a xml soap server that would access Quickbooks data using the Quickbooks Sdk. This server could be used to serve data to both windows and flex clients.
2. Determine if Flex 2 could be used to build a full accounting application front-end.

My first goal, the building of the xml soap server took over a month to work out the base mechanisms. In the end, one of the most used request functions has been the raw qbxml query call where I can send the server any query I wish. That way I can view the raw returned response. That made the development speed up dramatically on the flex client side. In fact, I incorporated a xml viewer title window just for viewing the requests and responses.

The second goal has been partially achieved. With Flex 2, I have been able to create a working application where queries can be called via web services and easily formatted in the datagrids. The area that interested me most was the ability to enter new, view existing, and modify existing customer invoices. Master / detail operations with multiple list lookups and calculations are usually very hard to attain in web browser interfaces. But Flex greatly simplified the user inteface screen layouts.

I will detail individually each of the main areas of the application in my next posts.