GithubHelp home page GithubHelp logo

madhavmansuriya40 / qbo-db-connector Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fylein/qbo-db-connector

0.0 0.0 0.0 63 KB

Connects Quickbooks to a database connector to transfer information to and fro.

License: MIT License

Python 100.00%

qbo-db-connector's Introduction

Quickbooks Online Database Connector

Connects Quickbooks online to a database to transfer information to and fro.

Installation

This project requires Python 3+.

  1. Download this project and use it (copy it in your project, etc).

  2. Install it from pip.

     $ pip install qbo-db-connector
    

Usage

To use this connector you'll need these Quickbooks credentials used for OAuth2 authentication: client ID, client secret and refresh token.

This connector is very easy to use.

import logging
import sqlite3
from qbosdk import QuickbooksOnlineSDK

from qbo_db_connector import QuickbooksExtractConnector, QuickbooksLoadConnector


dbconn = sqlite3.connect('/tmp/temp.db')

logger = logging.getLogger('Quickbooks usage')
logging.basicConfig(
    format='%(asctime)s %(name)s: %(message)s', level=logging.INFO, handlers=[logging.StreamHandler()]
)

quickbooks_config = {
    'client_id': '<CLIENT ID>',
    'client_secret': '<CLIENT SECRET>',
    'realm_id': '<REALM ID>',
    'refresh_token': '<REFRESH TOKEN>',
    'environment': '<ENVIRONMENT>',
}

logger.info('Quickbooks db connector usage')

connection = QuickbooksOnlineSDK(
    client_id=quickbooks_config['client_id'],
    client_secret=quickbooks_config['client_secret'],
    refresh_token=quickbooks_config['refresh_token'],
    realm_id=quickbooks_config['realm_id'],
    environment=quickbooks_config['environment']
)

quickbooks_extract = QuickbooksExtractConnector(qbo_connection=connection, dbconn=dbconn)
quickbooks_load = QuickbooksLoadConnector(qbo_connection=connection, dbconn=dbconn)

# make sure you save the updated refresh token
refresh_token = connection.refresh_token

# extracting
quickbooks_extract.extract_employees()
quickbooks_extract.extract_accounts()
quickbooks_extract.extract_classes()
quickbooks_extract.extract_departments()
quickbooks_extract.extract_home_currency()
quickbooks_extract.extract_exchange_rates()

# loading
quickbooks_load.load_check(check_id='100')
quickbooks_load.load_journal_entry(journal_entry_id='800')
quickbooks_load.load_attachments(ref_id='100', ref_type='Purchase')

Contribute

To contribute to this project follow the steps

  • Fork and clone the repository.
  • Run pip install -r requirements.txt
  • Setup pylint precommit hook
    • Create a file .git/hooks/pre-commit
    • Copy and paste the following lines in the file -
      #!/usr/bin/env bash 
      git-pylint-commit-hook
    • Run chmod +x .git/hooks/pre-commit
  • Make necessary changes
  • Run unit tests to ensure everything is fine

Unit Tests

To run unit tests, run pytest in the following manner:

python -m pytest test/unit

You should see something like this:

================================================================== test session starts ==================================================================
-------------------------------------------------------------------------------------------------------------------------------- live log call ---------------------------------------------------------------------------------------------------------------------------------
2019-12-24 12:10:46 [    INFO] test.unit.test_mocks: Testing mock data (test_mocks.py:18)
PASSED                                                                                                                                                                                                                                                                   [ 69%]
test/unit/test_mocks.py::test_dbconn_mock_setup
-------------------------------------------------------------------------------------------------------------------------------- live log call ---------------------------------------------------------------------------------------------------------------------------------
2019-12-24 12:10:46 [    INFO] test.unit.test_mocks: Testing mock dbconn (test_mocks.py:29)
PASSED                                                                                                                                                                                                                                                                   [ 76%]
test/unit/test_mocks.py::test_qec_mock_setup                                                                                           [100%]

=================================================================== 3 passed in 0.10s ===================================================================

Integration Tests

To run integration tests, you will need a mechanism to connect to a real qbo account. Save this info in a test_credentials.json file in your root directory:

{
  "client_id": "<client_id>",
  "client_secret": "<client_secret>",
  "realm_id": "<realm_id>",
  "refresh_token": "<refresh_token>",
  "environment": "<environment sandbox / production>"
}

Code coverage

To get code coverage report, run this command:

---------- coverage: platform darwin, python 3.7.4-final-0 -----------
Name                           Stmts   Miss  Cover
--------------------------------------------------
qbo_db_connector/__init__.py       2      0   100%
qbo_db_connector/extract.py       79      3    96%
qbo_db_connector/load.py          71      9    87%
--------------------------------------------------
TOTAL                            152     12    92%

To get an html report, run this command:

python -m pytest --cov=qbo_db_connector --cov-report html:cov_html

We want to maintain code coverage of more than 90% for this project at all times.

Please note that maintaining a score of 10 is important as the CI pylint action fails when a pull request is opened

License

This project is licensed under the MIT License - see the LICENSE file for details

qbo-db-connector's People

Contributors

shwetabhk avatar sravanksk 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.