netsuite 0.8.9 → 0.8.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.github/dependabot.yml +14 -0
  4. data/.github/workflows/codeql-analysis.yml +70 -0
  5. data/.github/workflows/main.yml +7 -4
  6. data/Gemfile +5 -3
  7. data/HISTORY.md +45 -5
  8. data/README.md +95 -39
  9. data/lib/netsuite/actions/add.rb +5 -1
  10. data/lib/netsuite/actions/attach_file.rb +87 -0
  11. data/lib/netsuite/actions/delete.rb +1 -1
  12. data/lib/netsuite/actions/delete_list.rb +1 -1
  13. data/lib/netsuite/actions/get.rb +1 -1
  14. data/lib/netsuite/actions/get_deleted.rb +1 -1
  15. data/lib/netsuite/actions/get_list.rb +1 -1
  16. data/lib/netsuite/actions/initialize.rb +2 -2
  17. data/lib/netsuite/actions/search.rb +20 -7
  18. data/lib/netsuite/records/account.rb +0 -1
  19. data/lib/netsuite/records/accounting_period.rb +1 -1
  20. data/lib/netsuite/records/assembly_component.rb +0 -2
  21. data/lib/netsuite/records/assembly_item.rb +1 -2
  22. data/lib/netsuite/records/assembly_unbuild.rb +0 -1
  23. data/lib/netsuite/records/cash_refund.rb +0 -1
  24. data/lib/netsuite/records/cash_refund_item.rb +1 -1
  25. data/lib/netsuite/records/cash_sale.rb +1 -2
  26. data/lib/netsuite/records/contact.rb +0 -1
  27. data/lib/netsuite/records/credit_memo.rb +1 -1
  28. data/lib/netsuite/records/currency_rate.rb +0 -1
  29. data/lib/netsuite/records/custom_record.rb +1 -1
  30. data/lib/netsuite/records/customer.rb +0 -1
  31. data/lib/netsuite/records/customer_deposit.rb +0 -1
  32. data/lib/netsuite/records/customer_payment.rb +0 -1
  33. data/lib/netsuite/records/customer_refund.rb +0 -1
  34. data/lib/netsuite/records/deposit.rb +0 -1
  35. data/lib/netsuite/records/deposit_application.rb +0 -1
  36. data/lib/netsuite/records/description_item.rb +3 -3
  37. data/lib/netsuite/records/discount_item.rb +1 -1
  38. data/lib/netsuite/records/employee.rb +1 -1
  39. data/lib/netsuite/records/estimate.rb +95 -15
  40. data/lib/netsuite/records/inbound_shipment.rb +0 -1
  41. data/lib/netsuite/records/inventory_item.rb +237 -38
  42. data/lib/netsuite/records/inventory_number.rb +1 -2
  43. data/lib/netsuite/records/inventory_transfer.rb +1 -0
  44. data/lib/netsuite/records/invoice.rb +2 -2
  45. data/lib/netsuite/records/item_fulfillment.rb +0 -1
  46. data/lib/netsuite/records/item_group.rb +3 -3
  47. data/lib/netsuite/records/item_option_custom_field.rb +52 -0
  48. data/lib/netsuite/records/item_receipt.rb +0 -1
  49. data/lib/netsuite/records/item_receipt_item.rb +2 -1
  50. data/lib/netsuite/records/item_vendor.rb +10 -1
  51. data/lib/netsuite/records/job.rb +0 -1
  52. data/lib/netsuite/records/kit_item.rb +2 -2
  53. data/lib/netsuite/records/location.rb +0 -1
  54. data/lib/netsuite/records/lot_numbered_assembly_item.rb +1 -1
  55. data/lib/netsuite/records/lot_numbered_inventory_item.rb +226 -82
  56. data/lib/netsuite/records/matrix_option_list.rb +16 -0
  57. data/lib/netsuite/records/non_inventory_purchase_item.rb +1 -1
  58. data/lib/netsuite/records/non_inventory_resale_item.rb +157 -21
  59. data/lib/netsuite/records/non_inventory_sale_item.rb +134 -22
  60. data/lib/netsuite/records/null_field_list.rb +15 -0
  61. data/lib/netsuite/records/opportunity.rb +0 -1
  62. data/lib/netsuite/records/other_charge_sale_item.rb +2 -2
  63. data/lib/netsuite/records/payment_item.rb +3 -3
  64. data/lib/netsuite/records/payroll_item.rb +0 -1
  65. data/lib/netsuite/records/purchase_order.rb +0 -1
  66. data/lib/netsuite/records/record_ref.rb +1 -1
  67. data/lib/netsuite/records/return_authorization.rb +1 -0
  68. data/lib/netsuite/records/sales_order.rb +1 -2
  69. data/lib/netsuite/records/serialized_assembly_item.rb +1 -1
  70. data/lib/netsuite/records/serialized_inventory_item.rb +2 -2
  71. data/lib/netsuite/records/serialized_inventory_item_location.rb +0 -1
  72. data/lib/netsuite/records/service_resale_item.rb +125 -21
  73. data/lib/netsuite/records/service_sale_item.rb +1 -2
  74. data/lib/netsuite/records/subsidiary.rb +0 -1
  75. data/lib/netsuite/records/subtotal_item.rb +3 -4
  76. data/lib/netsuite/records/transfer_order.rb +0 -1
  77. data/lib/netsuite/records/translation.rb +17 -0
  78. data/lib/netsuite/records/translation_list.rb +11 -0
  79. data/lib/netsuite/records/vendor.rb +0 -1
  80. data/lib/netsuite/records/vendor_bill.rb +0 -1
  81. data/lib/netsuite/records/work_order.rb +0 -1
  82. data/lib/netsuite/records/work_order_item.rb +0 -1
  83. data/lib/netsuite/support/actions.rb +2 -0
  84. data/lib/netsuite/support/fields.rb +2 -0
  85. data/lib/netsuite/support/records.rb +22 -5
  86. data/lib/netsuite/support/sublist.rb +1 -1
  87. data/lib/netsuite/utilities/strings.rb +15 -0
  88. data/lib/netsuite/utilities.rb +5 -0
  89. data/lib/netsuite/version.rb +1 -1
  90. data/lib/netsuite.rb +6 -1
  91. data/netsuite.gemspec +4 -3
  92. data/spec/netsuite/actions/add_spec.rb +36 -0
  93. data/spec/netsuite/actions/attach_file_spec.rb +59 -0
  94. data/spec/netsuite/actions/search_spec.rb +205 -0
  95. data/spec/netsuite/records/cash_refund_item_spec.rb +1 -1
  96. data/spec/netsuite/records/credit_memo_spec.rb +14 -0
  97. data/spec/netsuite/records/estimate_spec.rb +103 -13
  98. data/spec/netsuite/records/inventory_item_spec.rb +239 -22
  99. data/spec/netsuite/records/invoice_spec.rb +43 -0
  100. data/spec/netsuite/records/item_option_custom_field_spec.rb +27 -0
  101. data/spec/netsuite/records/item_vendor_list_spec.rb +2 -5
  102. data/spec/netsuite/records/item_vendor_spec.rb +14 -2
  103. data/spec/netsuite/records/lot_numbered_inventory_item_spec.rb +247 -0
  104. data/spec/netsuite/records/matrix_option_list_spec.rb +26 -0
  105. data/spec/netsuite/records/non_inventory_resale_item_spec.rb +159 -24
  106. data/spec/netsuite/records/non_inventory_sale_item_spec.rb +135 -22
  107. data/spec/netsuite/records/null_field_list_spec.rb +30 -0
  108. data/spec/netsuite/records/return_authorization_spec.rb +62 -0
  109. data/spec/netsuite/records/sales_order_spec.rb +29 -0
  110. data/spec/netsuite/records/service_resale_item_spec.rb +122 -17
  111. data/spec/netsuite/records/translation_list_spec.rb +34 -0
  112. data/spec/netsuite/records/translation_spec.rb +28 -0
  113. data/spec/netsuite/support/fields_spec.rb +16 -4
  114. data/spec/netsuite/support/records_spec.rb +33 -7
  115. data/spec/netsuite/support/search_result_spec.rb +12 -0
  116. data/spec/netsuite/utilities_spec.rb +10 -2
  117. data/spec/support/field_matcher.rb +8 -6
  118. data/spec/support/fixtures/add/add_file.xml +20 -0
  119. data/spec/support/fixtures/attach/attach_file_to_sales_order.xml +16 -0
  120. data/spec/support/fixtures/attach/attach_file_to_sales_order_error.xml +20 -0
  121. data/spec/support/fixtures/search/basic_search_contact.xml +39 -0
  122. data/spec/support/fixtures/search/single_search_result.xml +46 -0
  123. metadata +43 -16
  124. data/lib/netsuite/core_ext/string/lower_camelcase.rb +0 -9
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe NetSuite::Records::Translation do
4
+ let(:translation) { NetSuite::Records::Translation.new }
5
+
6
+ it 'has dynamic fields' do
7
+ [
8
+ :description,
9
+ :display_name,
10
+ :featured_description,
11
+ :language,
12
+ :locale,
13
+ :locale_description,
14
+ :name,
15
+ :no_price_message,
16
+ :out_of_stock_message,
17
+ :page_title,
18
+ :replace_all,
19
+ :sales_description,
20
+ :specials_description,
21
+ :store_description,
22
+ :store_detailed_description,
23
+ :store_display_name
24
+ ].each do |field|
25
+ expect(translation).to have_field(field)
26
+ end
27
+ end
28
+ end
@@ -1,12 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe NetSuite::Support::Fields do
4
- DummyRecord = Class.new.send(:include, NetSuite::Support::Fields)
5
- let(:klass) { DummyRecord }
4
+ let(:klass) do
5
+ Class.new do
6
+ include NetSuite::Support::Fields
7
+ end
8
+ end
6
9
  let(:instance) { klass.new }
