Class: Quickeebooks::Windows::Service::Customer

Inherits:
ServiceBase
  • Object
show all
Defined in:
lib/quickeebooks/windows/service/customer.rb

Constant Summary

Constants inherited from ServiceBase

ServiceBase::XML_NS

Instance Attribute Summary

Attributes inherited from ServiceBase

#base_uri, #last_response_body, #last_response_xml, #oauth, #realm_id

Instance Method Summary collapse

Methods inherited from ServiceBase

#access_token=, #enforce_filter_order, #initialize, #url_for_base, #url_for_resource

Methods included from Logging

#log

Constructor Details

This class inherits a constructor from Quickeebooks::Windows::Service::ServiceBase

Instance Method Details

#create(customer) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/quickeebooks/windows/service/customer.rb', line 17

def create(customer)
  raise InvalidModelException unless customer.valid_for_create?

  # XML is a wrapped 'object' where the type is specified as an attribute
  #    <Object xsi:type="Invoice">
  xml_node = customer.to_xml(:name => 'Object')
  xml_node.set_attribute('xsi:type', 'Customer')
  xml = Quickeebooks::Shared::Service::OperationNode.new.add do |content|
    content << "<ExternalRealmId>#{self.realm_id}</ExternalRealmId>#{xml_node}"
  end
  perform_write(Quickeebooks::Windows::Model::Customer, xml)
end

#fetch_by_id(id, idDomain = 'QB', options = {}) ⇒ Object



12
13
14
15
# File 'lib/quickeebooks/windows/service/customer.rb', line 12

def fetch_by_id(id, idDomain = 'QB', options = {})
  url = "#{url_for_resource(Quickeebooks::Windows::Model::Customer::REST_RESOURCE)}/#{id}"
  fetch_object(Quickeebooks::Windows::Model::Customer, url, {:idDomain => idDomain})
end

#list(filters = [], page = 1, per_page = 20, sort = nil, options = {}) ⇒ Object



8
9
10
# File 'lib/quickeebooks/windows/service/customer.rb', line 8

def list(filters = [], page = 1, per_page = 20, sort = nil, options = {})
  fetch_collection(Quickeebooks::Windows::Model::Customer, nil, filters, page, per_page, sort, options)
end

#update(customer) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/quickeebooks/windows/service/customer.rb', line 30

def update(customer)
  # XML is a wrapped 'object' where the type is specified as an attribute
  #    <Object xsi:type="Invoice">

  # Intuit requires that some fields are unset / do not exist.
  customer. = nil
  customer.external_key = nil

  # unset Id fields in addresses, phones, email
  if customer.addresses
    customer.addresses.each {|address| address.id = nil }
  end
  if customer.email
    customer.email.id = nil
  end

  if customer.phones
    customer.phones.each {|phone| phone.id = nil }
  end

  if customer.web_site
    customer.web_site.id = nil
  end

  xml_node = customer.to_xml(:name => 'Object')
  xml_node.set_attribute('xsi:type', 'Customer')
  xml = Quickeebooks::Shared::Service::OperationNode.new.mod do |content|
    content << "<ExternalRealmId>#{self.realm_id}</ExternalRealmId>#{xml_node}"
  end
  perform_write(Quickeebooks::Windows::Model::Customer, xml)
end