Coder Social home page Coder Social logo

erpnext_quickbooks's Introduction

Erpnext Quickbooks

Quickbooks connector for ERPNext


ERPNext Quickbooks is built on the Frappé Framework, a full-stack web app framework in Python & JavaScript.

Requires EPRNext,

Once you install ERPNext run -

$ bench get-app erpnext_quickbooks https://github.com/indictranstech/erpnext_quickbooks.git
$ bench install-app erpnext_quickbooks

This Connector will Sync the data from Quickbooks Online to ERPNext

To Sync the data first you should have Quickbooks Online account.

Go to this Url (https://developer.intuit.com) and create Quickbooks account , After this create new Quickbooks app and grab Consumer Key and Consumer Secret from that quickbooks-app. This process has to be done only once.

Setups

  1. Insert both the key

Erp_quickbooks

  1. Click "Connect to Quickbooks" Button , after that new pop window will open

Screenshot1

  1. Click Authorize Button

Screenshot2

License

GNU GPL v3.0

erpnext_quickbooks's People

Contributors

arpitjain06 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

erpnext_quickbooks's Issues

installing connector

Just wanted to mention that we're having trouble testing out your connector, when we click the connect to quickbooks button with our proper Consumer Key and Consumer Secret, we get an error, actually several errors one being a blank window after we click authorize.

{}

In the window url the token, and the verifier shows up within the url but just get a pair of braces inside the body itself. If we click Sync Data to Quickbooks after this then this error appears:

Request Error
Traceback (most recent call last):
  File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 52, in application
    init_request(request)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 102, in init_request
    frappe.init(site=site, sites_path=_sites_path)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 121, in init
    local.conf = _dict(get_site_config())
  File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 175, in get_site_config
    raise IncorrectSitePath, "{0} does not exist".format(site_config)
IncorrectSitePath: 404: Not Found
2016-08-01 01:05:40,264 - /home/frappe/frappe-bench/apps/frappe/frappe/app.py [ERROR]:
Site: **************
Form Dict: {
 "cmd": "erpnext_quickbooks.erpnext_quickbooks.doctype.quickbooks_settings.quickbooks_settings.sync_quickbooks_data_erp"
}
Traceback (most recent call last):
  File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 55, in application
    response = frappe.handler.handle()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 19, in handle
    execute_cmd(cmd)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 36, in execute_cmd
    ret = frappe.call(method, **frappe.form_dict)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 879, in call
    return fn(*args, **newargs)
  File "/home/frappe/frappe-bench/apps/erpnext_quickbooks/erpnext_quickbooks/erpnext_quickbooks/doctype/quickbooks_settings/quickbooks_settings.py", line 112, in sync_quickbooks_data_erp
    customer_data = sync_customers(quickbooks_obj)
  File "/home/frappe/frappe-bench/apps/erpnext_quickbooks/erpnext_quickbooks/sync_customers.py", line 13, in sync_customers
    qb_customer = quickbooks_obj.query(customer_query)
  File "/home/frappe/frappe-bench/apps/erpnext_quickbooks/erpnext_quickbooks/pyqb/quickbooks/client.py", line 257, in query
    result = self.make_request_query("POST", url, select, content_type='text/plain')
  File "/home/frappe/frappe-bench/apps/erpnext_quickbooks/erpnext_quickbooks/pyqb/quickbooks/client.py", line 202, in make_request_query
    self.create_session()
  File "/home/frappe/frappe-bench/apps/erpnext_quickbooks/erpnext_quickbooks/pyqb/quickbooks/client.py", line 111, in create_session
    raise QuickbooksException("Quickbooks authenication fields not set. Cannot create session.")
QuickbooksException: Quickbooks authenication fields not set. Cannot create session.

Trying to reconnect again gives us this error which seems to be on quickbooks end:

Oops! An error has occurred.
Please close this window and try again. 

Error Code: internal_error 
Message: Error getting application from request token

Seems like the connection happening but something with setting the tokens in the session goes wrong.

How to create chart of account in erpnext for Quickbooks

@nabinhait
I am facing an issue how I will sync Accounting entry in Erpnext,
For creating journal entry for sales invoice, different Account are to be affected
For that what wil i do

  1. Sync the all Quickbooks Account to Erpnext.
  2. Or to create a mapper to map the account from Quickbooks to Erpnext

Installation did not work correclty

I just installed this connector and I get error https://drive.google.com/a/d-modules.com/file/d/1SxYTPhJQ8u6LUVC_gU0Eot8e8drsnyii/view?usp=drivesdk

In my JS console:

Unable to handle success response
request.js:200 ReferenceError: pop_up_window is not defined
at eval (eval at setup (script_manager.js:155), :65:15)
at init.setup (script_manager.js:155)
at _f.Frm.setup (form.js:109)
at _f.Frm.refresh (form.js:427)
at o.load (formview.js:84)
at formview.js:78
at Object.callback (model.js:172)
at Object.success [as success_callback] (request.js:58)
at 200 (request.js:83)
at Object. (request.js:196)
(anonymous) @ request.js:200
i @ jquery.min.js:2
fireWith @ jquery.min.js:2
z @ jquery.min.js:4
(anonymous) @ jquery.min.js:4
load (async)
send @ jquery.min.js:4
ajax @ jquery.min.js:4
frappe.request.call @ request.js:178
frappe.call @ request.js:62
(anonymous) @ model.js:163
with_doc @ model.js:157
show_doc @ formview.js:59
(anonymous) @ formview.js:16
callback @ model.js:131
success @ request.js:58
200 @ request.js:83
(anonymous) @ request.js:196
i @ jquery.min.js:2
fireWith @ jquery.min.js:2
z @ jquery.min.js:4
(anonymous) @ jquery.min.js:4
load (async)
send @ jquery.min.js:4
ajax @ jquery.min.js:4
frappe.request.call @ request.js:178
frappe.call @ request.js:62
with_doctype @ model.js:104
make @ formview.js:12
show @ factory.js:23
frappe.route @ router.js:48
startup @ desk.js:70
load_startup @ desk.js:36
init @ desk.js:32
frappe.start_app @ desk.js:10
(anonymous) @ desk.js:21
i @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
J @ jquery.min.js:2
form_viewers.js:78 Uncaught TypeError: Cannot read property 'refresh' of undefined
at Object.frappe.ui.form.set_viewers (form_viewers.js:78)
at n. (formview.js:41)
at n.emit (libs.min.js?ver=1522248078.0:7316)
at n.onevent (libs.min.js?ver=1522248078.0:7317)
at n.onpacket (libs.min.js?ver=1522248078.0:7317)
at n. (libs.min.js?ver=1522248078.0:7317)
at n.emit (libs.min.js?ver=1522248078.0:7316)
at n.ondecoded (libs.min.js?ver=1522248078.0:7316)
at s. (libs.min.js?ver=1522248078.0:7317)
at s.n.emit (libs.min.js?ver=1522248078.0:7316)

And I use ERPNext: v11.x.x-develop (4d9e104) (develop)

Syncing - Quickbooks to ERPNext

  • Migrate opening data from Quickbooks to ERPNext.
  • Customers, Suppliers, Item, Tax, Employee and User will be managed through ERPNext and whenever added new or updated existing one, it will update in QuickBooks.
  • Sales / Purchase Invoice will be created in ERPNext and synced with Quickbooks.
  • Journal Entry against SI/PI will be primarily created in QuickBooks and same will sync to ERPNext or vice versa.
  • Listing on Quickbooks app store and ERPNext app store
  • Test Cases
  • Documentation

Syncing

  • If webhooks are available, use them
  • As a fallback, use scheduler to sync data. Ideally, sync should happen at a minimum of every hour.
  • Also provide a button to call the sync method manually, but it should be a background job, as sync could take more than 2 mins, which is the timeout of the web process.
  • See Sync Shopify
  • Note that you will have to change this call once celery is deprecated in favor of python rq. We will post instructions.
  • All sync / webhook calls should be logged, with exceptions if any. Logs should be cleared every 30 days. (See Shopify Log)
  • Exception Handling
  • If due to some exception, a record does not get synced, the code should be able to sync that record once the error is taken care of, similar to how IMAP works in email.
  • If there are repeated exceptions, disable auto-syncing and notify System Managers. (See: Disable Shopify Syncing on Exception)

Error while connecting to Quickbooks

Hi,
I am new to ERPNext. I have successfully installed and configured the latest version. However, I am stuck at connecting to Quickbooks using the master branch. I am receiving the following error while trying to connect to Quickbooks-

Traceback (most recent call last):
File "/Users/stone/frappe-bench/apps/frappe/frappe/app.py", line 55, in application
response = frappe.handler.handle()
File "/Users/stone/frappe-bench/apps/frappe/frappe/handler.py", line 19, in handle
execute_cmd(cmd)
File "/Users/stone/frappe-bench/apps/frappe/frappe/handler.py", line 40, in execute_cmd
ret = frappe.call(method, **frappe.form_dict)
File "/Users/stone/frappe-bench/apps/frappe/frappe/__init__.py", line 896, in call
return fn(*args, **newargs)
File "/Users/stone/frappe-bench/apps/erpnext_quickbooks/erpnext_quickbooks/erpnext_quickbooks/doctype/quickbooks_settings/quickbooks_settings.py", line 73, in quickbooks_authentication_popup
quickbooks_settings.authorize_url = quickbooks.get_authorize_url()
File "/Users/stone/frappe-bench/apps/erpnext_quickbooks/erpnext_quickbooks/pyqb/quickbooks/client.py", line 124, in get_authorize_url
params={'oauth_callback': self.callback_url})
File "/Users/stone/frappe-bench/env/lib/python2.7/site-packages/rauth/service.py", line 215, in get_raw_request_token
**kwargs)
File "/Users/stone/frappe-bench/env/lib/python2.7/site-packages/rauth/session.py", line 181, in request
req_kwargs)
File "/Users/stone/frappe-bench/env/lib/python2.7/site-packages/rauth/oauth.py", line 144, in sign
key = self._escape(consumer_secret) + b'&'
File "/Users/stone/frappe-bench/env/lib/python2.7/site-packages/rauth/oauth.py", line 35, in _escape
return quote(self._ensure_unicode(s), safe='~').encode('utf-8')
File "/Users/stone/frappe-bench/env/lib/python2.7/site-packages/rauth/oauth.py", line 25, in _ensure_unicode
return s.encode('utf-8')
AttributeError: 'NoneType' object has no attribute 'encode'

Any idea on how to solve this issue? I appreciate your help.

Connecting Erpnext to Quickbooks

Traceback (most recent call last):
File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 62, in application
response = frappe.handler.handle()
File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 22, in handle
data = execute_cmd(cmd)
File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 53, in execute_cmd
return frappe.call(method, **frappe.form_dict)
File "/home/frappe/frappe-bench/apps/frappe/frappe/init.py", line 939, in call
return fn(*args, **newargs)
File "/home/frappe/frappe-bench/apps/erpnext_quickbooks/erpnext_quickbooks/erpnext_quickbooks/doctype/quickbooks_settings/quickbooks_settings.py", line 73, in quickbooks_authentication_popup
quickbooks_settings.authorize_url = quickbooks.get_authorize_url()
File "/home/frappe/frappe-bench/apps/erpnext_quickbooks/erpnext_quickbooks/pyqb/quickbooks/client.py", line 127, in get_authorize_url
self.request_token = oauth_resp['oauth_token']
KeyError: 'oauth_token'

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.