netsuite 0.7.1 → 0.7.2

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.
Files changed (42) hide show
  1. data/Gemfile +4 -0
  2. data/lib/netsuite.rb +6 -2
  3. data/lib/netsuite/configuration.rb +2 -8
  4. data/lib/netsuite/records/base_ref_list.rb +3 -19
  5. data/lib/netsuite/records/billing_schedule_milestone_list.rb +4 -23
  6. data/lib/netsuite/records/billing_schedule_recurrence_list.rb +4 -23
  7. data/lib/netsuite/records/bin_number_list.rb +5 -23
  8. data/lib/netsuite/records/cash_refund_item_list.rb +3 -23
  9. data/lib/netsuite/records/cash_sale_item_list.rb +3 -15
  10. data/lib/netsuite/records/customer_payment_apply_list.rb +3 -22
  11. data/lib/netsuite/records/customer_refund_apply_list.rb +3 -20
  12. data/lib/netsuite/records/deposit_payment_list.rb +3 -4
  13. data/lib/netsuite/records/gift_certificate_item.rb +84 -0
  14. data/lib/netsuite/records/inventory_transfer_inventory_list.rb +2 -23
  15. data/lib/netsuite/records/item_fulfillment_package_list.rb +3 -19
  16. data/lib/netsuite/records/journal_entry_line_list.rb +3 -23
  17. data/lib/netsuite/records/member_list.rb +3 -22
  18. data/lib/netsuite/records/other_charge_sale_item.rb +73 -0
  19. data/lib/netsuite/records/record_ref_list.rb +2 -20
  20. data/lib/netsuite/records/units_type_uom_list.rb +2 -23
  21. data/lib/netsuite/records/vendor.rb +4 -1
  22. data/lib/netsuite/records/vendor_bill_item_list.rb +3 -23
  23. data/lib/netsuite/records/vendor_payment_apply_list.rb +3 -23
  24. data/lib/netsuite/records/work_order_item_list.rb +3 -23
  25. data/lib/netsuite/rest/utilities/request.rb +53 -0
  26. data/lib/netsuite/rest/utilities/roles.rb +45 -0
  27. data/lib/netsuite/utilities.rb +20 -0
  28. data/lib/netsuite/version.rb +1 -1
  29. data/spec/netsuite/actions/search_spec.rb +1 -1
  30. data/spec/netsuite/configuration_spec.rb +3 -3
  31. data/spec/netsuite/records/basic_record_spec.rb +2 -0
  32. data/spec/netsuite/records/custom_record_spec.rb +1 -1
  33. data/spec/netsuite/records/invoice_item_spec.rb +1 -1
  34. data/spec/netsuite/records/journal_entry_spec.rb +1 -1
  35. data/spec/netsuite/records/vendor_bill_expense_spec.rb +1 -1
  36. data/spec/netsuite/records/vendor_bill_item_spec.rb +2 -2
  37. data/spec/netsuite/utilities/request_spec.rb +29 -0
  38. data/spec/netsuite/utilities/roles_spec.rb +98 -0
  39. data/{wsdl/2011_2.wsdl → spec/support/2015.wsdl} +190 -56
  40. data/spec/support/configuration.rb +1 -0
  41. metadata +12 -4
  42. data/wsdl/2012_1.wsdl +0 -2283
@@ -0,0 +1,45 @@
1
+ module NetSuite
2
+ module Rest
3
+ module Utilities
4
+ class Roles
5
+
6
+ class << self
7
+
8
+ def get(email, password)
9
+ code, body = Request.get(
10
+ email: email,
11
+ password: password,
12
+ uri: '/roles'
13
+ )
14
+ code == "200" ? format_response(body) : body
15
+ end
16
+
17
+ private
18
+
19
+ def format_response(parsed)
20
+ # [
21
+ # {
22
+ # "account"=>{
23
+ # "internalId"=>"TSTDRV15",
24
+ # "name"=>"Honeycomb Mfg SDN (Leading)"},
25
+ # "role"=>{
26
+ # "internalId"=>3,
27
+ # "name"=>"Administrator"},
28
+ # "dataCenterURLs"=>{
29
+ # "webservicesDomain"=>"https://webservices.na1.netsuite.com",
30
+ # "restDomain"=>"https://rest.na1.netsuite.com",
31
+ # "systemDomain"=>"https://system.na1.netsuite.com"}
32
+ # },
33
+ # ....
34
+ {
35
+ accounts: parsed.map {|hash| hash["account"]["internalId"] }.uniq,
36
+ roles: parsed.map {|hash| hash["role"]["internalId"] }.uniq,
37
+ wsdls: parsed.map {|hash| hash["dataCenterURLs"]["webservicesDomain"] }.uniq,
38
+ }
39
+ end
40
+
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -57,6 +57,26 @@ module NetSuite
57
57
  return errors.size > 0
58
58
  end
59
59
 
