netsuite 0.4.2 → 0.4.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.
Files changed (38) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +5 -0
  3. data/lib/netsuite.rb +3 -1
  4. data/lib/netsuite/actions/search.rb +7 -3
  5. data/lib/netsuite/configuration.rb +21 -1
  6. data/lib/netsuite/records/cash_sale.rb +2 -2
  7. data/lib/netsuite/records/classification.rb +3 -1
  8. data/lib/netsuite/records/credit_memo_apply_list.rb +5 -13
  9. data/lib/netsuite/records/currency.rb +30 -0
  10. data/lib/netsuite/records/custom_record.rb +1 -0
  11. data/lib/netsuite/records/discount_item.rb +2 -1
  12. data/lib/netsuite/records/employee.rb +0 -1
  13. data/lib/netsuite/records/invoice.rb +2 -2
  14. data/lib/netsuite/records/non_inventory_sale_item.rb +4 -3
  15. data/lib/netsuite/records/role_list.rb +2 -3
  16. data/lib/netsuite/records/roles.rb +10 -0
  17. data/lib/netsuite/records/service_sale_item.rb +2 -1
  18. data/lib/netsuite/support/country.rb +1 -1
  19. data/lib/netsuite/support/search_result.rb +4 -3
  20. data/lib/netsuite/version.rb +1 -1
  21. data/spec/netsuite/configuration_spec.rb +12 -2
  22. data/spec/netsuite/records/cash_sale_spec.rb +34 -0
  23. data/spec/netsuite/records/classification_spec.rb +3 -1
  24. data/spec/netsuite/records/credit_memo_apply_list_spec.rb +1 -1
  25. data/spec/netsuite/records/credit_memo_item_list_spec.rb +1 -1
  26. data/spec/netsuite/records/currency_spec.rb +11 -0
  27. data/spec/netsuite/records/customer_addressbook_list_spec.rb +3 -3
  28. data/spec/netsuite/records/customer_addressbook_spec.rb +6 -6
  29. data/spec/netsuite/records/customer_refund_apply_list_spec.rb +1 -1
  30. data/spec/netsuite/records/discount_item_spec.rb +2 -1
  31. data/spec/netsuite/records/inventory_assignment_list_spec.rb +7 -7
  32. data/spec/netsuite/records/inventory_assignment_spec.rb +2 -2
  33. data/spec/netsuite/records/inventory_detail_spec.rb +1 -1
  34. data/spec/netsuite/records/invoice_spec.rb +2 -2
  35. data/spec/netsuite/records/non_inventory_sale_item_spec.rb +2 -1
  36. data/spec/netsuite/records/service_sale_item_spec.rb +2 -1
  37. data/spec/netsuite/records/vendor_spec.rb +21 -21
  38. metadata +8 -2
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzlhZWFlM2M2MWNjZTg0OWYxYzc1NjIyYmE5ZDcxZjk1ZTBlOTQ3Zg==
4
+ ZjcyMjQzYWViZjVhMTVhZjJjODQyMzYxYTAwNTYyMDhmMTBjMmJjZA==
5
5
  data.tar.gz: !binary |-
6
- MGNiMWI4YTkzNjMzNWUzMzMyM2M4YjU0OTExOTg0YjhjN2MyMmRlNQ==
6
+ MThjNDBjNzc1MzkwZDhkODhlNmRiMjM5NjlhZDg3ZWIxZDA2NjJlNA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NzlmODk4MmI0YjMyNWQxNDA2ZTAxZWNkZjdiMzk5Yzg5Nzc2ZmZkM2UyOGMz
10
- OGJjYzBhYmUxZTFiZTUyYzFiZGY3ZTk2NzYxMjVkZDIxZWM5ZGZkZWU1MzE3
11
- ZmQ3OTUzYTJlM2JiNTQ4MDFiZjM1YzRhMGViOGRhZTQ0NTJjMDQ=
9
+ MDUwZWUzYmMzNGMxNDJiMDQyODdjNGVjNzRiMTFkY2IxN2JiYTgwM2ZmNDQw
10
+ MzZiZjUwOGU3NGI5ZTM4MGJiMzg1ODYwOTU0MTQyOWZlY2M4YTQzOWM3ZmU1
11
+ YWViNDE1MjFlNmQ5OTIwYzFkNDhhMGJjZmY1ZDE1NGQwMTg4MTE=
12
12
  data.tar.gz: !binary |-
13
- MWY4YzFlZDc3ODBlYTdhYjU0ODAwZWI2OTI4ZjU5NjQxMGFjYzYyZGNjZDcz
14
- ZDU0N2M1Y2VkNTEzNzM2MWI1YzY2ODNjYWVmZTg2MWY1MmM1YTExN2E1MWJj
15
- ZmFiMTBkM2QzZWU2NTFlZjE0NTRjMTJhYzVjM2Q1N2EzOTEwODU=
13
+ MjQxNTlkMmVhODZhMjlkYTRiZTQxNzU5ZDE2NzhiZDk4ZjRlOTQ4OTM3NWU5
14
+ NWMzY2U3MTc1NTExYjZlZTVmZGI0ZjAwOGY1ZWMzMmU1YTQ4YWJhMGIyZDdh
15
+ OWU5NDc0MDU5MGQwMDVjN2ZiYTk5NjhiM2ZkNGJlNjY1Y2I5OTM=
data/README.md CHANGED
@@ -48,6 +48,9 @@ NetSuite.configure do
48
48
  # optionally specify full wsdl URL (to switch to sandbox, for example)
49
49
  wsdl "https://webservices.sandbox.netsuite.com/wsdl/v#{api_version}_0/netsuite.wsdl"
50
50
 
51
+ # if your datacenter is being switched, you'll have to manually set your wsdl location
52
+ wsdl "https://webservices.na2.netsuite.com/wsdl/v#{api_version}_0/netsuite.wsdl"
53
+
51
54
  # or specify the sandbox flag if you don't want to deal with specifying a full URL
52
55
  sandbox true
53
56
 
@@ -100,6 +103,8 @@ task.add
100
103
 
101
104
  task.update :message => 'New Message'
102
105
 
106
+ task.delete
107
+
103
108
  # using get_select_value with a custom record