7
10
 
8
- before { klass.fields.clear }
9
-
10
11
  describe '.fields' do
11
12
  context 'with arguments' do
12
13
  it 'calls .field with each argument passed to it' do
@@ -34,10 +35,21 @@ describe NetSuite::Support::Fields do
34
35
  end
35
36
 
36
37
  it 'errors when already a field' do
38
+ DummyRecord = klass
39
+
37
40
  klass.field :one
38
41
 
39
42
  expect { klass.field :one }.to raise_error('one already defined on DummyRecord')
40
43
  end
44
+
45
+ it 'errors when conflicting with a public method' do
46
+ DummyRecordWithMethod = Class.new(klass) do
47
+ def existing_method
48
+ end
49
+ end
50
+
51
+ expect { DummyRecordWithMethod.field :existing_method }.to raise_error('existing_method conflicts with a method defined on DummyRecordWithMethod')
52
+ end
41
53
  end
42
54
 
43
55
  describe '.read_only_fields' do
@@ -4,11 +4,14 @@ module Foo
4
4
  module Bar
5
5
  class Baz
6
6
  include NetSuite::Support::Fields
7
+ include NetSuite::Support::RecordRefs
7
8
  include NetSuite::Support::Records
9
+ include NetSuite::Namespaces::TranSales
8
10
 
