quickeebooks 0.1.8 → 0.1.9

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.
Files changed (56) hide show
  1. data/Gemfile.lock +42 -11
  2. data/Guardfile +8 -0
  3. data/HISTORY.md +5 -0
  4. data/coverage/index.html +6201 -2451
  5. data/lib/quickeebooks.rb +16 -1
  6. data/lib/quickeebooks/online/model/bill_payment.rb +26 -0
  7. data/lib/quickeebooks/online/model/bill_payment_header.rb +24 -0
  8. data/lib/quickeebooks/online/model/bill_payment_line_item.rb +13 -0
  9. data/lib/quickeebooks/online/model/customer.rb +0 -42
  10. data/lib/quickeebooks/online/model/id.rb +9 -0
  11. data/lib/quickeebooks/online/model/tracking_class.rb +43 -0
  12. data/lib/quickeebooks/online/service/bill_payment.rb +16 -0
  13. data/lib/quickeebooks/online/service/invoice.rb +3 -3
  14. data/lib/quickeebooks/online/service/service_base.rb +4 -4
  15. data/lib/quickeebooks/online/service/tracking_class.rb +13 -0
  16. data/lib/quickeebooks/version.rb +1 -1
  17. data/lib/quickeebooks/windows/model/id.rb +8 -2
  18. data/lib/quickeebooks/windows/model/id_set.rb +24 -0
  19. data/lib/quickeebooks/windows/model/intuit_type.rb +1 -1
  20. data/lib/quickeebooks/windows/model/ng_id.rb +24 -0
  21. data/lib/quickeebooks/windows/model/ng_id_set.rb +28 -0
  22. data/lib/quickeebooks/windows/model/payment.rb +14 -0
  23. data/lib/quickeebooks/windows/model/payment_header.rb +38 -12
  24. data/lib/quickeebooks/windows/model/payment_line_item.rb +2 -1
  25. data/lib/quickeebooks/windows/model/payment_method.rb +28 -0
  26. data/lib/quickeebooks/windows/model/sync_status_param.rb +28 -0
  27. data/lib/quickeebooks/windows/model/sync_status_request.rb +31 -0
  28. data/lib/quickeebooks/windows/model/sync_status_response.rb +156 -0
  29. data/lib/quickeebooks/windows/service/payment.rb +14 -0
  30. data/lib/quickeebooks/windows/service/payment_method.rb +24 -0
  31. data/lib/quickeebooks/windows/service/sync_status.rb +34 -0
  32. data/quickeebooks.gemspec +3 -1
  33. data/spec/quickeebooks/online/bill_payment_spec.rb +18 -0
  34. data/spec/quickeebooks/online/id_spec.rb +18 -0
  35. data/spec/quickeebooks/online/services/bill_payment_spec.rb +69 -0
  36. data/spec/quickeebooks/online/services/invoice_spec.rb +12 -0
  37. data/spec/quickeebooks/online/services/tracking_class_spec.rb +99 -0
  38. data/spec/quickeebooks/online/tracking_class_spec.rb +32 -0
  39. data/spec/quickeebooks/windows/id_spec.rb +18 -0
  40. data/spec/quickeebooks/windows/services/payment_method_spec.rb +36 -0
  41. data/spec/quickeebooks/windows/services/payment_spec.rb +30 -0
  42. data/spec/quickeebooks/windows/services/sync_status_spec.rb +35 -0
  43. data/spec/spec_helper.rb +1 -2
  44. data/spec/xml/online/bill_payment.xml +20 -0
  45. data/spec/xml/online/bill_payment2.xml +20 -0
  46. data/spec/xml/online/bill_payments.xml +26 -0
  47. data/spec/xml/online/deleted_invoice.xml +2 -0
  48. data/spec/xml/online/tracking_class.xml +11 -0
  49. data/spec/xml/online/tracking_class_updated.xml +11 -0
  50. data/spec/xml/online/tracking_classes.xml +26 -0
  51. data/spec/xml/windows/payment_create_success.xml +11 -0
  52. data/spec/xml/windows/payment_methods.xml +121 -0
  53. data/spec/xml/windows/sync_status_responses.xml +186 -0
  54. data/tmp/console.rb +10 -0
  55. metadata +71 -5
  56. data/quickeebooks-0.1.7.gem +0 -0