104
109
  NetSuite::Records::BaseRefList.get_select_value(
105
110
  field: 'custrecord_something',
@@ -108,6 +108,7 @@ module NetSuite
108
108
  autoload :Contact, 'netsuite/records/contact'
109
109
  autoload :ContactAccessRoles, 'netsuite/records/contact_access_roles'
110
110
  autoload :ContactAccessRolesList, 'netsuite/records/contact_access_roles_list'
111
+ autoload :Currency, 'netsuite/records/currency'
111
112
  autoload :Department, 'netsuite/records/department'
112
113
  autoload :Deposit, 'netsuite/records/deposit'
113
114
  autoload :DepositPayment, 'netsuite/records/deposit_payment'
@@ -151,6 +152,7 @@ module NetSuite
151
152
  autoload :PhoneCall, 'netsuite/records/phone_call'
152
153
  autoload :PricingMatrix, 'netsuite/records/pricing_matrix'
153
154
  autoload :PromotionCode, 'netsuite/records/promotion_code'
155
+ autoload :Roles, 'netsuite/records/roles'
154
156
  autoload :RecordRef, 'netsuite/records/record_ref'
155
157
  autoload :RecordRefList, 'netsuite/records/record_ref_list'
156
158
  autoload :RevRecTemplate, 'netsuite/records/rev_rec_template'
@@ -192,7 +194,7 @@ module NetSuite
192
194
  def self.configure_from_env(&block)
193
195
  NetSuite.configure do
194
196
  reset!
195
-
197
+
196
198
  email ENV['NETSUITE_EMAIL'] unless ENV['NETSUITE_EMAIL'].nil?
197
199
  password ENV['NETSUITE_PASSWORD'] unless ENV['NETSUITE_PASSWORD'].nil?
198
200
  account ENV['NETSUITE_ACCOUNT'] unless ENV['NETSUITE_ACCOUNT'].nil?
@@ -223,10 +223,14 @@ module NetSuite
223
223
  @success ||= search_result[:status][:@is_success] == 'true'
224
224
  end
225
225
 
226
- protected
227
- def method_name
228
-
226
+ # TODO need to figure out a way for the user to access this
227
+ def errors
228
+ error_obj = response_hash[:status][:status_detail]
229
+ error_obj = [error_obj] if error_obj.class == Hash
230
+ error_obj.map do |error|
231
+ NetSuite::Error.new(error)
229
232
  end
233
+ end
230
234
 
231
235
  module Support
232
236
  def self.included(base)
@@ -47,6 +47,10 @@ module NetSuite
47
47
  end
48
48
  end
49
49
 
50
+ def sandbox?
51
+ !!sandbox
52
+ end
53
+
50
54
  def wsdl=(wsdl)
51
55
  attributes[:wsdl] = wsdl
52
56
  end
@@ -59,13 +63,29 @@ module NetSuite
59
63
  wsdl_path = "https://webservices.sandbox.netsuite.com/wsdl/v#{api_version}_0/netsuite.wsdl"
60
64
  else
61
65
  wsdl_path = File.expand_path("../../../wsdl/#{api_version}.wsdl", __FILE__)
62
- wsdl_path = "https://webservices.netsuite.com/wsdl/v#{api_version}_0/netsuite.wsdl" unless File.exists? wsdl_path
66
+
67
+ unless File.exists? wsdl_path
68
+ wsdl_path = "https://#{wsdl_domain}/wsdl/v#{api_version}_0/netsuite.wsdl"
69
+ end
63
70
  end
64
71
 
65
72
  attributes[:wsdl] ||= wsdl_path
66
73
  end
67
74
  end
68
75
 
76
+ def wsdl_domain(wsdl_domain = nil)
77
+ if wsdl_domain
78
+ self.wsdl_domain = wsdl_domain
79
+ else
80
+ # if sandbox, this parameter is ignored
81
+ attributes[:wsdl_domain] ||= 'webservices.netsuite.com'
82
+ end
83
+ end
84
+
85
+ def wsdl_domain=(wsdl_domain)
86
+ attributes[:wsdl_domain] = wsdl_domain
87
+ end
88
+
69
89
  def soap_header=(headers)
70
90
  attributes[:soap_header] = headers
71
91
  end
@@ -12,7 +12,7 @@ module NetSuite
12
12
  fields :alt_handling_cost, :alt_shipping_cost, :auth_code, :bill_address, :cc_approved, :cc_expire_date, :cc_is_purchase_card_bin,
13
13
  :cc_name, :cc_number, :cc_process_as_purchas_card, :cc_security_code, :cc_street, :cc_zip_code, :charge_it, :contrib_pct, :created_date,
14
14
  :currency_name, :debit_card_issue_no, :deferred_revenue, :discount_rate, :discount_total, :email, :end_date, :est_gross_profit,
15
- :est_gross_profit_percent, :exchange_rate, :exclude_commission, :exp_cost_disc_amount, :exp_cost_discount, :exp_cost_discprint,
15
+ :est_gross_profit_percent, :exchange_rate, :exclude_commission, :exp_cost_disc_amount, :exp_cost_discprint,
16
16
  :exp_cost_disc_rate, :exp_cost_disc_tax1_amt, :exp_cost_disc_taxable, :exp_cost_tax_rate1, :exp_cost_tax_rate2, :fax, :fob,
17
17
  :gift_cert_applied, :handling_cost, :handling_tax1_rate, :handling_tax2_rate, :ignore_avs, :is_recurring_payment, :is_taxable,
18
18
  :item_cost_disc_amount, :item_cost_disc_print, :item_cost_disc_rate, :item_cost_disc_tax1_amt, :item_cost_disc_taxable, :item_cost_tax_rate1,
@@ -20,7 +20,7 @@ module NetSuite
20
20
  :pay_pal_status, :pay_pay_tran_id, :pn_ref_num, :recognized_revenue, :rev_rec_end_date, :rev_rec_on_rev_commitment, :rev_rec_state_date,
21
21
  :sales_effective_date, :ship_address, :ship_date, :shipping_cost, :shipping_tax1_rate, :shipping_tax2_rate, :source, :start_date, :status,
22
22
  :sub_total, :sync_partners_teams, :sync_sales_teams, :tax2_total, :tax_rate, :tax_total, :three_d_status_code, :time_disc_amount, :time_disc_print,
23
- :time_disc_rate, :time_disc_tax1_amt, :time_disc_taxable, :time_tax_rate1, :time_tax_rate2, :to_be_emailed, :to_be_faxed, :total,
23
+ :time_disc_rate, :time_disc_tax1_amt, :time_disc_taxable, :time_tax_rate1, :time_tax_rate2, :to_be_emailed, :to_be_printed, :to_be_faxed, :total,
24
24
  :total_cost_estimate, :tracking_numbers, :tran_date, :tran_id, :tan_is_vsoe_bundle, :undep_funds, :valid_from, :vat_reg_num, :vsoe_auto_calc
25
25
 
26
26
 
@@ -6,7 +6,9 @@ module NetSuite
6
6
 
7
7
  actions :get, :get_list, :delete, :upsert
8
8
 
9
- fields :name, :include_children, :is_inactive, :class_translation_list, :subsidiary_list, :custom_field_list
9
+ fields :name, :include_children, :is_inactive, :class_translation_list, :custom_field_list
10
+
11
+ field :subsidiary_list, RecordRefList
10
12
 
11
13
  attr_reader :internal_id
12
14
  attr_accessor :external_id
@@ -1,24 +1,16 @@
1
1
  module NetSuite
2
2
  module Records
3
- class CreditMemoApplyList
3
+ class CreditMemoApplyList < Support::Sublist
4
4
  include Namespaces::TranCust
5
5
 
6
- def initialize(attributes = {})
7
- case attributes[:apply]
8
- when Hash
9
- applies << CreditMemoApply.new(attributes[:apply])
10
- when Array
11
- attributes[:apply].each { |apply| applies << CreditMemoApply.new(apply) }
12
- end
13
- end
6
+ sublist :apply, CreditMemoApply
14
7
 
8
+ # for backward compatibility
15
9
  def applies
16
- @applies ||= []
10
+ self.apply
17
11
  end
18
12
 
19
- def to_record
20
- { "#{record_namespace}:apply" => applies.map(&:to_record) }
21
- end
22
13
  end
23
14
  end
24
15
  end
16
+ \
@@ -0,0 +1,30 @@
1
+ module NetSuite
2
+ module Records
3
+ class Currency
4
+ include Support::Records
5
+ include Support::Fields
6
+
7
+ include Support::Actions
8
+ include Support::RecordRefs
9
+ include Namespaces::ListAcct
10
+
11
+ # https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2014_1/schema/record/currency.html
12
+
13
+ actions :get, :get_list, :get_all, :add, :update, :upsert, :upsert_list, :delete
14
+
15
+ fields :name, :symbol, :is_base_currency, :is_inactive, :override_currency_format, :display_symbol, :symbol_placement,
16
+ :locale, :formatSample, :exchangeRate, :fx_rate_update_timezone, :incl_in_fx_rate_updates, :currency_precision
17
+
18
+ attr_reader :internal_id
19
+ attr_accessor :external_id
20
+
21
+ def initialize(attributes = {})
22
+ @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
23
+ @external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
24
+
25
+ initialize_from_attributes_hash(attributes)
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -22,6 +22,7 @@ module NetSuite
22
22
 
23
23
  attr_reader :internal_id
24
24
  attr_accessor :external_id
25
+ attr_accessor :search_joins
25
26
 
26
27
  def initialize(attributes = {})
27
28
  @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
@@ -14,9 +14,10 @@ module NetSuite
14
14
 
15
15
  record_refs :account, :custom_form, :deferred_revenue_account, :department, :expense_account,
16
16
  :income_account, :issue_product, :klass, :location, :parent, :rev_rec_schedule, :sales_tax_code,
17
- :subsidiary_list, :tax_schedule
17
+ :tax_schedule
18
18
 
19
19
  field :custom_field_list, CustomFieldList
20
+ field :subsidiary_list, RecordRefList
20
21
 
21
22
  attr_reader :internal_id
22
23
  attr_accessor :external_id
@@ -1,7 +1,6 @@
1
1
  module NetSuite
2
2
  module Records
3
3
  class Employee < Support::Base
4
- include Support::RecordRefs
5
4
  include Support::Actions
6
5
  include Support::RecordRefs
7
6
  include Namespaces::ListEmp
@@ -24,7 +24,7 @@ module NetSuite
24
24
  :rev_rec_on_rev_commitment, :rev_rec_schedule, :rev_rec_start_date, :revenue_status, :sales_effective_date,
25
25
  :sales_group, :sales_team_list, :ship_address, :ship_date, :ship_group_list,
26
26
  :shipping_cost, :shipping_tax_1_rate, :shipping_tax_2_rate, :shipping_tax_code, :source, :start_date,
27
- :status, :subsidiary, :sync_partner_teams, :sync_sales_teams, :tax_2_total,
27
+ :status, :sync_partner_teams, :sync_sales_teams, :tax_2_total,
28
28
  :tax_total, :time_disc_amount, :time_disc_print, :time_disc_rate, :time_disc_tax_1_amt, :time_disc_taxable,
29
29
  :time_discount, :time_list, :time_tax_code, :time_tax_rate_1, :time_tax_rate_2, :to_be_emailed, :to_be_faxed,
30
30
  :to_be_printed, :total_cost_estimate, :tracking_numbers, :tran_date, :tran_id, :tran_is_vsoe_bundle,
@@ -40,7 +40,7 @@ module NetSuite
40
40
 
41
41
  record_refs :account, :bill_address_list, :custom_form, :department, :entity, :klass, :partner,
42
42
  :posting_period, :ship_address_list, :terms, :location, :sales_rep, :tax_item, :created_from,
43
- :ship_method, :lead_source, :promo_code
43
+ :ship_method, :lead_source, :promo_code, :subsidiary
44
44
 
45
45
  attr_reader :internal_id
46
46
  attr_accessor :external_id
@@ -28,12 +28,13 @@ module NetSuite
28
28
  record_refs :billing_schedule, :cost_category, :custom_form, :deferred_revenue_account, :department, :income_account,
29
29
  :issue_product, :item_options_list, :klass, :location, :parent, :pricing_group, :purchase_tax_code,
30
30
  :quantity_pricing_schedule, :rev_rec_schedule, :sale_unit, :sales_tax_code, :ship_package, :store_display_image,
31
- :store_display_thumbnail, :store_item_template, :subsidiary_list, :tax_schedule, :units_type
31
+ :store_display_thumbnail, :store_item_template, :tax_schedule, :units_type
32
32
 
33
- field :pricing_matrix, PricingMatrix
34
33
  field :custom_field_list, CustomFieldList
35
34
  field :pricing_matrix, PricingMatrix
36
-
35
+ field :subsidiary_list, RecordRefList
36
+
37
+
37
38
  attr_reader :internal_id
38
39
  attr_accessor :external_id
39
40
 
@@ -1,9 +1,9 @@
1
1
  module NetSuite
2
2
  module Records
3
3
  class RoleList < Support::Sublist
4
- include Namespaces::PlatformCommon
4
+ include Namespaces::ListEmp
5
5
 
6
- sublist :roles, RecordRef
6
+ sublist :roles, Roles
7
7
 
8
8
  # role list is undocumented and has pretty funky XML:
9
9
 
@@ -19,7 +19,6 @@ module NetSuite
19
19
  # </listEmp:selectedRole>
20
20
  # </listEmp:roles>
21
21
  # </listEmp:rolesList>
22
-
23
22
  end
24
23
  end
25
24
  end
@@ -0,0 +1,10 @@
1
+ module NetSuite
2
+ module Records
3
+ class Roles < NetSuite::Support::Base
4
+ include Support::RecordRefs
5
+ include Namespaces::ListEmp
6
+
7
+ record_refs :selected_role
8
+ end
9
+ end
10
+ end
@@ -26,10 +26,11 @@ module NetSuite
26
26
  record_refs :billing_schedule, :cost_category, :custom_form, :deferred_revenue_account, :department, :income_account,
27
27
  :issue_product, :item_options_list, :klass, :location, :parent, :pricing_group, :purchase_tax_code,
28
28
  :quantity_pricing_schedule, :rev_rec_schedule, :sale_unit, :sales_tax_code, :store_display_image,
29
- :store_display_thumbnail, :store_item_template, :subsidiary_list, :tax_schedule, :units_type
29
+ :store_display_thumbnail, :store_item_template, :tax_schedule, :units_type
30
30
 
31
31
  field :pricing_matrix, PricingMatrix
32
32
  field :custom_field_list, CustomFieldList
33
+ field :subsidiary_list, RecordRefList
33
34
 
34
35
  attr_reader :internal_id
35
36
  attr_accessor :external_id
@@ -69,7 +69,7 @@ module NetSuite
69
69
  'EC' => '_ecuador',
70
70
  'EG' => '_egypt',
71
71
  'SV' => '_elSalvador',
72
- 'GU' => '_equatorialGuinea',
72
+ 'GQ' => '_equatorialGuinea',
73
73
  'ER' => '_eritrea',
74
74
  'EE' => '_estonia',
75
75
  'ET' => '_ethiopia',
@@ -20,7 +20,7 @@ module NetSuite
20
20
  def initialize(response, result_class)
21
21
  @result_class = result_class
22
22
  @response = response
23
-
23
+
24
24
  @total_records = response.body[:total_records].to_i
25
25
  @total_pages = response.body[:total_pages].to_i
26
26
  @current_page = response.body[:page_index].to_i
@@ -48,7 +48,7 @@ module NetSuite
48
48
  next if search_group.to_s.start_with?('@')
49
49
 
50
50
  record[search_group].each_pair do |k, v|
51
- # all return values are wrapped in a <SearchValue/>
51
+ # all return values of joined searchs are wrapped in a <SearchValue/>
52
52
  # extract the value from <SearchValue/> to make results easier to work with
53
53
 
54
54
  if v.is_a?(Hash) && v.has_key?(:search_value)
@@ -63,6 +63,7 @@ module NetSuite
63
63
  end
64
64
 
65
65
  result_wrapper = result_class.new(record.delete(:basic))
66
+ # TODO if custom record search the type id should be copied over
66
67
  result_wrapper.search_joins = record
67
68
  results << result_wrapper
68
69
  end
@@ -97,4 +98,4 @@ module NetSuite
97
98
 
98
99
  end
99
100
  end
100
- end
101
+ end
@@ -1,3 +1,3 @@
1
1
  module Netsuite
2
- VERSION = '0.4.2'
2
+ VERSION = '0.4.3'
3
3
  end
@@ -51,6 +51,16 @@ describe NetSuite::Configuration do
51
51
  expect(config.wsdl).to eql('https://webservices.netsuite.com/wsdl/v2013_1_0/netsuite.wsdl')
52
52
  end
53
53
  end
54
+
55
+ context 'when the API and wsdl domain have been set' do
56
+ it 'should correctly modify the full wsdl path' do
57
+ config.sandbox = false
58
+ config.api_version '2014_1'
59
+ config.wsdl_domain = 'system.na1.netsuite.com'
60
+
61
+ expect(config.wsdl).to eql('https://system.na1.netsuite.com/wsdl/v2014_1_0/netsuite.wsdl')
62
+ end
63
+ end
54
64
  end
55
65
 
56
66
  describe '#auth_header' do
@@ -192,13 +202,13 @@ describe NetSuite::Configuration do
192
202
  describe "#credentials" do
193
203
  context "when none are defined" do
194
204
  skip "should properly create the auth credentials" do
195
-
205
+
196
206
  end
197
207
  end
198
208
 
199
209
  context "when they are defined" do
200
210
  it "should properly replace the default auth credentials" do
201
-
211
+
202
212
  end
203
213
  end
204
214
  end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe NetSuite::Records::CashSale do
4
+ it 'has all the right fields' do
5
+ [
6
+ :alt_handling_cost, :alt_shipping_cost, :auth_code, :bill_address, :cc_approved, :cc_expire_date, :cc_is_purchase_card_bin,
7
+ :cc_name, :cc_number, :cc_process_as_purchas_card, :cc_security_code, :cc_street, :cc_zip_code, :charge_it, :contrib_pct, :created_date,
8
+ :currency_name, :debit_card_issue_no, :deferred_revenue, :discount_rate, :discount_total, :email, :end_date, :est_gross_profit,
9
+ :est_gross_profit_percent, :exchange_rate, :exclude_commission, :exp_cost_disc_amount, :exp_cost_discprint,
10
+ :exp_cost_disc_rate, :exp_cost_disc_tax1_amt, :exp_cost_disc_taxable, :exp_cost_tax_rate1, :exp_cost_tax_rate2, :fax, :fob,
11
+ :gift_cert_applied, :handling_cost, :handling_tax1_rate, :handling_tax2_rate, :ignore_avs, :is_recurring_payment, :is_taxable,
12
+ :item_cost_disc_amount, :item_cost_disc_print, :item_cost_disc_rate, :item_cost_disc_tax1_amt, :item_cost_disc_taxable, :item_cost_tax_rate1,
13
+ :item_cost_tax_rate2, :last_modified_date, :linked_tracking_numbers, :memo, :message, :other_ref_num, :paypal_auth_id, :paypal_process,
14
+ :pay_pal_status, :pay_pay_tran_id, :pn_ref_num, :recognized_revenue, :rev_rec_end_date, :rev_rec_on_rev_commitment, :rev_rec_state_date,
15
+ :sales_effective_date, :ship_address, :ship_date, :shipping_cost, :shipping_tax1_rate, :shipping_tax2_rate, :source, :start_date, :status,
16
+ :sub_total, :sync_partners_teams, :sync_sales_teams, :tax2_total, :tax_rate, :tax_total, :three_d_status_code, :time_disc_amount, :time_disc_print,
17
+ :time_disc_rate, :time_disc_tax1_amt, :time_disc_taxable, :time_tax_rate1, :time_tax_rate2, :to_be_emailed, :to_be_printed, :to_be_faxed, :total,
18
+ :total_cost_estimate, :tracking_numbers, :tran_date, :tran_id, :tan_is_vsoe_bundle, :undep_funds, :valid_from, :vat_reg_num, :vsoe_auto_calc
19
+ ].each do |field|
20
+ expect(subject).to have_field(field)
21
+ end
22
+ end
23
+
24
+ it 'has all the right record refs' do
25
+ [
26
+ :account, :bill_address_list, :billing_schedule, :created_from, :credit_card, :credit_card_processor, :currency, :custom_form,
27
+ :department, :discount_item, :entity, :exp_cost_discount, :exp_cost_tax_code, :handling_tax_code, :item_cost_discount, :item_cost_tax_code,
28
+ :job, :klass, :lead_source, :location, :message_sel, :opportunity, :partner, :payment_method, :posting_period, :promo_code, :rev_rec_schedule,
29
+ :sales_group, :sales_rep, :ship_address_list, :ship_method, :shipping_tax_code, :subsidiary, :tax_item, :time_discount, :time_tax_code
30
+ ].each do |record_ref|
31
+ expect(subject).to have_record_ref(record_ref)
32
+ end
33
+ end
34
+ end
@@ -5,10 +5,12 @@ describe NetSuite::Records::Classification do
5
5
 
6
6
  it 'has all the right fields' do
7
7
  [
8
- :name, :include_children, :is_inactive, :class_translation_list, :subsidiary_list, :custom_field_list
8
+ :name, :include_children, :is_inactive, :class_translation_list, :custom_field_list
9
9
  ].each do |field|
10
10
  expect(classification).to have_field(field)
11
11
  end
12
+
13
+ expect(classification.subsidiary_list.class).to eq(NetSuite::Records::RecordRefList)
12
14
  end
13
15
 
14
16
  describe '.get' do
@@ -21,7 +21,7 @@ describe NetSuite::Records::CreditMemoApplyList do
21
21
  }]
