Module: QboApi::ApiMethods

Included in:
QboApi
Defined in:
lib/qbo_api/api_methods.rb

Instance Method Summary collapse

Instance Method Details

#all(entity, max: 1000, select: nil, inactive: false, params: nil, &block) ⇒ Object



4
5
6
7
8
9
10
11
12
# File 'lib/qbo_api/api_methods.rb', line 4

def all(entity, max: 1000, select: nil, inactive: false, params: nil, &block)
  enumerator = create_all_enumerator(entity, max: max, select: select, inactive: inactive, params: params)

  if block_given?
    enumerator.each(&block)
  else
    enumerator
  end
end

#create(entity, payload:, params: nil) ⇒ Object



46
47
48
# File 'lib/qbo_api/api_methods.rb', line 46

def create(entity, payload:, params: nil)
  request(:post, entity: entity, path: entity_path(entity), payload: payload, params: params)
end

#deactivate(entity, id:) ⇒ Object



63
64
65
66
67
68
# File 'lib/qbo_api/api_methods.rb', line 63

def deactivate(entity, id:)
  err_msg = "Deactivate is only for name list entities. Use .delete instead"
  raise QboApi::NotImplementedError.new, err_msg unless is_name_list_entity?(entity)
  payload = set_deactivate(entity, id)
  request(:post, entity: entity, path: entity_path(entity), payload: payload)
end

#delete(entity, id:) ⇒ Object



55
56
57
58
59
60
61
# File 'lib/qbo_api/api_methods.rb', line 55

def delete(entity, id:)
  err_msg = "Delete is only for transaction entities. Use .deactivate instead"
  raise QboApi::NotImplementedError.new, err_msg unless is_transaction_entity?(entity)
  path = add_params_to_path(path: entity_path(entity), params: { operation: :delete })
  payload = set_update(entity, id)
  request(:post, entity: entity, path: path, payload: payload)
end

#get(entity, id_or_query_filter_args, params: nil) ⇒ Object

Examples:

get(:customer, 5)

See Also:



23
24
25
26
27
28
29
30
# File 'lib/qbo_api/api_methods.rb', line 23

def get(entity, id_or_query_filter_args, params: nil)
  if id_or_query_filter_args.is_a?(Array)
    get_by_query_filter(entity, id_or_query_filter_args, params: params)
  else
    path = "#{entity_path(entity)}/#{id_or_query_filter_args}"
    request(:get, entity: entity, path: path, params: params)
  end
end

#get_by_query_filter(entity, query_filter_args, params: nil) ⇒ Object

Examples:

get_by_query_filter(:customer, ["DisplayName", "Dukes Basketball Camp"])
get_by_query_filter(:customer, ["DisplayName", "LIKE", "Dukes%"])
get_by_query_filter(:vendor, ["DisplayName", "IN", "(true, false)"])
get_by_query_filter(:customer, ["DisplayName", "Amy's Bird Sanctuary"])


37
38
39
40
41
42
43
44
# File 'lib/qbo_api/api_methods.rb', line 37

def get_by_query_filter(entity, query_filter_args, params: nil)
  query_str = get_query_str(entity, query_filter_args)
  if resp = query(query_str, params: params)
    resp.size == 1 ? resp[0] : resp
  else
    false
  end
end

#query(query, params: nil) ⇒ Object



14
15
16
17
18
# File 'lib/qbo_api/api_methods.rb', line 14

def query(query, params: nil)
  path = "#{realm_id}/query?query=#{CGI.escape(query)}"
  entity = extract_entity_from_query(query, to_sym: true)
  request(:get, entity: entity, path: path, params: params)
end

#update(entity, id:, payload:, params: nil) ⇒ Object



50
51
52
53
# File 'lib/qbo_api/api_methods.rb', line 50

def update(entity, id:, payload:, params: nil)
  payload.merge!(set_update(entity, id))
  request(:post, entity: entity, path: entity_path(entity), payload: payload, params: params)
end