9
- def attributes
10
- { :source => 'Google', :total => 100.0 }
11
- end
11
+ fields :source, :total
12
+ field :null_field_list, NetSuite::Records::NullFieldList
13
+
14
+ record_ref :related_record
12
15
  end
13
16
  end
14
17
  end
@@ -16,18 +19,41 @@ end
16
19
  describe NetSuite::Support::Records do
17
20
  let(:instance) { Foo::Bar::Baz.new }
18
21
 
19
- describe '#record_type' do
22
+ describe '#to_record' do
20
23
  it 'returns a hash of attributes to be used in a SOAP request' do
24
+ instance.source = 'Google'
25
+ instance.total = 100.0
26
+
21
27
  expect(instance.to_record).to eql({
22
- 'platformCore:source' => 'Google',
23
- 'platformCore:total' => 100.0
28
+ 'tranSales:source' => 'Google',
29
+ 'tranSales:total' => 100.0
30
+ })
31
+ end
32
+
33
+ it 'uses the records namespace for the outer elements namespace and the field values namespace for the inner elements namespace' do
34
+ instance.related_record = NetSuite::Records::RecordRef.new(name: 'blah')
35
+
36
+ expect(instance.to_record).to eq({
37
+ 'tranSales:relatedRecord' => {
38
+ 'platformCore:name' => 'blah',
39
+ },
40
+ })
41
+ end
42
+
43
+ it 'uses the fields namespace for the outer elements namespace for NullFieldList value' do
44
+ instance.null_field_list.name = 'source'
45
+
46
+ expect(instance.to_record).to eq({
47
+ 'platformCore:nullFieldList' => {
48
+ 'platformCore:name' => 'source',
49
+ },
24
50
  })
25
51
  end
26
52
  end
27
53
 
28
54
  describe '#record_type' do
29
55
  it 'returns a string of the record type to be used in a SOAP request' do
30
- expect(instance.record_type).to eql('platformCore:Baz')
56
+ expect(instance.record_type).to eql('tranSales:Baz')
31
57
  end
32
58
  end
33
59
 
@@ -1,6 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe NetSuite::Support::SearchResult do
4
+ before(:all) { savon.mock! }
5
+ after(:all) { savon.unmock! }
6
+
4
7
  describe '#results' do
5
8
  context 'empty page' do
6
9
  it 'returns empty array' do
@@ -20,5 +23,14 @@ describe NetSuite::Support::SearchResult do
20
23
  expect(results).to eq []
21
24
  end
22
25
  end
26
+
27
+ it 'handles a recordList with a single element' do
28
+ response = File.read('spec/support/fixtures/search/single_search_result.xml')
29
+ savon.expects(:search).with(message: {}).returns(response)
30
+
31
+ results = NetSuite::Records::Account.search(basic: [])
32
+
33
+ expect(results.results.count).to eq 1
34
+ end
23
35
  end
24
36
  end
@@ -13,11 +13,19 @@ describe NetSuite::Utilities do
13
13
 
14
14
  no_dst_stamp = DateTime.parse('Sun, November 6 2017 00:00:00 -0000')
15
15
  formatted_date = NetSuite::Utilities.normalize_time_to_netsuite_date(no_dst_stamp.to_time.to_i)
16
- expect(formatted_date).to eq('2017-11-06T00:00:00-08:00')
16
+ if Gem.loaded_specs.has_key?('tzinfo')
17
+ expect(formatted_date).to eq('2017-11-06T00:00:00-08:00')
18
+ else
19
+ expect(formatted_date).to eq('2017-11-06T00:00:00-07:00')
20
+ end
17
21
 
18
22
  no_dst_stamp_with_time = DateTime.parse('Sun, November 6 2017 12:11:10 -0000')
19
23
  formatted_date = NetSuite::Utilities.normalize_time_to_netsuite_date(no_dst_stamp_with_time.to_time.to_i)
20
- expect(formatted_date).to eq('2017-11-06T00:00:00-08:00')
24
+ if Gem.loaded_specs.has_key?('tzinfo')
25
+ expect(formatted_date).to eq('2017-11-06T00:00:00-08:00')
26
+ else
27
+ expect(formatted_date).to eq('2017-11-06T00:00:00-07:00')
28
+ end
21
29
  end
22
30
  end
23
31
  end