60
+
61
+ def get_item(ns_item_internal_id)
62
+ # TODO add additional item types!
63
+ ns_item = NetSuite::Utilities.get_record(NetSuite::Records::InventoryItem, ns_item_internal_id)
64
+ ns_item ||= NetSuite::Utilities.get_record(NetSuite::Records::AssemblyItem, ns_item_internal_id)
65
+ ns_item ||= NetSuite::Utilities.get_record(NetSuite::Records::NonInventorySaleItem, ns_item_internal_id)
66
+ ns_item ||= NetSuite::Utilities.get_record(NetSuite::Records::NonInventoryResaleItem, ns_item_internal_id)
67
+ ns_item ||= NetSuite::Utilities.get_record(NetSuite::Records::DiscountItem, ns_item_internal_id)
68
+ ns_item ||= NetSuite::Utilities.get_record(NetSuite::Records::OtherChargeSaleItem, ns_item_internal_id)
69
+ ns_item ||= NetSuite::Utilities.get_record(NetSuite::Records::ServiceSaleItem, ns_item_internal_id)
70
+ ns_item ||= NetSuite::Utilities.get_record(NetSuite::Records::GiftCertificateItem, ns_item_internal_id)
71
+ ns_item ||= NetSuite::Utilities.get_record(NetSuite::Records::KitItem, ns_item_internal_id)
72
+
73
+ if ns_item.nil?
74
+ fail NetSuite::RecordNotFound, "item with ID #{ns_item_internal_id} not found"
75
+ end
76
+
77
+ ns_item
78
+ end
79
+
60
80
  def get_record(record_klass, id, opts = {})
61
81
  opts[:external_id] ||= false
62
82
 
@@ -1,3 +1,3 @@
1
1
  module Netsuite
2
- VERSION = '0.7.1'
2
+ VERSION = '0.7.2'
3
3
  end
@@ -100,7 +100,7 @@ describe NetSuite::Actions::Search do
100
100
 
101
101
  :attributes! => {
102
102
  "platformCore:customField" => {
103
- "internalId" => ["custentity_customerandcontacttypelist", "custentity_relatedthing"],
103
+ "scriptId" => ["custentity_customerandcontacttypelist", "custentity_relatedthing"],
104
104
  "operator" => ["anyOf", "anyOf"],
105
105
  "xsi:type" => ["platformCore:SearchMultiSelectCustomField", "platformCore:SearchMultiSelectCustomField"]
106
106
  }
@@ -52,7 +52,7 @@ describe NetSuite::Configuration do
52
52
 
53
53
  context 'when the wsdl has not been set' do
54
54
  it 'returns a path to the WSDL to use for the API' do
55
- expect(config.wsdl).to match(/.*\/netsuite\/wsdl\/2011_2\.wsdl/)
55
+ expect(config.wsdl).to eq("https://webservices.netsuite.com/wsdl/v2015_1_0/netsuite.wsdl")
56
56
  end
57
57
  end
58
58
 
@@ -214,8 +214,8 @@ describe NetSuite::Configuration do
214
214
 
215
215
  describe '#api_version' do
216
216
  context 'when no api_version is defined' do
217
- it 'defaults to 2011_2' do
218
- expect(config.api_version).to eq('2011_2')
217
+ it 'defaults to 2015_1' do
218
+ expect(config.api_version).to eq('2015_1')
219
219
  end
220
220
  end
221
221
  end
@@ -40,6 +40,8 @@ describe 'basic records' do
40
40
  NetSuite::Records::SubtotalItem,
41
41
  NetSuite::Records::Term,
42
42
  NetSuite::Records::Note,
43
+ NetSuite::Records::OtherChargeSaleItem,
44
+ NetSuite::Records::GiftCertificateItem,
43
45
  ]
44
46
  }
45
47
 
@@ -29,7 +29,7 @@ describe NetSuite::Records::CustomRecord do
29
29
  attributes = {
30
30
  :custom_field => {
31
31
  :amount => 10,
32
- :internal_id => 'custfield_amount'
32
+ :script_id => 'custfield_amount'
33
33
  }
34
34
  }
35
35
  record.custom_field_list = attributes
@@ -39,7 +39,7 @@ describe NetSuite::Records::InvoiceItem do
39
39
  attributes = {
40
40
  :custom_field => {
41
41
  :value => 10,
42
- :internal_id => 'custfield_value'
42
+ :script_id => 'custfield_value'
43
43
  }
44
44
  }
45
45
  item.custom_field_list = attributes
@@ -26,7 +26,7 @@ describe NetSuite::Records::JournalEntry do
26
26
  attributes = {
27
27
  :custom_field => {
28
28
  :amount => 10,
29
- :internal_id => 'custfield_amount'
29
+ :script_id => 'custfield_amount'
30
30
  }
31
31
  }
32
32
  entry.custom_field_list = attributes
@@ -32,7 +32,7 @@ describe NetSuite::Records::VendorBillExpense do
32
32
  attributes = {
33
33
  :custom_field => {
34
34
  :value => 10,
35
- :internal_id => 'custfield_value'
35
+ :script_id => 'custfield_value'
36
36
  }
37
37
  }
38
38
  expense.custom_field_list = attributes
@@ -42,7 +42,7 @@ describe NetSuite::Records::VendorBillItem do
42
42
  attributes = {
43
43
  :custom_field => {
44
44
  :value => 10,
45
- :internal_id => 'custfield_value'
45
+ :script_id => 'custfield_value'
46
46
  }
47
47
  }
48
48
  item.custom_field_list = attributes
@@ -63,7 +63,7 @@ describe NetSuite::Records::VendorBillItem do
63
63
  attributes = {
64
64
  :custom_field => {
65
65
  :value => 10,
66
- :internal_id => 'custfield_value'
66
+ :script_id => 'custfield_value'
67
67
  }
68
68
  }
