quickeebooks 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- quickeebooks (0.0.6)
4
+ quickeebooks (0.0.8)
5
5
  activemodel
6
6
  nokogiri
7
7
  oauth
data/lib/quickeebooks.rb CHANGED
@@ -124,6 +124,7 @@ require 'quickeebooks/windows/model/payment_detail'
124
124
  require 'quickeebooks/windows/model/credit_card'
125
125
  require 'quickeebooks/windows/model/credit_charge_info'
126
126
  require 'quickeebooks/windows/model/credit_charge_response'
127
+ require 'quickeebooks/windows/model/clazz'
127
128
 
128
129
  # Services
129
130
  require 'quickeebooks/windows/service/filter'
@@ -138,3 +139,4 @@ require 'quickeebooks/windows/service/sales_tax'
138
139
  require 'quickeebooks/windows/service/customer_msg'
139
140
  require 'quickeebooks/windows/service/company_meta_data'
140
141
  require 'quickeebooks/windows/service/payment'
142
+ require 'quickeebooks/windows/service/clazz'
@@ -80,7 +80,7 @@ module Quickeebooks
80
80
  # store service base response
81
81
  # so it can be accessed by other methods
82
82
  def service_response
83
- @service_response ||= @oauth.request(:get, qb_base_uri_with_realm_id)
83
+ @service_response ||= check_response(@oauth.request(:get, qb_base_uri_with_realm_id))
84
84
  end
85
85
 
86
86
  # allows for reuse of service base's xml doc
@@ -1,5 +1,5 @@
1
1
  module Quickeebooks
2
2
 
3
- VERSION = "0.0.7"
3
+ VERSION = "0.0.8"
4
4
 
5
5
  end
@@ -0,0 +1,66 @@
1
+ require "quickeebooks"
2
+ require "quickeebooks/windows/model/meta_data"
3
+ require "quickeebooks/windows/model/id"
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 Clazz < Quickeebooks::Windows::Model::IntuitType
11
+ include ActiveModel::Validations
12
+
13
+ XML_COLLECTION_NODE = 'Classes'
14
+ XML_NODE = 'Class'
15
+
16
+ # https://services.intuit.com/sb/customer/v2/<realmID>
17
+ REST_RESOURCE = "class"
18
+
19
+ xml_convention :camelcase
20
+ xml_accessor :id, :from => 'Id', :as => Quickeebooks::Windows::Model::Id
21
+ xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
22
+ xml_accessor :synchronized, :from => 'Synchronized'
23
+ xml_accessor :meta_data, :from => 'MetaData', :as => Quickeebooks::Windows::Model::MetaData
24
+ xml_accessor :custom_fields, :from => 'CustomField', :as => [Quickeebooks::Windows::Model::CustomField]
25
+ xml_accessor :draft
26
+ xml_accessor :object_state
27
+ xml_accessor :name
28
+ xml_accessor :active
29
+ xml_accessor :class_parent_id, :from => 'ClassParentId', :as => Quickeebooks::Windows::Model::Id
30
+ xml_accessor :class_parent_name, :from => 'ClassParentName'
31
+
32
+ validates_length_of :name, :minimum => 1, :maximum => 256
33
+
34
+ def active?
35
+ active == 'true'
36
+ end
37
+
38
+ def valid_for_update?
39
+ if sync_token.nil?
40
+ errors.add(:sync_token, "Missing required attribute SyncToken for update")
41
+ end
42
+ errors.empty?
43
+ end
44
+
45
+ def valid_for_create?
46
+ valid?
47
+ if type_of.nil?
48
+ errors.add(:type_of, "Missing required attribute TypeOf for Create")
49
+ end
50
+ errors.empty?
51
+ end
52
+
53
+ def to_xml_ns(options = {})
54
+ to_xml
55
+ end
56
+
57
+ # To delete an account Intuit requires we provide Id and SyncToken fields
58
+ def valid_for_deletion?
59
+ return false if(id.nil? || sync_token.nil?)
60
+ id.to_i > 0 && !sync_token.to_s.empty? && sync_token.to_i >= 0
61
+ end
62
+
63
+ end
64
+ end
65
+ end
66
+ end
@@ -15,6 +15,11 @@ module Quickeebooks
15
15
  self.idDomain = DOMAIN
16
16
  self.value = value
17
17
  end
18
+
19
+ def to_i
20
+ self.value.to_i
21
+ end
22
+
18
23
  end
19
24
  end
20
25
  end
