quickeebooks 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +19 -16
- data/README.md +29 -23
- data/coverage/assets/0.7.1/application.css +1110 -0
- data/coverage/assets/0.7.1/application.js +626 -0
- data/coverage/assets/0.7.1/fancybox/blank.gif +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_close.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_loading.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_nav_left.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_nav_right.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_shadow_ne.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_shadow_nw.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_shadow_s.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_shadow_se.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_title_left.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_title_main.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_title_over.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancy_title_right.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancybox-x.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancybox-y.png +0 -0
- data/coverage/assets/0.7.1/fancybox/fancybox.png +0 -0
- data/coverage/assets/0.7.1/favicon_green.png +0 -0
- data/coverage/assets/0.7.1/favicon_red.png +0 -0
- data/coverage/assets/0.7.1/favicon_yellow.png +0 -0
- data/coverage/assets/0.7.1/loading.gif +0 -0
- data/coverage/assets/0.7.1/magnify.png +0 -0
- data/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/coverage/index.html +29154 -0
- data/lib/quickeebooks/common/online_line_item_model_methods.rb +43 -0
- data/lib/quickeebooks/common/service_crud.rb +56 -0
- data/lib/quickeebooks/online/model/bill.rb +26 -0
- data/lib/quickeebooks/online/model/bill_header.rb +21 -0
- data/lib/quickeebooks/online/model/bill_line_item.rb +22 -0
- data/lib/quickeebooks/online/model/bill_reimbursable.rb +11 -0
- data/lib/quickeebooks/online/model/invoice.rb +2 -31
- data/lib/quickeebooks/online/model/payment.rb +5 -33
- data/lib/quickeebooks/online/service/bill.rb +17 -0
- data/lib/quickeebooks/online/service/customer.rb +3 -47
- data/lib/quickeebooks/online/service/invoice.rb +1 -1
- data/lib/quickeebooks/online/service/payment.rb +3 -46
- data/lib/quickeebooks/online/service/service_base.rb +3 -2
- data/lib/quickeebooks/online/service/sort.rb +1 -12
- data/lib/quickeebooks/shared/service/filter.rb +19 -2
- data/lib/quickeebooks/shared/service/sort.rb +22 -0
- data/lib/quickeebooks/version.rb +1 -1
- data/lib/quickeebooks/windows/service/clazz.rb +1 -5
- data/lib/quickeebooks/windows/service/customer.rb +9 -13
- data/lib/quickeebooks/windows/service/item.rb +2 -5
- data/lib/quickeebooks/windows/service/service_base.rb +30 -15
- data/lib/quickeebooks/windows/service/sort.rb +8 -0
- data/lib/quickeebooks.rb +11 -5
- data/quickeebooks.gemspec +2 -2
- data/spec/quickeebooks/common/online_line_item_model_methods_spec.rb +41 -0
- data/spec/quickeebooks/common/service_crud_spec.rb +41 -0
- data/spec/quickeebooks/online/account_spec.rb +4 -8
- data/spec/quickeebooks/online/bill_spec.rb +17 -0
- data/spec/quickeebooks/online/company_meta_data_spec.rb +6 -9
- data/spec/quickeebooks/online/customer_spec.rb +10 -14
- data/spec/quickeebooks/online/invoice_spec.rb +3 -7
- data/spec/quickeebooks/online/payment_spec.rb +6 -10
- data/spec/quickeebooks/online/services/account_spec.rb +8 -13
- data/spec/quickeebooks/online/services/bill_spec.rb +61 -0
- data/spec/quickeebooks/online/services/company_meta_data_spec.rb +2 -7
- data/spec/quickeebooks/online/services/customer_spec.rb +15 -20
- data/spec/quickeebooks/online/services/filter_spec.rb +0 -5
- data/spec/quickeebooks/online/services/invoice_spec.rb +5 -10
- data/spec/quickeebooks/online/services/payment_spec.rb +63 -0
- data/spec/quickeebooks/online/services/service_base_spec.rb +62 -9
- data/spec/quickeebooks/shared/access_token_spec.rb +6 -11
- data/spec/quickeebooks/shared/filter_spec.rb +159 -0
- data/spec/quickeebooks/shared/sort_spec.rb +17 -0
- data/spec/quickeebooks/windows/customer_spec.rb +11 -15
- data/spec/quickeebooks/windows/services/class_spec.rb +2 -7
- data/spec/quickeebooks/windows/services/company_meta_data_spec.rb +2 -7
- data/spec/quickeebooks/windows/services/customer_spec.rb +16 -21
- data/spec/quickeebooks/windows/services/invoice_spec.rb +13 -19
- data/spec/quickeebooks/windows/services/payment_spec.rb +6 -12
- data/spec/quickeebooks/windows/services/sales_rep_spec.rb +6 -11
- data/spec/quickeebooks/windows/services/sales_taxes_spec.rb +5 -10
- data/spec/quickeebooks/windows/services/service_base_spec.rb +95 -0
- data/spec/quickeebooks/windows/services/ship_method_spec.rb +4 -9
- data/spec/quickeebooks_spec.rb +0 -3
- data/spec/spec_helper.rb +30 -1
- data/spec/support/oauth.rb +20 -0
- data/spec/xml/online/bill.xml +32 -0
- data/spec/xml/online/bill2.xml +32 -0
- data/spec/xml/online/bills.xml +33 -0
- data/spec/xml/online/payment.xml +1 -1
- data/spec/xml/online/payment2.xml +24 -0
- data/spec/xml/online/payments.xml +30 -0
- metadata +103 -40
- data/spec/quickeebooks/online/services/sort_spec.rb +0 -17
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
quickeebooks (0.1.
|
4
|
+
quickeebooks (0.1.2)
|
5
5
|
activemodel
|
6
6
|
nokogiri
|
7
7
|
oauth
|
@@ -11,21 +11,20 @@ PATH
|
|
11
11
|
GEM
|
12
12
|
remote: http://rubygems.org/
|
13
13
|
specs:
|
14
|
-
activemodel (3.2.
|
15
|
-
activesupport (= 3.2.
|
14
|
+
activemodel (3.2.12)
|
15
|
+
activesupport (= 3.2.12)
|
16
16
|
builder (~> 3.0.0)
|
17
|
-
activesupport (3.2.
|
17
|
+
activesupport (3.2.12)
|
18
18
|
i18n (~> 0.6)
|
19
19
|
multi_json (~> 1.0)
|
20
|
-
builder (3.0.
|
20
|
+
builder (3.0.4)
|
21
21
|
diff-lcs (1.1.3)
|
22
22
|
fakeweb (1.3.0)
|
23
|
-
i18n (0.6.
|
24
|
-
multi_json (1.
|
25
|
-
nokogiri (1.5.
|
26
|
-
oauth (0.4.
|
27
|
-
rake (0.
|
28
|
-
rcov (0.9.11)
|
23
|
+
i18n (0.6.1)
|
24
|
+
multi_json (1.6.1)
|
25
|
+
nokogiri (1.5.6)
|
26
|
+
oauth (0.4.7)
|
27
|
+
rake (10.0.3)
|
29
28
|
roxml (3.3.1)
|
30
29
|
activesupport (>= 2.3.0)
|
31
30
|
nokogiri (>= 1.3.3)
|
@@ -34,11 +33,15 @@ GEM
|
|
34
33
|
rspec-core (~> 2.11.0)
|
35
34
|
rspec-expectations (~> 2.11.0)
|
36
35
|
rspec-mocks (~> 2.11.0)
|
37
|
-
rspec-core (2.11.
|
38
|
-
rspec-expectations (2.11.
|
36
|
+
rspec-core (2.11.1)
|
37
|
+
rspec-expectations (2.11.3)
|
39
38
|
diff-lcs (~> 1.1.3)
|
40
|
-
rspec-mocks (2.11.
|
41
|
-
|
39
|
+
rspec-mocks (2.11.3)
|
40
|
+
simplecov (0.7.1)
|
41
|
+
multi_json (~> 1.0)
|
42
|
+
simplecov-html (~> 0.7.1)
|
43
|
+
simplecov-html (0.7.1)
|
44
|
+
uuidtools (2.1.3)
|
42
45
|
|
43
46
|
PLATFORMS
|
44
47
|
ruby
|
@@ -47,6 +50,6 @@ DEPENDENCIES
|
|
47
50
|
fakeweb
|
48
51
|
quickeebooks!
|
49
52
|
rake
|
50
|
-
rcov (~> 0.9.8)
|
51
53
|
rr (~> 1.0.2)
|
52
54
|
rspec (= 2.11.0)
|
55
|
+
simplecov
|
data/README.md
CHANGED
@@ -9,6 +9,8 @@ This library communicates with the Quickbooks Data Services `v2` API, documented
|
|
9
9
|
When Intuit finalizes the `v3` API I would like to move to that version as it appears to be better structured
|
10
10
|
and has `JSON` request/response formats, which should be easier to work with than XML.
|
11
11
|
|
12
|
+
[![Build Status](https://travis-ci.org/ruckus/quickeebooks.png)](https://travis-ci.org/ruckus/quickeebooks)
|
13
|
+
|
12
14
|
## Requirements
|
13
15
|
|
14
16
|
This is being developed on Ruby 1.9.2. Other versions/VMs are untested but Ruby 1.8 should work in theory.
|
@@ -89,7 +91,7 @@ oauth_client = OAuth::AccessToken.new($qb_oauth_consumer, access_token, access_s
|
|
89
91
|
|
90
92
|
## Quickbooks Online vs Windows
|
91
93
|
|
92
|
-
IDS provides 2 APIs, one for interacting with Quickbooks Online resources and one for Quickbooks Windows resources.
|
94
|
+
IDS provides 2 APIs, one for interacting with Quickbooks Online resources and one for Quickbooks Windows resources.
|
93
95
|
|
94
96
|
See: https://ipp.developer.intuit.com/0010_Intuit_Partner_Platform/0050_Data_Services
|
95
97
|
|
@@ -102,13 +104,13 @@ For example:
|
|
102
104
|
customer_service = Quickeebooks::Online::Service::Customer.new
|
103
105
|
customer_service.access_token = oauth_client
|
104
106
|
customer_service.realm_id = realm_id
|
105
|
-
customer_service.list
|
107
|
+
customer_service.list
|
106
108
|
|
107
109
|
# Instantiate a Windows API
|
108
110
|
customer_service = Quickeebooks::Windows::Service::Customer.new(oauth_client, realm_id)
|
109
111
|
customer_service.access_token = oauth_client
|
110
112
|
customer_service.realm_id = realm_id
|
111
|
-
customer_service.list
|
113
|
+
customer_service.list
|
112
114
|
```
|
113
115
|
|
114
116
|
All of the documentation below is geared towards the Online flavor but unless noted one should be able to replace it with Windows.
|
@@ -119,8 +121,8 @@ Now we can initialize any of the `Service` clients:
|
|
119
121
|
customer_service = Quickeebooks::Online::Service::Customer.new
|
120
122
|
customer_service.access_token = oauth_client
|
121
123
|
customer_service.realm_id = realm_id
|
122
|
-
customer_service.list
|
123
|
-
customer_service.list
|
124
|
+
customer_service.list
|
125
|
+
customer_service.list
|
124
126
|
|
125
127
|
# returns a `Collection` object
|
126
128
|
```
|
@@ -156,7 +158,7 @@ Specify none of these to get the defaults:
|
|
156
158
|
customer_service = Quickeebooks::Online::Service::Customer.new
|
157
159
|
customer_service.access_token = oauth_client
|
158
160
|
customer_service.realm_id = realm_id
|
159
|
-
customer_service.list
|
161
|
+
customer_service.list
|
160
162
|
|
161
163
|
# fetch all customers with default parameters (pagination, sorting, filtering)
|
162
164
|
customers = customer_service.list
|
@@ -164,13 +166,17 @@ customers = customer_service.list
|
|
164
166
|
|
165
167
|
Return result: a `Collection` instance with properties: `entries`, `current_page`, `count` which should be self-explanatory.
|
166
168
|
|
167
|
-
### Filtering (
|
169
|
+
### Filtering (full Online API support, partial Windows API support)
|
170
|
+
|
171
|
+
For Online, all filters in the Intuit documentation are supported: text, datetime, boolean.
|
168
172
|
|
169
|
-
|
173
|
+
For Windows, Intuit has a custom API for certain query fields: you cannot search on an arbitrary attributes. See https://ipp.developer.intuit.com/0010_Intuit_Partner_Platform/0050_Data_Services/0500_QuickBooks_Windows/0100_Calling_Data_Services/0015_Retrieving_Objects#Filtering for more information, and to see which attributes are queryable, see: https://ipp.developer.intuit.com/0010_Intuit_Partner_Platform/0050_Data_Services/0500_QuickBooks_Windows/0600_Object_Reference/Invoice#section_9
|
170
174
|
|
171
|
-
|
175
|
+
Note: you'll get an exception from Intuit if you attempt to query on a non-queryable attribute.
|
172
176
|
|
173
|
-
|
177
|
+
Construct an instance of `Quickeebooks::Shared::Service::Filter` with the type of filter, one of: `:text`, `:datetime`, `:boolean`.
|
178
|
+
|
179
|
+
Pass an array of `Quickeebooks::Shared::Service::Filter` objects as the first argument to the Services `list` method and all filters will be applied.
|
174
180
|
|
175
181
|
#### Filtering on a text field
|
176
182
|
|
@@ -179,7 +185,7 @@ Specify a type of `:text` and your desired `:field` and a `:value` clause which
|
|
179
185
|
Note: the Intuit API is case-INSENSITIVE.
|
180
186
|
|
181
187
|
```ruby
|
182
|
-
Quickeebooks::
|
188
|
+
Quickeebooks::Shared::Service::Filter.new(:text, :field => 'FamilyName', :value => 'Richards')
|
183
189
|
```
|
184
190
|
|
185
191
|
#### Filtering on a Date/Time
|
@@ -191,16 +197,16 @@ Examples:
|
|
191
197
|
```ruby
|
192
198
|
# find all customers created after 2/15/2011
|
193
199
|
datetime = Time.mktime(2011, 2, 15)
|
194
|
-
Quickeebooks::
|
200
|
+
Quickeebooks::Shared::Service::Filter.new(:datetime, :field => 'CreateTime', :after => datetime)
|
195
201
|
|
196
202
|
# find all customers created before 3/28/2011
|
197
203
|
datetime = Time.mktime(2011, 2, 28)
|
198
|
-
Quickeebooks::
|
204
|
+
Quickeebooks::Shared::Service::Filter.new(:datetime, :field => 'CreateTime', :before => datetime)
|
199
205
|
|
200
206
|
# find all customers created between 1/1/2011 and 2/15/2011
|
201
207
|
after = Time.mktime(2011, 1, 1)
|
202
208
|
before = Time.mktime(2011, 2, 15
|
203
|
-
Quickeebooks::
|
209
|
+
Quickeebooks::Shared::Service::Filter.new(:datetime, :field => 'CreateTime', :after => after, :before => before)
|
204
210
|
```
|
205
211
|
|
206
212
|
#### Filtering on a Boolean field
|
@@ -209,7 +215,7 @@ Specify a type of `:boolean` and your desired `:field` and a `:value` with eithe
|
|
209
215
|
|
210
216
|
```ruby
|
211
217
|
# find all customers and exclude jobs
|
212
|
-
Quickeebooks::
|
218
|
+
Quickeebooks::Shared::Service::Filter.new(:boolean, :field => 'IncludeJobs', :value => false)
|
213
219
|
```
|
214
220
|
|
215
221
|
#### Filtering on a Number
|
@@ -218,7 +224,7 @@ Specify a type of `:number` and an operator, one of: `:gt`, `:lt`, or `:eq`.
|
|
218
224
|
|
219
225
|
```ruby
|
220
226
|
# find all customers and exclude jobs
|
221
|
-
Quickeebooks::
|
227
|
+
Quickeebooks::Shared::Service::Filter.new(:number, :field => 'Amount', :gt => 150)
|
222
228
|
```
|
223
229
|
|
224
230
|
Once you have created all of your `Filters` than just pass an array of them to any services `list` method and they will all be applied.
|
@@ -233,7 +239,7 @@ filters << Quickeebooks::Online::Service::Filter.new(:datetime, :field => 'Creat
|
|
233
239
|
customer_service = Quickeebooks::Online::Service::Customer.new
|
234
240
|
customer_service.access_token = oauth_client
|
235
241
|
customer_service.realm_id = realm_id
|
236
|
-
customer_service.list
|
242
|
+
customer_service.list
|
237
243
|
|
238
244
|
customers = customer_service.list(filters)
|
239
245
|
```
|
@@ -266,19 +272,19 @@ sorter = Quickeebooks::Online::Service::Sort.new('FamilyName', 'AtoZ')
|
|
266
272
|
customer_service = Quickeebooks::Online::Service::Customer.new
|
267
273
|
customer_service.access_token = oauth_client
|
268
274
|
customer_service.realm_id = realm_id
|
269
|
-
customer_service.list
|
275
|
+
customer_service.list
|
270
276
|
|
271
277
|
customers = customer_service.list(filters, 1, 30, sort)
|
272
278
|
|
273
279
|
# returns
|
274
|
-
|
280
|
+
|
275
281
|
customers.count
|
276
282
|
=> 67
|
277
283
|
|
278
284
|
customers.current_page
|
279
285
|
=> 1
|
280
286
|
|
281
|
-
customers.entries
|
287
|
+
customers.entries
|
282
288
|
=> [ #<Quickeebooks::Online::Model::Customer:0x007f8e29259770>, #<Quickeebooks::Online::Model::Customer:0x0078768202020>, ... ]
|
283
289
|
```
|
284
290
|
|
@@ -291,7 +297,7 @@ Use the `Service` instance to fetch an object by its id using the `fetch_by_id`
|
|
291
297
|
customer_service = Quickeebooks::Online::Service::Customer.new
|
292
298
|
customer_service.access_token = oauth_client
|
293
299
|
customer_service.realm_id = realm_id
|
294
|
-
customer_service.list
|
300
|
+
customer_service.list
|
295
301
|
|
296
302
|
customer = customer_service.fetch_by_id(100)
|
297
303
|
customer.name
|
@@ -312,7 +318,7 @@ Pass an instance of your object to the `create` method on its related Service:
|
|
312
318
|
customer_service = Quickeebooks::Online::Service::Customer.new
|
313
319
|
customer_service.access_token = oauth_client
|
314
320
|
customer_service.realm_id = realm_id
|
315
|
-
customer_service.list
|
321
|
+
customer_service.list
|
316
322
|
|
317
323
|
customer = Quickeebooks::Online::Model::Customer.new
|
318
324
|
customer.name = "Richard Parker"
|
@@ -330,7 +336,7 @@ Pass an instance of your object to the `update` method on its related Service:
|
|
330
336
|
customer_service = Quickeebooks::Online::Service::Customer.new
|
331
337
|
customer_service.access_token = oauth_client
|
332
338
|
customer_service.realm_id = realm_id
|
333
|
-
customer_service.list
|
339
|
+
customer_service.list
|
334
340
|
|
335
341
|
customer = customer_service.fetch_by_id(100)
|
336
342
|
customer.name = "Richard Parker"
|