22
22
  }
23
23
 
24
- expect(list.to_record.should).to eq(record)
24
+ expect(list.to_record).to eq(record)
25
25
  end
26
26
  end
27
27
  end
@@ -20,7 +20,7 @@ describe NetSuite::Records::CreditMemoItemList do
20
20
  'tranCust:rate' => 10
21
21
  }]
22
22
  }
23
- list.to_record.should eql(record)
23
+ expect(list.to_record).to eql(record)
24
24
  end
25
25
  end
26
26
  end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe NetSuite::Records::Account do
4
+ let(:currency) { NetSuite::Records::Currency.new }
5
+
6
+ it 'can be initialized and has fields' do
7
+ expect(currency.class.fields.size).to be > 0
8
+
9
+ currency.class.fields.each { |f| expect(currency).to have_field(f) }
10
+ end
11
+ end
@@ -19,18 +19,18 @@ describe NetSuite::Records::CustomerAddressbookList do
19
19
 
20
20
  describe "#replace_all" do
21
21
  it "returns true by default" do
22
- list.replace_all.should eql(true)
22
+ expect(list.replace_all).to eql(true)
23
23
  end
24
24
 
25
25
  it "can be changed via accessor" do
26
26
  list.replace_all = false
27
27
 
28
- list.replace_all.should eql(false)
28
+ expect(list.replace_all).to eql(false)
29
29
  end