69
69
  item.options = attributes
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe NetSuite::Rest::Utilities::Request do
4
+ subject { described_class }
5
+
6
+ describe '#get' do
7
+ it { is_expected.to respond_to :get }
8
+ let(:default_args) do
9
+ { email: 'jim@godaddy.com', password: 'secret', uri: '/sandwich'}
10
+ end
11
+
12
+ [:email, :password, :uri].each do |key|
13
+ it "throws an error if no #{key} key is given" do
14
+ expect{
15
+ subject.get(default_args.delete_if{|x| x == key})
16
+ }.to raise_error(KeyError)
17
+ end
18
+ end
19
+
20
+ it 'returns an array with the response code and parsed body' do
21
+ allow(subject).to receive(:make_request).and_return(
22
+ double(:response, code: "200", body: [{great: :body}].to_json)
23
+ )
24
+ expect( subject.get(default_args) ).to eq ["200", [{"great" => "body"}]]
25
+ end
26
+ end
27
+
28
+
29
+ end
@@ -0,0 +1,98 @@
1
+ require 'spec_helper'
2
+
3
+ describe NetSuite::Rest::Utilities::Roles do
4
+ subject { described_class }
5
+
6
+ describe '#get' do
7
+ it { is_expected.to respond_to :get }
8
+
9
+ it 'invokes the request module' do
10
+ expect( NetSuite::Rest::Utilities::Request ).to receive(:get)
11
+ subject.get('jimbob@netzero.com', 'pickles')
12
+ end
13
+
14
+ it 'formats the API response if successful' do
15
+ allow( NetSuite::Rest::Utilities::Request ).to receive(:get).and_return(
16
+ ["200", {parsed: :response}]
17
+ )
18
+ expect( subject ).to receive(:format_response).with({parsed: :response}).and_return nil
19
+ subject.get('jimbob@netzero.com', 'pickles')
20
+ end
21
+
22
+ it 'returns the full error message if unsuccessful' do
23
+ allow( NetSuite::Rest::Utilities::Request ).to receive(:get).and_return(
24
+ ["500", {oh: :no!}]
25
+ )
26
+ expect( subject ).to_not receive(:format_reponse)
27
+ expect( subject.get('jimbob@netzero.com', 'pickles') ).to eq({oh: :no!})
28
+ end
29
+ end
30
+
31
+ describe '#format_response' do
32
+ let(:parsed) do
33
+ [
34
+ {
35
+ "account"=>{
36
+ "internalId"=>"TSTDRV15",
37
+ "name"=>"Honeycomb Mfg SDN (Leading)"},
38
+ "role"=>{
39
+ "internalId"=>3,
40
+ "name"=>"Administrator"},
41
+ "dataCenterURLs"=>{
42
+ "webservicesDomain"=>"https://webservices.na1.netsuite.com",
43
+ "restDomain"=>"https://rest.na1.netsuite.com",
44
+ "systemDomain"=>"https://system.na1.netsuite.com"}
45
+ },
46
+ {
47
+ "account"=>{
48
+ "internalId"=>"TSTDRV15",
49
+ "name"=>"Honeycomb Mfg SDN (Leading)"},
50
+ "role"=>{
51
+ "internalId"=>1,
52
+ "name"=>"Accountant"},
53
+ "dataCenterURLs"=>{
54
+ "webservicesDomain"=>"https://webservices.na1.netsuite.com",
55
+ "restDomain"=>"https://rest.na1.netsuite.com",
56
+ "systemDomain"=>"https://system.na1.netsuite.com"}
57
+ },
58
+ {
59
+ "account"=>{
60
+ "internalId"=>"TSTDRV14",
61
+ "name"=>"Honeycomb Mfg SDN (Leading)"},
62
+ "role"=>{
63
+ "internalId"=>1,
64
+ "name"=>"Accountant"},
65
+ "dataCenterURLs"=>{
66
+ "webservicesDomain"=>"https://webservices.na1.netsuite.com",
67
+ "restDomain"=>"https://rest.na1.netsuite.com",
68
+ "systemDomain"=>"https://system.na1.netsuite.com"}
69
+ },
70
+ ]
71
+ end
72
+
73
+ it 'pulls out the account_ids' do
74
+ expect(
75
+ subject.send(:format_response, parsed).fetch(:accounts)
76
+ ).to eq ["TSTDRV15","TSTDRV14"]
77
+ end
78
+
79
+ it 'pulls out the role_ids' do
80
+ expect(
81
+ subject.send(:format_response, parsed).fetch(:roles)
82
+ ).to eq [3, 1]
83
+ end
84
+
85
+ it 'pulls out the wsdls' do
86
+ expect(
87
+ subject.send(:format_response, parsed).fetch(:wsdls)
88
+ ).to eq ["https://webservices.na1.netsuite.com"]
89
+ end
90
+
91
+ it 'handles an empty response body' do
92
+ expect{
93
+ subject.send(:format_response, [])
94
+ }.to_not raise_error
95
+ end
96
+
97
+ end
98
+ end
@@ -1,42 +1,46 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <definitions xmlns:tns="urn:platform_2011_2.webservices.netsuite.com" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:platformMsgs="urn:messages_2011_2.platform.webservices.netsuite.com" xmlns:platformFaults="urn:faults_2011_2.platform.webservices.netsuite.com" targetNamespace="urn:platform_2011_2.webservices.netsuite.com">
2
+ <definitions xmlns:tns="urn:platform_2015_1.webservices.netsuite.com" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:platformMsgs="urn:messages_2015_1.platform.webservices.netsuite.com" xmlns:platformFaults="urn:faults_2015_1.platform.webservices.netsuite.com" targetNamespace="urn:platform_2015_1.webservices.netsuite.com">
3
3
  <types>
