netsuite 0.0.15 → 0.0.16
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 +2 -0
- data/lib/netsuite/actions/add.rb +8 -1
- data/lib/netsuite/actions/get.rb +10 -7
- data/lib/netsuite/actions/update.rb +60 -0
- data/lib/netsuite/records/classification.rb +3 -3
- data/lib/netsuite/records/custom_record.rb +37 -0
- data/lib/netsuite/records/customer.rb +12 -9
- data/lib/netsuite/records/invoice.rb +6 -6
- data/lib/netsuite/records/non_inventory_sale_item.rb +3 -3
- data/lib/netsuite/version.rb +1 -1
- data/spec/netsuite/actions/get_spec.rb +4 -4
- data/spec/netsuite/actions/update_spec.rb +66 -0
- data/spec/netsuite/records/classification_spec.rb +6 -5
- data/spec/netsuite/records/custom_record_spec.rb +52 -0
- data/spec/netsuite/records/customer_spec.rb +6 -5
- data/spec/netsuite/records/invoice_spec.rb +6 -5
- data/spec/netsuite/records/non_inventory_sale_item_spec.rb +6 -5
- data/spec/support/fixtures/update/update_customer.xml +16 -0
- data/spec/support/fixtures/update/update_invoice.xml +0 -0
- metadata +14 -4
data/lib/netsuite.rb
CHANGED
@@ -23,6 +23,7 @@ require 'netsuite/support/requests'
|
|
23
23
|
require 'netsuite/actions/add'
|
24
24
|
require 'netsuite/actions/get'
|
25
25
|
require 'netsuite/actions/initialize'
|
26
|
+
require 'netsuite/actions/update'
|
26
27
|
|
27
28
|
# RECORDS
|
28
29
|
require 'netsuite/records/bill_address'
|
@@ -38,6 +39,7 @@ require 'netsuite/records/non_inventory_sale_item'
|
|
38
39
|
require 'netsuite/records/invoice_item'
|
39
40
|
require 'netsuite/records/invoice_item_list'
|
40
41
|
require 'netsuite/records/classification'
|
42
|
+
require 'netsuite/records/custom_record'
|
41
43
|
|
42
44
|
module NetSuite
|
43
45
|
|
data/lib/netsuite/actions/add.rb
CHANGED
@@ -31,7 +31,7 @@ module NetSuite
|
|
31
31
|
# </platformMsgs:add>
|
32
32
|
# </soap:Body>
|
33
33
|
def request_body
|
34
|
-
{
|
34
|
+
hash = {
|
35
35
|
'platformMsgs:record' => @obj.to_record,
|
36
36
|
:attributes! => {
|
37
37
|
'platformMsgs:record' => {
|
@@ -39,6 +39,13 @@ module NetSuite
|
|
39
39
|
}
|
40
40
|
}
|
41
41
|
}
|
42
|
+
if @obj.respond_to?(:internal_id) && @obj.internal_id
|
43
|
+
hash[:attributes!]['platformMsgs:record']['platformMsgs:internalId'] = @obj.internal_id
|
44
|
+
end
|
45
|
+
if @obj.respond_to?(:external_id) && @obj.external_id
|
46
|
+
hash[:attributes!]['platformMsgs:record']['platformMsgs:externalId'] = @obj.external_id
|
47
|
+
end
|
48
|
+
hash
|
42
49
|
end
|
43
50
|
|
44
51
|
def success?
|
data/lib/netsuite/actions/get.rb
CHANGED
@@ -3,9 +3,9 @@ module NetSuite
|
|
3
3
|
class Get
|
4
4
|
include Support::Requests
|
5
5
|
|
6
|
-
def initialize(
|
7
|
-
@
|
8
|
-
@
|
6
|
+
def initialize(klass, options = {})
|
7
|
+
@klass = klass
|
8
|
+
@options = options
|
9
9
|
end
|
10
10
|
|
11
11
|
private
|
@@ -31,16 +31,19 @@ module NetSuite
|
|
31
31
|
# </platformMsgs:get>
|
32
32
|
# </soap:Body>
|
33
33
|
def request_body
|
34
|
-
{
|
34
|
+
body = {
|
35
35
|
'platformMsgs:baseRef' => {},
|
36
36
|
:attributes! => {
|
37
37
|
'platformMsgs:baseRef' => {
|
38
|
-
:
|
39
|
-
:type => soap_type,
|
40
|
-
'xsi:type' => 'platformCore:RecordRef'
|
38
|
+
'xsi:type' => (@options[:custom] ? 'platformCore:CustomRecordRef' : 'platformCore:RecordRef')
|
41
39
|
}
|
42
40
|
}
|
43
41
|
}
|
42
|
+
body[:attributes!]['platformMsgs:baseRef']['externalId'] = @options[:external_id] if @options[:external_id]
|
43
|
+
body[:attributes!]['platformMsgs:baseRef']['internalId'] = @options[:internal_id] if @options[:internal_id]
|
44
|
+
body[:attributes!]['platformMsgs:baseRef']['typeId'] = @options[:type_id] if @options[:type_id]
|
45
|
+
body[:attributes!]['platformMsgs:baseRef']['type'] = soap_type unless @options[:custom]
|
46
|
+
body
|
44
47
|
end
|
45
48
|
|
46
49
|
def success?
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module NetSuite
|
2
|
+
module Actions
|
3
|
+
class Update
|
4
|
+
include Support::Requests
|
5
|
+
|
6
|
+
def initialize(obj = nil)
|
7
|
+
@obj = obj
|
8
|
+
end
|
9
|
+
|
10
|
+
def request
|
11
|
+
connection.request :platformMsgs, :update do
|
12
|
+
soap.namespaces['xmlns:platformMsgs'] = 'urn:messages_2011_2.platform.webservices.netsuite.com'
|
13
|
+
soap.namespaces['xmlns:platformCore'] = 'urn:core_2011_2.platform.webservices.netsuite.com'
|
14
|
+
soap.namespaces['xmlns:listRel'] = 'urn:relationships_2011_2.lists.webservices.netsuite.com'
|
15
|
+
soap.namespaces['xmlns:tranSales'] = 'urn:sales_2011_2.transactions.webservices.netsuite.com'
|
16
|
+
soap.namespaces['xmlns:platformCommon'] = 'urn:common_2011_2.platform.webservices.netsuite.com'
|
17
|
+
soap.namespaces['xmlns:listAcct'] = 'urn:accounting_2011_2.lists.webservices.netsuite.com'
|
18
|
+
soap.header = auth_header
|
19
|
+
soap.body = request_body
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# <platformMsgs:update>
|
24
|
+
# <platformMsgs:record internalId="980" xsi:type="listRel:Customer">
|
25
|
+
# <listRel:companyName>Shutter Fly Corporation</listRel:companyName>
|
26
|
+
# </platformMsgs:record>
|
27
|
+
# </platformMsgs:update>
|
28
|
+
def request_body
|
29
|
+
hash = {
|
30
|
+
'platformMsgs:record' => @obj.to_record,
|
31
|
+
:attributes! => {
|
32
|
+
'platformMsgs:record' => {
|
33
|
+
'xsi:type' => @obj.record_type
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}
|
37
|
+
if @obj.respond_to?(:internal_id) && @obj.internal_id
|
38
|
+
hash[:attributes!]['platformMsgs:record']['platformMsgs:internalId'] = @obj.internal_id
|
39
|
+
end
|
40
|
+
if @obj.respond_to?(:external_id) && @obj.external_id
|
41
|
+
hash[:attributes!]['platformMsgs:record']['platformMsgs:externalId'] = @obj.external_id
|
42
|
+
end
|
43
|
+
hash
|
44
|
+
end
|
45
|
+
|
46
|
+
def success?
|
47
|
+
@success ||= response_hash[:status][:@is_success] == 'true'
|
48
|
+
end
|
49
|
+
|
50
|
+
def response_body
|
51
|
+
@response_body ||= response_hash[:base_ref]
|
52
|
+
end
|
53
|
+
|
54
|
+
def response_hash
|
55
|
+
@response_hash ||= @response.to_hash[:update_response][:write_response]
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -14,12 +14,12 @@ module NetSuite
|
|
14
14
|
initialize_from_attributes_hash(attributes)
|
15
15
|
end
|
16
16
|
|
17
|
-
def self.get(
|
18
|
-
response = Actions::Get.call(
|
17
|
+
def self.get(options = {})
|
18
|
+
response = Actions::Get.call(self, options)
|
19
19
|
if response.success?
|
20
20
|
new(response.body)
|
21
21
|
else
|
22
|
-
raise RecordNotFound, "#{self} with
|
22
|
+
raise RecordNotFound, "#{self} with OPTIONS=#{options.inspect} could not be found"
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module NetSuite
|
2
|
+
module Records
|
3
|
+
class CustomRecord
|
4
|
+
include Support::Fields
|
5
|
+
|
6
|
+
fields :allow_attachments, :allow_inline_editing, :allow_numbering_override, :allow_quick_search, :created,
|
7
|
+
:custom_record_id, :description, :disclaimer, :enabl_email_merge, :enable_numbering, :include_name,
|
8
|
+
:is_available_offline, :is_inactive, :is_numbering_updateable, :is_ordered, :last_modified, :name,
|
9
|
+
:numbering_current_number, :numbering_init, :numbering_min_digits, :numbering_prefix, :numbering_suffix,
|
10
|
+
:record_name, :script_id, :show_creation_date, :show_creation_date_on_list, :show_id, :show_last_modified_on_list,
|
11
|
+
:show_last_modified, :show_notes, :show_owner, :show_owner_allow_change, :show_owner_on_list, :use_permissions
|
12
|
+
|
13
|
+
def initialize(attributes = {})
|
14
|
+
initialize_from_attributes_hash(attributes)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.get(options = {})
|
18
|
+
options.merge!(:type_id => type_id) unless options[:type_id]
|
19
|
+
response = Actions::Get.call(self, options.merge!(:custom => true))
|
20
|
+
if response.success?
|
21
|
+
new(response.body)
|
22
|
+
else
|
23
|
+
raise RecordNotFound, "#{self} with OPTIONS=#{options.inspect} could not be found"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.type_id(id = nil)
|
28
|
+
if id
|
29
|
+
@type_id = id
|
30
|
+
else
|
31
|
+
@type_id
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -6,23 +6,26 @@ module NetSuite
|
|
6
6
|
include Support::Records
|
7
7
|
include Namespaces::ListRel
|
8
8
|
|
9
|
-
fields :access_role, :account_number, :addressbook_list, :aging, :alt_email, :alt_name, :alt_phone, :
|
9
|
+
fields :access_role, :account_number, :addressbook_list, :aging, :alt_email, :alt_name, :alt_phone, :bill_pay,
|
10
10
|
:buying_reason, :buying_time_frame, :campaign_category, :category, :click_stream, :comments, :company_name,
|
11
|
-
:consol_aging, :
|
12
|
-
:
|
11
|
+
:consol_aging, :consol_days_overdue,
|
12
|
+
:contact_roles_list, :contrib_pct, :credit_cards_list, :credit_hold_override, :credit_limit,
|
13
13
|
:currency, :currency_list, :custom_field_list, :date_created, :days_overdue, :default_address,
|
14
|
-
:
|
14
|
+
:download_list, :email, :email_preference, :email_transactions, :end_date, :entity_id,
|
15
15
|
:estimated_budget, :fax, :fax_transactions, :first_name, :first_visit, :give_access, :global_subscription_status,
|
16
16
|
:group_pricing_list, :home_phone, :image, :is_budget_approved, :is_inactive, :is_person, :item_pricing_list, :keywords,
|
17
17
|
:language, :last_modified, :last_name, :last_page_visited, :last_visit, :lead_source, :middle_name, :mobile_phone,
|
18
|
-
:opening_balance, :opening_balance_account, :opening_balance_date, :
|
18
|
+
:opening_balance, :opening_balance_account, :opening_balance_date, :parent, :partner, :partners_list,
|
19
19
|
:password, :password_2, :phone, :phonetic_name, :pref_cc_processor, :price_level, :print_on_check_as,
|
20
20
|
:print_transactions, :referrer, :reminder_days, :representing_subsidiary, :require_pwd_change, :resale_number,
|
21
21
|
:sales_group, :sales_readiness, :sales_rep, :sales_team_list, :salutation, :send_email, :ship_complete, :shipping_item,
|
22
22
|
:stage, :start_date, :subscriptions_list, :subsidiary, :sync_partner_teams, :tax_exempt, :tax_item, :taxable, :terms,
|
23
|
-
:territory, :third_party_acct, :third_party_country, :third_party_zipcode, :title, :
|
23
|
+
:territory, :third_party_acct, :third_party_country, :third_party_zipcode, :title, :url,
|
24
24
|
:vat_reg_number, :visits, :web_lead
|
25
25
|
|
26
|
+
read_only_fields :balance, :consol_balance, :deposit_balance, :consol_deposit_balance, :overdue_balance,
|
27
|
+
:consol_overdue_balance, :unbilled_orders, :consol_unbilled_orders
|
28
|
+
|
26
29
|
record_refs :custom_form, :entity_status
|
27
30
|
|
28
31
|
attr_reader :internal_id
|
@@ -42,12 +45,12 @@ module NetSuite
|
|
42
45
|
attributes[:addressbook_list] ||= CustomerAddressbookList.new
|
43
46
|
end
|
44
47
|
|
45
|
-
def self.get(
|
46
|
-
response = Actions::Get.call(
|
48
|
+
def self.get(options = {})
|
49
|
+
response = Actions::Get.call(self, options)
|
47
50
|
if response.success?
|
48
51
|
new(response.body)
|
49
52
|
else
|
50
|
-
raise RecordNotFound, "#{self} with
|
53
|
+
raise RecordNotFound, "#{self} with OPTIONS=#{options.inspect} could not be found"
|
51
54
|
end
|
52
55
|
end
|
53
56
|
|
@@ -6,7 +6,7 @@ module NetSuite
|
|
6
6
|
include Support::Records
|
7
7
|
include Namespaces::TranSales
|
8
8
|
|
9
|
-
fields :alt_handling_cost, :alt_shipping_cost, :
|
9
|
+
fields :alt_handling_cost, :alt_shipping_cost, :balance, :bill_address,
|
10
10
|
:billing_schedule, :contrib_pct, :created_date, :created_from, :currency_name, :custom_field_list,
|
11
11
|
:deferred_revenue, :department, :discount_amount, :discount_date, :discount_item, :discount_rate,
|
12
12
|
:due_date, :email, :end_date, :est_gross_profit, :est_gross_profit_percent, :exchange_rate,
|
@@ -17,7 +17,7 @@ module NetSuite
|
|
17
17
|
:item_cost_disc_rate, :item_cost_disc_tax_1_amt, :item_cost_disc_taxable, :item_cost_discount, :item_cost_list,
|
18
18
|
:item_cost_tax_code, :item_cost_tax_rate_1, :item_cost_tax_rate_2, :job, :last_modified_date,
|
19
19
|
:lead_source, :linked_tracking_numbers, :location, :memo, :message, :message_sel, :on_credit_hold, :opportunity,
|
20
|
-
:other_ref_name, :partner, :partners_list, :promo_code, :
|
20
|
+
:other_ref_name, :partner, :partners_list, :promo_code, :rev_rec_end_date,
|
21
21
|
:rev_rec_on_rev_commitment, :rev_rec_schedule, :rev_rec_start_date, :revenue_status, :sales_effective_date,
|
22
22
|
:sales_group, :sales_rep, :sales_team_list, :ship_address, :ship_date, :ship_group_list,
|
23
23
|
:ship_method, :shipping_cost, :shipping_tax_1_rate, :shipping_tax_2_rate, :shipping_tax_code, :source, :start_date,
|
@@ -27,7 +27,7 @@ module NetSuite
|
|
27
27
|
:to_be_printed, :total_cost_estimate, :tracking_numbers, :tran_date, :tran_id, :tran_is_vsoe_bundle,
|
28
28
|
:transaction_bill_address, :transaction_ship_address, :vat_reg_num, :vsoe_auto_calc
|
29
29
|
|
30
|
-
read_only_fields :sub_total, :discount_total, :total
|
30
|
+
read_only_fields :sub_total, :discount_total, :total, :recognized_revenue, :amount_remaining, :amount_paid
|
31
31
|
|
32
32
|
record_refs :account, :bill_address_list, :custom_form, :entity, :klass, :posting_period, :ship_address_list
|
33
33
|
|
@@ -60,12 +60,12 @@ module NetSuite
|
|
60
60
|
attributes[:custom_field_list] = CustomFieldList.new(attrs)
|
61
61
|
end
|
62
62
|
|
63
|
-
def self.get(
|
64
|
-
response = Actions::Get.call(
|
63
|
+
def self.get(options = {})
|
64
|
+
response = Actions::Get.call(self, options)
|
65
65
|
if response.success?
|
66
66
|
new(response.body)
|
67
67
|
else
|
68
|
-
raise RecordNotFound, "#{self} with
|
68
|
+
raise RecordNotFound, "#{self} with OPTIONS=#{options.inspect} could not be found"
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
@@ -36,12 +36,12 @@ module NetSuite
|
|
36
36
|
initialize_from_attributes_hash(attributes)
|
37
37
|
end
|
38
38
|
|
39
|
-
def self.get(
|
40
|
-
response = Actions::Get.call(
|
39
|
+
def self.get(options = {})
|
40
|
+
response = Actions::Get.call(self, options)
|
41
41
|
if response.success?
|
42
42
|
new(response.body)
|
43
43
|
else
|
44
|
-
raise RecordNotFound, "#{self} with
|
44
|
+
raise RecordNotFound, "#{self} with OPTIONS=#{options.inspect} could not be found"
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
data/lib/netsuite/version.rb
CHANGED
@@ -17,11 +17,11 @@ describe NetSuite::Actions::Get do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'makes a valid request to the NetSuite API' do
|
20
|
-
NetSuite::Actions::Get.call(
|
20
|
+
NetSuite::Actions::Get.call(NetSuite::Records::Customer, :external_id => 1)
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'returns a valid Response object' do
|
24
|
-
response = NetSuite::Actions::Get.call(
|
24
|
+
response = NetSuite::Actions::Get.call(NetSuite::Records::Customer, :external_id => 1)
|
25
25
|
response.should be_kind_of(NetSuite::Response)
|
26
26
|
end
|
27
27
|
end
|
@@ -41,11 +41,11 @@ describe NetSuite::Actions::Get do
|
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'makes a valid request to the NetSuite API' do
|
44
|
-
NetSuite::Actions::Get.call(
|
44
|
+
NetSuite::Actions::Get.call(NetSuite::Records::Invoice, :external_id => 1)
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'returns a valid Response object' do
|
48
|
-
response = NetSuite::Actions::Get.call(
|
48
|
+
response = NetSuite::Actions::Get.call(NetSuite::Records::Invoice, :external_id => 1)
|
49
49
|
response.should be_kind_of(NetSuite::Response)
|
50
50
|
end
|
51
51
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Actions::Update do
|
4
|
+
|
5
|
+
context 'Customer' do
|
6
|
+
let(:customer) do
|
7
|
+
NetSuite::Records::Customer.new(:entity_id => 'Shutter Fly', :company_name => 'Shutter Fly, Inc.')
|
8
|
+
end
|
9
|
+
|
10
|
+
before do
|
11
|
+
savon.expects(:update).with({
|
12
|
+
'platformMsgs:record' => {
|
13
|
+
'listRel:entityId' => 'Shutter Fly',
|
14
|
+
'listRel:companyName' => 'Shutter Fly, Inc.'
|
15
|
+
},
|
16
|
+
:attributes! => {
|
17
|
+
'platformMsgs:baseRef' => {
|
18
|
+
'xsi:type' => 'listRel:Customer'
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}).returns(:update_customer)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'makes a valid request to the NetSuite API' do
|
25
|
+
NetSuite::Actions::Update.call(customer)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'returns a valid Response object' do
|
29
|
+
response = NetSuite::Actions::Update.call(customer)
|
30
|
+
response.should be_kind_of(NetSuite::Response)
|
31
|
+
response.should be_success
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'Invoice' do
|
36
|
+
let(:invoice) do
|
37
|
+
NetSuite::Records::Invoice.new(:source => 'Google', :total => 100.0)
|
38
|
+
end
|
39
|
+
|
40
|
+
before do
|
41
|
+
pending
|
42
|
+
savon.expects(:update).with({
|
43
|
+
'platformMsgs:record' => {
|
44
|
+
'listRel:source' => 'Google',
|
45
|
+
'listRel:total' => 100.0
|
46
|
+
},
|
47
|
+
:attributes! => {
|
48
|
+
'platformMsgs:baseRef' => {
|
49
|
+
'xsi:type' => 'listRel:Invoice'
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}).returns(:update_invoice)
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'makes a valid request to the NetSuite API' do
|
56
|
+
NetSuite::Actions::Update.call(invoice)
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'returns a valid Response object' do
|
60
|
+
response = NetSuite::Actions::Update.call(invoice)
|
61
|
+
response.should be_kind_of(NetSuite::Response)
|
62
|
+
response.should be_success
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
@@ -16,8 +16,8 @@ describe NetSuite::Records::Classification do
|
|
16
16
|
let(:response) { NetSuite::Response.new(:success => true, :body => { :name => 'Retail' }) }
|
17
17
|
|
18
18
|
it 'returns an Invoice instance populated with the data from the response object' do
|
19
|
-
NetSuite::Actions::Get.should_receive(:call).with(
|
20
|
-
invoice = NetSuite::Records::Classification.get(10)
|
19
|
+
NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::Classification, :external_id => 10).and_return(response)
|
20
|
+
invoice = NetSuite::Records::Classification.get(:external_id => 10)
|
21
21
|
invoice.should be_kind_of(NetSuite::Records::Classification)
|
22
22
|
end
|
23
23
|
end
|
@@ -26,10 +26,11 @@ describe NetSuite::Records::Classification do
|
|
26
26
|
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
27
27
|
|
28
28
|
it 'raises a RecordNotFound exception' do
|
29
|
-
NetSuite::Actions::Get.should_receive(:call).with(
|
29
|
+
NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::Classification, :external_id => 10).and_return(response)
|
30
30
|
lambda {
|
31
|
-
NetSuite::Records::Classification.get(10)
|
32
|
-
}.should raise_error(NetSuite::RecordNotFound,
|
31
|
+
NetSuite::Records::Classification.get(:external_id => 10)
|
32
|
+
}.should raise_error(NetSuite::RecordNotFound,
|
33
|
+
/NetSuite::Records::Classification with OPTIONS=(.*) could not be found/)
|
33
34
|
end
|
34
35
|
end
|
35
36
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::CustomRecord do
|
4
|
+
let(:record) { NetSuite::Records::CustomRecord.new }
|
5
|
+
#<element name="customForm" type="platformCore:RecordRef" minOccurs="0"/>
|
6
|
+
#<element name="owner" type="platformCore:RecordRef" minOccurs="0"/>
|
7
|
+
#<element name="recType" type="platformCore:RecordRef" minOccurs="0"/>
|
8
|
+
#<element name="customFieldList" type="platformCore:CustomFieldList" minOccurs="0"/>
|
9
|
+
|
10
|
+
it 'has all the right fields' do
|
11
|
+
[
|
12
|
+
:allow_attachments, :allow_inline_editing, :allow_numbering_override, :allow_quick_search, :created, :custom_record_id,
|
13
|
+
:description, :disclaimer, :enabl_email_merge, :enable_numbering, :include_name, :is_available_offline, :is_inactive,
|
14
|
+
:is_numbering_updateable, :is_ordered, :last_modified, :name, :numbering_current_number, :numbering_init,
|
15
|
+
:numbering_min_digits, :numbering_prefix, :numbering_suffix, :record_name, :script_id, :show_creation_date,
|
16
|
+
:show_creation_date_on_list, :show_id, :show_last_modified, :show_last_modified_on_list, :show_notes, :show_owner,
|
17
|
+
:show_owner_allow_change, :show_owner_on_list, :use_permissions
|
18
|
+
].each do |field|
|
19
|
+
record.should have_field(field)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '.get' do
|
24
|
+
context 'when the response is successful' do
|
25
|
+
let(:response) { NetSuite::Response.new(:success => true, :body => { :allow_quick_search => true }) }
|
26
|
+
|
27
|
+
it 'returns a Customer instance populated with the data from the response object' do
|
28
|
+
NetSuite::Actions::Get.should_receive(:call).
|
29
|
+
with(NetSuite::Records::CustomRecord, :external_id => 1, :type_id => nil, :custom => true).
|
30
|
+
and_return(response)
|
31
|
+
customer = NetSuite::Records::CustomRecord.get(:external_id => 1)
|
32
|
+
customer.should be_kind_of(NetSuite::Records::CustomRecord)
|
33
|
+
customer.allow_quick_search.should be_true
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'when the response is unsuccessful' do
|
38
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
39
|
+
|
40
|
+
it 'raises a RecordNotFound exception' do
|
41
|
+
NetSuite::Actions::Get.should_receive(:call).
|
42
|
+
with(NetSuite::Records::CustomRecord, :external_id => 1, :type_id => nil, :custom => true).
|
43
|
+
and_return(response)
|
44
|
+
lambda {
|
45
|
+
NetSuite::Records::CustomRecord.get(:external_id => 1)
|
46
|
+
}.should raise_error(NetSuite::RecordNotFound,
|
47
|
+
/NetSuite::Records::CustomRecord with OPTIONS={(.*)} could not be found/)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
@@ -59,8 +59,8 @@ describe NetSuite::Records::Customer do
|
|
59
59
|
let(:response) { NetSuite::Response.new(:success => true, :body => { :is_person => true }) }
|
60
60
|
|
61
61
|
it 'returns a Customer instance populated with the data from the response object' do
|
62
|
-
NetSuite::Actions::Get.should_receive(:call).with(
|
63
|
-
customer = NetSuite::Records::Customer.get(1)
|
62
|
+
NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::Customer, :external_id => 1).and_return(response)
|
63
|
+
customer = NetSuite::Records::Customer.get(:external_id => 1)
|
64
64
|
customer.should be_kind_of(NetSuite::Records::Customer)
|
65
65
|
customer.is_person.should be_true
|
66
66
|
end
|
@@ -70,10 +70,11 @@ describe NetSuite::Records::Customer do
|
|
70
70
|
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
71
71
|
|
72
72
|
it 'raises a RecordNotFound exception' do
|
73
|
-
NetSuite::Actions::Get.should_receive(:call).with(
|
73
|
+
NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::Customer, :external_id => 1).and_return(response)
|
74
74
|
lambda {
|
75
|
-
NetSuite::Records::Customer.get(1)
|
76
|
-
}.should raise_error(NetSuite::RecordNotFound,
|
75
|
+
NetSuite::Records::Customer.get(:external_id => 1)
|
76
|
+
}.should raise_error(NetSuite::RecordNotFound,
|
77
|
+
/NetSuite::Records::Customer with OPTIONS=(.*) could not be found/)
|
77
78
|
end
|
78
79
|
end
|
79
80
|
end
|
@@ -67,8 +67,8 @@ describe NetSuite::Records::Invoice do
|
|
67
67
|
let(:response) { NetSuite::Response.new(:success => true, :body => { :is_person => true }) }
|
68
68
|
|
69
69
|
it 'returns an Invoice instance populated with the data from the response object' do
|
70
|
-
NetSuite::Actions::Get.should_receive(:call).with(
|
71
|
-
invoice = NetSuite::Records::Invoice.get(10)
|
70
|
+
NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::Invoice, :external_id => 10).and_return(response)
|
71
|
+
invoice = NetSuite::Records::Invoice.get(:external_id => 10)
|
72
72
|
invoice.should be_kind_of(NetSuite::Records::Invoice)
|
73
73
|
end
|
74
74
|
end
|
@@ -77,10 +77,11 @@ describe NetSuite::Records::Invoice do
|
|
77
77
|
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
78
78
|
|
79
79
|
it 'raises a RecordNotFound exception' do
|
80
|
-
NetSuite::Actions::Get.should_receive(:call).with(
|
80
|
+
NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::Invoice, :external_id => 10).and_return(response)
|
81
81
|
lambda {
|
82
|
-
NetSuite::Records::Invoice.get(10)
|
83
|
-
}.should raise_error(NetSuite::RecordNotFound,
|
82
|
+
NetSuite::Records::Invoice.get(:external_id => 10)
|
83
|
+
}.should raise_error(NetSuite::RecordNotFound,
|
84
|
+
/NetSuite::Records::Invoice with OPTIONS=(.*) could not be found/)
|
84
85
|
end
|
85
86
|
end
|
86
87
|
end
|
@@ -42,8 +42,8 @@ describe NetSuite::Records::NonInventorySaleItem do
|
|
42
42
|
let(:response) { NetSuite::Response.new(:success => true, :body => { :manufacturer_zip => '90401' }) }
|
43
43
|
|
44
44
|
it 'returns a NonInventorySaleItem instance populated with the data from the response object' do
|
45
|
-
NetSuite::Actions::Get.should_receive(:call).with(
|
46
|
-
customer = NetSuite::Records::NonInventorySaleItem.get(20)
|
45
|
+
NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::NonInventorySaleItem, :external_id => 20).and_return(response)
|
46
|
+
customer = NetSuite::Records::NonInventorySaleItem.get(:external_id => 20)
|
47
47
|
customer.should be_kind_of(NetSuite::Records::NonInventorySaleItem)
|
48
48
|
customer.manufacturer_zip.should eql('90401')
|
49
49
|
end
|
@@ -53,10 +53,11 @@ describe NetSuite::Records::NonInventorySaleItem do
|
|
53
53
|
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
54
54
|
|
55
55
|
it 'raises a RecordNotFound exception' do
|
56
|
-
NetSuite::Actions::Get.should_receive(:call).with(
|
56
|
+
NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::NonInventorySaleItem, :external_id => 20).and_return(response)
|
57
57
|
lambda {
|
58
|
-
NetSuite::Records::NonInventorySaleItem.get(20)
|
59
|
-
}.should raise_error(NetSuite::RecordNotFound,
|
58
|
+
NetSuite::Records::NonInventorySaleItem.get(:external_id => 20)
|
59
|
+
}.should raise_error(NetSuite::RecordNotFound,
|
60
|
+
/NetSuite::Records::NonInventorySaleItem with OPTIONS=(.*) could not be found/)
|
60
61
|
end
|
61
62
|
end
|
62
63
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
3
|
+
<soapenv:Header>
|
4
|
+
<platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2011_2.platform.webservices.netsuite.com">
|
5
|
+
<platformMsgs:nsId>WEBSERVICES_3392464_011220127305624241236468140_8ef09e2dc9b2</platformMsgs:nsId>
|
6
|
+
</platformMsgs:documentInfo>
|
7
|
+
</soapenv:Header>
|
8
|
+
<soapenv:Body>
|
9
|
+
<updateResponse xmlns="urn:messages_2011_2.platform.webservices.netsuite.com">
|
10
|
+
<writeResponse>
|
11
|
+
<platformCore:status isSuccess="true" xmlns:platformCore="urn:core_2011_2.platform.webservices.netsuite.com"/>
|
12
|
+
<baseRef internalId="329" externalId="100001" type="customer" xsi:type="platformCore:RecordRef" xmlns:platformCore="urn:core_2011_2.platform.webservices.netsuite.com"/>
|
13
|
+
</writeResponse>
|
14
|
+
</updateResponse>
|
15
|
+
</soapenv:Body>
|
16
|
+
</soapenv:Envelope>
|
File without changes
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: netsuite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 63
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 16
|
10
|
+
version: 0.0.16
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ryan Moran
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-01-
|
18
|
+
date: 2012-01-13 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: savon
|
@@ -103,6 +103,7 @@ files:
|
|
103
103
|
- lib/netsuite/actions/add.rb
|
104
104
|
- lib/netsuite/actions/get.rb
|
105
105
|
- lib/netsuite/actions/initialize.rb
|
106
|
+
- lib/netsuite/actions/update.rb
|
106
107
|
- lib/netsuite/configuration.rb
|
107
108
|
- lib/netsuite/errors.rb
|
108
109
|
- lib/netsuite/namespaces/list_acct.rb
|
@@ -114,6 +115,7 @@ files:
|
|
114
115
|
- lib/netsuite/records/classification.rb
|
115
116
|
- lib/netsuite/records/custom_field.rb
|
116
117
|
- lib/netsuite/records/custom_field_list.rb
|
118
|
+
- lib/netsuite/records/custom_record.rb
|
117
119
|
- lib/netsuite/records/customer.rb
|
118
120
|
- lib/netsuite/records/customer_addressbook.rb
|
119
121
|
- lib/netsuite/records/customer_addressbook_list.rb
|
@@ -134,11 +136,13 @@ files:
|
|
134
136
|
- spec/netsuite/actions/add_spec.rb
|
135
137
|
- spec/netsuite/actions/get_spec.rb
|
136
138
|
- spec/netsuite/actions/initialize_spec.rb
|
139
|
+
- spec/netsuite/actions/update_spec.rb
|
137
140
|
- spec/netsuite/configuration_spec.rb
|
138
141
|
- spec/netsuite/records/bill_address_spec.rb
|
139
142
|
- spec/netsuite/records/classification_spec.rb
|
140
143
|
- spec/netsuite/records/custom_field_list_spec.rb
|
141
144
|
- spec/netsuite/records/custom_field_spec.rb
|
145
|
+
- spec/netsuite/records/custom_record_spec.rb
|
142
146
|
- spec/netsuite/records/customer_addressbook_list_spec.rb
|
143
147
|
- spec/netsuite/records/customer_addressbook_spec.rb
|
144
148
|
- spec/netsuite/records/customer_spec.rb
|
@@ -163,6 +167,8 @@ files:
|
|
163
167
|
- spec/support/fixtures/get/get_customer.xml
|
164
168
|
- spec/support/fixtures/get/get_invoice.xml
|
165
169
|
- spec/support/fixtures/initialize/initialize_invoice_from_customer.xml
|
170
|
+
- spec/support/fixtures/update/update_customer.xml
|
171
|
+
- spec/support/fixtures/update/update_invoice.xml
|
166
172
|
- spec/support/read_only_field_matcher.rb
|
167
173
|
- spec/support/record_ref_matcher.rb
|
168
174
|
- spec/support/savon.rb
|
@@ -204,11 +210,13 @@ test_files:
|
|
204
210
|
- spec/netsuite/actions/add_spec.rb
|
205
211
|
- spec/netsuite/actions/get_spec.rb
|
206
212
|
- spec/netsuite/actions/initialize_spec.rb
|
213
|
+
- spec/netsuite/actions/update_spec.rb
|
207
214
|
- spec/netsuite/configuration_spec.rb
|
208
215
|
- spec/netsuite/records/bill_address_spec.rb
|
209
216
|
- spec/netsuite/records/classification_spec.rb
|
210
217
|
- spec/netsuite/records/custom_field_list_spec.rb
|
211
218
|
- spec/netsuite/records/custom_field_spec.rb
|
219
|
+
- spec/netsuite/records/custom_record_spec.rb
|
212
220
|
- spec/netsuite/records/customer_addressbook_list_spec.rb
|
213
221
|
- spec/netsuite/records/customer_addressbook_spec.rb
|
214
222
|
- spec/netsuite/records/customer_spec.rb
|
@@ -233,6 +241,8 @@ test_files:
|
|
233
241
|
- spec/support/fixtures/get/get_customer.xml
|
234
242
|
- spec/support/fixtures/get/get_invoice.xml
|
235
243
|
- spec/support/fixtures/initialize/initialize_invoice_from_customer.xml
|
244
|
+
- spec/support/fixtures/update/update_customer.xml
|
245
|
+
- spec/support/fixtures/update/update_invoice.xml
|
236
246
|
- spec/support/read_only_field_matcher.rb
|
237
247
|
- spec/support/record_ref_matcher.rb
|
238
248
|
- spec/support/savon.rb
|