30
30
 
31
31
  it "coerces to a boolean" do
32
32
  list.replace_all = "goober"
33
- list.replace_all.should eql(true)
33
+ expect(list.replace_all).to eql(true)
34
34
  end
35
35
  end
36
36
 
@@ -99,30 +99,30 @@ describe NetSuite::Records::CustomerAddressbook do
99
99
  context "when it's specified as a 2 character ISO code" do
100
100
  it "is converted to the appropriate NetSuite enum value" do
101
101
  addressbook = NetSuite::Records::CustomerAddressbook.new country: "US"
102
- addressbook.to_record["listRel:country"].should eql "_unitedStates"
102
+ expect(addressbook.to_record["listRel:country"]).to eql "_unitedStates"
103
103
  end
104
104
  end
105
105
 
106
106
  context "when the country code is a YAML reserved word (NO)" do
107
107
  it "is converted to the appropriate NetSuite enum value" do
108
108
  addressbook = NetSuite::Records::CustomerAddressbook.new country: "NO"
109
- addressbook.to_record["listRel:country"].should eql "_norway"
109
+ expect(addressbook.to_record["listRel:country"]).to eql "_norway"
110
110
  end
111
111
  end
112
112
 
113
113
  it "can be specified as the NetSuite enum value" do
114
114
  addressbook = NetSuite::Records::CustomerAddressbook.new country: "_unitedStates"