@@ -115,6 +115,10 @@ require 'quickeebooks/online/model/employee'
115
115
  require 'quickeebooks/online/model/time_activity'
116
116
  require 'quickeebooks/online/model/time_activity_employee'
117
117
  require 'quickeebooks/online/model/time_activity_vendor'
118
+ require 'quickeebooks/online/model/bill_payment'
119
+ require 'quickeebooks/online/model/bill_payment_header'
120
+ require 'quickeebooks/online/model/bill_payment_line_item'
121
+ require 'quickeebooks/online/model/tracking_class'
118
122
 
119
123
  # Services
120
124
  require 'quickeebooks/online/service/filter'
@@ -124,6 +128,7 @@ require 'quickeebooks/online/service/company_meta_data'
124
128
  require 'quickeebooks/online/service/customer'
125
129
  require 'quickeebooks/online/service/account'
126
130
  require 'quickeebooks/online/service/bill'
131
+ require 'quickeebooks/online/service/bill_payment'
127
132
  require 'quickeebooks/online/service/invoice'
128
133
  require 'quickeebooks/online/service/item'
129
134
  require 'quickeebooks/online/service/entitlement'
@@ -134,13 +139,16 @@ require 'quickeebooks/online/service/sales_receipt'
134
139
  require 'quickeebooks/online/service/journal_entry'
135
140
  require 'quickeebooks/online/service/employee'
136
141
  require 'quickeebooks/online/service/time_activity'
137
-
142
+ require 'quickeebooks/online/service/tracking_class'
138
143
 
139
144
  #== Windows
140
145
 
141
146
  # Models
142
147
  require 'quickeebooks/windows/model/intuit_type'
143
148
  require 'quickeebooks/windows/model/id'
149
+ require 'quickeebooks/windows/model/ng_id'
150
+ require 'quickeebooks/windows/model/ng_id_set'
151
+ require 'quickeebooks/windows/model/id_set'
144
152
  require 'quickeebooks/windows/model/custom_field'
145
153
  require 'quickeebooks/windows/model/price'
146
154
  require 'quickeebooks/windows/model/customer'
@@ -163,6 +171,7 @@ require 'quickeebooks/windows/model/sales_tax'
163
171
  require 'quickeebooks/windows/model/customer_msg'
164
172
  require 'quickeebooks/windows/model/company_meta_data'
165
173
  require 'quickeebooks/windows/model/payment'
174
+ require 'quickeebooks/windows/model/payment_method'
166
175
  require 'quickeebooks/windows/model/payment_header'
167
176
  require 'quickeebooks/windows/model/payment_line_item'
168
177
  require 'quickeebooks/windows/model/payment_detail'
@@ -180,6 +189,10 @@ require 'quickeebooks/windows/model/time_activity_vendor'
180
189
  require 'quickeebooks/windows/model/job'
181
190
  require 'quickeebooks/windows/model/sync_activity_response'
182
191
  require 'quickeebooks/windows/model/sync_status_drill_down'
192
+ require 'quickeebooks/windows/model/sync_status_param'
193
+ require 'quickeebooks/windows/model/sync_status_request'
194
+ require 'quickeebooks/windows/model/sync_status_response'
195
+
183
196
 
184
197
  # Services
185
198
  require 'quickeebooks/windows/service/filter'
@@ -196,9 +209,11 @@ require 'quickeebooks/windows/service/sales_tax'
196
209
  require 'quickeebooks/windows/service/customer_msg'
197
210
  require 'quickeebooks/windows/service/company_meta_data'
198
211
  require 'quickeebooks/windows/service/payment'
212
+ require 'quickeebooks/windows/service/payment_method'
199
213
  require 'quickeebooks/windows/service/clazz'
200
214
  require 'quickeebooks/windows/service/access_token'
201
215
  require 'quickeebooks/windows/service/employee'
202
216
  require 'quickeebooks/windows/service/time_activity'
203
217
  require 'quickeebooks/windows/service/job'
204
218
  require 'quickeebooks/windows/service/sync_activity'
