quickeebooks 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- 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
|