netsuite 0.3.2 → 0.3.3
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/lib/netsuite.rb +18 -0
- data/lib/netsuite/actions/search.rb +1 -1
- data/lib/netsuite/records/sales_order_item.rb +3 -3
- data/lib/netsuite/records/vendor.rb +42 -0
- data/lib/netsuite/version.rb +1 -1
- data/spec/netsuite/actions/search_spec.rb +4 -3
- data/spec/netsuite/records/sales_order_item_spec.rb +3 -3
- data/spec/netsuite/records/vendor_spec.rb +145 -0
- data/spec/spec_helper.rb +2 -0
- metadata +5 -2
data/lib/netsuite.rb
CHANGED
@@ -167,6 +167,7 @@ module NetSuite
|
|
167
167
|
autoload :UnitsType, 'netsuite/records/units_type'
|
168
168
|
autoload :UnitsTypeUomList, 'netsuite/records/units_type_uom_list'
|
169
169
|
autoload :UnitsTypeUom, 'netsuite/records/units_type_uom'
|
170
|
+
autoload :Vendor, 'netsuite/records/vendor'
|
170
171
|
autoload :WorkOrder, 'netsuite/records/work_order'
|
171
172
|
autoload :WorkOrderItem, 'netsuite/records/work_order_item'
|
172
173
|
autoload :WorkOrderItemList, 'netsuite/records/work_order_item_list'
|
@@ -176,4 +177,21 @@ module NetSuite
|
|
176
177
|
NetSuite::Configuration.instance_eval(&block)
|
177
178
|
end
|
178
179
|
|
180
|
+
def self.configure_from_env
|
181
|
+
NetSuite.configure do
|
182
|
+
reset!
|
183
|
+
|
184
|
+
email ENV['NETSUITE_EMAIL'] unless ENV['NETSUITE_EMAIL'].nil?
|
185
|
+
password ENV['NETSUITE_PASSWORD'] unless ENV['NETSUITE_PASSWORD'].nil?
|
186
|
+
account ENV['NETSUITE_ACCOUNT'] unless ENV['NETSUITE_ACCOUNT'].nil?
|
187
|
+
role ENV['NETSUITE_ROLE'] unless ENV['NETSUITE_ROLE'].nil?
|
188
|
+
api_version ENV['NETSUITE_API'] unless ENV['NETSUITE_API'].nil?
|
189
|
+
sandbox (ENV['NETSUITE_PRODUCTION'].nil? || ENV['NETSUITE_PRODUCTION'] != 'true')
|
190
|
+
wsdl ENV['NETSUITE_WSDL'] unless ENV['NETSUITE_WSDL'].nil?
|
191
|
+
silent (ENV['NETSUITE_SILENT'] || false)
|
192
|
+
|
193
|
+
read_timeout 100_000
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
179
197
|
end
|
@@ -11,9 +11,9 @@ module NetSuite
|
|
11
11
|
|
12
12
|
fields :amount, :bin_numbers, :cost_estimate, :cost_estimate_type, :defer_rev_rec, :description, :gift_cert_from,
|
13
13
|
:gift_cert_message, :gift_cert_number, :gift_cert_recipient_email, :gift_cert_recipient_name, :gross_amt, :is_taxable,
|
14
|
-
:line, :order_line, :quantity, :rate, :rev_rec_end_date, :rev_rec_start_date, :rev_rec_term_in_months,
|
15
|
-
:shipping_cost, :tax1_amt, :tax_rate1, :tax_rate2, :vsoe_allocation, :vsoe_amount, :vsoe_deferral,
|
16
|
-
:vsoe_permit_discount, :vsoe_price, :is_closed
|
14
|
+
:line, :order_line, :po_currency, :quantity, :rate, :rev_rec_end_date, :rev_rec_start_date, :rev_rec_term_in_months,
|
15
|
+
:serial_numbers, :shipping_cost, :tax1_amt, :tax_rate1, :tax_rate2, :vsoe_allocation, :vsoe_amount, :vsoe_deferral,
|
16
|
+
:vsoe_delivered, :vsoe_permit_discount, :vsoe_price, :is_closed
|
17
17
|
|
18
18
|
field :custom_field_list, CustomFieldList
|
19
19
|
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module NetSuite
|
2
|
+
module Records
|
3
|
+
class Vendor
|
4
|
+
include Support::Fields
|
5
|
+
include Support::RecordRefs
|
6
|
+
include Support::Records
|
7
|
+
include Support::Actions
|
8
|
+
include Namespaces::ListRel
|
9
|
+
|
10
|
+
actions :get, :get_list, :add, :update, :delete, :search
|
11
|
+
|
12
|
+
fields :account_number, :alt_email, :alt_name, :alt_phone, :balance,
|
13
|
+
:balance_primary, :bcn, :bill_pay, :comments, :company_name, :credit_limit,
|
14
|
+
:currency_list, :date_created, :default_address, :eligible_for_commission,
|
15
|
+
:email, :email_preference, :email_transactions, :entity_id, :fax, :fax_transactions,
|
16
|
+
:first_name, :give_access, :global_subscription_status, :home_phone, :is1099_eligible,
|
17
|
+
:is_accountant, :is_inactive, :is_job_resource_vend, :is_person, :labor_cost,
|
18
|
+
:last_modified_date, :last_name, :legal_name, :middle_name, :mobile_phone, :opening_balance,
|
19
|
+
:opening_balance_date, :password, :password2, :phone, :phonetic_name, :pricing_schedule_list,
|
20
|
+
:print_on_check_as, :print_transactions, :require_pwd_change, :roles_list, :salutation,
|
21
|
+
:send_email, :subscriptions_list, :tax_id_num, :title, :unbilled_orders, :unbilled_orders_primary,
|
22
|
+
:url, :vat_reg_number
|
23
|
+
|
24
|
+
field :custom_field_list, CustomFieldList
|
25
|
+
# TODO should change name to VendorAddressBookList
|
26
|
+
field :addressbook_list, CustomerAddressbookList
|
27
|
+
|
28
|
+
record_refs :custom_form, :category, :image, :subsidiary, :representing_subsidiary,
|
29
|
+
:expense_account, :payables_account, :terms, :opening_balance_account, :currency, :work_calendar,
|
30
|
+
:tax_item
|
31
|
+
|
32
|
+
attr_reader :internal_id
|
33
|
+
attr_accessor :external_id
|
34
|
+
|
35
|
+
def initialize(attributes = {})
|
36
|
+
@internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
|
37
|
+
@external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
|
38
|
+
initialize_from_attributes_hash(attributes)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/netsuite/version.rb
CHANGED
@@ -7,10 +7,11 @@ describe NetSuite::Actions::Search do
|
|
7
7
|
it "handles custom auth credentials" do
|
8
8
|
allow(NetSuite::Configuration).to receive(:connection).and_return(double().as_null_object)
|
9
9
|
|
10
|
-
|
10
|
+
credentials = {
|
11
11
|
email: 'fake@domain.com',
|
12
12
|
password: 'fake'
|
13
|
-
}
|
13
|
+
}
|
14
|
+
NetSuite::Records::Customer.search({}, credentials)
|
14
15
|
|
15
16
|
expect(NetSuite::Configuration).to have_received(:connection).with({:soap_header=>{
|
16
17
|
"platformMsgs:passport"=>{
|
@@ -18,7 +19,7 @@ describe NetSuite::Actions::Search do
|
|
18
19
|
"platformCore:password"=>"fake",
|
19
20
|
"platformCore:account"=>"1234",
|
20
21
|
"platformCore:role"=>{:@internalId=>"3"}
|
21
|
-
}, "platformMsgs:SearchPreferences"=>{}}}
|
22
|
+
}, "platformMsgs:SearchPreferences"=>{}}}, credentials
|
22
23
|
)
|
23
24
|
end
|
24
25
|
|
@@ -7,9 +7,9 @@ describe NetSuite::Records::SalesOrderItem do
|
|
7
7
|
[
|
8
8
|
:amount, :bin_numbers, :cost_estimate, :cost_estimate_type, :defer_rev_rec, :description, :gift_cert_from,
|
9
9
|
:gift_cert_message, :gift_cert_number, :gift_cert_recipient_email, :gift_cert_recipient_name, :gross_amt, :is_taxable,
|
10
|
-
:line, :order_line, :quantity, :rate, :rev_rec_end_date, :rev_rec_start_date, :rev_rec_term_in_months,
|
11
|
-
:tax1_amt, :tax_rate1, :tax_rate2, :vsoe_allocation, :vsoe_amount, :vsoe_deferral, :vsoe_delivered,
|
12
|
-
:vsoe_price
|
10
|
+
:line, :order_line, :po_currency, :quantity, :rate, :rev_rec_end_date, :rev_rec_start_date, :rev_rec_term_in_months,
|
11
|
+
:serial_numbers, :tax1_amt, :tax_rate1, :tax_rate2, :vsoe_allocation, :vsoe_amount, :vsoe_deferral, :vsoe_delivered,
|
12
|
+
:vsoe_permit_discount, :vsoe_price
|
13
13
|
].each do |field|
|
14
14
|
expect(item).to have_field(field)
|
15
15
|
end
|
@@ -0,0 +1,145 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::Vendor do
|
4
|
+
let(:vendor) { NetSuite::Records::Vendor.new }
|
5
|
+
|
6
|
+
it 'has all the right fields' do
|
7
|
+
[
|
8
|
+
:account_number, :alt_email, :alt_name, :alt_phone, :balance,
|
9
|
+
:balance_primary, :bcn, :bill_pay, :comments, :company_name, :credit_limit,
|
10
|
+
:currency_list, :date_created, :default_address, :eligible_for_commission,
|
11
|
+
:email, :email_preference, :email_transactions, :entity_id, :fax, :fax_transactions,
|
12
|
+
:first_name, :give_access, :global_subscription_status, :home_phone, :is1099_eligible,
|
13
|
+
:is_accountant, :is_inactive, :is_job_resource_vend, :is_person, :labor_cost,
|
14
|
+
:last_modified_date, :last_name, :legal_name, :middle_name, :mobile_phone, :opening_balance,
|
15
|
+
:opening_balance_date, :password, :password2, :phone, :phonetic_name, :pricing_schedule_list,
|
16
|
+
:print_on_check_as, :print_transactions, :require_pwd_change, :roles_list, :salutation,
|
17
|
+
:send_email, :subscriptions_list, :tax_id_num, :title, :unbilled_orders, :unbilled_orders_primary,
|
18
|
+
:url, :vat_reg_number
|
19
|
+
].each do |field|
|
20
|
+
vendor.should have_field(field)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'has the right record_refs' do
|
25
|
+
[
|
26
|
+
:custom_form, :category, :image, :subsidiary, :representing_subsidiary,
|
27
|
+
:expense_account, :payables_account, :terms, :opening_balance_account, :currency, :work_calendar,
|
28
|
+
:tax_item
|
29
|
+
].each do |record_ref|
|
30
|
+
vendor.should have_record_ref(record_ref)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '#custom_field_list' do
|
35
|
+
it 'can be set from attributes' do
|
36
|
+
attributes = {
|
37
|
+
:custom_field => {
|
38
|
+
:value => 10,
|
39
|
+
:internal_id => 'custfield_something'
|
40
|
+
}
|
41
|
+
}
|
42
|
+
vendor.custom_field_list = attributes
|
43
|
+
vendor.custom_field_list.should be_kind_of(NetSuite::Records::CustomFieldList)
|
44
|
+
vendor.custom_field_list.custom_fields.length.should eql(1)
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'can be set from a CustomFieldList object' do
|
48
|
+
custom_field_list = NetSuite::Records::CustomFieldList.new
|
49
|
+
vendor.custom_field_list = custom_field_list
|
50
|
+
vendor.custom_field_list.should eql(custom_field_list)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe '.get' do
|
55
|
+
context 'when the response is successful' do
|
56
|
+
let(:response) { NetSuite::Response.new(:success => true, :body => { :is_person => true }) }
|
57
|
+
|
58
|
+
it 'returns a Vendor instance populated with the data from the response object' do
|
59
|
+
NetSuite::Actions::Get.should_receive(:call).with([NetSuite::Records::Vendor, { :external_id => 1 }], {}).and_return(response)
|
60
|
+
vendor = NetSuite::Records::Vendor.get(:external_id => 1)
|
61
|
+
vendor.should be_kind_of(NetSuite::Records::Vendor)
|
62
|
+
vendor.is_person.should be_truthy
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context 'when the response is unsuccessful' do
|
67
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
68
|
+
|
69
|
+
it 'raises a RecordNotFound exception' do
|
70
|
+
NetSuite::Actions::Get.should_receive(:call).with([NetSuite::Records::Vendor, { :external_id => 1 }], {}).and_return(response)
|
71
|
+
lambda {
|
72
|
+
NetSuite::Records::Vendor.get(:external_id => 1)
|
73
|
+
}.should raise_error(NetSuite::RecordNotFound,
|
74
|
+
/NetSuite::Records::Vendor with OPTIONS=(.*) could not be found/)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe '#add' do
|
80
|
+
let(:vendor) { NetSuite::Records::Vendor.new(:entity_id => 'TEST VENDOR', :is_person => true) }
|
81
|
+
|
82
|
+
context 'when the response is successful' do
|
83
|
+
let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
|
84
|
+
|
85
|
+
it 'returns true' do
|
86
|
+
NetSuite::Actions::Add.should_receive(:call).
|
87
|
+
with([vendor], {}).
|
88
|
+
and_return(response)
|
89
|
+
vendor.add.should be_truthy
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
context 'when the response is unsuccessful' do
|
94
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
95
|
+
|
96
|
+
it 'returns false' do
|
97
|
+
NetSuite::Actions::Add.should_receive(:call).
|
98
|
+
with([vendor], {}).
|
99
|
+
and_return(response)
|
100
|
+
vendor.add.should be_falsey
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
describe '#delete' do
|
106
|
+
context 'when the response is successful' do
|
107
|
+
let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
|
108
|
+
|
109
|
+
it 'returns true' do
|
110
|
+
NetSuite::Actions::Delete.should_receive(:call).
|
111
|
+
with([vendor], {}).
|
112
|
+
and_return(response)
|
113
|
+
vendor.delete.should be_truthy
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
context 'when the response is unsuccessful' do
|
118
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
119
|
+
|
120
|
+
it 'returns false' do
|
121
|
+
NetSuite::Actions::Delete.should_receive(:call).
|
122
|
+
with([vendor], {}).
|
123
|
+
and_return(response)
|
124
|
+
vendor.delete.should be_falsey
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe '#to_record' do
|
130
|
+
let(:vendor) { NetSuite::Records::Vendor.new(:entity_id => 'TEST VENDOR', :is_person => true) }
|
131
|
+
|
132
|
+
it 'returns a hash of attributes that can be used in a SOAP request' do
|
133
|
+
vendor.to_record.should eql({
|
134
|
+
'listRel:entityId' => 'TEST VENDOR',
|
135
|
+
'listRel:isPerson' => true
|
136
|
+
})
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
describe '#record_type' do
|
141
|
+
it 'returns a string type for the record to be used in a SOAP request' do
|
142
|
+
vendor.record_type.should eql('listRel:Vendor')
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: netsuite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2015-02-02 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: savon
|
@@ -201,6 +201,7 @@ files:
|
|
201
201
|
- lib/netsuite/records/units_type.rb
|
202
202
|
- lib/netsuite/records/units_type_uom.rb
|
203
203
|
- lib/netsuite/records/units_type_uom_list.rb
|
204
|
+
- lib/netsuite/records/vendor.rb
|
204
205
|
- lib/netsuite/records/work_order.rb
|
205
206
|
- lib/netsuite/records/work_order_item.rb
|
206
207
|
- lib/netsuite/records/work_order_item_list.rb
|
@@ -299,6 +300,7 @@ files:
|
|
299
300
|
- spec/netsuite/records/units_type_spec.rb
|
300
301
|
- spec/netsuite/records/units_type_uom_list_spec.rb
|
301
302
|
- spec/netsuite/records/units_type_uom_spec.rb
|
303
|
+
- spec/netsuite/records/vendor_spec.rb
|
302
304
|
- spec/netsuite/records/work_order_item_list_spec.rb
|
303
305
|
- spec/netsuite/records/work_order_item_spec.rb
|
304
306
|
- spec/netsuite/records/work_order_spec.rb
|
@@ -446,6 +448,7 @@ test_files:
|
|
446
448
|
- spec/netsuite/records/units_type_spec.rb
|
447
449
|
- spec/netsuite/records/units_type_uom_list_spec.rb
|
448
450
|
- spec/netsuite/records/units_type_uom_spec.rb
|
451
|
+
- spec/netsuite/records/vendor_spec.rb
|
449
452
|
- spec/netsuite/records/work_order_item_list_spec.rb
|
450
453
|
- spec/netsuite/records/work_order_item_spec.rb
|
451
454
|
- spec/netsuite/records/work_order_spec.rb
|