219
+ require 'quickeebooks/windows/service/sync_status'
@@ -0,0 +1,26 @@
1
+ # https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v2/0400_quickbooks_online/billpayment
2
+ require 'quickeebooks/online/model/bill_payment_header'
3
+ require 'quickeebooks/online/model/bill_payment_line_item'
4
+ require 'quickeebooks/online/model/meta_data'
5
+ require 'quickeebooks/common/online_line_item_model_methods'
6
+
7
+ module Quickeebooks
8
+ module Online
9
+ module Model
10
+ class BillPayment < Quickeebooks::Online::Model::IntuitType
11
+ include ActiveModel::Validations
12
+ include OnlineLineItemModelMethods
13
+ XML_NODE = "BillPayment"
14
+ REST_RESOURCE = "bill-payment"
15
+
16
+ xml_convention :camelcase
17
+ xml_accessor :id, :from => 'Id', :as => Quickeebooks::Online::Model::Id
18
+ xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
19
+ xml_accessor :meta_data, :from => 'MetaData', :as => Quickeebooks::Online::Model::MetaData
20
+ xml_accessor :header, :from => 'Header', :as => Quickeebooks::Online::Model::BillPaymentHeader
21
+ xml_accessor :line_items, :from => 'Line', :as => [Quickeebooks::Online::Model::BillPaymentLineItem]
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,24 @@
1
+ require 'time'
2
+
3
+ module Quickeebooks
4
+ module Online
5
+ module Model
6
+ class BillPaymentHeader < Quickeebooks::Online::Model::IntuitType
7
+ xml_name 'Header'
8
+ xml_accessor :doc_number, :from => 'DocNumber'
9
+ xml_accessor :txn_date, :from => 'TxnDate', :as => Time
10
+ xml_accessor :msg, :from => 'Msg'
11
+ xml_accessor :note, :from => 'Note'
12
+ xml_accessor :status, :from => 'Status'
13
+ xml_accessor :entity_id, :from => 'EntityId', :as => Quickeebooks::Online::Model::Id
14
+ xml_accessor :entity_type, :from => 'EntityType'
15
+ xml_accessor :bank_account_id, :from => 'BankAccountId', :as => Quickeebooks::Online::Model::Id
16
+ xml_accessor :to_be_printed, :from => 'ToBePrinted'
17
+
18
+ xml_accessor :cc_account_id, :from => 'CCAccountId', :as => Quickeebooks::Online::Model::Id
19
+
20
+ xml_accessor :total_amount, :from => 'TotalAmt', :as => Float
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,13 @@
1
+ module Quickeebooks
2
+ module Online
3
+ module Model
4
+ class BillPaymentLineItem < Quickeebooks::Online::Model::IntuitType
5
+ xml_name 'Line'
6
+ xml_accessor :id, :from => 'Id', :as => Integer
7
+ xml_accessor :desc, :from => 'Desc'
8
+ xml_accessor :amount, :from => 'Amount', :as => Float
9
+ xml_accessor :txn_id, :from => 'TxnId', :as => Quickeebooks::Online::Model::Id
10
+ end
11
+ end
12
+ end
13
+ end
@@ -27,48 +27,6 @@ module Quickeebooks
27
27
 
28
28
  validates_length_of :name, :minimum => 1
29
29
 
30
- def address=(address)
31
- self.addresses ||= []
32
- self.addresses << address
33
- end
34
-
35
- def billing_address
36
- select_address("Billing")
37
- end
38
-
39
- def shipping_address
40
- select_address("Shipping")
41
- end
42
-
43
- def primary_phone
44
- select_phone("Primary")
45
- end
46
-
47
- def secondary_phone
48
- select_phone("Secondary")
49
- end
50
-
51
- def mobile_phone
52
- select_phone("Mobile")
53
- end
54
-
55
- def fax
56
- select_phone("Fax")
57
- end
58
-
59
- def pager
60
- select_phone("Pager")
61
- end
62
-
63
- private
64
- def select_phone(type)
65
- phones.detect { |phone| phone.device_type == type }
66
- end
67
-
68
- def select_address(tag)
69
- addresses.detect { |address| address.tag == tag }
70
- end
71
-
72
30
  end
73
31
  end
74
32
  end
@@ -15,6 +15,15 @@ module Quickeebooks
15
15
  def initialize(value = nil)
16
16
  self.value = value
17
17
  end
18
+
19
+ def to_i
20
+ self.value.to_i
21
+ end
22
+
23
+ def to_s
24
+ self.value.to_s
25
+ end
26
+
18
27
  end
19
28
  end
20
29
  end
