mirror of
https://github.com/rickbarrette/redmine_qbo.git
synced 2025-11-09 01:14:23 -05:00
Moving Fat from the controller to the Customer Model
This commit is contained in:
@@ -11,17 +11,6 @@
|
|||||||
class QboController < ApplicationController
|
class QboController < ApplicationController
|
||||||
unloadable
|
unloadable
|
||||||
|
|
||||||
# Load OAuth Token
|
|
||||||
QB_KEY = Setting.plugin_redmine_qbo['settingsOAuthConsumerKey']
|
|
||||||
QB_SECRET = Setting.plugin_redmine_qbo['settingsOAuthConsumerSecret']
|
|
||||||
|
|
||||||
$qb_oauth_consumer = OAuth::Consumer.new(QB_KEY, QB_SECRET, {
|
|
||||||
:site => "https://oauth.intuit.com",
|
|
||||||
:request_token_path => "/oauth/v1/get_request_token",
|
|
||||||
:authorize_url => "https://appcenter.intuit.com/Connect/Begin",
|
|
||||||
:access_token_path => "/oauth/v1/get_access_token"
|
|
||||||
})
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Called when the QBO Top Menu us shown
|
# Called when the QBO Top Menu us shown
|
||||||
#
|
#
|
||||||
@@ -34,7 +23,7 @@ class QboController < ApplicationController
|
|||||||
#
|
#
|
||||||
def authenticate
|
def authenticate
|
||||||
callback = request.base_url + qbo_oauth_callback_path
|
callback = request.base_url + qbo_oauth_callback_path
|
||||||
token = $qb_oauth_consumer.get_request_token(:oauth_callback => callback)
|
token = Qbo.get_oauth_consumer.get_request_token(:oauth_callback => callback)
|
||||||
session[:qb_request_token] = token
|
session[:qb_request_token] = token
|
||||||
redirect_to("https://appcenter.intuit.com/Connect/Begin?oauth_token=#{token.token}") and return
|
redirect_to("https://appcenter.intuit.com/Connect/Begin?oauth_token=#{token.token}") and return
|
||||||
end
|
end
|
||||||
@@ -71,18 +60,7 @@ class QboController < ApplicationController
|
|||||||
#
|
#
|
||||||
def sync
|
def sync
|
||||||
if Qbo.exists? then
|
if Qbo.exists? then
|
||||||
qbo = Qbo.first
|
QboCustomers.update_all
|
||||||
oauth_client = OAuth::AccessToken.new($qb_oauth_consumer, qbo.token, qbo.secret)
|
|
||||||
service = Quickbooks::Service::Customer.new(:company_id => qbo.realmId, :access_token => oauth_client)
|
|
||||||
|
|
||||||
customers = service.all
|
|
||||||
|
|
||||||
#update the customer table
|
|
||||||
customers.each { |customer|
|
|
||||||
qbo_customer = QboCustomers.find_or_create_by(id: customer.id)
|
|
||||||
qbo_customer.name = customer.display_name
|
|
||||||
qbo_customer.save!
|
|
||||||
}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
redirect_to qbo_path(:redmine_qbo), :flash => { :notice => "Successfully synced to Quickbooks" }
|
redirect_to qbo_path(:redmine_qbo), :flash => { :notice => "Successfully synced to Quickbooks" }
|
||||||
|
|||||||
@@ -11,4 +11,23 @@
|
|||||||
class Qbo < ActiveRecord::Base
|
class Qbo < ActiveRecord::Base
|
||||||
unloadable
|
unloadable
|
||||||
validates_presence_of :token, :secret, :realmId, :token_expires_at, :reconnect_token_at
|
validates_presence_of :token, :secret, :realmId, :token_expires_at, :reconnect_token_at
|
||||||
|
|
||||||
|
QB_KEY = Setting.plugin_redmine_qbo['settingsOAuthConsumerKey']
|
||||||
|
QB_SECRET = Setting.plugin_redmine_qbo['settingsOAuthConsumerSecret']
|
||||||
|
|
||||||
|
$qb_oauth_consumer = OAuth::Consumer.new(QB_KEY, QB_SECRET, {
|
||||||
|
:site => "https://oauth.intuit.com",
|
||||||
|
:request_token_path => "/oauth/v1/get_request_token",
|
||||||
|
:authorize_url => "https://appcenter.intuit.com/Connect/Begin",
|
||||||
|
:access_token_path => "/oauth/v1/get_access_token"
|
||||||
|
})
|
||||||
|
|
||||||
|
def self.get_auth_token
|
||||||
|
qbo = first
|
||||||
|
return OAuth::AccessToken.new($qb_oauth_consumer, qbo.token, qbo.secret)
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.get_oauth_consumer
|
||||||
|
return $qb_oauth_consumer
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -12,4 +12,16 @@ class QboCustomers < ActiveRecord::Base
|
|||||||
unloadable
|
unloadable
|
||||||
has_many :issues
|
has_many :issues
|
||||||
attr_accessible :name
|
attr_accessible :name
|
||||||
|
|
||||||
|
def self.update_all
|
||||||
|
qbo = Qbo.first
|
||||||
|
service = Quickbooks::Service::Customer.new(:company_id => qbo.realmId, :access_token => Qbo.get_auth_token)
|
||||||
|
|
||||||
|
# Update the customer table
|
||||||
|
service.all.each { |customer|
|
||||||
|
qbo_customer = QboCustomers.find_or_create_by(id: customer.id)
|
||||||
|
qbo_customer.name = customer.display_name
|
||||||
|
qbo_customer.save!
|
||||||
|
}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
1
init.rb
1
init.rb
@@ -28,4 +28,5 @@ Redmine::Plugin.register :redmine_qbo do
|
|||||||
|
|
||||||
# Register QBO top menu item
|
# Register QBO top menu item
|
||||||
menu :top_menu, :qbo, { :controller => 'qbo', :action => 'index' }, :caption => 'Quickbooks'
|
menu :top_menu, :qbo, { :controller => 'qbo', :action => 'index' }, :caption => 'Quickbooks'
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user