@@ -1,17 +1,19 @@
1
- RSpec::Matchers.define :have_field do |attribute|
1
+ RSpec::Matchers.define :have_field do |attribute, klass|
2
2
 
3
3
  match do |model|
4
- field_can_be_set_and_retrieved?(model, attribute) && field_can_be_set_on_instantiation?(model, attribute)
4
+ klass = klass || Object
5
+
6
+ field_can_be_set_and_retrieved?(model, attribute, klass) && field_can_be_set_on_instantiation?(model, attribute, klass)
5
7
  end
6
8
 
7
- def field_can_be_set_and_retrieved?(model, attribute)
8
- obj = Object.new
9
+ def field_can_be_set_and_retrieved?(model, attribute, klass)
10
+ obj = klass.new
9
11
  model.send("#{attribute}=".to_sym, obj)
10
12
  model.send(attribute) == obj
11
13
  end
12
14
 
13
- def field_can_be_set_on_instantiation?(model, attribute)
14
- obj = Object.new
15
+ def field_can_be_set_on_instantiation?(model, attribute, klass)
16
+ obj = klass.new
15
17
  new_model = model.class.new(attribute => obj)
16
18
  new_model.send(attribute) == obj
17
19
  end
@@ -0,0 +1,20 @@
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_2020_2.platform.webservices.netsuite.com">
5
+ <platformMsgs:nsId>REDACTED</platformMsgs:nsId>
6
+ </platformMsgs:documentInfo>
7
+ </soapenv:Header>
8
+ <soapenv:Body>
9
+ <addResponse xmlns="urn:messages_2020_2.platform.webservices.netsuite.com">
10
+ <writeResponse>
11
+ <platformCore:status xmlns:platformCore="urn:core_2020_2.platform.webservices.netsuite.com" isSuccess="true">
12
+ <platformCore:statusDetail>
13
+ <platformCore:afterSubmitFailed>false</platformCore:afterSubmitFailed>
14
+ </platformCore:statusDetail>
15
+ </platformCore:status>
16
+ <baseRef xmlns:platformCore="urn:core_2020_2.platform.webservices.netsuite.com" internalId="23556" type="file" xsi:type="platformCore:RecordRef"/>
17
+ </writeResponse>
18
+ </addResponse>
19
+ </soapenv:Body>
20
+ </soapenv:Envelope>
@@ -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_1220201115821392011296470399_67055c545d0</platformMsgs:nsId>
6
+ </platformMsgs:documentInfo>
7
+ </soapenv:Header>
8
+ <soapenv:Body>
9
+ <attachResponse xmlns="urn:messages_2_5.platform.webservices.netsuite.com">
10
+ <writeResponse xmlns="urn:messages_2_5.platform.webservices.netsuite.com">
11
+ <ns1:status isSuccess="true" xmlns:ns1="urn:core_2_5.platform.webservices.netsuite.com"/>
12
+ <baseRef internalId="999" type="salesOrder" xsi:type="ns2:RecordRef" xmlns:ns2="urn:core_2_5.platform.webservices.netsuite.com"/>
13
+ </writeResponse>
14
+ </attachResponse>
15
+ </soapenv:Body>
16
+ </soapenv:Envelope>
@@ -0,0 +1,20 @@
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_1220201115821392011296470399_67055c545d0</platformMsgs:nsId>
6
+ </platformMsgs:documentInfo>
7
+ </soapenv:Header>
8
+ <soapenv:Body>
9
+ <attachResponse xmlns="urn:messages_2_5.platform.webservices.netsuite.com">
10
+ <writeResponse xmlns="urn:messages_2_5.platform.webservices.netsuite.com">
11
+ <platformCore:status xmlns:platformCore="urn:core_2011_2.platform.webservices.netsuite.com" isSuccess="false">
12
+ <platformCore:statusDetail type="ERROR">
13
+ <platformCore:code>INVALID</platformCore:code>
14
+ <platformCore:message>Invalid request.</platformCore:message>
15
+ </platformCore:statusDetail>
16
+ </platformCore:status>
17
+ </writeResponse>
18
+ </attachResponse>
19
+ </soapenv:Body>
20
+ </soapenv:Envelope>
@@ -0,0 +1,39 @@
1
+ <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">
2
+ <soapenv:Header>
3
+ <platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2020_2.platform.webservices.netsuite.com">
4
+ <platformMsgs:nsId>WEBSERVICES_123456</platformMsgs:nsId>
5
+ </platformMsgs:documentInfo>
6
+ </soapenv:Header>
7
+ <soapenv:Body>
8
+ <searchResponse xmlns="urn:messages_2020_2.platform.webservices.netsuite.com">
9
+ <platformCore:searchResult xmlns:platformCore="urn:core_2020_2.platform.webservices.netsuite.com">
10
+ <platformCore:status isSuccess="true"/>
11
+ <platformCore:totalRecords>1</platformCore:totalRecords>
12
+ <platformCore:pageSize>1000</platformCore:pageSize>
13
+ <platformCore:totalPages>1</platformCore:totalPages>
14
+ <platformCore:pageIndex>1</platformCore:pageIndex>
15
+ <platformCore:searchId>WEBSERVICES_123456</platformCore:searchId>
16
+ <platformCore:recordList>
17
+ <platformCore:record xmlns:listRel="urn:relationships_2020_2.lists.webservices.netsuite.com" internalId="7272" externalId="customer_contact_3338" xsi:type="listRel:Contact">
18
+ <listRel:entityId>Mary</listRel:entityId>
19
+ <listRel:company internalId="7270">
20
+ <platformCore:name>1357 What a Company</platformCore:name>
21
+ </listRel:company>
22
+ <listRel:title>President/CEO</listRel:title>
23
+ <listRel:phone>(123) 555-1234</listRel:phone>
24
+ <listRel:email>***FILTERED***</listRel:email>
25
+ <listRel:defaultAddress>123 Main St</listRel:defaultAddress>
26
+ <listRel:isPrivate>false</listRel:isPrivate>
27
+ <listRel:isInactive>false</listRel:isInactive>
28
+ <listRel:subsidiary internalId="1">
29
+ <platformCore:name>Awesome Company</platformCore:name>
30
+ </listRel:subsidiary>
31
+ <listRel:globalSubscriptionStatus>_softOptOut</listRel:globalSubscriptionStatus>
32
+ <listRel:dateCreated>2021-03-03T08:26:56.000-08:00</listRel:dateCreated>
33
+ <listRel:lastModifiedDate>2021-07-07T09:49:51.000-07:00</listRel:lastModifiedDate>
34
+ </platformCore:record>
35
+ </platformCore:recordList>
36
+ </platformCore:searchResult>
37
+ </searchResponse>
38
+ </soapenv:Body>
39
+ </soapenv:Envelope>
@@ -0,0 +1,46 @@
1
+ <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">
2
+ <soapenv:Header>
3
+ <platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2021_1.platform.webservices.netsuite.com">
4
+ <platformMsgs:nsId>WEBSERVICES_3603434_08292013908151921913870884_2f1b68b787b4d</platformMsgs:nsId>
5
+ </platformMsgs:documentInfo>
6
+ </soapenv:Header>
7
+ <soapenv:Body>
8
+ <searchResponse xmlns="urn:messages_2021_1.platform.webservices.netsuite.com">
9
+ <platformCore:searchResult xmlns:platformCore="urn:core_2021_1.platform.webservices.netsuite.com">
10
+ <platformCore:status isSuccess="true"/>
11
+ <platformCore:totalRecords>1</platformCore:totalRecords>
12
+ <platformCore:pageSize>1000</platformCore:pageSize>
13
+ <platformCore:totalPages>1</platformCore:totalPages>
14
+ <platformCore:pageIndex>1</platformCore:pageIndex>
15
+ <platformCore:searchId>WEBSERVICES_3603434_08292013908151921913870884_2f1b68b787b4d</platformCore:searchId>
16
+ <platformCore:recordList>
17
+ <platformCore:record xmlns:listAcct="urn:accounting_2021_1.lists.webservices.netsuite.com" internalId="355" xsi:type="listAcct:Account">
18
+ <listAcct:acctType>_costOfGoodsSold</listAcct:acctType>
19
+ <listAcct:acctNumber>4508</listAcct:acctNumber>
20
+ <listAcct:acctName>Selling Fees/Commissions - COS</listAcct:acctName>
21
+ <listAcct:includeChildren>false</listAcct:includeChildren>
22
+ <listAcct:generalRate>_average</listAcct:generalRate>
23
+ <listAcct:parent internalId="246">
24
+ <platformCore:name>4500 Cost of Sales</platformCore:name>
25
+ </listAcct:parent>
26
+ <listAcct:cashFlowRate>_average</listAcct:cashFlowRate>
27
+ <listAcct:isInactive>false</listAcct:isInactive>
28
+ <listAcct:inventory>false</listAcct:inventory>
29
+ <listAcct:revalue>false</listAcct:revalue>
30
+ <listAcct:customFieldList>
31
+ <platformCore:customField internalId="3602" scriptId="custrecord_cps_bdc_lastupdatedbyimp_acc" xsi:type="platformCore:BooleanCustomFieldRef">
32
+ <platformCore:value>false</platformCore:value>
33
+ </platformCore:customField>
34
+ <platformCore:customField internalId="3609" scriptId="custrecord_cps_bdc_updatedbyimp_acc" xsi:type="platformCore:BooleanCustomFieldRef">
35
+ <platformCore:value>false</platformCore:value>
36
+ </platformCore:customField>
37
+ <platformCore:customField internalId="1145" scriptId="custrecord_has_mx_localization" xsi:type="platformCore:BooleanCustomFieldRef">
38
+ <platformCore:value>false</platformCore:value>
39
+ </platformCore:customField>
40
+ </listAcct:customFieldList>
41
+ </platformCore:record>
42
+ </platformCore:recordList>
43
+ </platformCore:searchResult>
44
+ </searchResponse>
45
+ </soapenv:Body>
46
+ </soapenv:Envelope>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: netsuite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.9
4
+ version: 0.8.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Moran
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-09-06 00:00:00.000000000 Z
12
+ date: 2022-04-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: savon
@@ -18,9 +18,6 @@ dependencies:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: 2.3.0
21
- - - "<="
22
- - !ruby/object:Gem::Version
23
- version: 2.11.1
24
21
  type: :runtime