@@ -0,0 +1,43 @@
1
+ # https://developer.intuit.com/docs/0025_intuit_anywhere/0050_data_services/v2/0400_quickbooks_online/class
2
+ require 'quickeebooks/online/model/meta_data'
3
+
4
+ module Quickeebooks
5
+ module Online
6
+ module Model
7
+ class TrackingClass < Quickeebooks::Online::Model::IntuitType
8
+ XML_NODE = "Class"
9
+ REST_RESOURCE = "class"
10
+
11
+ include ActiveModel::Validations
12
+ xml_name 'Class'
13
+ xml_convention :camelcase
14
+ xml_accessor :id, :from => 'Id', :as => Quickeebooks::Online::Model::Id
15
+ xml_accessor :sync_token, :from => 'SyncToken', :as => Integer
16
+ xml_accessor :meta_data, :from => 'MetaData', :as => Quickeebooks::Online::Model::MetaData
17
+ xml_accessor :name, :from => 'Name'
18
+ xml_accessor :class_parent_id, :from => 'ClassParentId', :as => Quickeebooks::Online::Model::Id
19
+
20
+ def to_xml_ns(options = {})
21
+ to_xml_inject_ns(XML_NODE, options)
22
+ end
23
+
24
+ def valid_for_update?
25
+ if sync_token.nil?
26
+ errors.add(:sync_token, "Missing required attribute SyncToken for update")
27
+ end
28
+ valid?
29
+ errors.empty?
30
+ end
31
+
32
+ def valid_for_deletion?
33
+ return false if(id.nil? || sync_token.nil?)
34
+ id.to_i > 0 && !sync_token.to_s.empty? && sync_token.to_i >= 0
35
+ end
36
+
37
+ def self.resource_for_collection
38
+ REST_RESOURCE + "es"
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,16 @@
1
+ require 'quickeebooks/online/service/service_base'
2
+ require 'quickeebooks/online/model/bill_payment'
3
+ require 'quickeebooks/online/model/bill_payment_header'
4
+ require 'quickeebooks/online/model/bill_payment_line_item'
5
+ require 'quickeebooks/common/service_crud'
6
+ require 'nokogiri'
7
+
8
+ module Quickeebooks
9
+ module Online
10
+ module Service
11
+ class BillPayment < ServiceBase
12
+ include ServiceCRUD
13
+ end
14
+ end
15
+ end
16
+ end
@@ -29,7 +29,7 @@ module Quickeebooks
29
29
 
30
30
  def update(invoice)
31
31
  raise InvalidModelException.new("Missing required parameters for update") unless invoice.valid_for_update?
32
- url = "#{url_for_resource(Quickeebooks::Online::Model::Invoice.resource_for_singular)}/#{invoice.id.value}"
32
+ url = "#{url_for_resource(Quickeebooks::Online::Model::Invoice.resource_for_singular)}/#{invoice.id}"
33
33
  xml = invoice.to_xml_ns
34
34
  response = do_http_post(url, valid_xml_document(xml))
35
35
  if response.code.to_i == 200
@@ -68,7 +68,7 @@ module Quickeebooks
68
68
  def delete(invoice)
69
69
  raise InvalidModelException.new("Missing required parameters for delete") unless invoice.valid_for_deletion?
70
70
  xml = valid_xml_document(invoice.to_xml_ns(:fields => ['Id', 'SyncToken']))
71
- url = "#{url_for_resource(Quickeebooks::Online::Model::Invoice::REST_RESOURCE)}/#{invoice.id}"
71
+ url = "#{url_for_resource(Quickeebooks::Online::Model::Invoice::REST_RESOURCE)}/#{invoice.id.value}"
72
72
  response = do_http_post(url, xml, {:methodx => "delete"})
73
73
  response.code.to_i == 200
74
74
  end
@@ -76,4 +76,4 @@ module Quickeebooks
76
76
  end
77
77
  end
78
78
  end
79
- end
79
+ end
@@ -38,11 +38,11 @@ module Quickeebooks
38
38
  def access_token=(token)
39
39
  @oauth = token
40
40
  end
41
-
41
+
42
42
  def realm_id=(realm_id)
43
43
  @realm_id = realm_id
44
44
  end
45
-
45
+
46
46
  # uri is of the form `https://qbo.intuit.com/qbo36`
47
47
  def base_url=(uri)
48
48
  @base_uri = uri
@@ -70,7 +70,7 @@ module Quickeebooks
70
70
  end
71
71
 
72
72
  private