4
4
  <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
5
- <xsd:import namespace="urn:core_2011_2.platform.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/platform/v2011_2_0/core.xsd"/>
6
- <xsd:import namespace="urn:faults_2011_2.platform.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/platform/v2011_2_0/faults.xsd"/>
7
- <xsd:import namespace="urn:messages_2011_2.platform.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/platform/v2011_2_0/messages.xsd"/>
8
- <xsd:import namespace="urn:common_2011_2.platform.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/platform/v2011_2_0/common.xsd"/>
9
- <xsd:import namespace="urn:scheduling_2011_2.activities.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/activities/v2011_2_0/scheduling.xsd"/>
10
- <xsd:import namespace="urn:types.scheduling_2011_2.activities.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/activities/v2011_2_0/schedulingTypes.xsd"/>
11
- <xsd:import namespace="urn:communication_2011_2.general.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/general/v2011_2_0/communication.xsd"/>
12
- <xsd:import namespace="urn:types.communication_2011_2.general.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/general/v2011_2_0/communicationTypes.xsd"/>
13
- <xsd:import namespace="urn:relationships_2011_2.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2011_2_0/relationships.xsd"/>
14
- <xsd:import namespace="urn:types.relationships_2011_2.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2011_2_0/relationshipTypes.xsd"/>
15
- <xsd:import namespace="urn:support_2011_2.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2011_2_0/support.xsd"/>
16
- <xsd:import namespace="urn:types.support_2011_2.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2011_2_0/supportTypes.xsd"/>
17
- <xsd:import namespace="urn:accounting_2011_2.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2011_2_0/accounting.xsd"/>
18
- <xsd:import namespace="urn:types.accounting_2011_2.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2011_2_0/accountingTypes.xsd"/>
19
- <xsd:import namespace="urn:sales_2011_2.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2011_2_0/sales.xsd"/>
20
- <xsd:import namespace="urn:types.sales_2011_2.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2011_2_0/saleTypes.xsd"/>
21
- <xsd:import namespace="urn:purchases_2011_2.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2011_2_0/purchases.xsd"/>
22
- <xsd:import namespace="urn:customers_2011_2.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2011_2_0/customers.xsd"/>
23
- <xsd:import namespace="urn:financial_2011_2.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2011_2_0/financial.xsd"/>
24
- <xsd:import namespace="urn:bank_2011_2.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2011_2_0/bank.xsd"/>
25
- <xsd:import namespace="urn:inventory_2011_2.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2011_2_0/inventory.xsd"/>
26
- <xsd:import namespace="urn:types.inventory_2011_2.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2011_2_0/inventoryTypes.xsd"/>
27
- <xsd:import namespace="urn:general_2011_2.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2011_2_0/general.xsd"/>
28
- <xsd:import namespace="urn:customization_2011_2.setup.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/setup/v2011_2_0/customization.xsd"/>
29
- <xsd:import namespace="urn:types.customization_2011_2.setup.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/setup/v2011_2_0/customizationTypes.xsd"/>
30
- <xsd:import namespace="urn:employees_2011_2.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2011_2_0/employees.xsd"/>
31
- <xsd:import namespace="urn:types.employees_2011_2.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2011_2_0/employeeTypes.xsd"/>
32
- <xsd:import namespace="urn:filecabinet_2011_2.documents.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/documents/v2011_2_0/fileCabinet.xsd"/>
33
- <xsd:import namespace="urn:types.filecabinet_2011_2.documents.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/documents/v2011_2_0/fileCabinetTypes.xsd"/>
34
- <xsd:import namespace="urn:website_2011_2.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2011_2_0/website.xsd"/>
35
- <xsd:import namespace="urn:types.website_2011_2.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2011_2_0/websiteTypes.xsd"/>
36
- <xsd:import namespace="urn:employees_2011_2.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2011_2_0/employees.xsd"/>
37
- <xsd:import namespace="urn:marketing_2011_2.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2011_2_0/marketing.xsd"/>
38
- <xsd:import namespace="urn:types.marketing_2011_2.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2011_2_0/marketingTypes.xsd"/>
39
- </xsd:schema>
5
+ <xsd:import namespace="urn:core_2015_1.platform.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/platform/v2015_1_0/core.xsd"/>
6
+ <xsd:import namespace="urn:faults_2015_1.platform.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/platform/v2015_1_0/faults.xsd"/>
7
+ <xsd:import namespace="urn:messages_2015_1.platform.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/platform/v2015_1_0/messages.xsd"/>
8
+ <xsd:import namespace="urn:common_2015_1.platform.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/platform/v2015_1_0/common.xsd"/>
9
+ <xsd:import namespace="urn:scheduling_2015_1.activities.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/activities/v2015_1_0/scheduling.xsd"/>
10
+ <xsd:import namespace="urn:types.scheduling_2015_1.activities.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/activities/v2015_1_0/schedulingTypes.xsd"/>
11
+ <xsd:import namespace="urn:communication_2015_1.general.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/general/v2015_1_0/communication.xsd"/>
12
+ <xsd:import namespace="urn:types.communication_2015_1.general.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/general/v2015_1_0/communicationTypes.xsd"/>
13
+ <xsd:import namespace="urn:relationships_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/relationships.xsd"/>
14
+ <xsd:import namespace="urn:types.relationships_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/relationshipTypes.xsd"/>
15
+ <xsd:import namespace="urn:support_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/support.xsd"/>
16
+ <xsd:import namespace="urn:types.support_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/supportTypes.xsd"/>
17
+ <xsd:import namespace="urn:accounting_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/accounting.xsd"/>
18
+ <xsd:import namespace="urn:types.accounting_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/accountingTypes.xsd"/>
19
+ <xsd:import namespace="urn:sales_2015_1.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2015_1_0/sales.xsd"/>
20
+ <xsd:import namespace="urn:types.sales_2015_1.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2015_1_0/saleTypes.xsd"/>
21
+ <xsd:import namespace="urn:purchases_2015_1.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2015_1_0/purchases.xsd"/>
22
+ <xsd:import namespace="urn:customers_2015_1.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2015_1_0/customers.xsd"/>
23
+ <xsd:import namespace="urn:financial_2015_1.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2015_1_0/financial.xsd"/>
24
+ <xsd:import namespace="urn:bank_2015_1.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2015_1_0/bank.xsd"/>
25
+ <xsd:import namespace="urn:inventory_2015_1.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2015_1_0/inventory.xsd"/>
26
+ <xsd:import namespace="urn:types.inventory_2015_1.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2015_1_0/inventoryTypes.xsd"/>
27
+ <xsd:import namespace="urn:general_2015_1.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2015_1_0/general.xsd"/>
28
+ <xsd:import namespace="urn:customization_2015_1.setup.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/setup/v2015_1_0/customization.xsd"/>
29
+ <xsd:import namespace="urn:types.customization_2015_1.setup.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/setup/v2015_1_0/customizationTypes.xsd"/>
30
+ <xsd:import namespace="urn:employees_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/employees.xsd"/>
31
+ <xsd:import namespace="urn:types.employees_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/employeeTypes.xsd"/>
32
+ <xsd:import namespace="urn:filecabinet_2015_1.documents.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/documents/v2015_1_0/fileCabinet.xsd"/>
33
+ <xsd:import namespace="urn:types.filecabinet_2015_1.documents.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/documents/v2015_1_0/fileCabinetTypes.xsd"/>
34
+ <xsd:import namespace="urn:website_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/website.xsd"/>
35
+ <xsd:import namespace="urn:types.website_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/websiteTypes.xsd"/>
36
+ <xsd:import namespace="urn:employees_2015_1.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2015_1_0/employees.xsd"/>
37
+ <xsd:import namespace="urn:marketing_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/marketing.xsd"/>
38
+ <xsd:import namespace="urn:types.marketing_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/marketingTypes.xsd"/>
39
+ <xsd:import namespace="urn:demandplanning_2015_1.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2015_1_0/demandPlanning.xsd"/>
40
+ <xsd:import namespace="urn:types.demandplanning_2015_1.transactions.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/transactions/v2015_1_0/demandPlanningTypes.xsd"/>
41
+ <xsd:import namespace="urn:supplychain_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/supplyChain.xsd"/>
42
+ <xsd:import namespace="urn:types.supplychain_2015_1.lists.webservices.netsuite.com" schemaLocation="https://webservices.netsuite.com/xsd/lists/v2015_1_0/supplyChainTypes.xsd"/>
43
+ </xsd:schema>
40
44
  </types>
