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.
- data/Gemfile.lock +42 -11
- data/Guardfile +8 -0
- data/HISTORY.md +5 -0
- data/coverage/index.html +6201 -2451
- data/lib/quickeebooks.rb +16 -1
- data/lib/quickeebooks/online/model/bill_payment.rb +26 -0
- data/lib/quickeebooks/online/model/bill_payment_header.rb +24 -0
- data/lib/quickeebooks/online/model/bill_payment_line_item.rb +13 -0
- data/lib/quickeebooks/online/model/customer.rb +0 -42
- data/lib/quickeebooks/online/model/id.rb +9 -0
- data/lib/quickeebooks/online/model/tracking_class.rb +43 -0
- data/lib/quickeebooks/online/service/bill_payment.rb +16 -0
- data/lib/quickeebooks/online/service/invoice.rb +3 -3
- data/lib/quickeebooks/online/service/service_base.rb +4 -4
- data/lib/quickeebooks/online/service/tracking_class.rb +13 -0
- data/lib/quickeebooks/version.rb +1 -1
- data/lib/quickeebooks/windows/model/id.rb +8 -2
- data/lib/quickeebooks/windows/model/id_set.rb +24 -0
- data/lib/quickeebooks/windows/model/intuit_type.rb +1 -1
- data/lib/quickeebooks/windows/model/ng_id.rb +24 -0
- data/lib/quickeebooks/windows/model/ng_id_set.rb +28 -0
- data/lib/quickeebooks/windows/model/payment.rb +14 -0
- data/lib/quickeebooks/windows/model/payment_header.rb +38 -12
- data/lib/quickeebooks/windows/model/payment_line_item.rb +2 -1
- data/lib/quickeebooks/windows/model/payment_method.rb +28 -0
- data/lib/quickeebooks/windows/model/sync_status_param.rb +28 -0
- data/lib/quickeebooks/windows/model/sync_status_request.rb +31 -0
- data/lib/quickeebooks/windows/model/sync_status_response.rb +156 -0
- data/lib/quickeebooks/windows/service/payment.rb +14 -0
- data/lib/quickeebooks/windows/service/payment_method.rb +24 -0
- data/lib/quickeebooks/windows/service/sync_status.rb +34 -0
- data/quickeebooks.gemspec +3 -1
- data/spec/quickeebooks/online/bill_payment_spec.rb +18 -0
- data/spec/quickeebooks/online/id_spec.rb +18 -0
- data/spec/quickeebooks/online/services/bill_payment_spec.rb +69 -0
- data/spec/quickeebooks/online/services/invoice_spec.rb +12 -0
- data/spec/quickeebooks/online/services/tracking_class_spec.rb +99 -0
- data/spec/quickeebooks/online/tracking_class_spec.rb +32 -0
- data/spec/quickeebooks/windows/id_spec.rb +18 -0
- data/spec/quickeebooks/windows/services/payment_method_spec.rb +36 -0
- data/spec/quickeebooks/windows/services/payment_spec.rb +30 -0
- data/spec/quickeebooks/windows/services/sync_status_spec.rb +35 -0
- data/spec/spec_helper.rb +1 -2
- data/spec/xml/online/bill_payment.xml +20 -0
- data/spec/xml/online/bill_payment2.xml +20 -0
- data/spec/xml/online/bill_payments.xml +26 -0
- data/spec/xml/online/deleted_invoice.xml +2 -0
- data/spec/xml/online/tracking_class.xml +11 -0
- data/spec/xml/online/tracking_class_updated.xml +11 -0
- data/spec/xml/online/tracking_classes.xml +26 -0
- data/spec/xml/windows/payment_create_success.xml +11 -0
- data/spec/xml/windows/payment_methods.xml +121 -0
- data/spec/xml/windows/sync_status_responses.xml +186 -0
- data/tmp/console.rb +10 -0
- metadata +71 -5
- data/quickeebooks-0.1.7.gem +0 -0
data/lib/quickeebooks.rb
CHANGED
@@ -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
|
@@ -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
|
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
|
data/lib/quickeebooks/version.rb
CHANGED
@@ -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
|
-
|
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
|
@@ -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
|