25
22
  prerelease: false
26
23
  version_requirements: !ruby/object:Gem::Requirement
@@ -28,37 +25,34 @@ dependencies:
28
25
  - - ">="
29
26
  - !ruby/object:Gem::Version
30
27
  version: 2.3.0
31
- - - "<="
32
- - !ruby/object:Gem::Version
33
- version: 2.11.1
34
28
  - !ruby/object:Gem::Dependency
35
29
  name: rspec
36
30
  requirement: !ruby/object:Gem::Requirement
37
31
  requirements:
38
32
  - - "~>"
39
33
  - !ruby/object:Gem::Version
40
- version: 3.10.0
34
+ version: 3.11.0
41
35
  type: :development
42
36
  prerelease: false
43
37
  version_requirements: !ruby/object:Gem::Requirement
44
38
  requirements:
45
39
  - - "~>"
46
40
  - !ruby/object:Gem::Version
47
- version: 3.10.0
41
+ version: 3.11.0
48
42
  - !ruby/object:Gem::Dependency
49
43
  name: rake
50
44
  requirement: !ruby/object:Gem::Requirement
51
45
  requirements:
52
- - - ">="
46
+ - - "~>"
53
47
  - !ruby/object:Gem::Version
54
- version: '0'
48
+ version: 12.3.3
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
52
  requirements:
