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
qr_model(type, *args)
qr_service(type)
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