41
45
  <message name="headers">
42
46
  <part name="applicationInfo" element="platformMsgs:applicationInfo"/>
@@ -64,11 +68,17 @@
64
68
  <message name="mapSsoResponse">
65
69
  <part name="parameters" element="platformMsgs:mapSsoResponse"/>
66
70
  </message>
67
- <message name="changePasswordOrEmailRequest">
68
- <part name="parameters" element="platformMsgs:changePasswordOrEmail"/>
71
+ <message name="changePasswordRequest">
72
+ <part name="parameters" element="platformMsgs:changePassword"/>
69
73
  </message>
70
- <message name="changePasswordOrEmailResponse">
71
- <part name="parameters" element="platformMsgs:changePasswordOrEmailResponse"/>
74
+ <message name="changePasswordResponse">
75
+ <part name="parameters" element="platformMsgs:changePasswordResponse"/>
76
+ </message>
77
+ <message name="changeEmailRequest">
78
+ <part name="parameters" element="platformMsgs:changeEmail"/>
79
+ </message>
80
+ <message name="changeEmailResponse">
81
+ <part name="parameters" element="platformMsgs:changeEmailResponse"/>
72
82
  </message>
73
83
  <message name="logoutRequest">
74
84
  <part name="parameters" element="platformMsgs:logout"/>
@@ -214,6 +224,18 @@
214
224
  <message name="getConsolidatedExchangeRateResponse">
215
225
  <part name="parameters" element="platformMsgs:getConsolidatedExchangeRateResponse"/>
216
226
  </message>