59
- - - ">="
53
+ - - "~>"
60
54
  - !ruby/object:Gem::Version
61
- version: '0'
55
+ version: 12.3.3
62
56
  description: NetSuite SuiteTalk API Wrapper
63
57
  email:
64
58
  - ryan.moran@gmail.com
@@ -67,6 +61,9 @@ executables: []
67
61
  extensions: []
68
62
  extra_rdoc_files: []
69
63
  files:
64
+ - ".github/FUNDING.yml"
65
+ - ".github/dependabot.yml"
66
+ - ".github/workflows/codeql-analysis.yml"
70
67
  - ".github/workflows/main.yml"
71
68
  - ".gitignore"
72
69
  - ".rspec"
@@ -79,6 +76,7 @@ files:
79
76
  - Rakefile
80
77
  - lib/netsuite.rb
81
78
  - lib/netsuite/actions/add.rb
79
+ - lib/netsuite/actions/attach_file.rb
82
80
  - lib/netsuite/actions/delete.rb
83
81
  - lib/netsuite/actions/delete_list.rb
84
82
  - lib/netsuite/actions/get.rb
@@ -94,7 +92,6 @@ files:
94
92
  - lib/netsuite/actions/upsert.rb
95
93
  - lib/netsuite/actions/upsert_list.rb
96
94
  - lib/netsuite/configuration.rb
97
- - lib/netsuite/core_ext/string/lower_camelcase.rb
98
95
  - lib/netsuite/errors.rb
99
96
  - lib/netsuite/namespaces/act_sched.rb
100
97
  - lib/netsuite/namespaces/comm_general.rb
@@ -250,6 +247,7 @@ files:
250
247
  - lib/netsuite/records/item_group.rb
251
248
  - lib/netsuite/records/item_member.rb
252
249
  - lib/netsuite/records/item_member_list.rb
250
+ - lib/netsuite/records/item_option_custom_field.rb
253
251
  - lib/netsuite/records/item_receipt.rb
254
252
  - lib/netsuite/records/item_receipt_item.rb
255
253
  - lib/netsuite/records/item_receipt_item_list.rb
@@ -273,6 +271,7 @@ files:
273
271
  - lib/netsuite/records/non_inventory_sale_item.rb
274
272
  - lib/netsuite/records/note.rb
275
273
  - lib/netsuite/records/note_type.rb
274
+ - lib/netsuite/records/null_field_list.rb
276
275
  - lib/netsuite/records/opportunity.rb
277
276
  - lib/netsuite/records/opportunity_item.rb
278
277
  - lib/netsuite/records/opportunity_item_list.rb
@@ -333,6 +332,8 @@ files:
333
332
  - lib/netsuite/records/transfer_order.rb
334
333
  - lib/netsuite/records/transfer_order_item.rb
335
334
  - lib/netsuite/records/transfer_order_item_list.rb
335
+ - lib/netsuite/records/translation.rb
336
+ - lib/netsuite/records/translation_list.rb
336
337
  - lib/netsuite/records/units_type.rb
337
338
  - lib/netsuite/records/units_type_uom.rb
338
339
  - lib/netsuite/records/units_type_uom_list.rb
@@ -375,9 +376,11 @@ files:
375
376
  - lib/netsuite/support/sublist.rb
376
377
  - lib/netsuite/utilities.rb
377
378
  - lib/netsuite/utilities/data_center.rb
379
+ - lib/netsuite/utilities/strings.rb
378
380
  - lib/netsuite/version.rb
379
381
  - netsuite.gemspec
380
382
  - spec/netsuite/actions/add_spec.rb
383
+ - spec/netsuite/actions/attach_file_spec.rb
381
384
  - spec/netsuite/actions/delete_list_spec.rb
382
385
  - spec/netsuite/actions/delete_spec.rb