115
- addressbook.to_record["listRel:country"].should eql "_unitedStates"
115
+ expect(addressbook.to_record["listRel:country"]).to eql "_unitedStates"
116
116
 
117
117
  # country with two uppercase letters (looks like ISO2)
118
118
  addressbook = NetSuite::Records::CustomerAddressbook.new country: "_unitedKingdomGB"
119
- addressbook.to_record["listRel:country"].should eql "_unitedKingdomGB"
119
+ expect(addressbook.to_record["listRel:country"]).to eql "_unitedKingdomGB"
120
120
  end
121
121
 
122
122
  it "can be unspecified" do
123
123
  addressbook = NetSuite::Records::CustomerAddressbook.new country: ''
124
- addressbook.country.to_record.should eql ""
125
- addressbook.to_record["listRel:country"].should eql ""
124
+ expect(addressbook.country.to_record).to eql ""
125
+ expect(addressbook.to_record["listRel:country"]).to eql ""
126
126
  end
127
127
  end
128
128
 
@@ -18,7 +18,7 @@ describe NetSuite::Records::CustomerRefundApplyList do
18
18
  'tranCust:amount' => 10
19
19
  }]
20
20
  }
21
- list.to_record.should eql(record)
21
+ expect(list.to_record).to eql(record)
22
22
  end