227
+ <message name="getCurrencyRateRequest">
228
+ <part name="parameters" element="platformMsgs:getCurrencyRate"/>
229
+ </message>
230
+ <message name="getCurrencyRateResponse">
231
+ <part name="parameters" element="platformMsgs:getCurrencyRateResponse"/>
232
+ </message>
233
+ <message name="getDataCenterUrlsRequest">
234
+ <part name="parameters" element="platformMsgs:getDataCenterUrls"/>
235
+ </message>
236
+ <message name="getDataCenterUrlsResponse">
237
+ <part name="parameters" element="platformMsgs:getDataCenterUrlsResponse"/>
238
+ </message>
217
239
  <message name="getPostingTransactionSummaryRequest">
218
240
  <part name="parameters" element="platformMsgs:getPostingTransactionSummary"/>
219
241
  </message>
@@ -374,9 +396,19 @@
374
396
  <fault name="ExceededRequestLimitFault" message="tns:ExceededRequestLimitFault"/>
375
397
  <fault name="UnexpectedErrorFault" message="tns:UnexpectedErrorFault"/>
376
398
  </operation>
377
- <operation name="changePasswordOrEmail">
378
- <input name="changePasswordOrEmailRequest" message="tns:changePasswordOrEmailRequest"/>
379
- <output name="changePasswordOrEmailResponse" message="tns:changePasswordOrEmailResponse"/>
399
+ <operation name="changePassword">
400
+ <input name="changePasswordRequest" message="tns:changePasswordRequest"/>
401
+ <output name="changePasswordResponse" message="tns:changePasswordResponse"/>
402
+ <fault name="InsufficientPermissionFault" message="tns:InsufficientPermissionFault"/>
403
+ <fault name="InvalidAccountFault" message="tns:InvalidAccountFault"/>
404
+ <fault name="InvalidCredentialsFault" message="tns:InvalidCredentialsFault"/>
405
+ <fault name="InvalidVersionFault" message="tns:InvalidVersionFault"/>
406
+ <fault name="ExceededRequestLimitFault" message="tns:ExceededRequestLimitFault"/>
407
+ <fault name="UnexpectedErrorFault" message="tns:UnexpectedErrorFault"/>
408
+ </operation>
409
+ <operation name="changeEmail">
410
+ <input name="changeEmailRequest" message="tns:changeEmailRequest"/>
411
+ <output name="changeEmailResponse" message="tns:changeEmailResponse"/>
380
412
  <fault name="InsufficientPermissionFault" message="tns:InsufficientPermissionFault"/>
381
413
  <fault name="InvalidAccountFault" message="tns:InvalidAccountFault"/>
382
414
  <fault name="InvalidCredentialsFault" message="tns:InvalidCredentialsFault"/>
@@ -642,6 +674,23 @@
642
674
  <fault name="ExceededRequestSizeFault" message="tns:ExceededRequestSizeFault"/>
643
675
  <fault name="UnexpectedErrorFault" message="tns:UnexpectedErrorFault"/>
644
676
  </operation>
677
+ <operation name="getCurrencyRate">
678
+ <input name="getCurrencyRateRequest" message="tns:getCurrencyRateRequest"/>
679
+ <output name="getCurrencyRateResponse" message="tns:getCurrencyRateResponse"/>
680
+ <fault name="InvalidSessionFault" message="tns:InvalidSessionFault"/>
681
+ <fault name="InvalidCredentialsFault" message="tns:InvalidCredentialsFault"/>
682
+ <fault name="ExceededRequestLimitFault" message="tns:ExceededRequestLimitFault"/>
683
+ <fault name="ExceededUsageLimitFault" message="tns:ExceededUsageLimitFault"/>
684
+ <fault name="ExceededRecordCountFault" message="tns:ExceededRecordCountFault"/>
685
+ <fault name="ExceededRequestSizeFault" message="tns:ExceededRequestSizeFault"/>
686
+ <fault name="UnexpectedErrorFault" message="tns:UnexpectedErrorFault"/>
687
+ </operation>
688
+ <operation name="getDataCenterUrls">
689
+ <input name="getDataCenterUrlsRequest" message="tns:getDataCenterUrlsRequest"/>
690
+ <output name="getDataCenterUrlsResponse" message="tns:getDataCenterUrlsResponse"/>
691
+ <fault name="ExceededRequestSizeFault" message="tns:ExceededRequestSizeFault"/>
692
+ <fault name="UnexpectedErrorFault" message="tns:UnexpectedErrorFault"/>
693
+ </operation>
645
694
  <operation name="getPostingTransactionSummary">
646
695
  <input name="getPostingTransactionSummaryRequest" message="tns:getPostingTransactionSummaryRequest"/>
647
696
  <output name="getPostingTransactionSummaryResponse" message="tns:getPostingTransactionSummaryResponse"/>
@@ -899,15 +948,15 @@
899
948
  <soap:fault name="UnexpectedErrorFault" use="literal"/>
900
949
  </fault>
901
950
  </operation>
902
- <operation name="changePasswordOrEmail">
903
- <soap:operation soapAction="changePasswordOrEmail"/>
904
- <input name="changePasswordOrEmailRequest">
951
+ <operation name="changePassword">
952
+ <soap:operation soapAction="changePassword"/>
953
+ <input name="changePasswordRequest">
905
954
  <soap:header message="tns:headers" part="passport" use="literal"/>
906
955
  <soap:header message="tns:headers" part="applicationInfo" use="literal"/>
907
956
  <soap:header message="tns:headers" part="partnerInfo" use="literal"/>
908
957
  <soap:body use="literal"/>
909
958
  </input>