383
386
  - spec/netsuite/actions/get_deleted_spec.rb
@@ -468,6 +471,7 @@ files:
468
471
  - spec/netsuite/records/item_fulfillment_spec.rb
469
472
  - spec/netsuite/records/item_group_spec.rb
470
473
  - spec/netsuite/records/item_member_list_spec.rb
474
+ - spec/netsuite/records/item_option_custom_field_spec.rb
471
475
  - spec/netsuite/records/item_vendor_list_spec.rb
472
476
  - spec/netsuite/records/item_vendor_spec.rb
473
477
  - spec/netsuite/records/job_spec.rb
@@ -476,12 +480,14 @@ files:
476
480
  - spec/netsuite/records/journal_entry_spec.rb
477
481
  - spec/netsuite/records/kit_item_spec.rb
478
482
  - spec/netsuite/records/location_spec.rb
483
+ - spec/netsuite/records/lot_numbered_inventory_item_spec.rb
479
484
  - spec/netsuite/records/matrix_option_list_spec.rb
480
485
  - spec/netsuite/records/message_spec.rb
481
486
  - spec/netsuite/records/non_inventory_resale_item_spec.rb
482
487
  - spec/netsuite/records/non_inventory_sale_item_spec.rb
483
488
  - spec/netsuite/records/note_spec.rb
484
489
  - spec/netsuite/records/note_type_spec.rb
490
+ - spec/netsuite/records/null_field_list_spec.rb
485
491
  - spec/netsuite/records/partner_spec.rb
486
492
  - spec/netsuite/records/payment_item_spec.rb
487
493
  - spec/netsuite/records/payment_method_spec.rb
@@ -492,6 +498,7 @@ files:
492
498
  - spec/netsuite/records/record_ref_spec.rb
493
499
  - spec/netsuite/records/return_authorization_item_list_spec.rb
494
500
  - spec/netsuite/records/return_authorization_item_spec.rb
501
+ - spec/netsuite/records/return_authorization_spec.rb
495
502
  - spec/netsuite/records/rev_rec_template_spec.rb
496
503
  - spec/netsuite/records/sales_order_item_list_spec.rb
497
504
  - spec/netsuite/records/sales_order_item_spec.rb
@@ -508,6 +515,8 @@ files:
508
515
  - spec/netsuite/records/term_spec.rb
509
516
  - spec/netsuite/records/transaction_body_custom_field_spec.rb
510
517
  - spec/netsuite/records/transaction_column_custom_field_spec.rb
518
+ - spec/netsuite/records/translation_list_spec.rb
519
+ - spec/netsuite/records/translation_spec.rb
511
520
  - spec/netsuite/records/units_type_spec.rb
512
521
  - spec/netsuite/records/units_type_uom_list_spec.rb
513
522
  - spec/netsuite/records/units_type_uom_spec.rb
@@ -543,9 +552,12 @@ files:
543
552
  - spec/support/configuration.rb
544
553
  - spec/support/field_matcher.rb
545
554
  - spec/support/fixtures/add/add_customer.xml
555
+ - spec/support/fixtures/add/add_file.xml
546
556
  - spec/support/fixtures/add/add_invoice.xml
547
557
  - spec/support/fixtures/add/add_invoice_error.xml
548
558
  - spec/support/fixtures/add/add_invoice_multiple_errors.xml
559
+ - spec/support/fixtures/attach/attach_file_to_sales_order.xml
560
+ - spec/support/fixtures/attach/attach_file_to_sales_order_error.xml
549
561
  - spec/support/fixtures/custom_fields/multi_select.xml
550
562
  - spec/support/fixtures/delete/delete_customer.xml
551
563
  - spec/support/fixtures/delete_list/delete_list_customers.xml
@@ -557,9 +569,11 @@ files:
557
569
  - spec/support/fixtures/login/failure_concurrent_requests.xml
558
570
  - spec/support/fixtures/login/failure_invalid_credentials.xml
559
571
  - spec/support/fixtures/login/success.xml
572
+ - spec/support/fixtures/search/basic_search_contact.xml
560
573
  - spec/support/fixtures/search/saved_search_customer.xml
561
574
  - spec/support/fixtures/search/saved_search_item.xml
562
575
  - spec/support/fixtures/search/saved_search_joined_custom_customer.xml
576
+ - spec/support/fixtures/search/single_search_result.xml
563
577
  - spec/support/fixtures/update/update_customer.xml
564
578
  - spec/support/fixtures/update/update_customer_error.xml
565
579
  - spec/support/fixtures/update/update_customer_multiple_errors.xml
@@ -581,7 +595,8 @@ files:
581
595
  homepage: https://github.com/NetSweet/netsuite
582
596
  licenses:
583
597
  - MIT
584
- metadata: {}
598
+ metadata:
599
+ changelog_uri: https://github.com/netsweet/netsuite/blob/master/HISTORY.md
585
600
  post_install_message:
586
601
  rdoc_options: []
587
602
  require_paths:
@@ -603,6 +618,7 @@ specification_version: 4
603
618
  summary: NetSuite SuiteTalk API (SOAP) Wrapper
604
619
  test_files:
605
620
  - spec/netsuite/actions/add_spec.rb