23
23
  end
24
24
 
@@ -13,13 +13,14 @@ describe NetSuite::Records::DiscountItem do
13
13
 
14
14
  # TODO there is a probably a more robust way to test this
15
15
  expect(item.custom_field_list.class).to eq(NetSuite::Records::CustomFieldList)
16
+ expect(item.subsidiary_list.class).to eq(NetSuite::Records::RecordRefList)
16
17
  end
17
18
 
18
19
  it 'has the right record_refs' do
19
20
  [
20
21
  :account, :custom_form, :deferred_revenue_account, :department, :expense_account,
21
22
  :income_account, :issue_product, :klass, :location, :parent, :rev_rec_schedule, :sales_tax_code,
22
- :subsidiary_list, :tax_schedule
23
+ :tax_schedule
23
24
  ].each do |record_ref|
24
25
  expect(item).to have_record_ref(record_ref)
25
26
  end
@@ -4,7 +4,7 @@ describe NetSuite::Records::InventoryAssignmentList do
4
4
  let(:list) { NetSuite::Records::InventoryAssignmentList.new }
5
5
 
6
6
  it 'has an assignments attribute' do
7
- list.inventory_assignment.should be_kind_of(Array)
7
+ expect(list.inventory_assignment).to be_kind_of(Array)
8
8
  end
9
9
 
10
10
  describe '#to_record' do
@@ -17,24 +17,24 @@ describe NetSuite::Records::InventoryAssignmentList do
17
17
  it 'can represent itself as a SOAP record' do
18
18
 
19
19
  record = {
20
- 'tranInvt:inventoryAssignment' => [{
20
+ 'platformCommon:inventoryAssignment' => [{
21
21
  'platformCommon:quantity' => 1
22
22
  }]
23
23
  }
24
- list.to_record.should eql(record)
24
+ expect(list.to_record).to eql(record)
25
25
  end
26
26
 
27
27
  it 'can represent replacing all' do
28
28
  list.replace_all = true
29
29
 
30
30
  record = {
31
- 'tranInvt:inventoryAssignment' => [{
31
+ 'platformCommon:inventoryAssignment' => [{
32
32
  'platformCommon:quantity' => 1
33
33
  }],
34
34
  :@replaceAll => true,
35
35
  }
36
36
 
37
- list.to_record.should eql(record)
37
+ expect(list.to_record).to eql(record)
38
38
  end
39
39
 
40
40
  it 'accepts a false replacing all' do
@@ -47,13 +47,13 @@ describe NetSuite::Records::InventoryAssignmentList do
47
47
  list.replace_all = false
48
48
 
49
49
  record = {
50
- 'tranInvt:inventoryAssignment' => [{
50
+ 'platformCommon:inventoryAssignment' => [{
51
51
  'platformCommon:quantity' => 1
52
52
  }],
53
53
  :@replaceAll => false,
54
54
  }
55
55
 
56
- list.to_record.should eql(record)
56
+ expect(list.to_record).to eql(record)
57
57
  end
58
58
  end
59
59
  end
@@ -7,7 +7,7 @@ describe NetSuite::Records::InventoryAssignment do
7
7
  [
8
8
  :expiration_date, :quantity, :quantity_available, :receipt_inventory_number
9
9
  ].each do |field|
10
- item.should have_field(field)
10
+ expect(item).to have_field(field)
11
11
  end
12
12
  end
13
13
 
@@ -15,7 +15,7 @@ describe NetSuite::Records::InventoryAssignment do
15
15
  [
16
16
  :bin_number, :issue_inventory_number, :to_bin_number
17
17
  ].each do |record_ref|
18
- item.should have_record_ref(record_ref)
18
+ expect(item).to have_record_ref(record_ref)
19
19
  end
20
20
  end
21
21
  end
@@ -7,7 +7,7 @@ describe NetSuite::Records::InventoryDetail do
7
7
  [
8
8
  :custom_form
9
9
  ].each do |record_ref|
10
- item.should have_record_ref(record_ref)
10
+ expect(item).to have_record_ref(record_ref)
11
11
  end
12
12
  end
13
13
  end
@@ -22,7 +22,7 @@ describe NetSuite::Records::Invoice do
22
22
  :rev_rec_on_rev_commitment, :rev_rec_schedule, :rev_rec_start_date, :revenue_status, :sales_effective_date,
23
23
  :sales_group, :sales_team_list, :ship_address, :ship_date, :ship_group_list,
24
24
  :shipping_cost, :shipping_tax_1_rate, :shipping_tax_2_rate, :shipping_tax_code, :source, :start_date,
25
- :status, :subsidiary, :sync_partner_teams, :sync_sales_teams, :tax_2_total,
25
+ :status, :sync_partner_teams, :sync_sales_teams, :tax_2_total,
26
26
  :tax_total, :time_disc_amount, :time_disc_print, :time_disc_rate, :time_disc_tax_1_amt, :time_disc_taxable,
27
27
  :time_discount, :time_list, :time_tax_code, :time_tax_rate_1, :time_tax_rate_2, :to_be_emailed, :to_be_faxed,
28
28
  :to_be_printed, :total_cost_estimate, :tracking_numbers, :tran_date, :tran_id, :tran_is_vsoe_bundle,
@@ -44,7 +44,7 @@ describe NetSuite::Records::Invoice do
44
44
  it 'has the right record_refs' do
45
45
  [
46
46
  :account, :bill_address_list, :custom_form, :department, :entity, :klass, :posting_period, :ship_address_list, :terms,
47
- :created_from, :location, :sales_rep, :ship_method, :tax_item, :partner, :lead_source, :promo_code
47
+ :created_from, :location, :sales_rep, :ship_method, :tax_item, :partner, :lead_source, :promo_code, :subsidiary
48
48
  ].each do |record_ref|
49
49
  expect(invoice).to have_record_ref(record_ref)
50
50
  end
@@ -26,6 +26,7 @@ describe NetSuite::Records::NonInventorySaleItem do
26
26
  # TODO there is a probably a more robust way to test this
27
27
  expect(item.custom_field_list.class).to eq(NetSuite::Records::CustomFieldList)
28
28
  expect(item.pricing_matrix.class).to eq(NetSuite::Records::PricingMatrix)
29
+ expect(item.subsidiary_list.class).to eq(NetSuite::Records::RecordRefList)
29
30
  end
30
31
 
31
32
  it 'has the right record_refs' do
@@ -33,7 +34,7 @@ describe NetSuite::Records::NonInventorySaleItem do
33
34
  :billing_schedule, :cost_category, :custom_form, :deferred_revenue_account, :department, :income_account, :issue_product,
34
35
  :item_options_list, :klass, :location, :parent, :pricing_group, :purchase_tax_code, :quantity_pricing_schedule,
35
36
  :rev_rec_schedule, :sale_unit, :sales_tax_code, :ship_package, :store_display_image, :store_display_thumbnail,
36
- :store_item_template, :subsidiary_list, :tax_schedule, :units_type
37
+ :store_item_template, :tax_schedule, :units_type
37
38
  ].each do |record_ref|
38
39
  expect(item).to have_record_ref(record_ref)
39
40
  end
@@ -22,6 +22,7 @@ describe NetSuite::Records::ServiceSaleItem do
22
22
  # TODO there is a probably a more robust way to test this
23
23
  expect(item.custom_field_list.class).to eq(NetSuite::Records::CustomFieldList)
24
24
  expect(item.pricing_matrix.class).to eq(NetSuite::Records::PricingMatrix)
25
+ expect(item.subsidiary_list.class).to eq(NetSuite::Records::RecordRefList)
25
26
  end
26
27
 
27
28
  it 'has the right record_refs' do
@@ -29,7 +30,7 @@ describe NetSuite::Records::ServiceSaleItem do
29
30
  :billing_schedule, :cost_category, :custom_form, :deferred_revenue_account, :department, :income_account,
30
31
  :issue_product, :item_options_list, :klass, :location, :parent, :pricing_group, :purchase_tax_code,
31
32
  :quantity_pricing_schedule, :rev_rec_schedule, :sale_unit, :sales_tax_code, :store_display_image,
32
- :store_display_thumbnail, :store_item_template, :subsidiary_list, :tax_schedule, :units_type
33
+ :store_display_thumbnail, :store_item_template, :tax_schedule, :units_type
33
34
  ].each do |record_ref|
34
35
  expect(item).to have_record_ref(record_ref)
35
36
  end
@@ -17,7 +17,7 @@ describe NetSuite::Records::Vendor do
17
17
  :send_email, :subscriptions_list, :tax_id_num, :title, :unbilled_orders, :unbilled_orders_primary,
18
18
  :url, :vat_reg_number
19
19
  ].each do |field|
20
- vendor.should have_field(field)
20
+ expect(vendor).to have_field(field)
21
21
  end
22
22
  end
23
23
 
@@ -27,7 +27,7 @@ describe NetSuite::Records::Vendor do
27
27
  :expense_account, :payables_account, :terms, :opening_balance_account, :currency, :work_calendar,
28
28
  :tax_item
29
29
  ].each do |record_ref|
30
- vendor.should have_record_ref(record_ref)
30
+ expect(vendor).to have_record_ref(record_ref)
31
31
  end
32
32
  end
33
33
 
@@ -40,14 +40,14 @@ describe NetSuite::Records::Vendor do
40
40
  }
41
41
  }
