Code Monkey home page Code Monkey logo

python-quickbooks's Introduction

python-quickbooks

Build Status Coverage Status

A Python library for accessing the Quickbooks API. Complete rework of quickbooks-python.

These instructions were written for a Django application. Make sure to change it to whatever framework/method you're using.

Connecting your application to Quickbooks Online

  1. Create the Authorization URL for your application:

     from quickbooks import QuickBooks
     
     quickbooks = QuickBooks(
         sandbox=True,
         consumer_key=QUICKBOOKS_CLIENT_KEY,
         consumer_secret=QUICKBOOKS_CLIENT_SECRET,
         callback_url=CALLBACK_URL
     )
    
     authorize_url = quickbooks.get_authorize_url()
    

    Store the authorize_url, request_token, and request_token_secret for use in the Callback method.

  2. Handle the callback:

     quickbooks = QuickBooks(
         sandbox=True,
         consumer_key=QUICKBOOKS_CLIENT_KEY,
         consumer_secret=QUICKBOOKS_CLIENT_SECRET,
         callback_url=CALLBACK_URL
     )
    
     quickbooks.authorize_url = authorize_url
     quickbooks.request_token = request_token
     quickbooks.request_token_secret = request_token_secret
     quickbooks.set_up_service()
    
     quickbooks.get_access_tokens(request.GET['oauth_verifier'])
    
     realm_id = request.GET['realmId']
     access_token = quickbooks.access_token
     access_token_secret = quickbooks.access_token_secret
    

    Store realm_id, access_token, and access_token_secret need to be stored for later use.

Accessing the API

QuickBooks client uses a singleton pattern. Just be sure to create the QuickBooks object before you make any calls to QBO. Setup the client connection using the stored access_token and the access_token_secret and realm_id:

from quickbooks import QuickBooks

QuickBooks(
    sandbox=True,
    consumer_key=QUICKBOOKS_CLIENT_KEY,
    consumer_secret=QUICKBOOKS_CLIENT_SECRET,
    access_token=access_token,
    access_token_secret=access_token_secret,
    company_id=realm_id
)

If you need to access a minor version (See Minor versions for details) pass in minorversion when setting up the client:

QuickBooks(
    sandbox=True,
    consumer_key=QUICKBOOKS_CLIENT_KEY,
    consumer_secret=QUICKBOOKS_CLIENT_SECRET,
    access_token=access_token,
    access_token_secret=access_token_secret,
    company_id=realm_id,
    minorversion=4
)

List of objects:

from quickbooks.objects.customer import Customer
customers = Customer.all()

Note: The maximum number of entities that can be returned in a response is 1000. If the result size is not specified, the default number is 100. (See Intuit developer guide for details)

Filtered list of objects:

customers = Customer.filter(Active=True, FamilyName="Smith")

Filtered list of objects with paging:

customers = Customer.filter(start_position=1, max_results=25, Active=True, FamilyName="Smith")

List Filtered by values in list:

customer_names = ['Customer1', 'Customer2', 'Customer3']
customers = Customer.choose(customer_names, field="DisplayName")

List with custom Where Clause (do not include the "WHERE"):

customers = Customer.where("Active = True AND CompanyName LIKE 'S%'")

List with custom Where Clause with paging:

customers = Customer.where("CompanyName LIKE 'S%'", start_position=1, max_results=25)

Filtering a list with a custom query (See Intuit developer guide for supported SQL statements):

customer = Customer.query("SELECT * FROM Customer WHERE Active = True")

Filtering a list with a custom query with paging:

customer = Customer.query("SELECT * FROM Customer WHERE Active = True STARTPOSITION 1 MAXRESULTS 25")

Get single object by Id and update:

customer = Customer.get(1)
customer.CompanyName = "New Test Company Name"
customer.save()

Create new object:

customer = Customer()
customer.CompanyName = "Test Company"
customer.save()

Batch Operations

The batch operation enables an application to perform multiple operations in a single request (See Intuit Batch Operations Guide for full details).

Batch create a list of objects:

from quickbooks.batch import batch_create

customer1 = Customer()
customer1.CompanyName = "Test Company 1"
customer1.save()

customer2 = Customer()
customer2.CompanyName = "Test Company 2"
customer2.save()

customers = []
customers.append(customer1)
customers.append(customer2)

results = batch_create(customers)

Batch update a list of objects:

from quickbooks.batch import batch_update

customers = Customer.filter(Active=True)

# Update customer records

results = batch_update(customers)

Batch delete a list of objects:

from quickbooks.batch import batch_delete

customers = Customer.filter(Active=False)
results = batch_delete(customers)

Review results for batch operation:

# successes is a list of objects that were successfully updated 
for obj in results.successes:
    print "Updated " + obj.DisplayName

# faults contains list of failed operations and associated errors
for fault in results.faults:
    print "Operation failed on " + fault.original_object.DisplayName 
    
    for error in fault.Error:
        print "Error " + error.Message 

Note: Objects and object property names match their Quickbooks counterparts and do not follow PEP8.

Note: This is a work-in-progress made public to help other developers access the QuickBooks API. Built for a Django project running on Python 2. It has not been tested with Python 3.

python-quickbooks's People

Contributors

ej2 avatar fuhrysteve avatar grantmcconnaughey avatar manugarri avatar rubinovitz avatar sebastienduval avatar simonv3 avatar troolee avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.