910
- <output name="changePasswordOrEmailResponse">
959
+ <output name="changePasswordResponse">
911
960
  <soap:body use="literal"/>
912
961
  </output>
913
962
  <fault name="InsufficientPermissionFault">
@@ -929,6 +978,36 @@
929
978
  <soap:fault name="UnexpectedErrorFault" use="literal"/>
930
979
  </fault>
931
980
  </operation>
981
+ <operation name="changeEmail">
982
+ <soap:operation soapAction="changeEmail"/>
983
+ <input name="changeEmailRequest">
984
+ <soap:header message="tns:headers" part="passport" use="literal"/>
985
+ <soap:header message="tns:headers" part="applicationInfo" use="literal"/>
986
+ <soap:header message="tns:headers" part="partnerInfo" use="literal"/>
987
+ <soap:body use="literal"/>
988
+ </input>
989
+ <output name="changeEmailResponse">
990
+ <soap:body use="literal"/>
991
+ </output>
992
+ <fault name="InsufficientPermissionFault">
993
+ <soap:fault name="InsufficientPermissionFault" use="literal"/>
994
+ </fault>
995
+ <fault name="InvalidAccountFault">
996
+ <soap:fault name="InvalidAccountFault" use="literal"/>
997
+ </fault>
998
+ <fault name="InvalidCredentialsFault">
999
+ <soap:fault name="InvalidCredentialsFault" use="literal"/>
1000
+ </fault>
1001
+ <fault name="InvalidVersionFault">
1002
+ <soap:fault name="InvalidVersionFault" use="literal"/>
1003
+ </fault>
1004
+ <fault name="ExceededRequestLimitFault">
1005
+ <soap:fault name="ExceededRequestLimitFault" use="literal"/>
1006
+ </fault>
1007
+ <fault name="UnexpectedErrorFault">
1008
+ <soap:fault name="UnexpectedErrorFault" use="literal"/>
1009
+ </fault>
1010
+ </operation>
932
1011
  <operation name="logout">
933
1012
  <soap:operation soapAction="logout"/>
934
1013
  <input name="logoutRequest">
@@ -1740,6 +1819,61 @@
1740
1819
  <soap:fault name="UnexpectedErrorFault" use="literal"/>
1741
1820
  </fault>
1742
1821
  </operation>
1822
+ <operation name="getCurrencyRate">
1823
+ <soap:operation soapAction="getCurrencyRate"/>
1824
+ <input name="getCurrencyRateRequest">
1825
+ <soap:header message="tns:headers" part="passport" use="literal"/>
1826
+ <soap:header message="tns:headers" part="applicationInfo" use="literal"/>
1827
+ <soap:header message="tns:headers" part="partnerInfo" use="literal"/>
1828
+ <soap:header message="tns:headers" part="preferences" use="literal"/>
1829
+ <soap:body use="literal"/>
1830
+ </input>
1831
+ <output name="getCurrencyRateResponse">
1832
+ <soap:header message="tns:headers" part="documentInfo" use="literal"/>
1833
+ <soap:body use="literal"/>
1834
+ </output>
1835
+ <fault name="InvalidSessionFault">
1836
+ <soap:fault name="InvalidSessionFault" use="literal"/>
1837
+ </fault>
1838
+ <fault name="InvalidCredentialsFault">
1839
+ <soap:fault name="InvalidCredentialsFault" use="literal"/>
1840
+ </fault>
1841
+ <fault name="ExceededRequestLimitFault">
1842
+ <soap:fault name="ExceededRequestLimitFault" use="literal"/>
1843
+ </fault>
1844
+ <fault name="ExceededUsageLimitFault">
1845
+ <soap:fault name="ExceededUsageLimitFault" use="literal"/>
1846
+ </fault>
1847
+ <fault name="ExceededRecordCountFault">
1848
+ <soap:fault name="ExceededRecordCountFault" use="literal"/>
1849
+ </fault>
1850
+ <fault name="ExceededRequestSizeFault">
1851
+ <soap:fault name="ExceededRequestSizeFault" use="literal"/>
1852
+ </fault>
1853
+ <fault name="UnexpectedErrorFault">
1854
+ <soap:fault name="UnexpectedErrorFault" use="literal"/>
1855
+ </fault>
1856
+ </operation>
1857
+ <operation name="getDataCenterUrls">
1858
+ <soap:operation soapAction="getDataCenterUrls"/>
1859
+ <input name="getDataCenterUrlsRequest">
1860
+ <soap:header message="tns:headers" part="passport" use="literal"/>
1861
+ <soap:header message="tns:headers" part="applicationInfo" use="literal"/>
1862
+ <soap:header message="tns:headers" part="partnerInfo" use="literal"/>
1863
+ <soap:header message="tns:headers" part="preferences" use="literal"/>
1864
+ <soap:body use="literal"/>
1865
+ </input>
1866
+ <output name="getDataCenterUrlsResponse">
1867
+ <soap:header message="tns:headers" part="documentInfo" use="literal"/>
1868
+ <soap:body use="literal"/>
1869
+ </output>
1870
+ <fault name="ExceededRequestSizeFault">
1871
+ <soap:fault name="ExceededRequestSizeFault" use="literal"/>
1872
+ </fault>
1873
+ <fault name="UnexpectedErrorFault">
1874
+ <soap:fault name="UnexpectedErrorFault" use="literal"/>
1875
+ </fault>
1876
+ </operation>
1743
1877
  <operation name="getPostingTransactionSummary">
