class Quickbooks::Base
Attributes
service[R]
Public Class Methods
new(account, type = nil)
click to toggle source
# File lib/quickbooks/base.rb, line 11 def initialize(account, type = nil) @account = account create_service_for(type) if type end
Public Instance Methods
company_id()
click to toggle source
# File lib/quickbooks/base.rb, line 81 def company_id retrieve(:company_id) end
create_service_for(type)
click to toggle source
# File lib/quickbooks/base.rb, line 98 def create_service_for(type) @service = service_for(type) end
describing_method(e)
click to toggle source
# File lib/quickbooks/base.rb, line 58 def describing_method(e) case entity(e) when /(Item|TaxCode|PaymentMethod|Account)/ 'name' when /(Invoice|CreditMemo)/ 'doc_number' when /Payment/ 'total' when /(Vendor|Customer|Employee)/ 'display_name' else 'txn_date' end end
description(e)
click to toggle source
# File lib/quickbooks/base.rb, line 47 def description(e) desc = (method = describing_method(e)) =~ /(total)/ ? e.send(method).to_f : e.send(method) rescue => e 'nil' end
entity(obj = nil)
click to toggle source
# File lib/quickbooks/base.rb, line 53 def entity(obj = nil) obj ||= @service obj.class.name.split('::').last end
generate_quickbooks_ruby_namespace(type, variety = 'Model')
click to toggle source
# File lib/quickbooks/base.rb, line 20 def generate_quickbooks_ruby_namespace(type, variety = 'Model') type = qbo_case(type) "Quickbooks::#{variety}::#{type}" end
oauth_client()
click to toggle source
# File lib/quickbooks/base.rb, line 35 def oauth_client @oauth_client ||= OAuth2::AccessToken.new(Quickbooks::Base.oauth_consumer, token, refresh_token: refresh_token) end
qbo_case(type)
click to toggle source
# File lib/quickbooks/base.rb, line 16 def qbo_case(type) type.is_a?(Symbol) ? type.to_s.camelcase : type end
quickbooks_ruby_model(type, *args)
click to toggle source
# File lib/quickbooks/base.rb, line 25 def quickbooks_ruby_model(type, *args) generate_quickbooks_ruby_namespace(type, 'Model').constantize.new(*args) end
Also aliased as: qr_model
quickbooks_ruby_service(type)
click to toggle source
# File lib/quickbooks/base.rb, line 30 def quickbooks_ruby_service(type) generate_quickbooks_ruby_namespace(type, 'Service').constantize.new end
Also aliased as: qr_service
refresh_token()
click to toggle source
# File lib/quickbooks/base.rb, line 77 def refresh_token retrieve(:refresh_token) end
retrieve(type)
click to toggle source
# File lib/quickbooks/base.rb, line 85 def retrieve(type) meth = "persistent_#{type}" arr = Quickbooks::Base.send(meth).split('.') send_chain(arr) end
service_for(type)
click to toggle source
# File lib/quickbooks/base.rb, line 91 def service_for(type) service = quickbooks_ruby_service(type) service.access_token = oauth_client service.company_id = company_id service end
show(options = {})
click to toggle source
# File lib/quickbooks/base.rb, line 39 def show(options = {}) options = { per_page: 20, page: 1 }.merge(options) service = determine_service(options[:entity]) service.query(nil, options).entries.collect do |e| "QBID: #{e.id} DESC: #{description(e)}" end end
token()
click to toggle source
# File lib/quickbooks/base.rb, line 73 def token retrieve(:token) end
Private Instance Methods
determine_service(entity)
click to toggle source
# File lib/quickbooks/base.rb, line 104 def determine_service(entity) entity ? service_for(entity) : @service end
send_chain(arr)
click to toggle source
# File lib/quickbooks/base.rb, line 108 def send_chain(arr) arr.inject(@account) {|o, a| o.send(a) } end