@@ -0,0 +1,20 @@
1
+ require 'quickeebooks/windows/model/clazz'
2
+ require 'quickeebooks/windows/service/service_base'
3
+
4
+ module Quickeebooks
5
+ module Windows
6
+ module Service
7
+ class Clazz < Quickeebooks::Windows::Service::ServiceBase
8
+
9
+ def list(filters = [], page = 1, per_page = 20, sort = nil, options = {})
10
+ custom_field_query = '<?xml version="1.0" encoding="utf-8"?>'
11
+ custom_field_query += '<ClassQuery xmlns="http://www.intuit.com/sb/cdm/v2">'
12
+ custom_field_query += "<StartPage>#{page}</StartPage><ChunkSize>#{per_page}</ChunkSize>"
13
+ custom_field_query += '</ClassQuery>'
14
+ fetch_collection(Quickeebooks::Windows::Model::Clazz, custom_field_query.strip, filters, page, per_page, sort, options)
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,38 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
2
+ require "fakeweb"
3
+ require "oauth"
4
+ require "quickeebooks"
5
+
6
+ describe "Quickeebooks::Windows::Service::Clazz" do
7
+ before(:all) do
8
+ FakeWeb.allow_net_connect = false
9
+ qb_key = "key"
10
+ qb_secret = "secreet"
11
+
12
+ @realm_id = "9991111222"
13
+ @base_uri = "https://qbo.intuit.com/qbo36"
14
+ @oauth_consumer = OAuth::Consumer.new(qb_key, qb_key, {
15
+ :site => "https://oauth.intuit.com",
16
+ :request_token_path => "/oauth/v1/get_request_token",
17
+ :authorize_path => "/oauth/v1/get_access_token",
18
+ :access_token_path => "/oauth/v1/get_access_token"
19
+ })
20
+ @oauth = OAuth::AccessToken.new(@oauth_consumer, "blah", "blah")
21
+ end
22
+
23
+ it "can fetch a list of classes" do
24
+ xml = File.read(File.dirname(__FILE__) + "/../../../xml/windows/classes.xml")
25
+ model = Quickeebooks::Windows::Model::Clazz
26
+ service = Quickeebooks::Windows::Service::Clazz.new
27
+ service.access_token = @oauth
28
+ service.realm_id = @realm_id
29
+ FakeWeb.register_uri(:post, service.url_for_resource(model::REST_RESOURCE), :status => ["200", "OK"], :body => xml)
30
+ classes = service.list
31
+ classes.entries.count.should == 3
32
+ entry = classes.entries.first
33
+ entry.name.should == "Bugay"
34
+ entry.id.to_i.should == 157
35
+ entry.active?.should == true
36
+ end
37
+
38
+ end
@@ -0,0 +1,41 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <RestResponse xmlns="http://www.intuit.com/sb/cdm/v2">
3
+ <Classes>
4
+ <Class>
5
+ <Id idDomain="QB">157</Id>
6
+ <SyncToken>1</SyncToken>
7
+ <MetaData>
8
+ <CreateTime>2012-10-19T21:57:46Z</CreateTime>
9
+ <LastUpdatedTime>2012-10-19T21:57:46Z</LastUpdatedTime>
10
+ </MetaData>
11
+ <ExternalKey idDomain="QB">157</ExternalKey>
12
+ <Synchronized>true</Synchronized>
13
+ <Name>Bugay</Name>
14
+ <Active>true</Active>
15
+ </Class>
16
+ <Class>
17
+ <Id idDomain="QB">356</Id>
18
+ <SyncToken>1</SyncToken>
19
+ <MetaData>
20
+ <CreateTime>2012-10-17T22:07:11Z</CreateTime>
21
+ <LastUpdatedTime>2012-10-17T22:07:11Z</LastUpdatedTime>
22
+ </MetaData>
23
+ <ExternalKey idDomain="QB">356</ExternalKey>
24
+ <Synchronized>true</Synchronized>
25
+ <Name>Nudo Petit</Name>
26
+ <Active>true</Active>
27
+ </Class>
28
+ <Class>
29
+ <Id idDomain="QB">955</Id>
30
+ <SyncToken>1</SyncToken>
31
+ <MetaData>
32
+ <CreateTime>2012-10-17T21:51:30Z</CreateTime>
33
+ <LastUpdatedTime>2012-10-17T21:51:30Z</LastUpdatedTime>
34
+ </MetaData>
35
+ <ExternalKey idDomain="QB">955</ExternalKey>
36
+ <Synchronized>true</Synchronized>
37
+ <Name>Radog</Name>
38
+ <Active>true</Active>
39
+ </Class>
40
+ </Classes>
41
+ </RestResponse>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quickeebooks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-01 00:00:00.000000000 Z
12
+ date: 2012-10-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: roxml
@@ -225,6 +225,7 @@ files:
225
225
  - lib/quickeebooks/windows/model/account_detail_type.rb
226
226
  - lib/quickeebooks/windows/model/account_reference.rb
227
227
  - lib/quickeebooks/windows/model/address.rb
228
+ - lib/quickeebooks/windows/model/clazz.rb
228
229
  - lib/quickeebooks/windows/model/company_meta_data.rb
229
230
  - lib/quickeebooks/windows/model/credit_card.rb
230
231
  - lib/quickeebooks/windows/model/credit_charge_info.rb
@@ -267,6 +268,7 @@ files:
267
268
  - lib/quickeebooks/windows/model/vendor_reference.rb
268
269
  - lib/quickeebooks/windows/model/web_site.rb
269
270
  - lib/quickeebooks/windows/service/account.rb
271
+ - lib/quickeebooks/windows/service/clazz.rb
270
272
  - lib/quickeebooks/windows/service/company_meta_data.rb
271
273
  - lib/quickeebooks/windows/service/customer.rb
272
274
  - lib/quickeebooks/windows/service/customer_msg.rb
@@ -297,6 +299,7 @@ files:
297
299
  - spec/quickeebooks/online/services/service_base_spec.rb
298
300
  - spec/quickeebooks/online/services/sort_spec.rb
299
301
  - spec/quickeebooks/windows/customer_spec.rb
302
+ - spec/quickeebooks/windows/services/class_spec.rb
300
303
  - spec/quickeebooks/windows/services/company_meta_data_spec.rb
301
304
  - spec/quickeebooks/windows/services/customer_spec.rb
302
305
  - spec/quickeebooks/windows/services/invoice_spec.rb
@@ -318,6 +321,7 @@ files:
318
321
  - spec/xml/online/invoice.xml
319
322
  - spec/xml/online/payment.xml
320
323
  - spec/xml/online/user.xml
324
+ - spec/xml/windows/classes.xml
321
325
  - spec/xml/windows/company_meta_data.xml
322
326
  - spec/xml/windows/customer.xml
323
327
  - spec/xml/windows/customer_create_success.xml