Class: Quickeebooks::Windows::Service::Invoice

Inherits:
ServiceBase
  • Object
show all
Defined in:
lib/quickeebooks/windows/service/invoice.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(invoice) ⇒ Object



32
33
34
35
36
37
38
39
40
41
# File 'lib/quickeebooks/windows/service/invoice.rb', line 32

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

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



27
28
29
30
# File 'lib/quickeebooks/windows/service/invoice.rb', line 27

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

#invoice_as_pdf(invoice_id, destination_file_name) ⇒ Object

Raises:

  • (NoMethodError)


23
24
25
# File 'lib/quickeebooks/windows/service/invoice.rb', line 23

def invoice_as_pdf(invoice_id, destination_file_name)
  raise NoMethodError, 'invoice_as_pdf is not implemented in Quickeebooks for Windows, only available in the Online adapter.'
end

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

Fetch a Collection of Invoice objects Arguments: filters: Array of Filter objects to apply page: Fixnum Starting page per_page: Fixnum How many results to fetch per page sort: Sort object options: Hash extra arguments



19
20
21
# File 'lib/quickeebooks/windows/service/invoice.rb', line 19

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

#update(invoice) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/quickeebooks/windows/service/invoice.rb', line 43

def update(invoice)
  # 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.
  invoice. = nil
  invoice.external_key = nil

  # unset Id fields in addresses
  if invoice.header.billing_address
    invoice.header.billing_address.id = nil
  end

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