621
+ - spec/netsuite/actions/attach_file_spec.rb
606
622
  - spec/netsuite/actions/delete_list_spec.rb
607
623
  - spec/netsuite/actions/delete_spec.rb
608
624
  - spec/netsuite/actions/get_deleted_spec.rb
@@ -693,6 +709,7 @@ test_files:
693
709
  - spec/netsuite/records/item_fulfillment_spec.rb
694
710
  - spec/netsuite/records/item_group_spec.rb
695
711
  - spec/netsuite/records/item_member_list_spec.rb
712
+ - spec/netsuite/records/item_option_custom_field_spec.rb
696
713
  - spec/netsuite/records/item_vendor_list_spec.rb
697
714
  - spec/netsuite/records/item_vendor_spec.rb
698
715
  - spec/netsuite/records/job_spec.rb
@@ -701,12 +718,14 @@ test_files:
701
718
  - spec/netsuite/records/journal_entry_spec.rb
702
719
  - spec/netsuite/records/kit_item_spec.rb
703
720
  - spec/netsuite/records/location_spec.rb
721
+ - spec/netsuite/records/lot_numbered_inventory_item_spec.rb
704
722
  - spec/netsuite/records/matrix_option_list_spec.rb
705
723
  - spec/netsuite/records/message_spec.rb
706
724
  - spec/netsuite/records/non_inventory_resale_item_spec.rb
707
725
  - spec/netsuite/records/non_inventory_sale_item_spec.rb
708
726
  - spec/netsuite/records/note_spec.rb
709
727
  - spec/netsuite/records/note_type_spec.rb
728
+ - spec/netsuite/records/null_field_list_spec.rb
710
729
  - spec/netsuite/records/partner_spec.rb
711
730
  - spec/netsuite/records/payment_item_spec.rb
712
731
  - spec/netsuite/records/payment_method_spec.rb
@@ -717,6 +736,7 @@ test_files:
717
736
  - spec/netsuite/records/record_ref_spec.rb
718
737
  - spec/netsuite/records/return_authorization_item_list_spec.rb
719
738
  - spec/netsuite/records/return_authorization_item_spec.rb
739
+ - spec/netsuite/records/return_authorization_spec.rb
720
740
  - spec/netsuite/records/rev_rec_template_spec.rb
721
741
  - spec/netsuite/records/sales_order_item_list_spec.rb
722
742
  - spec/netsuite/records/sales_order_item_spec.rb
@@ -733,6 +753,8 @@ test_files:
733
753
  - spec/netsuite/records/term_spec.rb
734
754
  - spec/netsuite/records/transaction_body_custom_field_spec.rb
735
755
  - spec/netsuite/records/transaction_column_custom_field_spec.rb
756
+ - spec/netsuite/records/translation_list_spec.rb
757
+ - spec/netsuite/records/translation_spec.rb
736
758
  - spec/netsuite/records/units_type_spec.rb
737
759
  - spec/netsuite/records/units_type_uom_list_spec.rb
738
760
  - spec/netsuite/records/units_type_uom_spec.rb
@@ -768,9 +790,12 @@ test_files:
768
790
  - spec/support/configuration.rb
769
791
  - spec/support/field_matcher.rb
770
792
  - spec/support/fixtures/add/add_customer.xml
793
+ - spec/support/fixtures/add/add_file.xml
771
794
  - spec/support/fixtures/add/add_invoice.xml
772
795
  - spec/support/fixtures/add/add_invoice_error.xml
773
796
  - spec/support/fixtures/add/add_invoice_multiple_errors.xml
797
+ - spec/support/fixtures/attach/attach_file_to_sales_order.xml
798
+ - spec/support/fixtures/attach/attach_file_to_sales_order_error.xml
774
799
  - spec/support/fixtures/custom_fields/multi_select.xml
775
800
  - spec/support/fixtures/delete/delete_customer.xml
776
801
  - spec/support/fixtures/delete_list/delete_list_customers.xml
@@ -782,9 +807,11 @@ test_files:
782
807
  - spec/support/fixtures/login/failure_concurrent_requests.xml
783
808
  - spec/support/fixtures/login/failure_invalid_credentials.xml
784
809
  - spec/support/fixtures/login/success.xml
810
+ - spec/support/fixtures/search/basic_search_contact.xml
785
811
  - spec/support/fixtures/search/saved_search_customer.xml
786
812
  - spec/support/fixtures/search/saved_search_item.xml
787
813
  - spec/support/fixtures/search/saved_search_joined_custom_customer.xml
814
+ - spec/support/fixtures/search/single_search_result.xml
788
815
  - spec/support/fixtures/update/update_customer.xml
789
816
  - spec/support/fixtures/update/update_customer_error.xml
790
817
  - spec/support/fixtures/update/update_customer_multiple_errors.xml
@@ -1,9 +0,0 @@
1
- class String
2
- def lower_camelcase
3
- str = dup
4
- str.gsub!(/\/(.?)/) { "::#{$1.upcase}" }
5
- str.gsub!(/(?:_+|-+)([a-z]|[0-9])/) { $1.upcase }
6
- str.gsub!(/(\A|\s)([A-Z])/) { $1 + $2.downcase }
7
- str
8
- end
9
- end