quickeebooks 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +18 -18
- data/README.md +9 -2
- data/Rakefile +1 -1
- data/lib/quickeebooks.rb +37 -1
- data/lib/quickeebooks/online/model/account.rb +12 -1
- data/lib/quickeebooks/online/model/company_meta_data.rb +30 -0
- data/lib/quickeebooks/online/model/credit_card.rb +14 -0
- data/lib/quickeebooks/online/model/credit_charge_info.rb +17 -0
- data/lib/quickeebooks/online/model/credit_charge_response.rb +13 -0
- data/lib/quickeebooks/online/model/customer.rb +13 -4
- data/lib/quickeebooks/online/model/id.rb +21 -0
- data/lib/quickeebooks/online/model/intuit_type.rb +17 -0
- data/lib/quickeebooks/online/model/invoice.rb +25 -2
- data/lib/quickeebooks/online/model/invoice_header.rb +4 -2
- data/lib/quickeebooks/online/model/invoice_line_item.rb +7 -6
- data/lib/quickeebooks/online/model/item.rb +8 -2
- data/lib/quickeebooks/online/model/payment.rb +58 -0
- data/lib/quickeebooks/online/model/payment_detail.rb +12 -0
- data/lib/quickeebooks/online/model/payment_header.rb +24 -0
- data/lib/quickeebooks/online/model/payment_line_item.rb +15 -0
- data/lib/quickeebooks/online/service/account.rb +5 -5
- data/lib/quickeebooks/online/service/company_meta_data.rb +24 -0
- data/lib/quickeebooks/online/service/customer.rb +5 -5
- data/lib/quickeebooks/online/service/invoice.rb +39 -10
- data/lib/quickeebooks/online/service/item.rb +5 -5
- data/lib/quickeebooks/online/service/payment.rb +63 -0
- data/lib/quickeebooks/online/service/service_base.rb +62 -31
- data/lib/quickeebooks/version.rb +1 -1
- data/lib/quickeebooks/windows/model/account.rb +7 -0
- data/lib/quickeebooks/windows/model/address.rb +8 -0
- data/lib/quickeebooks/windows/model/custom_field.rb +1 -1
- data/lib/quickeebooks/windows/model/customer.rb +12 -1
- data/lib/quickeebooks/windows/model/customer_msg.rb +31 -0
- data/lib/quickeebooks/windows/model/error.rb +19 -0
- data/lib/quickeebooks/windows/model/external_key.rb +21 -0
- data/lib/quickeebooks/windows/model/id.rb +21 -0
- data/lib/quickeebooks/windows/model/invoice.rb +10 -2
- data/lib/quickeebooks/windows/model/invoice_header.rb +13 -15
- data/lib/quickeebooks/windows/model/invoice_line_item.rb +7 -7
- data/lib/quickeebooks/windows/model/item.rb +6 -3
- data/lib/quickeebooks/windows/model/object_ref.rb +14 -0
- data/lib/quickeebooks/windows/model/other_name.rb +16 -0
- data/lib/quickeebooks/windows/model/other_name_id.rb +21 -0
- data/lib/quickeebooks/windows/model/rest_response.rb +34 -0
- data/lib/quickeebooks/windows/model/sales_rep.rb +40 -0
- data/lib/quickeebooks/windows/model/sales_tax.rb +33 -0
- data/lib/quickeebooks/windows/model/ship_method.rb +31 -0
- data/lib/quickeebooks/windows/model/success.rb +17 -0
- data/lib/quickeebooks/windows/model/vendor.rb +16 -0
- data/lib/quickeebooks/windows/model/vendor_id.rb +21 -0
- data/lib/quickeebooks/windows/service/customer.rb +1 -1
- data/lib/quickeebooks/windows/service/customer_msg.rb +15 -0
- data/lib/quickeebooks/windows/service/invoice.rb +19 -1
- data/lib/quickeebooks/windows/service/item.rb +1 -1
- data/lib/quickeebooks/windows/service/sales_rep.rb +16 -0
- data/lib/quickeebooks/windows/service/sales_tax.rb +15 -0
- data/lib/quickeebooks/windows/service/service_base.rb +47 -8
- data/lib/quickeebooks/windows/service/ship_method.rb +15 -0
- data/quickeebooks.gemspec +2 -1
- data/spec/quickeebooks/online/company_meta_data_spec.rb +30 -0
- data/spec/quickeebooks/online/invoice_spec.rb +2 -2
- data/spec/quickeebooks/online/payment_spec.rb +23 -0
- data/spec/quickeebooks/online/services/account_spec.rb +28 -20
- data/spec/quickeebooks/online/services/company_meta_data_spec.rb +40 -0
- data/spec/quickeebooks/online/services/customer_spec.rb +32 -28
- data/spec/quickeebooks/online/services/invoice_spec.rb +52 -0
- data/spec/quickeebooks/online/services/service_base_spec.rb +17 -7
- data/spec/quickeebooks/windows/services/customer_spec.rb +49 -0
- data/spec/quickeebooks/windows/services/invoice_spec.rb +133 -0
- data/spec/quickeebooks/windows/services/sales_rep_spec.rb +47 -0
- data/spec/quickeebooks/windows/services/sales_taxes_spec.rb +41 -0
- data/spec/quickeebooks/windows/services/ship_method_spec.rb +38 -0
- data/spec/quickeebooks_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/xml/online/api_error.xml +6 -0
- data/spec/xml/online/company_meta_data.xml +37 -0
- data/spec/xml/online/determine_base_url.xml +10 -0
- data/spec/xml/online/invoice.xml +26 -31
- data/spec/xml/online/payment.xml +24 -0
- data/spec/xml/windows/invoice_success_create.xml +11 -0
- data/spec/xml/windows/invoices.xml +436 -0
- data/spec/xml/windows/sales_reps.xml +204 -0
- data/spec/xml/windows/sales_taxes.xml +34 -0
- data/spec/xml/windows/ship_methods.xml +139 -0
- metadata +80 -22
@@ -12,9 +12,12 @@ module Quickeebooks
|
|
12
12
|
|
13
13
|
XML_COLLECTION_NODE = 'Items'
|
14
14
|
XML_NODE = 'Item'
|
15
|
+
|
16
|
+
# https://services.intuit.com/sb/item/v2/<realmID>
|
17
|
+
REST_RESOURCE = "item"
|
15
18
|
|
16
19
|
xml_name 'Item'
|
17
|
-
xml_accessor :id, :from => 'Id'
|
20
|
+
xml_accessor :id, :from => 'Id', :as => Quickeebooks::Windows::Model::Id
|
18
21
|
xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
|
19
22
|
xml_accessor :external_key, :from => 'ExternalKey'
|
20
23
|
xml_accessor :synchronized, :from => 'Synchronized'
|
@@ -22,7 +25,7 @@ module Quickeebooks
|
|
22
25
|
xml_accessor :custom_fields, :from => 'CustomField', :as => [Quickeebooks::Windows::Model::CustomField]
|
23
26
|
xml_accessor :draft
|
24
27
|
xml_accessor :object_state, :from => 'ObjectState'
|
25
|
-
xml_accessor :item_parent_id, :from => 'ItemParentId'
|
28
|
+
xml_accessor :item_parent_id, :from => 'ItemParentId', :as => Quickeebooks::Windows::Model::Id
|
26
29
|
xml_accessor :item_parent_name, :from => 'ItemParentName'
|
27
30
|
xml_accessor :name, :from => 'Name'
|
28
31
|
xml_accessor :desc, :from => 'Desc'
|
@@ -31,7 +34,7 @@ module Quickeebooks
|
|
31
34
|
xml_accessor :active
|
32
35
|
xml_accessor :rate_percent, :from => 'RatePercent'
|
33
36
|
xml_accessor :type, :from => 'Type'
|
34
|
-
xml_accessor :uomid, :from => 'UOMId'
|
37
|
+
xml_accessor :uomid, :from => 'UOMId', :as => Quickeebooks::Windows::Model::Id
|
35
38
|
xml_accessor :uomabbrv, :from => 'UOMAbbrv'
|
36
39
|
xml_accessor :account_reference, :from => 'IncomeAccountRef', :as => Quickeebooks::Windows::Model::AccountReference
|
37
40
|
xml_accessor :purchase_desc, :from => 'PurchaseDesc'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Quickeebooks
|
2
|
+
module Windows
|
3
|
+
module Model
|
4
|
+
class ObjectRef < Quickeebooks::Windows::Model::IntuitType
|
5
|
+
|
6
|
+
xml_convention :camelcase
|
7
|
+
xml_accessor :id, :as => Quickeebooks::Windows::Model::Id
|
8
|
+
xml_accessor :sync_token, :as => Integer
|
9
|
+
xml_accessor :last_updated_time, :as => Time
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "quickeebooks"
|
2
|
+
require 'quickeebooks/windows/model/other_name_id'
|
3
|
+
|
4
|
+
module Quickeebooks
|
5
|
+
module Windows
|
6
|
+
module Model
|
7
|
+
class OtherName < Quickeebooks::Windows::Model::IntuitType
|
8
|
+
|
9
|
+
xml_convention :camelcase
|
10
|
+
xml_accessor :other_name_id, :from => 'OtherNameId', :as => Quickeebooks::Windows::Model::OtherNameId
|
11
|
+
xml_accessor :other_name_name
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "quickeebooks"
|
2
|
+
|
3
|
+
module Quickeebooks
|
4
|
+
module Windows
|
5
|
+
module Model
|
6
|
+
class OtherNameId < Quickeebooks::Windows::Model::IntuitType
|
7
|
+
|
8
|
+
DOMAIN = "QB"
|
9
|
+
|
10
|
+
xml_convention :camelcase
|
11
|
+
xml_accessor :idDomain, :from => '@idDomain' # Attribute with name 'idDomain'
|
12
|
+
xml_accessor :value, :from => :content
|
13
|
+
|
14
|
+
def initialize(value = nil)
|
15
|
+
self.idDomain = DOMAIN
|
16
|
+
self.value = value
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "quickeebooks/windows/model/success"
|
2
|
+
require "quickeebooks/windows/model/error"
|
3
|
+
|
4
|
+
module Quickeebooks
|
5
|
+
module Windows
|
6
|
+
module Model
|
7
|
+
class RestResponse < Quickeebooks::Windows::Model::IntuitType
|
8
|
+
|
9
|
+
xml_convention :camelcase
|
10
|
+
xml_accessor :success, :as => Quickeebooks::Windows::Model::Success
|
11
|
+
xml_accessor :error, :as => Quickeebooks::Windows::Model::Error
|
12
|
+
|
13
|
+
def success?
|
14
|
+
success != nil
|
15
|
+
end
|
16
|
+
|
17
|
+
def error?
|
18
|
+
error != nil
|
19
|
+
end
|
20
|
+
|
21
|
+
def to_s
|
22
|
+
s = "#<RestResponse>: "
|
23
|
+
if success?
|
24
|
+
s += "Success[#{success.request_name}] @ #{success.processed_time} - "
|
25
|
+
else
|
26
|
+
s += "Error[#{error.request_name}] @ #{error.processed_time} - "
|
27
|
+
s += "Code: #{error.code}, Desc: #{error.desc}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'quickeebooks'
|
2
|
+
require 'quickeebooks/windows/model/id'
|
3
|
+
require 'quickeebooks/windows/model/vendor'
|
4
|
+
require 'quickeebooks/windows/model/other_name'
|
5
|
+
require 'quickeebooks/windows/model/external_key'
|
6
|
+
require 'quickeebooks/windows/model/meta_data'
|
7
|
+
|
8
|
+
module Quickeebooks
|
9
|
+
module Windows
|
10
|
+
module Model
|
11
|
+
class SalesRep < Quickeebooks::Windows::Model::IntuitType
|
12
|
+
|
13
|
+
XML_COLLECTION_NODE = 'SalesReps'
|
14
|
+
XML_NODE = 'SalesRep'
|
15
|
+
|
16
|
+
# https://services.intuit.com/sb/salesrep/v2/<realmID>
|
17
|
+
REST_RESOURCE = "salesrep"
|
18
|
+
|
19
|
+
xml_convention :camelcase
|
20
|
+
xml_accessor :id, :as => Quickeebooks::Windows::Model::Id
|
21
|
+
xml_accessor :meta_data, :from => 'MetaData', :as => Quickeebooks::Windows::Model::MetaData
|
22
|
+
xml_accessor :external_key, :as => Quickeebooks::Windows::Model::ExternalKey
|
23
|
+
xml_accessor :synchronized
|
24
|
+
xml_accessor :name_of, :from => 'NameOf'
|
25
|
+
xml_accessor :vendor, :as => Quickeebooks::Windows::Model::Vendor
|
26
|
+
xml_accessor :other_name, :as => Quickeebooks::Windows::Model::OtherName
|
27
|
+
xml_accessor :initials
|
28
|
+
|
29
|
+
def vendor?
|
30
|
+
vendor != nil
|
31
|
+
end
|
32
|
+
|
33
|
+
def other_name?
|
34
|
+
other_name != nil
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'quickeebooks'
|
2
|
+
require 'quickeebooks/windows/model/id'
|
3
|
+
require 'quickeebooks/windows/model/external_key'
|
4
|
+
require 'quickeebooks/windows/model/custom_field'
|
5
|
+
require 'quickeebooks/windows/model/meta_data'
|
6
|
+
|
7
|
+
module Quickeebooks
|
8
|
+
module Windows
|
9
|
+
module Model
|
10
|
+
class SalesTax < Quickeebooks::Windows::Model::IntuitType
|
11
|
+
|
12
|
+
XML_COLLECTION_NODE = 'SalesTaxes'
|
13
|
+
XML_NODE = 'SalesTax'
|
14
|
+
|
15
|
+
# https://services.intuit.com/sb/salestax/v2/<realmID>
|
16
|
+
REST_RESOURCE = "salestax"
|
17
|
+
|
18
|
+
xml_convention :camelcase
|
19
|
+
xml_accessor :id, :as => Quickeebooks::Windows::Model::Id
|
20
|
+
xml_accessor :sync_token
|
21
|
+
xml_accessor :meta_data, :from => 'MetaData', :as => Quickeebooks::Windows::Model::MetaData
|
22
|
+
xml_accessor :external_key, :as => Quickeebooks::Windows::Model::ExternalKey
|
23
|
+
xml_accessor :synchronized
|
24
|
+
xml_accessor :custom_fields, :as => [Quickeebooks::Windows::Model::CustomField]
|
25
|
+
xml_accessor :name
|
26
|
+
xml_accessor :desc
|
27
|
+
xml_accessor :tax_rate, :as => Float
|
28
|
+
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'quickeebooks'
|
2
|
+
require 'quickeebooks/windows/model/id'
|
3
|
+
require 'quickeebooks/windows/model/external_key'
|
4
|
+
require 'quickeebooks/windows/model/custom_field'
|
5
|
+
require 'quickeebooks/windows/model/meta_data'
|
6
|
+
|
7
|
+
module Quickeebooks
|
8
|
+
module Windows
|
9
|
+
module Model
|
10
|
+
class ShipMethod < Quickeebooks::Windows::Model::IntuitType
|
11
|
+
|
12
|
+
XML_COLLECTION_NODE = 'ShipMethods'
|
13
|
+
XML_NODE = 'ShipMethod'
|
14
|
+
|
15
|
+
# https://services.intuit.com/sb/shipmethod/v2/<realmID>
|
16
|
+
REST_RESOURCE = "shipmethod"
|
17
|
+
|
18
|
+
xml_convention :camelcase
|
19
|
+
xml_accessor :id, :as => Quickeebooks::Windows::Model::Id
|
20
|
+
xml_accessor :sync_token
|
21
|
+
xml_accessor :meta_data, :from => 'MetaData', :as => Quickeebooks::Windows::Model::MetaData
|
22
|
+
xml_accessor :external_key, :as => Quickeebooks::Windows::Model::ExternalKey
|
23
|
+
xml_accessor :synchronized
|
24
|
+
xml_accessor :custom_fields, :as => [Quickeebooks::Windows::Model::CustomField]
|
25
|
+
xml_accessor :name
|
26
|
+
xml_accessor :active
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "quickeebooks/windows/model/object_ref"
|
2
|
+
module Quickeebooks
|
3
|
+
module Windows
|
4
|
+
module Model
|
5
|
+
class Success < Quickeebooks::Windows::Model::IntuitType
|
6
|
+
|
7
|
+
xml_convention :camelcase
|
8
|
+
|
9
|
+
xml_accessor :request_id, :from => '@RequestId'
|
10
|
+
xml_accessor :object_ref, :as => Quickeebooks::Windows::Model::ObjectRef
|
11
|
+
xml_accessor :request_name
|
12
|
+
xml_accessor :processed_time, :as => Time
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "quickeebooks"
|
2
|
+
require 'quickeebooks/windows/model/vendor_id'
|
3
|
+
|
4
|
+
module Quickeebooks
|
5
|
+
module Windows
|
6
|
+
module Model
|
7
|
+
class Vendor < Quickeebooks::Windows::Model::IntuitType
|
8
|
+
|
9
|
+
xml_convention :camelcase
|
10
|
+
xml_accessor :vendor_id, :from => 'VendorId', :as => Quickeebooks::Windows::Model::VendorId
|
11
|
+
xml_accessor :vendor_name
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "quickeebooks"
|
2
|
+
|
3
|
+
module Quickeebooks
|
4
|
+
module Windows
|
5
|
+
module Model
|
6
|
+
class VendorId < Quickeebooks::Windows::Model::IntuitType
|
7
|
+
|
8
|
+
DOMAIN = "QB"
|
9
|
+
|
10
|
+
xml_convention :camelcase
|
11
|
+
xml_accessor :idDomain, :from => '@idDomain' # Attribute with name 'idDomain'
|
12
|
+
xml_accessor :value, :from => :content
|
13
|
+
|
14
|
+
def initialize(value = nil)
|
15
|
+
self.idDomain = DOMAIN
|
16
|
+
self.value = value
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -11,7 +11,7 @@ module Quickeebooks
|
|
11
11
|
custom_field_query += '<CustomerQuery xmlns="http://www.intuit.com/sb/cdm/v2">'
|
12
12
|
custom_field_query += "<StartPage>#{page}</StartPage><ChunkSize>#{per_page}</ChunkSize>"
|
13
13
|
custom_field_query += '</CustomerQuery>'
|
14
|
-
fetch_collection(
|
14
|
+
fetch_collection(Quickeebooks::Windows::Model::Customer, custom_field_query.strip, filters, page, per_page, sort, options)
|
15
15
|
end
|
16
16
|
|
17
17
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'quickeebooks/windows/service/service_base'
|
2
|
+
|
3
|
+
module Quickeebooks
|
4
|
+
module Windows
|
5
|
+
module Service
|
6
|
+
class CustomerMsg < Quickeebooks::Windows::Service::ServiceBase
|
7
|
+
|
8
|
+
def list(filters = [], page = 1, per_page = 20, sort = nil, options = {})
|
9
|
+
fetch_collection(Quickeebooks::Windows::Model::CustomerMsg, nil, filters, page, per_page, sort, options)
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -18,7 +18,25 @@ module Quickeebooks
|
|
18
18
|
# sort: +Sort+ object
|
19
19
|
# options: +Hash+ extra arguments
|
20
20
|
def list(filters = [], page = 1, per_page = 20, sort = nil, options = {})
|
21
|
-
fetch_collection(
|
21
|
+
fetch_collection(Quickeebooks::Windows::Model::Invoice, nil, filters, page, per_page, sort, options)
|
22
|
+
end
|
23
|
+
|
24
|
+
def invoice_as_pdf(invoice_id, destination_file_name)
|
25
|
+
raise NoMethodError, 'invoice_as_pdf is not implemented in Quickeebooks for Windows, only available in the Online adapter.'
|
26
|
+
end
|
27
|
+
|
28
|
+
def create(invoice)
|
29
|
+
# XML is a wrapped 'object' where the type is specified as an attribute
|
30
|
+
# <Object xsi:type="Invoice">
|
31
|
+
xml_node = invoice.to_xml(:name => 'Object')
|
32
|
+
xml_node.set_attribute('xsi:type', 'Invoice')
|
33
|
+
xml = <<-XML
|
34
|
+
<Add xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" RequestId="#{guid}" xmlns="http://www.intuit.com/sb/cdm/v2">
|
35
|
+
<ExternalRealmId>#{self.realm_id}</ExternalRealmId>
|
36
|
+
#{xml_node}
|
37
|
+
</Add>
|
38
|
+
XML
|
39
|
+
perform_write(Quickeebooks::Windows::Model::Invoice, xml)
|
22
40
|
end
|
23
41
|
|
24
42
|
end
|
@@ -11,7 +11,7 @@ module Quickeebooks
|
|
11
11
|
custom_field_query += '<ItemQuery xmlns="http://www.intuit.com/sb/cdm/v2">'
|
12
12
|
custom_field_query += "<StartPage>#{page}</StartPage><ChunkSize>#{per_page}</ChunkSize>"
|
13
13
|
custom_field_query += '<CustomFieldEnable>true</CustomFieldEnable></ItemQuery>'
|
14
|
-
fetch_collection(
|
14
|
+
fetch_collection(Quickeebooks::Windows::Model::Item, custom_field_query.strip, filters, page, per_page, sort, options)
|
15
15
|
end
|
16
16
|
|
17
17
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'quickeebooks/windows/model/sales_rep'
|
2
|
+
require 'quickeebooks/windows/service/service_base'
|
3
|
+
|
4
|
+
module Quickeebooks
|
5
|
+
module Windows
|
6
|
+
module Service
|
7
|
+
class SalesRep < Quickeebooks::Windows::Service::ServiceBase
|
8
|
+
|
9
|
+
def list(filters = [], page = 1, per_page = 20, sort = nil, options = {})
|
10
|
+
fetch_collection(Quickeebooks::Windows::Model::SalesRep, nil, filters, page, per_page, sort, options)
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'quickeebooks/windows/service/service_base'
|
2
|
+
|
3
|
+
module Quickeebooks
|
4
|
+
module Windows
|
5
|
+
module Service
|
6
|
+
class SalesTax < Quickeebooks::Windows::Service::ServiceBase
|
7
|
+
|
8
|
+
def list(filters = [], page = 1, per_page = 20, sort = nil, options = {})
|
9
|
+
fetch_collection(Quickeebooks::Windows::Model::SalesTax, nil, filters, page, per_page, sort, options)
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rexml/document'
|
2
2
|
require 'uri'
|
3
3
|
require 'cgi'
|
4
|
+
require 'uuidtools'
|
4
5
|
|
5
6
|
class IntuitRequestException < Exception
|
6
7
|
attr_accessor :code, :cause
|
@@ -23,9 +24,24 @@ module Quickeebooks
|
|
23
24
|
|
24
25
|
XML_NS = %{xmlns:ns2="http://www.intuit.com/sb/cdm/qbo" xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:ns3="http://www.intuit.com/sb/cdm"}
|
25
26
|
|
26
|
-
def initialize(oauth_access_token, realm_id)
|
27
|
+
def initialize(oauth_access_token = nil, realm_id = nil)
|
27
28
|
@base_uri = 'https://services.intuit.com/sb'
|
28
|
-
|
29
|
+
|
30
|
+
if !oauth_access_token.nil? && !realm_id.nil?
|
31
|
+
msg = "Quickeebooks::Windows::ServiceBase - "
|
32
|
+
msg += "This version of the constructor is deprecated. "
|
33
|
+
msg += "Use the no-arg constructor and set the AccessToken and the RealmID using the accessors."
|
34
|
+
warn(msg)
|
35
|
+
access_token = oauth_access_token
|
36
|
+
realm_id = realm_id
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def access_token=(token)
|
41
|
+
@oauth = token
|
42
|
+
end
|
43
|
+
|
44
|
+
def realm_id=(realm_id)
|
29
45
|
@realm_id = realm_id
|
30
46
|
end
|
31
47
|
|
@@ -36,6 +52,10 @@ module Quickeebooks
|
|
36
52
|
def url_for_base(raw)
|
37
53
|
"#{@base_uri}/#{raw}/v2/#{@realm_id}"
|
38
54
|
end
|
55
|
+
|
56
|
+
def guid
|
57
|
+
UUIDTools::UUID.random_create.to_s.gsub('-', '')
|
58
|
+
end
|
39
59
|
|
40
60
|
private
|
41
61
|
|
@@ -52,15 +72,13 @@ module Quickeebooks
|
|
52
72
|
%Q{<?xml version="1.0" encoding="utf-8"?>\n#{xml.strip}}
|
53
73
|
end
|
54
74
|
|
55
|
-
def fetch_collection(
|
56
|
-
raise ArgumentError, "missing resource to fetch" if resource.nil?
|
57
|
-
raise ArgumentError, "missing result container" if container.nil?
|
75
|
+
def fetch_collection(model, custom_field_query = nil, filters = [], page = 1, per_page = 20, sort = nil, options ={})
|
58
76
|
raise ArgumentError, "missing model to instantiate" if model.nil?
|
59
77
|
|
60
78
|
if custom_field_query != nil
|
61
|
-
response = do_http_post(url_for_resource(
|
79
|
+
response = do_http_post(url_for_resource(model::REST_RESOURCE), custom_field_query, {}, {'Content-Type' => 'text/xml'})
|
62
80
|
else
|
63
|
-
response = do_http_get(url_for_resource(
|
81
|
+
response = do_http_get(url_for_resource(model::REST_RESOURCE), {}, {'Content-Type' => 'text/html'})
|
64
82
|
end
|
65
83
|
if response
|
66
84
|
collection = Quickeebooks::Collection.new
|
@@ -78,7 +96,7 @@ module Quickeebooks
|
|
78
96
|
collection.entries = results
|
79
97
|
collection.current_page = 1 # TODO: fix this
|
80
98
|
rescue => ex
|
81
|
-
log("Error parsing XML: #{ex.message}")
|
99
|
+
#log("Error parsing XML: #{ex.message}")
|
82
100
|
raise IntuitRequestException.new("Error parsing XML: #{ex.message}")
|
83
101
|
end
|
84
102
|
collection
|
@@ -86,6 +104,27 @@ module Quickeebooks
|
|
86
104
|
nil
|
87
105
|
end
|
88
106
|
end
|
107
|
+
|
108
|
+
def perform_write(model, body = "", params = {}, headers = {})
|
109
|
+
url = url_for_resource(model::REST_RESOURCE)
|
110
|
+
unless headers.has_key?('Content-Type')
|
111
|
+
headers['Content-Type'] = 'text/xml'
|
112
|
+
end
|
113
|
+
response = do_http_post(url, body.strip, params, headers)
|
114
|
+
|
115
|
+
result = nil
|
116
|
+
if response
|
117
|
+
case response.code.to_i
|
118
|
+
when 200
|
119
|
+
result = Quickeebooks::Windows::Model::RestResponse.from_xml(response.body)
|
120
|
+
when 401
|
121
|
+
raise IntuitRequestException.new("Authorization failure: token timed out?")
|
122
|
+
when 404
|
123
|
+
raise IntuitRequestException.new("Resource Not Found: Check URL and try again")
|
124
|
+
end
|
125
|
+
end
|
126
|
+
result
|
127
|
+
end
|
89
128
|
|
90
129
|
def do_http_post(url, body = "", params = {}, headers = {}) # throws IntuitRequestException
|
91
130
|
url = add_query_string_to_url(url, params)
|