quickeebooks 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +18 -18
- data/README.md +9 -2
- data/Rakefile +1 -1
- data/lib/quickeebooks.rb +37 -1
- data/lib/quickeebooks/online/model/account.rb +12 -1
- data/lib/quickeebooks/online/model/company_meta_data.rb +30 -0
- data/lib/quickeebooks/online/model/credit_card.rb +14 -0
- data/lib/quickeebooks/online/model/credit_charge_info.rb +17 -0
- data/lib/quickeebooks/online/model/credit_charge_response.rb +13 -0
- data/lib/quickeebooks/online/model/customer.rb +13 -4
- data/lib/quickeebooks/online/model/id.rb +21 -0
- data/lib/quickeebooks/online/model/intuit_type.rb +17 -0
- data/lib/quickeebooks/online/model/invoice.rb +25 -2
- data/lib/quickeebooks/online/model/invoice_header.rb +4 -2
- data/lib/quickeebooks/online/model/invoice_line_item.rb +7 -6
- data/lib/quickeebooks/online/model/item.rb +8 -2
- data/lib/quickeebooks/online/model/payment.rb +58 -0
- data/lib/quickeebooks/online/model/payment_detail.rb +12 -0
- data/lib/quickeebooks/online/model/payment_header.rb +24 -0
- data/lib/quickeebooks/online/model/payment_line_item.rb +15 -0
- data/lib/quickeebooks/online/service/account.rb +5 -5
- data/lib/quickeebooks/online/service/company_meta_data.rb +24 -0
- data/lib/quickeebooks/online/service/customer.rb +5 -5
- data/lib/quickeebooks/online/service/invoice.rb +39 -10
- data/lib/quickeebooks/online/service/item.rb +5 -5
- data/lib/quickeebooks/online/service/payment.rb +63 -0
- data/lib/quickeebooks/online/service/service_base.rb +62 -31
- data/lib/quickeebooks/version.rb +1 -1
- data/lib/quickeebooks/windows/model/account.rb +7 -0
- data/lib/quickeebooks/windows/model/address.rb +8 -0
- data/lib/quickeebooks/windows/model/custom_field.rb +1 -1
- data/lib/quickeebooks/windows/model/customer.rb +12 -1
- data/lib/quickeebooks/windows/model/customer_msg.rb +31 -0
- data/lib/quickeebooks/windows/model/error.rb +19 -0
- data/lib/quickeebooks/windows/model/external_key.rb +21 -0
- data/lib/quickeebooks/windows/model/id.rb +21 -0
- data/lib/quickeebooks/windows/model/invoice.rb +10 -2
- data/lib/quickeebooks/windows/model/invoice_header.rb +13 -15
- data/lib/quickeebooks/windows/model/invoice_line_item.rb +7 -7
- data/lib/quickeebooks/windows/model/item.rb +6 -3
- data/lib/quickeebooks/windows/model/object_ref.rb +14 -0
- data/lib/quickeebooks/windows/model/other_name.rb +16 -0
- data/lib/quickeebooks/windows/model/other_name_id.rb +21 -0
- data/lib/quickeebooks/windows/model/rest_response.rb +34 -0
- data/lib/quickeebooks/windows/model/sales_rep.rb +40 -0
- data/lib/quickeebooks/windows/model/sales_tax.rb +33 -0
- data/lib/quickeebooks/windows/model/ship_method.rb +31 -0
- data/lib/quickeebooks/windows/model/success.rb +17 -0
- data/lib/quickeebooks/windows/model/vendor.rb +16 -0
- data/lib/quickeebooks/windows/model/vendor_id.rb +21 -0
- data/lib/quickeebooks/windows/service/customer.rb +1 -1
- data/lib/quickeebooks/windows/service/customer_msg.rb +15 -0
- data/lib/quickeebooks/windows/service/invoice.rb +19 -1
- data/lib/quickeebooks/windows/service/item.rb +1 -1
- data/lib/quickeebooks/windows/service/sales_rep.rb +16 -0
- data/lib/quickeebooks/windows/service/sales_tax.rb +15 -0
- data/lib/quickeebooks/windows/service/service_base.rb +47 -8
- data/lib/quickeebooks/windows/service/ship_method.rb +15 -0
- data/quickeebooks.gemspec +2 -1
- data/spec/quickeebooks/online/company_meta_data_spec.rb +30 -0
- data/spec/quickeebooks/online/invoice_spec.rb +2 -2
- data/spec/quickeebooks/online/payment_spec.rb +23 -0
- data/spec/quickeebooks/online/services/account_spec.rb +28 -20
- data/spec/quickeebooks/online/services/company_meta_data_spec.rb +40 -0
- data/spec/quickeebooks/online/services/customer_spec.rb +32 -28
- data/spec/quickeebooks/online/services/invoice_spec.rb +52 -0
- data/spec/quickeebooks/online/services/service_base_spec.rb +17 -7
- data/spec/quickeebooks/windows/services/customer_spec.rb +49 -0
- data/spec/quickeebooks/windows/services/invoice_spec.rb +133 -0
- data/spec/quickeebooks/windows/services/sales_rep_spec.rb +47 -0
- data/spec/quickeebooks/windows/services/sales_taxes_spec.rb +41 -0
- data/spec/quickeebooks/windows/services/ship_method_spec.rb +38 -0
- data/spec/quickeebooks_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/xml/online/api_error.xml +6 -0
- data/spec/xml/online/company_meta_data.xml +37 -0
- data/spec/xml/online/determine_base_url.xml +10 -0
- data/spec/xml/online/invoice.xml +26 -31
- data/spec/xml/online/payment.xml +24 -0
- data/spec/xml/windows/invoice_success_create.xml +11 -0
- data/spec/xml/windows/invoices.xml +436 -0
- data/spec/xml/windows/sales_reps.xml +204 -0
- data/spec/xml/windows/sales_taxes.xml +34 -0
- data/spec/xml/windows/ship_methods.xml +139 -0
- metadata +80 -22
@@ -0,0 +1,49 @@
|
|
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::Customer" 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 customers" do
|
24
|
+
xml = File.read(File.dirname(__FILE__) + "/../../../xml/windows/customers.xml")
|
25
|
+
model = Quickeebooks::Windows::Model::Customer
|
26
|
+
service = Quickeebooks::Windows::Service::Customer.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
|
+
accounts = service.list
|
31
|
+
accounts.entries.count.should == 3
|
32
|
+
wine_house = accounts.entries.first
|
33
|
+
wine_house.name.should == "Wine House"
|
34
|
+
|
35
|
+
billing_address = wine_house.billing_address
|
36
|
+
billing_address.should_not == nil
|
37
|
+
billing_address.line2.should == "2311 Maple Ave"
|
38
|
+
billing_address.city.should == "Los Angeles"
|
39
|
+
billing_address.state.should == "CA"
|
40
|
+
billing_address.postal_code.should == "90064"
|
41
|
+
|
42
|
+
email = wine_house.email
|
43
|
+
email.should_not == nil
|
44
|
+
email.address.should == "no-reply@winehouse.com"
|
45
|
+
email.tag.should == "Business"
|
46
|
+
email.default.should == "1"
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,133 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
|
2
|
+
require "fakeweb"
|
3
|
+
require "oauth"
|
4
|
+
require "quickeebooks"
|
5
|
+
require "date"
|
6
|
+
|
7
|
+
describe "Quickeebooks::Windows::Service::Invoice" do
|
8
|
+
before(:all) do
|
9
|
+
FakeWeb.allow_net_connect = false
|
10
|
+
qb_key = "key"
|
11
|
+
qb_secret = "secreet"
|
12
|
+
|
13
|
+
@realm_id = "9991111222"
|
14
|
+
@base_uri = "https://qbo.intuit.com/qbo36"
|
15
|
+
@oauth_consumer = OAuth::Consumer.new(qb_key, qb_key, {
|
16
|
+
:site => "https://oauth.intuit.com",
|
17
|
+
:request_token_path => "/oauth/v1/get_request_token",
|
18
|
+
:authorize_path => "/oauth/v1/get_access_token",
|
19
|
+
:access_token_path => "/oauth/v1/get_access_token"
|
20
|
+
})
|
21
|
+
@oauth = OAuth::AccessToken.new(@oauth_consumer, "blah", "blah")
|
22
|
+
end
|
23
|
+
|
24
|
+
it "can fetch a list of invoices" do
|
25
|
+
xml = File.read(File.dirname(__FILE__) + "/../../../xml/windows/invoices.xml")
|
26
|
+
service = Quickeebooks::Windows::Service::Invoice.new
|
27
|
+
service.access_token = @oauth
|
28
|
+
service.realm_id = @realm_id
|
29
|
+
|
30
|
+
model = Quickeebooks::Windows::Model::Invoice
|
31
|
+
FakeWeb.register_uri(:get, service.url_for_resource(model::REST_RESOURCE), :status => ["200", "OK"], :body => xml)
|
32
|
+
invoices = service.list
|
33
|
+
invoices.entries.count.should == 7
|
34
|
+
|
35
|
+
invoice = invoices.entries.first
|
36
|
+
invoice.id.value.should == "9107908"
|
37
|
+
invoice.header.should_not == nil
|
38
|
+
header = invoice.header
|
39
|
+
header.doc_number.should == "12-225"
|
40
|
+
header.txn_date.should == DateTime.parse('2012-07-10T00:00:00Z')
|
41
|
+
header.customer_name.should == "Zanotto's Fine Grocer"
|
42
|
+
|
43
|
+
header.remit_to_id.value.should == "2"
|
44
|
+
header.remit_to_name.should == "Zanotto's Fine Grocer"
|
45
|
+
header.ship_date.should == DateTime.parse('2012-07-11T00:00:00Z')
|
46
|
+
header.sub_total_amount.should == 384.48
|
47
|
+
header.tax_rate.should == 0
|
48
|
+
header.total_amount.should == header.sub_total_amount
|
49
|
+
header.to_be_printed.should == "false"
|
50
|
+
header.to_be_emailed.should == "false"
|
51
|
+
header.ar_account_id.value.should == "30"
|
52
|
+
header.ar_account_name.should == "Accounts Receivable"
|
53
|
+
header.due_date.should == DateTime.parse('2012-08-09T00:00:00Z')
|
54
|
+
|
55
|
+
bill_addr = header.billing_address
|
56
|
+
bill_addr.should_not == nil
|
57
|
+
bill_addr.line1.should == "981 Lusk Blvd."
|
58
|
+
bill_addr.city.should == "San Jose"
|
59
|
+
bill_addr.state.should == "CA"
|
60
|
+
bill_addr.postal_code.should == "95126"
|
61
|
+
|
62
|
+
ship_addr = header.shipping_address
|
63
|
+
ship_addr.should_not == nil
|
64
|
+
ship_addr.line1.should == "981 Lusk Blvd."
|
65
|
+
ship_addr.city.should == "San Jose"
|
66
|
+
ship_addr.state.should == "CA"
|
67
|
+
ship_addr.postal_code.should == "95126"
|
68
|
+
|
69
|
+
header.bill_email.should == "thorn@zanottos.com"
|
70
|
+
header.balance.should == header.total_amount
|
71
|
+
|
72
|
+
line1 = invoice.line_items.first
|
73
|
+
line1.should_not == nil
|
74
|
+
line1.desc.should == "PVR2920"
|
75
|
+
line1.amount.should == header.total_amount
|
76
|
+
line1.item_id.value.should == "4"
|
77
|
+
line1.item_name.should == "2005 Silver Oak Chardonnay"
|
78
|
+
line1.unit_price.should == 144.00
|
79
|
+
line1.quantity.should == 2.67
|
80
|
+
end
|
81
|
+
|
82
|
+
it "can create an invoice" do
|
83
|
+
xml = File.read(File.dirname(__FILE__) + "/../../../xml/windows/invoice_success_create.xml")
|
84
|
+
service = Quickeebooks::Windows::Service::Invoice.new
|
85
|
+
service.access_token = @oauth
|
86
|
+
service.realm_id = @realm_id
|
87
|
+
|
88
|
+
model = Quickeebooks::Windows::Model::Invoice
|
89
|
+
FakeWeb.register_uri(:post, service.url_for_resource(model::REST_RESOURCE), :status => ["200", "OK"], :body => xml)
|
90
|
+
|
91
|
+
invoice = Quickeebooks::Windows::Model::Invoice.new
|
92
|
+
header = Quickeebooks::Windows::Model::InvoiceHeader.new
|
93
|
+
header.customer_id = Quickeebooks::Windows::Model::Id.new(2)
|
94
|
+
header.due_date = Date.civil(2012, 7, 12).strftime('%F')
|
95
|
+
header.ship_date = Date.civil(2012, 8, 11).strftime('%F')
|
96
|
+
header.txn_date = Time.now.strftime('%F')
|
97
|
+
header.doc_number = "12-225"
|
98
|
+
|
99
|
+
billing_address = Quickeebooks::Windows::Model::Address.new
|
100
|
+
billing_address.line1 = "100 S. Park Drive"
|
101
|
+
billing_address.line2 = "Suite 200"
|
102
|
+
billing_address.city = "San Jose"
|
103
|
+
billing_address.postal_code = "95126"
|
104
|
+
billing_address.country_sub_division_code = "CA"
|
105
|
+
billing_address.tag = "Billing"
|
106
|
+
|
107
|
+
shipping_address = Quickeebooks::Windows::Model::Address.new
|
108
|
+
shipping_address.line1 = "999 Widmore Ave."
|
109
|
+
shipping_address.city = "Santa Cruz"
|
110
|
+
shipping_address.postal_code = "95060"
|
111
|
+
shipping_address.country_sub_division_code = "CA"
|
112
|
+
shipping_address.tag = "Shipping"
|
113
|
+
|
114
|
+
header.billing_address = billing_address
|
115
|
+
header.shipping_address = shipping_address
|
116
|
+
|
117
|
+
item1 = Quickeebooks::Windows::Model::InvoiceLineItem.new
|
118
|
+
item1.item_id = Quickeebooks::Windows::Model::Id.new(4)
|
119
|
+
item1.desc = "PVR2920"
|
120
|
+
item1.unit_price = 144.00
|
121
|
+
item1.quantity = 2.67
|
122
|
+
|
123
|
+
invoice.line_items << item1
|
124
|
+
invoice.header = header
|
125
|
+
|
126
|
+
created_invoice = service.create(invoice)
|
127
|
+
|
128
|
+
created_invoice.success?.should == true
|
129
|
+
created_invoice.success.object_ref.id.value.should == "9107908"
|
130
|
+
created_invoice.success.request_name.should == "InvoiceAdd"
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
@@ -0,0 +1,47 @@
|
|
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::SalesRep" 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 sales reps" do
|
24
|
+
xml = File.read(File.dirname(__FILE__) + "/../../../xml/windows/sales_reps.xml")
|
25
|
+
service = Quickeebooks::Windows::Service::SalesRep.new
|
26
|
+
service.access_token = @oauth
|
27
|
+
service.realm_id = @realm_id
|
28
|
+
|
29
|
+
model = Quickeebooks::Windows::Model::SalesRep
|
30
|
+
FakeWeb.register_uri(:get, service.url_for_resource(model::REST_RESOURCE), :status => ["200", "OK"], :body => xml)
|
31
|
+
reps = service.list
|
32
|
+
reps.entries.count.should == 10
|
33
|
+
|
34
|
+
lukas = reps.entries.detect { |sr| sr.id.value == "13" }
|
35
|
+
lukas.should_not == nil
|
36
|
+
lukas.external_key.value.should == "13"
|
37
|
+
lukas.initials.should == "LB"
|
38
|
+
lukas.vendor.vendor_id.value.should == "275"
|
39
|
+
lukas.vendor.vendor_name.should == "Lukas Billybob"
|
40
|
+
|
41
|
+
other_name = reps.entries.detect { |r| r.other_name? }
|
42
|
+
other_name.should_not == nil
|
43
|
+
other_name.other_name.other_name_id.value.should == "96"
|
44
|
+
other_name.other_name.other_name_name.should == "Samples."
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,41 @@
|
|
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::SalesTax" 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 sales taxes" do
|
24
|
+
xml = File.read(File.dirname(__FILE__) + "/../../../xml/windows/sales_taxes.xml")
|
25
|
+
model = Quickeebooks::Windows::Model::SalesTax
|
26
|
+
service = Quickeebooks::Windows::Service::SalesTax.new
|
27
|
+
service.access_token = @oauth
|
28
|
+
service.realm_id = @realm_id
|
29
|
+
FakeWeb.register_uri(:get, service.url_for_resource(model::REST_RESOURCE), :status => ["200", "OK"], :body => xml)
|
30
|
+
shipping_methods = service.list
|
31
|
+
shipping_methods.entries.count.should == 2
|
32
|
+
|
33
|
+
sf = shipping_methods.entries.detect { |sm| sm.name == "San Francisco County" }
|
34
|
+
sf.should_not == nil
|
35
|
+
sf.id.value.should == "80"
|
36
|
+
sf.desc.should == 'Sales Tax - San Francisco'
|
37
|
+
sf.tax_rate.should == 8.5
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
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::ShipMethod" 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 shipping methods" do
|
24
|
+
xml = File.read(File.dirname(__FILE__) + "/../../../xml/windows/ship_methods.xml")
|
25
|
+
model = Quickeebooks::Windows::Model::ShipMethod
|
26
|
+
service = Quickeebooks::Windows::Service::ShipMethod.new
|
27
|
+
service.access_token = @oauth
|
28
|
+
service.realm_id = @realm_id
|
29
|
+
FakeWeb.register_uri(:get, service.url_for_resource(model::REST_RESOURCE), :status => ["200", "OK"], :body => xml)
|
30
|
+
shipping_methods = service.list
|
31
|
+
shipping_methods.entries.count.should == 15
|
32
|
+
|
33
|
+
vinlux = shipping_methods.entries.detect { |sm| sm.name == "Vinlux" }
|
34
|
+
vinlux.should_not == nil
|
35
|
+
vinlux.id.value.should == "13"
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
data/spec/quickeebooks_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
2
|
+
<CompanyMetaData xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:qbp="http://www.intuit.com/sb/cdm/qbopayroll/v1" xmlns:qbo="http://www.intuit.com/sb/cdm/qbo">
|
3
|
+
<QBNRegisteredCompanyName>Bay Area landscape services</QBNRegisteredCompanyName>
|
4
|
+
<Address>
|
5
|
+
<Line1>2600 Service Street</Line1>
|
6
|
+
<City>San Jose</City>
|
7
|
+
<CountrySubDivisionCode>CA</CountrySubDivisionCode>
|
8
|
+
<PostalCode>95131</PostalCode>
|
9
|
+
<Tag>COMPANY_ADDRESS</Tag>
|
10
|
+
</Address>
|
11
|
+
<Address>
|
12
|
+
<Line1>2601 ServicePayment Street</Line1>
|
13
|
+
<City>San Jose</City>
|
14
|
+
<CountrySubDivisionCode>CA</CountrySubDivisionCode>
|
15
|
+
<PostalCode>95131</PostalCode>
|
16
|
+
<Tag>PUBLIC_ADDRESS</Tag>
|
17
|
+
</Address>
|
18
|
+
<Phone>
|
19
|
+
<FreeFormNumber>(669)111-2222</FreeFormNumber>
|
20
|
+
</Phone>
|
21
|
+
<Email>
|
22
|
+
<Address>john@bayarealandscapeservices.com</Address>
|
23
|
+
<Tag>COMPANY_EMAIL</Tag>
|
24
|
+
</Email>
|
25
|
+
<Email>
|
26
|
+
<Address>admin@bayarealandscapeservices.com</Address>
|
27
|
+
<Tag>EMAIL_ADDRESS_FOR_CUSTOMERS</Tag>
|
28
|
+
</Email>
|
29
|
+
<LegalAddress>
|
30
|
+
<Line1>2602 Service Street</Line1>
|
31
|
+
<City>San Jose</City>
|
32
|
+
<CountrySubDivisionCode>CA</CountrySubDivisionCode>
|
33
|
+
<PostalCode>95131</PostalCode>
|
34
|
+
<Tag>LEGAL_ADDRESS</Tag>
|
35
|
+
</LegalAddress>
|
36
|
+
<IndustryType>Landscaping Services</IndustryType>
|
37
|
+
</CompanyMetaData>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
2
|
+
<qbo:QboUser xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:qbp="http://www.intuit.com/sb/cdm/qbopayroll/v1" xmlns:qbo="http://www.intuit.com/sb/cdm/qbo">
|
3
|
+
<qbo:LoginName>ipp.intuit.com+dr@gmail.com</qbo:LoginName>
|
4
|
+
<qbo:Ticket>V1-73-Q013395388397857cf0f26</qbo:Ticket>
|
5
|
+
<qbo:AgentId>489710665</qbo:AgentId>
|
6
|
+
<qbo:CurrentCompany><qbo:CompanyId>489711245</qbo:CompanyId>
|
7
|
+
<qbo:BaseURI>https://qbo.intuit.com/qbo1</qbo:BaseURI>
|
8
|
+
<qbo:SubscriptionStatus>SUBSCRIBED</qbo:SubscriptionStatus>
|
9
|
+
</qbo:CurrentCompany>
|
10
|
+
</qbo:QboUser>
|
data/spec/xml/online/invoice.xml
CHANGED
@@ -1,33 +1,28 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
2
|
-
<Invoice xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
<Taxable>true</Taxable>
|
29
|
-
<ItemId>4</ItemId>
|
30
|
-
<UnitPrice>100</UnitPrice>
|
31
|
-
<Qty>4</Qty>
|
32
|
-
</Line>
|
2
|
+
<Invoice xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:qbp="http://www.intuit.com/sb/cdm/qbopayroll/v1" xmlns:qbo="http://www.intuit.com/sb/cdm/qbo">
|
3
|
+
<Id idDomain="QBO">13</Id>
|
4
|
+
<SyncToken>0</SyncToken>
|
5
|
+
<MetaData>
|
6
|
+
<CreateTime>2012-07-16T15:48:34-07:00</CreateTime>
|
7
|
+
<LastUpdatedTime>2012-07-16T15:48:34-07:00</LastUpdatedTime>
|
8
|
+
</MetaData>
|
9
|
+
<Header>
|
10
|
+
<DocNumber>1</DocNumber>
|
11
|
+
<TxnDate>2012-07-16-07:00</TxnDate>
|
12
|
+
<CustomerId idDomain="QBO">10</CustomerId>
|
13
|
+
<ShipDate>2012-07-17-07:00</ShipDate>
|
14
|
+
<ToBePrinted>false</ToBePrinted>
|
15
|
+
<ToBeEmailed>false</ToBeEmailed>
|
16
|
+
<DueDate>2012-08-16-07:00</DueDate>
|
17
|
+
<ShipMethodId idDomain="QBO" />
|
18
|
+
<Balance>0.00</Balance>
|
19
|
+
<DiscountTaxable>true</DiscountTaxable>
|
20
|
+
</Header>
|
21
|
+
<Line>
|
22
|
+
<Desc>2005 Edna Valley Chardonnay</Desc>
|
23
|
+
<Taxable>false</Taxable>
|
24
|
+
<ItemId idDomain="QBO">9</ItemId>
|
25
|
+
<UnitPrice>225</UnitPrice>
|
26
|
+
<Qty>2</Qty>
|
27
|
+
</Line>
|
33
28
|
</Invoice>
|