42
42
  vendor.custom_field_list = attributes
43
- vendor.custom_field_list.should be_kind_of(NetSuite::Records::CustomFieldList)
44
- vendor.custom_field_list.custom_fields.length.should eql(1)
43
+ expect(vendor.custom_field_list).to be_kind_of(NetSuite::Records::CustomFieldList)
44
+ expect(vendor.custom_field_list.custom_fields.length).to eql(1)
45
45
  end
46
46
 
47
47
  it 'can be set from a CustomFieldList object' do
48
48
  custom_field_list = NetSuite::Records::CustomFieldList.new
49
49
  vendor.custom_field_list = custom_field_list
50
- vendor.custom_field_list.should eql(custom_field_list)
50
+ expect(vendor.custom_field_list).to eql(custom_field_list)
51
51
  end
52
52
  end
53
53
 
@@ -56,10 +56,10 @@ describe NetSuite::Records::Vendor do
56
56
  let(:response) { NetSuite::Response.new(:success => true, :body => { :is_person => true }) }
57
57
 
58
58
  it 'returns a Vendor instance populated with the data from the response object' do
59
- NetSuite::Actions::Get.should_receive(:call).with([NetSuite::Records::Vendor, { :external_id => 1 }], {}).and_return(response)
59
+ expect(NetSuite::Actions::Get).to receive(:call).with([NetSuite::Records::Vendor, { :external_id => 1 }], {}).and_return(response)
60
60
  vendor = NetSuite::Records::Vendor.get(:external_id => 1)
61
- vendor.should be_kind_of(NetSuite::Records::Vendor)
62
- vendor.is_person.should be_truthy
61
+ expect(vendor).to be_kind_of(NetSuite::Records::Vendor)
62
+ expect(vendor.is_person).to be_truthy
63
63
  end
64
64
  end
65
65
 
@@ -67,10 +67,10 @@ describe NetSuite::Records::Vendor do
67
67
  let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
68
68
 
69
69
  it 'raises a RecordNotFound exception' do