1744
1878
  <soap:operation soapAction="getPostingTransactionSummary"/>
1745
1879
  <input name="getPostingTransactionSummaryRequest">
@@ -1969,7 +2103,7 @@
1969
2103
  <soap:fault name="ExceededRequestSizeFault" use="literal"/>
1970
2104
  </fault>
1971
2105
  <fault name="ExceededRequestLimitFault">
1972
- <soap:fault name="ExceededRecordCountFault" use="literal"/>
2106
+ <soap:fault name="ExceededRequestLimitFault" use="literal"/>
1973
2107
  </fault>
1974
2108
  <fault name="UnexpectedErrorFault">
1975
2109
  <soap:fault name="UnexpectedErrorFault" use="literal"/>
@@ -2001,7 +2135,7 @@
2001
2135
  <soap:fault name="ExceededRequestSizeFault" use="literal"/>
2002
2136
  </fault>
2003
2137
  <fault name="ExceededRequestLimitFault">
2004
- <soap:fault name="ExceededRecordCountFault" use="literal"/>
2138
+ <soap:fault name="ExceededRequestLimitFault" use="literal"/>
2005
2139
  </fault>
2006
2140
  <fault name="UnexpectedErrorFault">
2007
2141
  <soap:fault name="UnexpectedErrorFault" use="literal"/>
@@ -2033,7 +2167,7 @@
2033
2167
  <soap:fault name="ExceededRequestSizeFault" use="literal"/>
2034
2168
  </fault>
2035
2169
  <fault name="ExceededRequestLimitFault">
2036
- <soap:fault name="ExceededRecordCountFault" use="literal"/>
2170
+ <soap:fault name="ExceededRequestLimitFault" use="literal"/>
2037
2171
  </fault>
2038
2172
  <fault name="UnexpectedErrorFault">
2039
2173
  <soap:fault name="UnexpectedErrorFault" use="literal"/>
@@ -2065,7 +2199,7 @@
2065
2199
  <soap:fault name="ExceededRequestSizeFault" use="literal"/>
2066
2200
  </fault>
2067
2201
  <fault name="ExceededRequestLimitFault">
2068
- <soap:fault name="ExceededRecordCountFault" use="literal"/>
2202
+ <soap:fault name="ExceededRequestLimitFault" use="literal"/>
2069
2203
  </fault>
2070
2204
  <fault name="UnexpectedErrorFault">
2071
2205
  <soap:fault name="UnexpectedErrorFault" use="literal"/>
@@ -2097,7 +2231,7 @@
2097
2231
  <soap:fault name="ExceededRequestSizeFault" use="literal"/>
2098
2232
  </fault>
2099
2233
  <fault name="ExceededRequestLimitFault">
2100
- <soap:fault name="ExceededRecordCountFault" use="literal"/>
2234
+ <soap:fault name="ExceededRequestLimitFault" use="literal"/>
2101
2235
  </fault>
2102
2236
  <fault name="UnexpectedErrorFault">
2103
2237
  <soap:fault name="UnexpectedErrorFault" use="literal"/>
@@ -2164,7 +2298,7 @@
2164
2298
  <soap:fault name="ExceededRequestSizeFault" use="literal"/>
2165
2299
  </fault>
2166
2300
  <fault name="ExceededRequestLimitFault">
2167
- <soap:fault name="ExceededRecordCountFault" use="literal"/>
2301
+ <soap:fault name="ExceededRequestLimitFault" use="literal"/>
2168
2302
  </fault>
2169
2303
  <fault name="UnexpectedErrorFault">
2170
2304
  <soap:fault name="UnexpectedErrorFault" use="literal"/>
@@ -2228,7 +2362,7 @@
2228
2362
  <soap:fault name="InvalidCredentialsFault" use="literal"/>
2229
2363
  </fault>
2230
2364
  <fault name="ExceededRequestLimitFault">
2231
- <soap:fault name="ExceededRecordCountFault" use="literal"/>
2365
+ <soap:fault name="ExceededRequestLimitFault" use="literal"/>
2232
2366
  </fault>
2233
2367
  <fault name="UnexpectedErrorFault">
2234
2368
  <soap:fault name="UnexpectedErrorFault" use="literal"/>
@@ -2263,7 +2397,7 @@
2263
2397
  <soap:fault name="ExceededRecordCountFault" use="literal"/>
2264
2398
  </fault>
2265
2399
  <fault name="ExceededRequestLimitFault">
2266
- <soap:fault name="ExceededRecordCountFault" use="literal"/>
2400
+ <soap:fault name="ExceededRequestLimitFault" use="literal"/>
2267
2401
  </fault>
2268
2402
  <fault name="ExceededRequestSizeFault">
2269
2403
  <soap:fault name="ExceededRequestSizeFault" use="literal"/>
@@ -2275,7 +2409,7 @@
2275
2409
  </binding>
2276
2410
  <service name="NetSuiteService">
2277
2411
  <port name="NetSuitePort" binding="tns:NetSuiteBinding">
2278
- <soap:address location="https://webservices.netsuite.com/services/NetSuitePort_2011_2"/>
2412
+ <soap:address location="https://webservices.netsuite.com/services/NetSuitePort_2015_1"/>
2279
2413
  </port>
2280
2414
  </service>
2281
2415
  </definitions>