73
-
73
+
74
74
  def parse_xml(xml)
75
75
  Nokogiri::XML(xml)
76
76
  end
@@ -88,7 +88,7 @@ module Quickeebooks
88
88
 
89
89
  def fetch_collection(model, filters = [], page = 1, per_page = 20, sort = nil, options ={})
90
90
  raise ArgumentError, "missing model to instantiate" if model.nil?
91
-
91
+
92
92
  post_body_lines = []
93
93
 
94
94
  if filters.is_a?(Array) && filters.length > 0
@@ -0,0 +1,13 @@
1
+ require 'quickeebooks/online/service/service_base'
2
+ require 'quickeebooks/online/model/tracking_class'
3
+ require 'quickeebooks/common/service_crud'
4
+
5
+ module Quickeebooks
6
+ module Online
7
+ module Service
8
+ class TrackingClass < ServiceBase
9
+ include ServiceCRUD
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  module Quickeebooks
2
2
 
3
- VERSION = "0.1.8"
3
+ VERSION = "0.1.9"
4
4
 
5
5
  end
@@ -11,8 +11,10 @@ module Quickeebooks
11
11
  xml_accessor :idDomain, :from => '@idDomain' # Attribute with name 'idDomain'
12
12
  xml_accessor :value, :from => :content
13
13
 
14
- def initialize(value = nil)
15
- self.idDomain = DOMAIN
14
+ def initialize(value = nil, suppress_domain_attribute = false)
15
+ unless suppress_domain_attribute
16
+ self.idDomain = DOMAIN
17
+ end
16
18
  self.value = value
17
19
  end
18
20
 
@@ -20,6 +22,10 @@ module Quickeebooks
20
22
  self.value.to_i
21
23
  end
22
24
 
25
+ def to_s
26
+ self.value.to_s
27
+ end
28
+
23
29
  end
24
30
  end
25
31
  end
@@ -0,0 +1,24 @@
1
+ module Quickeebooks
2
+ module Windows
3
+ module Model
4
+ class IdSet < Quickeebooks::Windows::Model::IntuitType
5
+
6
+ xml_convention :camelcase
7
+ xml_accessor :id, :from => 'Id', :as => Quickeebooks::Windows::Model::Id
8
+
9
+ def initialize(value = nil)
10
+ self.id = Quickeebooks::Windows::Model::Id.new(value, true)
11
+ end
12
+
13
+ def to_i
14
+ id ? id.to_i : "__uninitialized__"
15
+ end
16
+
17
+ def to_s
18
+ id ? id.to_s : "__uninitialized__"
19
+ end
20
+
21
+ end
22
+ end
23
+ end
24
+ end
@@ -7,6 +7,6 @@ module Quickeebooks
7
7
  include Logging
8
8
 
9
9
  end
10
- end
10
+ end
11
11
  end
12
12
  end
@@ -0,0 +1,24 @@
1
+ module Quickeebooks
2
+ module Windows
3
+ module Model
4
+ class NgId < Quickeebooks::Windows::Model::IntuitType
5
+
6
+ xml_convention :camelcase
7
+ xml_accessor :value, :from => :content
8
+
9
+ def initialize(value = nil)
10
+ self.value = value
11
+ end
12
+
13
+ def to_i
14
+ self.value.to_i
15
+ end
16
+
17
+ def to_s
18
+ self.value.to_s
19
+ end
20
+
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ require 'quickeebooks/windows/model/ng_id'
2
+
3
+ module Quickeebooks
4
+ module Windows
5
+ module Model
6
+ class NgIdSet < Quickeebooks::Windows::Model::IntuitType
7
+ xml_convention :camelcase
8
+ xml_accessor :ng_id, :from => 'NgId', :as => Quickeebooks::Windows::Model::NgId
9
+ xml_accessor :sync_token, :from => 'SyncToken'
10
+ xml_accessor :ng_object_type, :from => 'NgObjectType'
11
+ xml_accessor :party_id, :from => 'PartyId'
12
+
13
+ def initialize(value = nil)
14
+ self.ng_id = Quickeebooks::Windows::Model::NgId.new(value)
15
+ end
16
+
17
+ def to_i
18
+ self.ng_id ? self.ng_id.to_i : "__uninitialized__"
19
+ end
20
+
21
+ def to_s
22
+ self.ng_id ? self.ng_id.to_s : "__uninitialized__"
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end