netsuite 0.8.2 → 0.8.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.
- checksums.yaml +4 -4
- data/README.md +69 -20
- data/lib/netsuite.rb +11 -0
- data/lib/netsuite/actions/search.rb +1 -6
- data/lib/netsuite/actions/update_list.rb +109 -0
- data/lib/netsuite/records/bin_transfer.rb +38 -0
- data/lib/netsuite/records/bin_transfer_inventory.rb +20 -0
- data/lib/netsuite/records/bin_transfer_inventory_list.rb +10 -0
- data/lib/netsuite/records/cash_refund_item.rb +1 -1
- data/lib/netsuite/records/classification.rb +1 -1
- data/lib/netsuite/records/inbound_shipment.rb +33 -0
- data/lib/netsuite/records/inbound_shipment_item.rb +39 -0
- data/lib/netsuite/records/inbound_shipment_item_list.rb +11 -0
- data/lib/netsuite/records/inter_company_journal_entry.rb +48 -0
- data/lib/netsuite/records/inter_company_journal_entry_line.rb +28 -0
- data/lib/netsuite/records/inter_company_journal_entry_line_list.rb +14 -0
- data/lib/netsuite/records/inventory_item.rb +1 -1
- data/lib/netsuite/records/price_level.rb +26 -0
- data/lib/netsuite/records/return_authorization_item.rb +1 -1
- data/lib/netsuite/records/sales_order_item.rb +12 -5
- data/lib/netsuite/records/support_case.rb +1 -1
- data/lib/netsuite/support/actions.rb +2 -0
- data/lib/netsuite/support/search_result.rb +7 -3
- data/lib/netsuite/utilities.rb +26 -0
- data/lib/netsuite/version.rb +1 -1
- data/spec/netsuite/actions/update_list_spec.rb +107 -0
- data/spec/netsuite/records/basic_record_spec.rb +5 -1
- data/spec/netsuite/records/inter_company_journal_entry_line_list_spec.rb +26 -0
- data/spec/netsuite/records/inter_company_journal_entry_line_spec.rb +60 -0
- data/spec/netsuite/records/inter_company_journal_entry_spec.rb +156 -0
- data/spec/netsuite/records/inventory_item_spec.rb +57 -0
- data/spec/netsuite/records/price_level_spec.rb +16 -0
- data/spec/netsuite/records/return_authorization_item_spec.rb +1 -1
- data/spec/netsuite/records/sales_order_item_spec.rb +11 -5
- data/spec/netsuite/utilities_spec.rb +21 -0
- data/spec/support/fixtures/update_list/update_list_items.xml +22 -0
- data/spec/support/fixtures/update_list/update_list_one_item.xml +18 -0
- data/spec/support/fixtures/update_list/update_list_with_errors.xml +32 -0
- metadata +29 -2
@@ -53,7 +53,11 @@ describe 'basic records' do
|
|
53
53
|
NetSuite::Records::AssemblyUnbuild,
|
54
54
|
NetSuite::Records::AssemblyComponent,
|
55
55
|
NetSuite::Records::InventoryNumber,
|
56
|
-
NetSuite::Records::
|
56
|
+
NetSuite::Records::PriceLevel,
|
57
|
+
NetSuite::Records::LotNumberedAssemblyItem,
|
58
|
+
NetSuite::Records::InboundShipment,
|
59
|
+
NetSuite::Records::InterCompanyJournalEntry,
|
60
|
+
NetSuite::Records::BinTransfer
|
57
61
|
]
|
58
62
|
}
|
59
63
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::InterCompanyJournalEntryLineList do
|
4
|
+
let(:list) { NetSuite::Records::InterCompanyJournalEntryLineList.new }
|
5
|
+
|
6
|
+
it 'has a custom_fields attribute' do
|
7
|
+
expect(list.lines).to be_kind_of(Array)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#to_record' do
|
11
|
+
before do
|
12
|
+
list.lines << NetSuite::Records::InterCompanyJournalEntryLine.new(:memo => 'This is a memo')
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'can represent itself as a SOAP record' do
|
16
|
+
record =
|
17
|
+
{
|
18
|
+
'tranGeneral:line' => [{
|
19
|
+
'tranGeneral:memo' => 'This is a memo'
|
20
|
+
}]
|
21
|
+
}
|
22
|
+
expect(list.to_record).to eql(record)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::InterCompanyJournalEntryLine do
|
4
|
+
let(:line) { NetSuite::Records::InterCompanyJournalEntryLine.new }
|
5
|
+
|
6
|
+
it 'has all the right fields' do
|
7
|
+
[
|
8
|
+
:amortization_end_date, :amortization_residual, :amortiz_start_date, :credit, :debit, :eliminate, :end_date, :gross_amt, :memo,
|
9
|
+
:residual, :start_date, :tax1_amt, :tax_rate1
|
10
|
+
].each do |field|
|
11
|
+
expect(line).to have_field(field)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'has all the right record refs' do
|
16
|
+
[
|
17
|
+
:account, :department, :entity, :klass, :line_subsidiary, :location, :schedule, :schedule_num, :tax1_acct, :tax_code
|
18
|
+
].each do |record_ref|
|
19
|
+
expect(line).to have_record_ref(record_ref)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#custom_field_list' do
|
24
|
+
it 'can be set from attributes' do
|
25
|
+
attributes = {
|
26
|
+
:custom_field => {
|
27
|
+
:amount => 10,
|
28
|
+
:internal_id => 'custfield_amount'
|
29
|
+
}
|
30
|
+
}
|
31
|
+
line.custom_field_list = attributes
|
32
|
+
expect(line.custom_field_list).to be_kind_of(NetSuite::Records::CustomFieldList)
|
33
|
+
expect(line.custom_field_list.custom_fields.length).to eql(1)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'can be set from a CustomFieldList object' do
|
37
|
+
custom_field_list = NetSuite::Records::CustomFieldList.new
|
38
|
+
line.custom_field_list = custom_field_list
|
39
|
+
expect(line.custom_field_list).to eql(custom_field_list)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '#to_record' do
|
44
|
+
let(:line) { NetSuite::Records::InterCompanyJournalEntryLine.new(:memo => 'This is a memo', :eliminate => true) }
|
45
|
+
|
46
|
+
it 'returns a hash of attributes that can be used in a SOAP request' do
|
47
|
+
expect(line.to_record).to eql({
|
48
|
+
'tranGeneral:memo' => 'This is a memo',
|
49
|
+
'tranGeneral:eliminate' => true
|
50
|
+
})
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe '#record_type' do
|
55
|
+
it 'returns a string type for the record to be used in a SOAP request' do
|
56
|
+
expect(line.record_type).to eql('tranGeneral:InterCompanyJournalEntryLine')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
@@ -0,0 +1,156 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::InterCompanyJournalEntry do
|
4
|
+
let(:entry) { NetSuite::Records::InterCompanyJournalEntry.new }
|
5
|
+
|
6
|
+
it 'has all the right fields' do
|
7
|
+
[
|
8
|
+
:approved, :created_date, :exchange_rate, :is_book_specific, :last_modified_date, :memo, :reversal_date,
|
9
|
+
:reversal_defer, :reversal_entry, :tran_date, :tran_id
|
10
|
+
].each do |field|
|
11
|
+
expect(entry).to have_field(field)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'has all the right record refs' do
|
16
|
+
[
|
17
|
+
:created_from, :currency, :custom_form, :department, :klass, :location, :parent_expense_alloc, :posting_period,
|
18
|
+
:subsidiary, :to_subsidiary
|
19
|
+
].each do |record_ref|
|
20
|
+
expect(entry).to have_record_ref(record_ref)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#custom_field_list' do
|
25
|
+
it 'can be set from attributes' do
|
26
|
+
attributes = {
|
27
|
+
:custom_field => {
|
28
|
+
:amount => 10,
|
29
|
+
:script_id => 'custfield_amount'
|
30
|
+
}
|
31
|
+
}
|
32
|
+
entry.custom_field_list = attributes
|
33
|
+
expect(entry.custom_field_list).to be_kind_of(NetSuite::Records::CustomFieldList)
|
34
|
+
expect(entry.custom_field_list.custom_fields.length).to eql(1)
|
35
|
+
expect(entry.custom_field_list.custfield_amount.attributes[:amount]).to eq(10)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'can be set from a CustomFieldList object' do
|
39
|
+
custom_field_list = NetSuite::Records::CustomFieldList.new
|
40
|
+
entry.custom_field_list = custom_field_list
|
41
|
+
expect(entry.custom_field_list).to eql(custom_field_list)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#line_list' do
|
46
|
+
it 'can be set from attributes' do
|
47
|
+
attributes = {
|
48
|
+
:line => {
|
49
|
+
|
50
|
+
}
|
51
|
+
}
|
52
|
+
entry.line_list = attributes
|
53
|
+
expect(entry.line_list).to be_kind_of(NetSuite::Records::InterCompanyJournalEntryLineList)
|
54
|
+
expect(entry.line_list.lines.length).to eql(1)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'can be set from a InterCompanyJournalEntryLineList object' do
|
58
|
+
line_list = NetSuite::Records::InterCompanyJournalEntryLineList.new
|
59
|
+
entry.line_list = line_list
|
60
|
+
expect(entry.line_list).to eql(line_list)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe '.get' do
|
65
|
+
context 'when the response is successful' do
|
66
|
+
let(:response) { NetSuite::Response.new(:success => true, :body => { :approved => true }) }
|
67
|
+
|
68
|
+
it 'returns a InterCompanyJournalEntry instance populated with the data from the response object' do
|
69
|
+
expect(NetSuite::Actions::Get).to receive(:call).with([NetSuite::Records::InterCompanyJournalEntry, {:external_id => 1}], {}).and_return(response)
|
70
|
+
customer = NetSuite::Records::InterCompanyJournalEntry.get(:external_id => 1)
|
71
|
+
expect(customer).to be_kind_of(NetSuite::Records::InterCompanyJournalEntry)
|
72
|
+
expect(customer.approved).to be_truthy
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
context 'when the response is unsuccessful' do
|
77
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
78
|
+
|
79
|
+
it 'raises a RecordNotFound exception' do
|
80
|
+
expect(NetSuite::Actions::Get).to receive(:call).with([NetSuite::Records::InterCompanyJournalEntry, {:external_id => 1}], {}).and_return(response)
|
81
|
+
expect {
|
82
|
+
NetSuite::Records::InterCompanyJournalEntry.get(:external_id => 1)
|
83
|
+
}.to raise_error(NetSuite::RecordNotFound,
|
84
|
+
/NetSuite::Records::InterCompanyJournalEntry with OPTIONS=(.*) could not be found/)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe '#add' do
|
90
|
+
let(:entry) { NetSuite::Records::InterCompanyJournalEntry.new(:approved => true) }
|
91
|
+
|
92
|
+
context 'when the response is successful' do
|
93
|
+
let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
|
94
|
+
|
95
|
+
it 'returns true' do
|
96
|
+
expect(NetSuite::Actions::Add).to receive(:call).
|
97
|
+
with([entry], {}).
|
98
|
+
and_return(response)
|
99
|
+
expect(entry.add).to be_truthy
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
context 'when the response is unsuccessful' do
|
104
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
105
|
+
|
106
|
+
it 'returns false' do
|
107
|
+
expect(NetSuite::Actions::Add).to receive(:call).
|
108
|
+
with([entry], {}).
|
109
|
+
and_return(response)
|
110
|
+
expect(entry.add).to be_falsey
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe '#delete' do
|
116
|
+
context 'when the response is successful' do
|
117
|
+
let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
|
118
|
+
|
119
|
+
it 'returns true' do
|
120
|
+
expect(NetSuite::Actions::Delete).to receive(:call).
|
121
|
+
with([entry], {}).
|
122
|
+
and_return(response)
|
123
|
+
expect(entry.delete).to be_truthy
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
context 'when the response is unsuccessful' do
|
128
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
129
|
+
|
130
|
+
it 'returns false' do
|
131
|
+
expect(NetSuite::Actions::Delete).to receive(:call).
|
132
|
+
with([entry], {}).
|
133
|
+
and_return(response)
|
134
|
+
expect(entry.delete).to be_falsey
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
describe '#to_record' do
|
140
|
+
let(:entry) { NetSuite::Records::InterCompanyJournalEntry.new(:tran_id => '1234', :approved => true) }
|
141
|
+
|
142
|
+
it 'returns a hash of attributes that can be used in a SOAP request' do
|
143
|
+
expect(entry.to_record).to eql({
|
144
|
+
'tranGeneral:tranId' => '1234',
|
145
|
+
'tranGeneral:approved' => true
|
146
|
+
})
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
describe '#record_type' do
|
151
|
+
it 'returns a string type for the record to be used in a SOAP request' do
|
152
|
+
expect(entry.record_type).to eql('tranGeneral:InterCompanyJournalEntry')
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
end
|
@@ -231,4 +231,61 @@ describe NetSuite::Records::InventoryItem do
|
|
231
231
|
end
|
232
232
|
end
|
233
233
|
|
234
|
+
describe '.update_list' do
|
235
|
+
before { savon.mock! }
|
236
|
+
after { savon.unmock! }
|
237
|
+
|
238
|
+
context 'with one item' do
|
239
|
+
before do
|
240
|
+
savon.expects(:update_list).with(:message =>
|
241
|
+
{
|
242
|
+
'record' => [{
|
243
|
+
'listAcct:itemId' => 'Target',
|
244
|
+
'@xsi:type' => 'listAcct:InventoryItem',
|
245
|
+
'@internalId' => '624113'
|
246
|
+
}]
|
247
|
+
}).returns(File.read('spec/support/fixtures/update_list/update_list_one_item.xml'))
|
248
|
+
end
|
249
|
+
|
250
|
+
it 'returns collection with one InventoryItem instances populated with the data from the response object' do
|
251
|
+
items = NetSuite::Records::InventoryItem.update_list([
|
252
|
+
NetSuite::Records::InventoryItem.new(internal_id: '624113', item_id: 'Target', upccode: 'Target')
|
253
|
+
])
|
254
|
+
shutter_fly = items[0]
|
255
|
+
expect(shutter_fly).to be_kind_of(NetSuite::Records::InventoryItem)
|
256
|
+
expect(shutter_fly.item_id).to eq('Target')
|
257
|
+
expect(shutter_fly.internal_id).to eq('624113')
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
261
|
+
context 'with two items' do
|
262
|
+
before do
|
263
|
+
savon.expects(:update_list).with(:message =>
|
264
|
+
{
|
265
|
+
'record' => [{
|
266
|
+
'listAcct:itemId' => 'Shutter Fly',
|
267
|
+
'@xsi:type' => 'listAcct:InventoryItem',
|
268
|
+
'@internalId' => '624172'
|
269
|
+
},
|
270
|
+
{
|
271
|
+
'listAcct:itemId' => 'Target',
|
272
|
+
'@xsi:type' => 'listAcct:InventoryItem',
|
273
|
+
'@internalId' => '624113'
|
274
|
+
}
|
275
|
+
]
|
276
|
+
}).returns(File.read('spec/support/fixtures/update_list/update_list_items.xml'))
|
277
|
+
end
|
278
|
+
|
279
|
+
it 'returns collection of InventoryItem instances populated with the data from the response object' do
|
280
|
+
items = NetSuite::Records::InventoryItem.update_list( [
|
281
|
+
NetSuite::Records::InventoryItem.new(internal_id: '624172', item_id: 'Shutter Fly', upccode: 'Shutter Fly, Inc.'),
|
282
|
+
NetSuite::Records::InventoryItem.new(internal_id: '624113', item_id: 'Target', upccode: 'Target')
|
283
|
+
])
|
284
|
+
shutter_fly = items[0]
|
285
|
+
expect(shutter_fly).to be_kind_of(NetSuite::Records::InventoryItem)
|
286
|
+
expect(shutter_fly.item_id).to eq('Shutter Fly')
|
287
|
+
expect(shutter_fly.internal_id).to eq('624172')
|
288
|
+
end
|
289
|
+
end
|
290
|
+
end
|
234
291
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::PriceLevel do
|
4
|
+
describe "#initialize" do
|
5
|
+
it "behaves appropriately if it gets a hash as attributes[:pricing]" do
|
6
|
+
# this is what savon returns if there is only one pricing strategy matrix
|
7
|
+
# for the item:
|
8
|
+
level = {
|
9
|
+
:name => 'Base Price'
|
10
|
+
}
|
11
|
+
|
12
|
+
subject = NetSuite::Records::PriceLevel.new(level)
|
13
|
+
expect(subject.name).to eq(level[:name])
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -8,7 +8,7 @@ describe NetSuite::Records::ReturnAuthorizationItem do
|
|
8
8
|
:alt_sales_amt, :amortization_period, :amortization_type, :amount, :bill_variance_status, :catch_up_period, :cost_estimate,
|
9
9
|
:cost_estimate_rate, :cost_estimate_type, :days_before_expiration, :defer_rev_rec, :description, :gift_cert_from, :gift_cert_message,
|
10
10
|
:gift_cert_recipient_email, :gift_cert_recipient_name, :id, :inventory_detail, :is_closed, :is_drop_shipment, :is_taxable,
|
11
|
-
:is_vsoe_bundle, :item_subtype, :item_type, :line, :line_number, :matrix_type, :options, :print_items,
|
11
|
+
:is_vsoe_bundle, :item_subtype, :item_type, :line, :line_number, :matrix_type, :options, :order_line, :print_items,
|
12
12
|
:quantity, :quantity_billed, :quantity_received, :quantity_rev_committed, :rate, :rate_schedule, :rev_rec_end_date,
|
13
13
|
:rev_rec_start_date, :tax_rate1, :vsoe_allocation, :vsoe_amount, :vsoe_deferral, :vsoe_delivered, :vsoe_is_estimate,
|
14
14
|
:vsoe_permit_discount, :vsoe_price, :vsoe_sop_group
|
@@ -5,11 +5,17 @@ describe NetSuite::Records::SalesOrderItem do
|
|
5
5
|
|
6
6
|
it 'has all the right fields' do
|
7
7
|
[
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
:amount, :bin_numbers, :cost_estimate, :cost_estimate_type,
|
9
|
+
:defer_rev_rec, :description, :expand_item_group,
|
10
|
+
:gift_cert_from, :gift_cert_message, :gift_cert_number,
|
11
|
+
:gift_cert_recipient_email, :gift_cert_recipient_name,
|
12
|
+
:gross_amt, :is_taxable, :line, :order_line, :po_currency,
|
13
|
+
:quantity, :quantity_back_ordered, :quantity_billed,
|
14
|
+
:quantity_committed, :quantity_fulfilled,
|
15
|
+
:rate, :rev_rec_end_date, :rev_rec_start_date,
|
16
|
+
:rev_rec_term_in_months, :serial_numbers, :tax1_amt, :tax_rate1,
|
17
|
+
:tax_rate2, :vsoe_allocation, :vsoe_amount, :vsoe_deferral,
|
18
|
+
:vsoe_delivered, :vsoe_permit_discount, :vsoe_price
|
13
19
|
].each do |field|
|
14
20
|
expect(item).to have_field(field)
|
15
21
|
end
|
@@ -13,6 +13,27 @@ describe NetSuite::Utilities do
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
it "#netsuite_data_center_urls" do
|
17
|
+
domains = NetSuite::Utilities.netsuite_data_center_urls('TSTDRV1576318')
|
18
|
+
expect(domains[:webservices_domain]).to eq('https://webservices.na1.netsuite.com')
|
19
|
+
|
20
|
+
NetSuite.configure do
|
21
|
+
reset!
|
22
|
+
sandbox true
|
23
|
+
end
|
24
|
+
|
25
|
+
domains = NetSuite::Utilities.netsuite_data_center_urls('TSTDRV1576318')
|
26
|
+
expect(domains[:webservices_domain]).to eq('https://webservices.na1.netsuite.com')
|
27
|
+
|
28
|
+
NetSuite.configure do
|
29
|
+
reset!
|
30
|
+
api_version '2015_1'
|
31
|
+
end
|
32
|
+
|
33
|
+
domains = NetSuite::Utilities.netsuite_data_center_urls('TSTDRV1576318')
|
34
|
+
expect(domains[:webservices_domain]).to eq('https://webservices.na1.netsuite.com')
|
35
|
+
end
|
36
|
+
|
16
37
|
describe '#get_record' do
|
17
38
|
context 'caching' do
|
18
39
|
it 'does not hit the netsuite API' do
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
2
|
+
<soapenv:Header>
|
3
|
+
<platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2015_1.platform.webservices.netsuite.com">
|
4
|
+
<platformMsgs:nsId>WEBSERVICES_4094105_100420174020144521635732562_3cddd9b4c927</platformMsgs:nsId>
|
5
|
+
</platformMsgs:documentInfo>
|
6
|
+
</soapenv:Header>
|
7
|
+
<soapenv:Body>
|
8
|
+
<updateListResponse xmlns="urn:messages_2015_1.platform.webservices.netsuite.com">
|
9
|
+
<writeResponseList>
|
10
|
+
<platformCore:status isSuccess="true" xmlns:platformCore="urn:core_2015_1.platform.webservices.netsuite.com"/>
|
11
|
+
<writeResponse>
|
12
|
+
<platformCore:status isSuccess="true" xmlns:platformCore="urn:core_2015_1.platform.webservices.netsuite.com"/>
|
13
|
+
<baseRef xsi:type="platformCore:RecordRef" type="inventoryItem" externalId="testing1" internalId="624113" xmlns:platformCore="urn:core_2015_1.platform.webservices.netsuite.com"/>
|
14
|
+
</writeResponse>
|
15
|
+
<writeResponse>
|
16
|
+
<platformCore:status isSuccess="true" xmlns:platformCore="urn:core_2015_1.platform.webservices.netsuite.com"/>
|
17
|
+
<baseRef xsi:type="platformCore:RecordRef" type="inventoryItem" externalId="testing1" internalId="624172" xmlns:platformCore="urn:core_2015_1.platform.webservices.netsuite.com"/>
|
18
|
+
</writeResponse>
|
19
|
+
</writeResponseList>
|
20
|
+
</updateListResponse>
|
21
|
+
</soapenv:Body>
|
22
|
+
</soapenv:Envelope>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
2
|
+
<soapenv:Header>
|
3
|
+
<platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2015_1.platform.webservices.netsuite.com">
|
4
|
+
<platformMsgs:nsId>WEBSERVICES_4094105_100420174020144521635732562_3cddd9b4c927</platformMsgs:nsId>
|
5
|
+
</platformMsgs:documentInfo>
|
6
|
+
</soapenv:Header>
|
7
|
+
<soapenv:Body>
|
8
|
+
<updateListResponse xmlns="urn:messages_2015_1.platform.webservices.netsuite.com">
|
9
|
+
<writeResponseList>
|
10
|
+
<platformCore:status isSuccess="true" xmlns:platformCore="urn:core_2015_1.platform.webservices.netsuite.com"/>
|
11
|
+
<writeResponse>
|
12
|
+
<platformCore:status isSuccess="true" xmlns:platformCore="urn:core_2015_1.platform.webservices.netsuite.com"/>
|
13
|
+
<baseRef xsi:type="platformCore:RecordRef" type="inventoryItem" externalId="testing" internalId="624113" xmlns:platformCore="urn:core_2015_1.platform.webservices.netsuite.com"/>
|
14
|
+
</writeResponse>
|
15
|
+
</writeResponseList>
|
16
|
+
</updateListResponse>
|
17
|
+
</soapenv:Body>
|
18
|
+
</soapenv:Envelope>
|
@@ -0,0 +1,32 @@
|
|
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_2014_1.platform.webservices.netsuite.com">
|
5
|
+
<platformMsgs:nsId>WEBSERVICES_3868171_1117201410832887841076557109_965331437a3</platformMsgs:nsId>
|
6
|
+
</platformMsgs:documentInfo>
|
7
|
+
</soapenv:Header>
|
8
|
+
<soapenv:Body>
|
9
|
+
<updateListResponse xmlns="urn:messages_2014_1.platform.webservices.netsuite.com">
|
10
|
+
<writeResponseList>
|
11
|
+
<writeResponse>
|
12
|
+
<platformCore:status xmlns:platformCore="urn:core_2014_1.platform.webservices.netsuite.com" isSuccess="false">
|
13
|
+
<platformCore:statusDetail type="ERROR">
|
14
|
+
<platformCore:code>USER_ERROR</platformCore:code>
|
15
|
+
<platformCore:message>Please enter value(s) for: ItemId</platformCore:message>
|
16
|
+
</platformCore:statusDetail>
|
17
|
+
</platformCore:status>
|
18
|
+
<baseRef xmlns:platformCore="urn:core_2014_1.platform.webservices.netsuite.com" internalId="624172" type="InventoryItem" xsi:type="platformCore:RecordRef"/>
|
19
|
+
</writeResponse>
|
20
|
+
<writeResponse>
|
21
|
+
<platformCore:status xmlns:platformCore="urn:core_2014_1.platform.webservices.netsuite.com" isSuccess="false">
|
22
|
+
<platformCore:statusDetail type="ERROR">
|
23
|
+
<platformCore:code>USER_ERROR</platformCore:code>
|
24
|
+
<platformCore:message>Please enter value(s) for: ItemId</platformCore:message>
|
25
|
+
</platformCore:statusDetail>
|
26
|
+
</platformCore:status>
|
27
|
+
<baseRef xmlns:platformCore="urn:core_2014_1.platform.webservices.netsuite.com" internalId="624113" type="InventoryItem" xsi:type="platformCore:RecordRef"/>
|
28
|
+
</writeResponse>
|
29
|
+
</writeResponseList>
|
30
|
+
</updateListResponse>
|
31
|
+
</soapenv:Body>
|
32
|
+
</soapenv:Envelope>
|