netsuite 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
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