70
- NetSuite::Actions::Get.should_receive(:call).with([NetSuite::Records::Vendor, { :external_id => 1 }], {}).and_return(response)
71
- lambda {
70
+ expect(NetSuite::Actions::Get).to receive(:call).with([NetSuite::Records::Vendor, { :external_id => 1 }], {}).and_return(response)
71
+ expect(lambda {
72
72
  NetSuite::Records::Vendor.get(:external_id => 1)
73
- }.should raise_error(NetSuite::RecordNotFound,
73
+ }).to raise_error(NetSuite::RecordNotFound,
74
74
  /NetSuite::Records::Vendor with OPTIONS=(.*) could not be found/)
75
75
  end
76
76
  end
@@ -83,10 +83,10 @@ describe NetSuite::Records::Vendor do
83
83
  let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
84
84
 
85
85
  it 'returns true' do
86
- NetSuite::Actions::Add.should_receive(:call).
86
+ expect(NetSuite::Actions::Add).to receive(:call).
87
87
  with([vendor], {}).
88
88
  and_return(response)
89
- vendor.add.should be_truthy
89
+ expect(vendor.add).to be_truthy
90
90
  end
91
91
  end
92
92
 
@@ -94,10 +94,10 @@ describe NetSuite::Records::Vendor do
94
94
  let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
95
95
 
96
96
  it 'returns false' do
97
- NetSuite::Actions::Add.should_receive(:call).
97
+ expect(NetSuite::Actions::Add).to receive(:call).
98
98
  with([vendor], {}).
99
99
  and_return(response)
100
- vendor.add.should be_falsey
100
+ expect(vendor.add).to be_falsey
101
101
  end
102
102
  end
103
103
  end
@@ -107,10 +107,10 @@ describe NetSuite::Records::Vendor do
107
107
  let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
108
108
 
109
109
  it 'returns true' do
110
- NetSuite::Actions::Delete.should_receive(:call).
110
+ expect(NetSuite::Actions::Delete).to receive(:call).
111
111
  with([vendor], {}).
112
112
  and_return(response)
113
- vendor.delete.should be_truthy
113
+ expect(vendor.delete).to be_truthy
114
114
  end
115
115
  end
116
116
 
@@ -118,10 +118,10 @@ describe NetSuite::Records::Vendor do
118
118
  let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
119
119
 
120
120
  it 'returns false' do
121
- NetSuite::Actions::Delete.should_receive(:call).
121
+ expect(NetSuite::Actions::Delete).to receive(:call).
122
122
  with([vendor], {}).
123
123
  and_return(response)
124
- vendor.delete.should be_falsey
124
+ expect(vendor.delete).to be_falsey
125
125
  end
126
126
  end
127
127
  end
@@ -130,7 +130,7 @@ describe NetSuite::Records::Vendor do
130
130
  let(:vendor) { NetSuite::Records::Vendor.new(:entity_id => 'TEST VENDOR', :is_person => true) }
131
131
 
132
132
  it 'returns a hash of attributes that can be used in a SOAP request' do
133
- vendor.to_record.should eql({
133
+ expect(vendor.to_record).to eql({
134
134
  'listRel:entityId' => 'TEST VENDOR',
135
135
  'listRel:isPerson' => true
136
136
  })
@@ -139,7 +139,7 @@ describe NetSuite::Records::Vendor do
139
139
 
140
140
  describe '#record_type' do
141
141
  it 'returns a string type for the record to be used in a SOAP request' do
142
- vendor.record_type.should eql('listRel:Vendor')
142
+ expect(vendor.record_type).to eql('listRel:Vendor')
143
143
  end
144
144
  end
145
145
  end
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.4.2
4
+ version: 0.4.3
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: 2015-06-01 00:00:00.000000000 Z
12
+ date: 2015-08-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: savon
@@ -117,6 +117,7 @@ files:
117
117
  - lib/netsuite/records/credit_memo_apply_list.rb
118
118
  - lib/netsuite/records/credit_memo_item.rb
119
119
  - lib/netsuite/records/credit_memo_item_list.rb
120
+ - lib/netsuite/records/currency.rb
120
121
  - lib/netsuite/records/custom_field.rb
121
122
  - lib/netsuite/records/custom_field_list.rb
122
123
  - lib/netsuite/records/custom_list.rb
@@ -184,6 +185,7 @@ files:
184
185
  - lib/netsuite/records/record_ref_list.rb
185
186
  - lib/netsuite/records/rev_rec_template.rb
186
187
  - lib/netsuite/records/role_list.rb
188
+ - lib/netsuite/records/roles.rb
187
189
  - lib/netsuite/records/sales_order.rb
188
190
  - lib/netsuite/records/sales_order_item.rb
189
191
  - lib/netsuite/records/sales_order_item_list.rb
@@ -253,12 +255,14 @@ files:
253
255
  - spec/netsuite/records/cash_refund_spec.rb
254
256
  - spec/netsuite/records/cash_sale_item_list_spec.rb
255
257
  - spec/netsuite/records/cash_sale_item_spec.rb
258
+ - spec/netsuite/records/cash_sale_spec.rb
256
259
  - spec/netsuite/records/classification_spec.rb
257
260
  - spec/netsuite/records/credit_memo_apply_list_spec.rb
258
261
  - spec/netsuite/records/credit_memo_apply_spec.rb
259
262
  - spec/netsuite/records/credit_memo_item_list_spec.rb
260
263
  - spec/netsuite/records/credit_memo_item_spec.rb
261
264
  - spec/netsuite/records/credit_memo_spec.rb
265
+ - spec/netsuite/records/currency_spec.rb
262
266
  - spec/netsuite/records/custom_field_list_spec.rb
263
267
  - spec/netsuite/records/custom_field_spec.rb
264
268
  - spec/netsuite/records/custom_list_spec.rb
@@ -420,12 +424,14 @@ test_files:
420
424
  - spec/netsuite/records/cash_refund_spec.rb
421
425
  - spec/netsuite/records/cash_sale_item_list_spec.rb
422
426
  - spec/netsuite/records/cash_sale_item_spec.rb
427
+ - spec/netsuite/records/cash_sale_spec.rb
423
428
  - spec/netsuite/records/classification_spec.rb
424
429
  - spec/netsuite/records/credit_memo_apply_list_spec.rb
425
430
  - spec/netsuite/records/credit_memo_apply_spec.rb
426
431
  - spec/netsuite/records/credit_memo_item_list_spec.rb
427
432
  - spec/netsuite/records/credit_memo_item_spec.rb
428
433
  - spec/netsuite/records/credit_memo_spec.rb
434
+ - spec/netsuite/records/currency_spec.rb
429
435
  - spec/netsuite/records/custom_field_list_spec.rb
430
436
  - spec/netsuite/records/custom_field_spec.rb
431
437
  - spec/netsuite/records/custom_list_spec.rb