netsuite 0.0.47 → 0.0.48

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -18,13 +18,32 @@ Or install it yourself as:
18
18
 
19
19
  $ gem install netsuite
20
20
 
21
+ This gem is built for ruby 1.9.x, checkout the [1-8-stable](https://github.com/RevolutionPrep/netsuite/tree/1-8-stable) branch for ruby 1.8.x support.
21
22
  ## Usage
22
23
 
24
+ ### Configuration
25
+ ```ruby
26
+ NetSuite.configure do
27
+ reset!
28
+
29
+ api_version '2012_1'
30
+
31
+ # specify full wsdl URL for sandbox / production switching
32
+ wsdl "https://webservices.sandbox.netsuite.com/wsdl/v#{api_version}_0/netsuite.wsdl"
33
+
34
+ # login information
35
+ email 'email@domain.com'
36
+ password 'password'
37
+ account '12345'
38
+ role 1111
39
+ end
40
+ ```
41
+
23
42
  ### Customer
24
43
 
25
44
  * Initializing a customer can be done using a hash of attributes.
26
45
 
27
- #### Get
46
+ ### Get
28
47
 
29
48
  * Retrieves the customer by internalId.
30
49
 
@@ -33,7 +52,6 @@ Or install it yourself as:
33
52
  customer.is_person # => true
34
53
  ```
35
54
 
36
- <a name='extending'>
37
55
  ## Additions
38
56
 
39
57
  * Please submit a pull request for any models or actions that you would like to be included. The API is quite large and so we will necessarily not cover all of it.
@@ -99,6 +117,18 @@ Or install it yourself as:
99
117
 
100
118
  1. Fork it
101
119
  2. Create your feature branch (`git checkout -b my-new-feature`)
102
- 3. Commit your changes (`git commit -am 'Added some feature'`)
103
- 4. Push to the branch (`git push origin my-new-feature`)
104
- 5. Create new Pull Request
120
+ 3. Write new test and ensure that `bundle exec rspec` doesn't fail
121
+ 4. Commit your changes (`git commit -am 'Added some feature'`)
122
+ 5. Push to the branch (`git push origin my-new-feature`)
123
+ 6. Create new Pull Request
124
+
125
+ ## Fields and RecordRefs
126
+
127
+ Note that some record attributes are specified as Fields while others are specified as RecordRefs. In some cases
128
+ attributes are actually RecordRefs in the schema, but we indicate them as Fields. Our experience has shown
129
+ this works as long as the attribute is only read from and is not written to. Writing a value for an attribute
130
+ that has been wrongly specified will result in an error. Be careful when initializing objects from other objects --
131
+ they may carry attributes that write to the new object.
132
+
133
+ As we build up this gem we will replace these inconsistent Fields with RecordRefs. Feel free to contribute new Record
134
+ definitions to help us along.
@@ -1,8 +1,10 @@
1
1
  require 'set'
2
2
 
3
+ require 'savon'
3
4
  require 'netsuite/version'
4
5
  require 'netsuite/errors'
5
6
  require 'netsuite/xml_logger'
7
+ require 'netsuite/core_ext/string/lower_camelcase'
6
8
 
7
9
  module NetSuite
8
10
  autoload :Configuration, 'netsuite/configuration'
@@ -37,6 +39,7 @@ module NetSuite
37
39
  end
38
40
 
39
41
  module Records
42
+ autoload :AssemblyItem, 'netsuite/records/assembly_item'
40
43
  autoload :Account, 'netsuite/records/account'
41
44
  autoload :AccountingPeriod, 'netsuite/records/accounting_period'
42
45
  autoload :BillAddress, 'netsuite/records/bill_address'
@@ -60,6 +63,7 @@ module NetSuite
60
63
  autoload :CustomerRefundApplyList, 'netsuite/records/customer_refund_apply_list'
61
64
  autoload :CustomerRefundDeposit, 'netsuite/records/customer_refund_deposit'
62
65
  autoload :CustomerRefundDepositList, 'netsuite/records/customer_refund_deposit_list'
66
+ autoload :Department, 'netsuite/records/department'
63
67
  autoload :Duration, 'netsuite/records/duration'
64
68
  autoload :InventoryItem, 'netsuite/records/inventory_item'
65
69
  autoload :Invoice, 'netsuite/records/invoice'
@@ -72,9 +76,11 @@ module NetSuite
72
76
  autoload :Location, 'netsuite/records/location'
73
77
  autoload :NonInventorySaleItem, 'netsuite/records/non_inventory_sale_item'
74
78
  autoload :PaymentMethod, 'netsuite/records/payment_method'
79
+ autoload :PricingMatrix, 'netsuite/records/pricing_matrix'
75
80
  autoload :RecordRef, 'netsuite/records/record_ref'
76
81
  autoload :RevRecTemplate, 'netsuite/records/rev_rec_template'
77
82
  autoload :ShipAddress, 'netsuite/records/ship_address'
83
+ autoload :Term, 'netsuite/records/term'
78
84
  end
79
85
 
80
86
  def self.configure(&block)
@@ -0,0 +1,9 @@
1
+ class String
2
+ def lower_camelcase
3
+ str = dup
4
+ str.gsub!(/\/(.?)/) { "::#{$1.upcase}" }
5
+ str.gsub!(/(?:_+|-+)([a-z])/) { $1.upcase }
6
+ str.gsub!(/(\A|\s)([A-Z])/) { $1 + $2.downcase }
7
+ str
8
+ end
9
+ end
@@ -0,0 +1,55 @@
1
+ module NetSuite
2
+ module Records
3
+ class AssemblyItem
4
+ include Support::Fields
5
+ include Support::RecordRefs
6
+ include Support::Records
7
+ include Support::Actions
8
+ include Namespaces::ListAcct
9
+
10
+ actions :get, :add, :delete
11
+
12
+ fields :auto_lead_time, :auto_preferred_stock_level, :auto_reorder_point, :available_to_partners, :average_cost,
13
+ :copy_description, :cost, :cost_estimate, :cost_estimate_type, :cost_estimate_units, :cost_units, :costing_method,
14
+ :costing_method_display, :country_of_manufacture, :created_date, :currency, :date_converted_to_inv,
15
+ :default_return_cost, :demand_modifier, :display_name, :dont_show_price, :enforce_min_qty_internally,
16
+ :exclude_from_sitemap, :featured_description, :fixed_lot_size, :handling_cost, :handling_cost_units, :include_children,
17
+ :is_donation_item, :is_drop_ship_item, :is_gco_compliant, :is_inactive, :is_online, :is_special_order_item, :is_taxable,
18
+ :item_id, :last_modified_date, :last_purchase_price, :lead_time, :manufacturer, :manufacturer_addr1, :manufacturer_city,
19
+ :manufacturer_state, :manufacturer_tariff, :manufacturer_tax_id, :manufacturer_zip, :match_bill_to_receipt,
20
+ :matrix_type, :max_donation_amount, :meta_tag_html, :minimum_quantity, :minimum_quantity_units, :mpn,
21
+ :mult_manufacture_addr, :nex_tag_category, :no_price_message, :offer_support, :on_hand_value_mli, :on_special,
22
+ :original_item_subtype, :original_item_type, :out_of_stock_behavior, :out_of_stock_message,
23
+ :overall_quantity_pricing_type, :page_title, :preference_criterion, :preferred_stock_level, :preferred_stock_level_days,
24
+ :preferred_stock_level_units, :prices_include_tax, :producer, :purchase_description, :quantity_available,
25
+ :quantity_available_units, :quantity_back_ordered, :quantity_committed, :quantity_committed_units, :quantity_on_hand,
26
+ :quantity_on_hand_units, :quantity_on_order, :quantity_on_order_units, :quantity_reorder_units, :rate,
27
+ :related_items_description, :reorder_multiple, :reorder_point, :reorder_point_units, :safety_stock_level,
28
+ :safety_stock_level_days, :safety_stock_level_units, :sales_description, :schedule_b_code, :schedule_b_number,
29
+ :schedule_b_quantity, :search_keywords, :seasonal_demand, :ship_individually, :shipping_cost, :shipping_cost_units,
30
+ :shopping_dot_com_category, :shopzilla_category_id, :show_default_donation_amount, :sitemap_priority,
31
+ :specials_description, :stock_description, :store_description, :store_detailed_description, :store_display_name,
32
+ :total_value, :track_landed_cost, :transfer_price, :upc_code, :url_component, :use_bins, :use_marginal_rates,
33
+ :vendor_name, :vsoe_deferral, :vsoe_delivered, :vsoe_permit_discount, :vsoe_price, :weight, :weight_unit, :weight_units
34
+
35
+ record_refs :alternate_demand_source_item, :asset_account, :bill_exch_rate_variance_acct, :bill_price_variance_acct,
36
+ :bill_qty_variance_acct, :billing_schedule, :cogs_account, :cost_category, :custom_form, :deferred_revenue_account,
37
+ :demand_source, :department, :expense_account, :gain_loss_account, :income_account, :issue_product, :klass, :location,
38
+ :parent, :preferred_location, :pricing_group, :purchase_price_variance_acct, :purchase_tax_code, :purchase_unit,
39
+ :quantity_pricing_schedule, :rev_rec_schedule, :sale_unit, :sales_tax_code, :ship_package, :soft_descriptor,
40
+ :stock_unit, :store_display_image, :store_display_thumbnail, :store_item_template, :supply_lot_sizing_method,
41
+ :supply_replenishment_method, :supply_type, :tax_schedule, :units_type, :vendor
42
+
43
+ field :custom_field_list, CustomFieldList
44
+
45
+ attr_reader :internal_id
46
+ attr_accessor :external_id
47
+
48
+ def initialize(attributes = {})
49
+ @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
50
+ @external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
51
+ initialize_from_attributes_hash(attributes)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -10,11 +10,24 @@ module NetSuite
10
10
  when Array
11
11
  attributes[:custom_field].each { |custom_field| custom_fields << CustomField.new(custom_field) }
12
12
  end
13
+
14
+ @custom_fields_assoc = Hash.new
15
+ custom_fields.each { |custom_field| @custom_fields_assoc[custom_field.internal_id.to_sym] = custom_field }
13
16
  end
14
17
 
15
18
  def custom_fields
16
19
  @custom_fields ||= []
17
20
  end
21
+
22
+ def method_missing(sym, *args, &block)
23
+ return @custom_fields_assoc[sym] if @custom_fields_assoc.include? sym
24
+ super(sym, *args, &block)
25
+ end
26
+
27
+ def respond_to?(sym, include_private = false)
28
+ return true if @custom_fields_assoc.include? sym
29
+ super
30
+ end
18
31
 
19
32
  def to_record
20
33
  custom_fields.map { |custom_field|
@@ -0,0 +1,25 @@
1
+ module NetSuite
2
+ module Records
3
+ class Department
4
+ include Support::Fields
5
+ include Support::RecordRefs
6
+ include Support::Actions
7
+
8
+ actions :get, :add, :delete
9
+
10
+ fields :name, :is_inactive
11
+
12
+ record_refs :parent
13
+
14
+ attr_reader :internal_id
15
+ attr_accessor :external_id
16
+
17
+ def initialize(attributes = {})
18
+ @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
19
+ @external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
20
+ initialize_from_attributes_hash(attributes)
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -40,6 +40,9 @@ module NetSuite
40
40
  :stock_unit, :store_display_image, :store_display_thumbnail, :store_item_template, :supply_lot_sizing_method,
41
41
  :supply_replenishment_method, :supply_type, :tax_schedule, :units_type, :vendor
42
42
 
43
+ field :pricing_matrix, PricingMatrix
44
+ field :custom_field_list, CustomFieldList
45
+
43
46
  attr_reader :internal_id
44
47
  attr_accessor :external_id
45
48
 
@@ -11,7 +11,7 @@ module NetSuite
11
11
 
12
12
  fields :alt_handling_cost, :alt_shipping_cost, :balance, :bill_address,
13
13
  :billing_schedule, :contrib_pct, :created_date, :created_from, :currency_name, :custom_field_list,
14
- :deferred_revenue, :department, :discount_amount, :discount_date, :discount_item, :discount_rate,
14
+ :deferred_revenue, :discount_amount, :discount_date, :discount_item, :discount_rate,
15
15
  :due_date, :email, :end_date, :est_gross_profit, :est_gross_profit_percent, :exchange_rate,
16
16
  :exclude_commission, :exp_cost_disc_amount, :exp_cost_disc_print, :exp_cost_disc_rate, :exp_cost_disc_tax_1_amt,
17
17
  :exp_cost_disc_taxable, :exp_cost_discount, :exp_cost_list, :exp_cost_tax_code, :exp_cost_tax_rate_1,
@@ -25,7 +25,7 @@ module NetSuite
25
25
  :sales_group, :sales_rep, :sales_team_list, :ship_address, :ship_date, :ship_group_list,
26
26
  :ship_method, :shipping_cost, :shipping_tax_1_rate, :shipping_tax_2_rate, :shipping_tax_code, :source, :start_date,
27
27
  :status, :subsidiary, :sync_partner_teams, :sync_sales_teams, :tax_2_total, :tax_item, :tax_rate,
28
- :tax_total, :terms, :time_disc_amount, :time_disc_print, :time_disc_rate, :time_disc_tax_1_amt, :time_disc_taxable,
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,
31
31
  :transaction_bill_address, :transaction_ship_address, :vat_reg_num, :vsoe_auto_calc
@@ -37,7 +37,7 @@ module NetSuite
37
37
 
38
38
  read_only_fields :sub_total, :discount_total, :total, :recognized_revenue, :amount_remaining, :amount_paid
39
39
 
40
- record_refs :account, :bill_address_list, :custom_form, :entity, :klass, :posting_period, :ship_address_list
40
+ record_refs :account, :bill_address_list, :custom_form, :department, :entity, :klass, :posting_period, :ship_address_list, :terms
41
41
 
42
42
  attr_reader :internal_id
43
43
  attr_accessor :external_id
@@ -10,7 +10,7 @@ module NetSuite
10
10
  actions :get, :add, :delete
11
11
 
12
12
  fields :available_to_partners, :cost_estimate, :cost_estimate_type, :cost_estimate_units, :country_of_manufacture,
13
- :created_date, :custom_field_list, :display_name, :dont_show_price, :enforce_min_qty_internally, :exclude_from_sitemap,
13
+ :created_date, :display_name, :dont_show_price, :enforce_min_qty_internally, :exclude_from_sitemap,
14
14
  :featured_description, :handling_cost, :handling_cost_units, :include_children, :is_donation_item, :is_fulfillable,
15
15
  :is_gco_compliant, :is_inactive, :is_online, :is_taxable, :item_id, :last_modified_date, :manufacturer,
16
16
  :manufacturer_addr1, :manufacturer_city, :manufacturer_state, :manufacturer_tariff, :manufacturer_tax_id,
@@ -30,6 +30,9 @@ module NetSuite
30
30
  :quantity_pricing_schedule, :rev_rec_schedule, :sale_unit, :sales_tax_code, :ship_package, :store_display_image,
31
31
  :store_display_thumbnail, :store_item_template, :subsidiary_list, :tax_schedule, :units_type
32
32
 
33
+ field :pricing_matrix, PricingMatrix
34
+ field :custom_field_list, CustomFieldList
35
+
33
36
  attr_reader :internal_id
34
37
  attr_accessor :external_id
35
38
 
@@ -0,0 +1,21 @@
1
+ module NetSuite
2
+ module Records
3
+ class PricingMatrix
4
+ include Namespaces::PlatformCore
5
+
6
+ def initialize(attributes = {})
7
+ attributes[:pricing].each do |pricing|
8
+ prices << RecordRef.new(pricing)
9
+ end if attributes[:pricing]
10
+ end
11
+
12
+ def prices
13
+ @prices ||= []
14
+ end
15
+
16
+ def to_record
17
+ { "#{record_namespace}:item" => prices.map(&:to_record) }
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,25 @@
1
+ module NetSuite
2
+ module Records
3
+ class Term
4
+ include Support::Fields
5
+ include Support::RecordRefs
6
+ include Support::Actions
7
+
8
+ actions :get, :add, :delete
9
+
10
+ fields :due_next_month_if_within_days, :name, :date_driven, :days_until_expiry, :days_until_next_due,
11
+ :day_discount_expires, :day_of_month_net_due, :discount_percent, :discount_percent_date_driven, :is_inactive,
12
+ :preferred
13
+
14
+ attr_reader :internal_id
15
+ attr_accessor :external_id
16
+
17
+ def initialize(attributes = {})
18
+ @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
19
+ @external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
20
+ initialize_from_attributes_hash(attributes)
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -6,11 +6,9 @@ module NetSuite
6
6
 
7
7
  def to_record
8
8
  attributes.reject { |k,v| self.class.read_only_fields.include?(k) }.inject({}) do |hash, (k,v)|
9
- kname = if k == :klass
10
- "#{record_namespace}:class"
11
- else
12
- "#{record_namespace}:#{k.to_s.lower_camelcase}"
13
- end
9
+ kname = "#{record_namespace}:"
10
+ kname += k == :klass ? 'class' : k.to_s.lower_camelcase
11
+
14
12
  to_attributes!(hash, kname, v)
15
13
  if Array === v
16
14
  v = v.map { |i| i.respond_to?(:to_record) ? i.to_record : i }
@@ -1,3 +1,3 @@
1
1
  module Netsuite
2
- VERSION = '0.0.47'
2
+ VERSION = '0.0.48'
3
3
  end
@@ -1,10 +1,9 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.unshift File.expand_path("../lib", __FILE__)
3
- require 'netsuite/version'
2
+ require File.expand_path('../lib/netsuite/version', __FILE__)
4
3
 
5
4
  Gem::Specification.new do |gem|
6
- gem.authors = ['Ryan Moran']
7
- gem.email = ['ryan.moran@gmail.com']
5
+ gem.authors = ['Ryan Moran', 'Michael Bianco']
6
+ gem.email = ['ryan.moran@gmail.com', 'info@cliffsidedev.com']
8
7
  gem.description = %q{NetSuite SuiteTalk API Wrapper}
9
8
  gem.summary = %q{NetSuite SuiteTalk API Wrapper}
10
9
  gem.homepage = 'https://github.com/RevolutionPrep/netsuite'
@@ -16,10 +15,10 @@ Gem::Specification.new do |gem|
16
15
  gem.require_paths = ['lib']
17
16
  gem.version = Netsuite::VERSION
18
17
 
19
- gem.add_dependency 'savon', '0.9.9'
20
- gem.add_dependency 'nokogiri'
18
+ gem.add_dependency 'savon', '~> 1.2.0'
19
+ gem.add_dependency 'nokogiri', '~> 1.5.0'
21
20
 
22
- gem.add_development_dependency 'rspec', '2.8.0'
23
- gem.add_development_dependency 'autotest-standalone', '4.5.9'
24
- gem.add_development_dependency 'savon_spec', '0.1.6'
21
+ gem.add_development_dependency 'rspec', '~> 2.10'
22
+ gem.add_development_dependency 'savon_spec', '~> 1.3.0'
23
+ gem.add_development_dependency 'autotest-standalone', '~> 4.5'
25
24
  end
@@ -14,7 +14,7 @@ describe NetSuite::Actions::Add do
14
14
  'listRel:companyName' => 'Shutter Fly, Inc.'
15
15
  },
16
16
  :attributes! => {
17
- 'platformMsgs:baseRef' => {
17
+ 'platformMsgs:record' => {
18
18
  'xsi:type' => 'listRel:Customer'
19
19
  }
20
20
  }
@@ -40,12 +40,11 @@ describe NetSuite::Actions::Add do
40
40
  before do
41
41
  savon.expects(:add).with({
42
42
  'platformMsgs:record' => {
43
- 'listRel:source' => 'Google',
44
- 'listRel:total' => 100.0
43
+ 'tranSales:source' => 'Google'
45
44
  },
46
45
  :attributes! => {
47
- 'platformMsgs:baseRef' => {
48
- 'xsi:type' => 'listRel:Invoice'
46
+ 'platformMsgs:record' => {
47
+ 'xsi:type' => 'tranSales:Invoice'
49
48
  }
50
49
  }
51
50
  }).returns(:add_invoice)
@@ -8,8 +8,8 @@ describe NetSuite::Actions::Get do
8
8
  'platformMsgs:baseRef' => {},
9
9
  :attributes! => {
10
10
  'platformMsgs:baseRef' => {
11
- :externalId => 1,
12
- :type => 'customer',
11
+ 'externalId' => 1,
12
+ 'type' => 'customer',
13
13
  'xsi:type' => 'platformCore:RecordRef'
14
14
  }
15
15
  }
@@ -32,8 +32,8 @@ describe NetSuite::Actions::Get do
32
32
  'platformMsgs:baseRef' => {},
33
33
  :attributes! => {
34
34
  'platformMsgs:baseRef' => {
35
- :externalId => 10,
36
- :type => 'invoice',
35
+ 'externalId' => 1,
36
+ 'type' => 'invoice',
37
37
  'xsi:type' => 'platformCore:RecordRef'
38
38
  }
39
39
  }
@@ -6,13 +6,11 @@ describe NetSuite::Actions::Initialize do
6
6
  before do
7
7
  savon.expects(:initialize).with({
8
8
  'platformMsgs:initializeRecord' => {
9
- 'platformCore:type' => 'invoice',
10
- 'platformCore:reference' => {
11
- 'platformCore:name' => 'Ryan Moran'
12
- },
9
+ 'platformCore:type' => 'customer',
10
+ 'platformCore:reference' => {},
13
11
  :attributes! => {
14
12
  'platformCore:reference' => {
15
- 'internalId' => '1',
13
+ 'internalId' => 1,
16
14
  :type => 'customer'
17
15
  }
18
16
  }
@@ -13,7 +13,7 @@ describe NetSuite::Actions::Update do
13
13
  'listRel:companyName' => 'Shutter Fly, Inc.'
14
14
  },
15
15
  :attributes! => {
16
- 'platformMsgs:baseRef' => {
16
+ 'platformMsgs:record' => {
17
17
  'xsi:type' => 'listRel:Customer'
18
18
  }
19
19
  }
@@ -38,12 +38,11 @@ describe NetSuite::Actions::Update do
38
38
  before do
39
39
  savon.expects(:update).with({
40
40
  'platformMsgs:record' => {
41
- 'listRel:source' => 'Google',
42
- 'listRel:total' => 100.0
41
+ 'tranSales:source' => 'Google',
43
42
  },
44
43
  :attributes! => {
45
- 'platformMsgs:baseRef' => {
46
- 'xsi:type' => 'listRel:Invoice'
44
+ 'platformMsgs:record' => {
45
+ 'xsi:type' => 'tranSales:Invoice'
47
46
  }
48
47
  }
49
48
  }).returns(:update_invoice)
@@ -28,12 +28,14 @@ describe NetSuite::Records::CustomRecord do
28
28
  it 'can be set from attributes' do
29
29
  attributes = {
30
30
  :custom_field => {
31
- :amount => 10
31
+ :amount => 10,
32
+ :internal_id => 'custfield_amount'
32
33
  }
33
34
  }
34
35
  record.custom_field_list = attributes
35
36
  record.custom_field_list.should be_kind_of(NetSuite::Records::CustomFieldList)
36
37
  record.custom_field_list.custom_fields.length.should eql(1)
38
+ record.custom_field_list.custfield_amount.attributes[:amount].should eq(10)
37
39
  end
38
40
 
39
41
  it 'can be set from a CustomFieldList object' do
@@ -28,7 +28,8 @@ describe NetSuite::Records::CustomerPayment do
28
28
  it 'can be set from attributes' do
29
29
  attributes = {
30
30
  :custom_field => {
31
- :amount => 10
31
+ :amount => 10,
32
+ :internal_id => 'custfield_amount'
32
33
  }
33
34
  }
34
35
  payment.custom_field_list = attributes
@@ -28,7 +28,8 @@ describe NetSuite::Records::CustomerRefund do
28
28
  it 'can be set from attributes' do
29
29
  attributes = {
30
30
  :custom_field => {
31
- :amount => 10
31
+ :amount => 10,
32
+ :internal_id => 'custfield_amount'
32
33
  }
33
34
  }
34
35
  refund.custom_field_list = attributes
@@ -67,7 +67,8 @@ describe NetSuite::Records::Customer do
67
67
  it 'can be set from attributes' do
68
68
  attributes = {
69
69
  :custom_field => {
70
- :value => 10
70
+ :value => 10,
71
+ :internal_id => 'custfield_something'
71
72
  }
72
73
  }
73
74
  customer.custom_field_list = attributes
@@ -0,0 +1,103 @@
1
+ require 'spec_helper'
2
+
3
+ describe NetSuite::Records::Department do
4
+ let(:department) { NetSuite::Records::Department.new }
5
+
6
+ it 'has all the right fields' do
7
+ [
8
+ :name, :is_inactive
9
+ ].each do |field|
10
+ department.should have_field(field)
11
+ end
12
+ end
13
+
14
+ it 'has all the right record refs' do
15
+ [
16
+ :parent
17
+ ].each do |record_ref|
18
+ department.should have_record_ref(record_ref)
19
+ end
20
+ end
21
+
22
+ describe '.get' do
23
+ context 'when the response is successful' do
24
+ let(:response) { NetSuite::Response.new(:success => true, :body => { :name => 'Department 1' }) }
25
+
26
+ it 'returns a Department instance populated with the data from the response object' do
27
+ NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::Department, :external_id => 1).and_return(response)
28
+ department = NetSuite::Records::Department.get(:external_id => 1)
29
+ department.should be_kind_of(NetSuite::Records::Department)
30
+ department.name.should eql('Department 1')
31
+ end
32
+ end
33
+
34
+ context 'when the response is unsuccessful' do
35
+ let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
36
+
37
+ it 'raises a RecordNotFound exception' do
38
+ NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::Department, :external_id => 1).and_return(response)
39
+ lambda {
40
+ NetSuite::Records::Department.get(:external_id => 1)
41
+ }.should raise_error(NetSuite::RecordNotFound,
42
+ /NetSuite::Records::Department with OPTIONS=(.*) could not be found/)
43
+ end
44
+ end
45
+ end
46
+
47
+ describe '#add' do
48
+ let(:test_data) { { :acct_name => 'Test Department', :description => 'An example Department' } }
49
+
50
+ context 'when the response is successful' do
51
+ let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
52
+
53
+ it 'returns true' do
54
+ department = NetSuite::Records::Department.new(test_data)
55
+ NetSuite::Actions::Add.should_receive(:call).
56
+ with(department).
57
+ and_return(response)
58
+ department.add.should be_true
59
+ end
60
+ end
61
+
62
+ context 'when the response is unsuccessful' do
63
+ let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
64
+
65
+ it 'returns false' do
66
+ department = NetSuite::Records::Department.new(test_data)
67
+ NetSuite::Actions::Add.should_receive(:call).
68
+ with(department).
69
+ and_return(response)
70
+ department.add.should be_false
71
+ end
72
+ end
73
+ end
74
+
75
+ describe '#delete' do
76
+ let(:test_data) { { :internal_id => '1' } }
77
+
78
+ context 'when the response is successful' do
79
+ let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
80
+
81
+ it 'returns true' do
82
+ department = NetSuite::Records::Department.new(test_data)
83
+ NetSuite::Actions::Delete.should_receive(:call).
84
+ with(department).
85
+ and_return(response)
86
+ department.delete.should be_true
87
+ end
88
+ end
89
+
90
+ context 'when the response is unsuccessful' do
91
+ let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
92
+
93
+ it 'returns false' do
94
+ department = NetSuite::Records::Department.new(test_data)
95
+ NetSuite::Actions::Delete.should_receive(:call).
96
+ with(department).
97
+ and_return(response)
98
+ department.delete.should be_false
99
+ end
100
+ end
101
+ end
102
+
103
+ end
@@ -37,12 +37,14 @@ describe NetSuite::Records::InvoiceItem do
37
37
  it 'can be set from attributes' do
38
38
  attributes = {
39
39
  :custom_field => {
40
- :value => 10
40
+ :value => 10,
41
+ :internal_id => 'custfield_value'
41
42
  }
42
43
  }
43
44
  item.custom_field_list = attributes
44
45
  item.custom_field_list.should be_kind_of(NetSuite::Records::CustomFieldList)
45
46
  item.custom_field_list.custom_fields.length.should eql(1)
47
+ item.custom_field_list.custfield_value.attributes[:value].should eq(10)
46
48
  end
47
49
 
48
50
  it 'can be set from a CustomFieldList object' do
@@ -9,7 +9,7 @@ describe NetSuite::Records::Invoice do
9
9
  [
10
10
  :alt_handling_cost, :alt_shipping_cost, :amount_paid, :amount_remaining, :balance, :bill_address,
11
11
  :billing_schedule, :contrib_pct, :created_date, :created_from, :currency_name,
12
- :deferred_revenue, :department, :discount_amount, :discount_date, :discount_item, :discount_rate,
12
+ :deferred_revenue, :discount_amount, :discount_date, :discount_item, :discount_rate,
13
13
  :due_date, :email, :end_date, :est_gross_profit, :est_gross_profit_percent, :exchange_rate,
14
14
  :exclude_commission, :exp_cost_disc_amount, :exp_cost_disc_print, :exp_cost_disc_rate, :exp_cost_disc_tax_1_amt,
15
15
  :exp_cost_disc_taxable, :exp_cost_discount, :exp_cost_list, :exp_cost_tax_code, :exp_cost_tax_rate_1,
@@ -23,7 +23,7 @@ describe NetSuite::Records::Invoice do
23
23
  :sales_group, :sales_rep, :sales_team_list, :ship_address, :ship_date, :ship_group_list,
24
24
  :ship_method, :shipping_cost, :shipping_tax_1_rate, :shipping_tax_2_rate, :shipping_tax_code, :source, :start_date,
25
25
  :status, :subsidiary, :sync_partner_teams, :sync_sales_teams, :tax_2_total, :tax_item, :tax_rate,
26
- :tax_total, :terms, :time_disc_amount, :time_disc_print, :time_disc_rate, :time_disc_tax_1_amt, :time_disc_taxable,
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,
29
29
  :vat_reg_num, :vsoe_auto_calc
@@ -42,7 +42,7 @@ describe NetSuite::Records::Invoice do
42
42
 
43
43
  it 'has the right record_refs' do
44
44
  [
45
- :account, :bill_address_list, :custom_form, :entity, :klass, :posting_period, :ship_address_list
45
+ :account, :bill_address_list, :custom_form, :department, :entity, :klass, :posting_period, :ship_address_list, :terms
46
46
  ].each do |record_ref|
47
47
  invoice.should have_record_ref(record_ref)
48
48
  end
@@ -52,7 +52,8 @@ describe NetSuite::Records::Invoice do
52
52
  it 'can be set from attributes' do
53
53
  attributes = {
54
54
  :custom_field => {
55
- :amount => 10
55
+ :amount => 10,
56
+ :internal_id => 'custfield_amount'
56
57
  }
57
58
  }
58
59
  invoice.custom_field_list = attributes
@@ -23,7 +23,8 @@ describe NetSuite::Records::JournalEntryLine do
23
23
  it 'can be set from attributes' do
24
24
  attributes = {
25
25
  :custom_field => {
26
- :amount => 10
26
+ :amount => 10,
27
+ :internal_id => 'custfield_amount'
27
28
  }
28
29
  }
29
30
  line.custom_field_list = attributes
@@ -25,12 +25,14 @@ describe NetSuite::Records::JournalEntry do
25
25
  it 'can be set from attributes' do
26
26
  attributes = {
27
27
  :custom_field => {
28
- :amount => 10
28
+ :amount => 10,
29
+ :internal_id => 'custfield_amount'
29
30
  }
30
31
  }
31
32
  entry.custom_field_list = attributes
32
33
  entry.custom_field_list.should be_kind_of(NetSuite::Records::CustomFieldList)
33
34
  entry.custom_field_list.custom_fields.length.should eql(1)
35
+ entry.custom_field_list.custfield_amount.attributes[:amount].should eq(10)
34
36
  end
35
37
 
36
38
  it 'can be set from a CustomFieldList object' do
@@ -6,14 +6,14 @@ describe NetSuite::Records::NonInventorySaleItem do
6
6
  it 'has the right fields' do
7
7
  [
8
8
  :available_to_partners, :cost_estimate, :cost_estimate_type, :cost_estimate_units, :country_of_manufacture, :created_date,
9
- :custom_field_list, :display_name, :dont_show_price, :enforce_min_qty_internally, :exclude_from_sitemap,
9
+ :display_name, :dont_show_price, :enforce_min_qty_internally, :exclude_from_sitemap,
10
10
  :featured_description, :handling_cost, :handling_cost_units, :include_children, :is_donation_item, :is_fulfillable,
11
11
  :is_gco_compliant, :is_inactive, :is_online, :is_taxable, :item_id, :last_modified_date, :manufacturer, :manufacturer_addr1,
12
12
  :manufacturer_city, :manufacturer_state, :manufacturer_tariff, :manufacturer_tax_id, :manufacturer_zip, :matrix_option_list,
13
13
  :matrix_type, :max_donation_amount, :meta_tag_html, :minimum_quantity, :minimum_quantity_units, :mpn,
14
14
  :mult_manufacture_addr, :nex_tag_category, :no_price_message, :offer_support, :on_special, :out_of_stock_behavior,
15
15
  :out_of_stock_message, :overall_quantity_pricing_type, :page_title, :preference_criterion, :presentation_item_list,
16
- :prices_include_tax, :pricing_matrix, :producer, :product_feed_list, :rate, :related_items_description, :sales_description,
16
+ :prices_include_tax, :producer, :product_feed_list, :rate, :related_items_description, :sales_description,
17
17
  :schedule_b_code, :schedule_b_number, :schedule_b_quantity, :search_keywords, :ship_individually, :shipping_cost,
18
18
  :shipping_cost_units, :shopping_dot_com_category, :shopzilla_category_id, :show_default_donation_amount,
19
19
  :site_category_list, :sitemap_priority, :soft_descriptor, :specials_description, :stock_description, :store_description,
@@ -22,6 +22,9 @@ describe NetSuite::Records::NonInventorySaleItem do
22
22
  ].each do |field|
23
23
  item.should have_field(field)
24
24
  end
25
+
26
+ item.pricing_matrix.class.should == NetSuite::Records::PricingMatrix
27
+ item.custom_field_list.class.should == NetSuite::Records::CustomFieldList
25
28
  end
26
29
 
27
30
  it 'has the right record_refs' do
@@ -0,0 +1,96 @@
1
+ require 'spec_helper'
2
+
3
+ describe NetSuite::Records::Term do
4
+ let(:term) { NetSuite::Records::Term.new }
5
+
6
+ it 'has all the right fields' do
7
+ [
8
+ :name, :date_driven, :days_until_next_due, :discount_percent, :days_until_expiry, :day_of_month_net_due,
9
+ :due_next_month_if_within_days, :discount_percent_date_driven, :day_discount_expires, :preferred, :is_inactive
10
+ ].each do |field|
11
+ term.should have_field(field)
12
+ end
13
+ end
14
+
15
+ describe '.get' do
16
+ context 'when the response is successful' do
17
+ let(:response) { NetSuite::Response.new(:success => true, :body => { :name => 'Term 1' }) }
18
+
19
+ it 'returns a Term instance populated with the data from the response object' do
20
+ NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::Term, :external_id => 1).and_return(response)
21
+ term = NetSuite::Records::Term.get(:external_id => 1)
22
+ term.should be_kind_of(NetSuite::Records::Term)
23
+ term.name.should eql('Term 1')
24
+ end
25
+ end
26
+
27
+ context 'when the response is unsuccessful' do
28
+ let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
29
+
30
+ it 'raises a RecordNotFound exception' do
31
+ NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::Term, :external_id => 1).and_return(response)
32
+ lambda {
33
+ NetSuite::Records::Term.get(:external_id => 1)
34
+ }.should raise_error(NetSuite::RecordNotFound,
35
+ /NetSuite::Records::Term with OPTIONS=(.*) could not be found/)
36
+ end
37
+ end
38
+ end
39
+
40
+ describe '#add' do
41
+ let(:test_data) { { :name => 'Test Term' } }
42
+
43
+ context 'when the response is successful' do
44
+ let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
45
+
46
+ it 'returns true' do
47
+ term = NetSuite::Records::Term.new(test_data)
48
+ NetSuite::Actions::Add.should_receive(:call).
49
+ with(term).
50
+ and_return(response)
51
+ term.add.should be_true
52
+ end
53
+ end
54
+
55
+ context 'when the response is unsuccessful' do
56
+ let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
57
+
58
+ it 'returns false' do
59
+ term = NetSuite::Records::Term.new(test_data)
60
+ NetSuite::Actions::Add.should_receive(:call).
61
+ with(term).
62
+ and_return(response)
63
+ term.add.should be_false
64
+ end
65
+ end
66
+ end
67
+
68
+ describe '#delete' do
69
+ let(:test_data) { { :internal_id => '1' } }
70
+
71
+ context 'when the response is successful' do
72
+ let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
73
+
74
+ it 'returns true' do
75
+ term = NetSuite::Records::Term.new(test_data)
76
+ NetSuite::Actions::Delete.should_receive(:call).
77
+ with(term).
78
+ and_return(response)
79
+ term.delete.should be_true
80
+ end
81
+ end
82
+
83
+ context 'when the response is unsuccessful' do
84
+ let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
85
+
86
+ it 'returns false' do
87
+ term = NetSuite::Records::Term.new(test_data)
88
+ NetSuite::Actions::Delete.should_receive(:call).
89
+ with(term).
90
+ and_return(response)
91
+ term.delete.should be_false
92
+ end
93
+ end
94
+ end
95
+
96
+ end
@@ -1,8 +1,8 @@
1
- $LOAD_PATH.unshift(File.dirname(__FILE__))
2
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
- require 'netsuite'
1
+ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..') ))
2
+
4
3
  require 'rspec'
5
4
  require 'rspec/autorun'
5
+ require 'netsuite'
6
6
  require 'savon_spec'
7
7
 
8
8
  # Requires supporting ruby files with custom matchers and macros, etc,
metadata CHANGED
@@ -1,115 +1,108 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: netsuite
3
- version: !ruby/object:Gem::Version
4
- hash: 65
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.48
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 47
10
- version: 0.0.47
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Ryan Moran
9
+ - Michael Bianco
14
10
  autorequire:
15
11
  bindir: bin
16
12
  cert_chain: []
17
-
18
- date: 2012-03-16 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
13
+ date: 2012-10-05 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
22
16
  name: savon
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
25
18
  none: false
26
- requirements:
27
- - - "="
28
- - !ruby/object:Gem::Version
29
- hash: 41
30
- segments:
31
- - 0
32
- - 9
33
- - 9
34
- version: 0.9.9
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 1.2.0
35
23
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: nokogiri
39
24
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: 1.2.0
31
+ - !ruby/object:Gem::Dependency
32
+ name: nokogiri
33
+ requirement: !ruby/object:Gem::Requirement
41
34
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
- version: "0"
35
+ requirements:
36
+ - - ~>
37
+ - !ruby/object:Gem::Version
38
+ version: 1.5.0
49
39
  type: :runtime
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: rspec
53
40
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 1.5.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: !ruby/object:Gem::Requirement
55
50
  none: false
56
- requirements:
57
- - - "="
58
- - !ruby/object:Gem::Version
59
- hash: 47
60
- segments:
61
- - 2
62
- - 8
63
- - 0
64
- version: 2.8.0
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '2.10'
65
55
  type: :development
66
- version_requirements: *id003
67
- - !ruby/object:Gem::Dependency
68
- name: autotest-standalone
69
56
  prerelease: false
70
- requirement: &id004 !ruby/object:Gem::Requirement
57
+ version_requirements: !ruby/object:Gem::Requirement
71
58
  none: false
72
- requirements:
73
- - - "="
74
- - !ruby/object:Gem::Version
75
- hash: 57
76
- segments:
77
- - 4
78
- - 5
79
- - 9
80
- version: 4.5.9
81
- type: :development
82
- version_requirements: *id004
83
- - !ruby/object:Gem::Dependency
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '2.10'
63
+ - !ruby/object:Gem::Dependency
84
64
  name: savon_spec
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: 1.3.0
71
+ type: :development
85
72
  prerelease: false
86
- requirement: &id005 !ruby/object:Gem::Requirement
73
+ version_requirements: !ruby/object:Gem::Requirement
87
74
  none: false
88
- requirements:
89
- - - "="
90
- - !ruby/object:Gem::Version
91
- hash: 23
92
- segments:
93
- - 0
94
- - 1
95
- - 6
96
- version: 0.1.6
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: 1.3.0
79
+ - !ruby/object:Gem::Dependency
80
+ name: autotest-standalone
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ~>
85
+ - !ruby/object:Gem::Version
86
+ version: '4.5'
97
87
  type: :development
98
- version_requirements: *id005
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: '4.5'
99
95
  description: NetSuite SuiteTalk API Wrapper
100
- email:
96
+ email:
101
97
  - ryan.moran@gmail.com
98
+ - info@cliffsidedev.com
102
99
  executables: []
103
-
104
100
  extensions: []
105
-
106
101
  extra_rdoc_files: []
107
-
108
- files:
102
+ files:
109
103
  - .autotest
110
104
  - .gitignore
111
105
  - .rspec
112
- - .rvmrc
113
106
  - Gemfile
114
107
  - LICENSE
115
108
  - README.md
@@ -121,6 +114,7 @@ files:
121
114
  - lib/netsuite/actions/initialize.rb
122
115
  - lib/netsuite/actions/update.rb
123
116
  - lib/netsuite/configuration.rb
117
+ - lib/netsuite/core_ext/string/lower_camelcase.rb
124
118
  - lib/netsuite/errors.rb
125
119
  - lib/netsuite/namespaces/list_acct.rb
126
120
  - lib/netsuite/namespaces/list_rel.rb
@@ -132,6 +126,7 @@ files:
132
126
  - lib/netsuite/namespaces/tran_sales.rb
133
127
  - lib/netsuite/records/account.rb
134
128
  - lib/netsuite/records/accounting_period.rb
129
+ - lib/netsuite/records/assembly_item.rb
135
130
  - lib/netsuite/records/bill_address.rb
136
131
  - lib/netsuite/records/classification.rb
137
132
  - lib/netsuite/records/credit_memo.rb
@@ -153,6 +148,7 @@ files:
153
148
  - lib/netsuite/records/customer_refund_apply_list.rb
154
149
  - lib/netsuite/records/customer_refund_deposit.rb
155
150
  - lib/netsuite/records/customer_refund_deposit_list.rb
151
+ - lib/netsuite/records/department.rb
156
152
  - lib/netsuite/records/duration.rb
157
153
  - lib/netsuite/records/inventory_item.rb
158
154
  - lib/netsuite/records/invoice.rb
@@ -165,9 +161,11 @@ files:
165
161
  - lib/netsuite/records/location.rb
166
162
  - lib/netsuite/records/non_inventory_sale_item.rb
167
163
  - lib/netsuite/records/payment_method.rb
164
+ - lib/netsuite/records/pricing_matrix.rb
168
165
  - lib/netsuite/records/record_ref.rb
169
166
  - lib/netsuite/records/rev_rec_template.rb
170
167
  - lib/netsuite/records/ship_address.rb
168
+ - lib/netsuite/records/term.rb
171
169
  - lib/netsuite/response.rb
172
170
  - lib/netsuite/support/actions.rb
173
171
  - lib/netsuite/support/attributes.rb
@@ -207,6 +205,7 @@ files:
207
205
  - spec/netsuite/records/customer_refund_deposit_spec.rb
208
206
  - spec/netsuite/records/customer_refund_spec.rb
209
207
  - spec/netsuite/records/customer_spec.rb
208
+ - spec/netsuite/records/department_spec.rb
210
209
  - spec/netsuite/records/duration_spec.rb
211
210
  - spec/netsuite/records/inventory_item_spec.rb
212
211
  - spec/netsuite/records/invoice_item_list_spec.rb
@@ -222,6 +221,7 @@ files:
222
221
  - spec/netsuite/records/record_ref_spec.rb
223
222
  - spec/netsuite/records/rev_rec_template_spec.rb
224
223
  - spec/netsuite/records/ship_address_spec.rb
224
+ - spec/netsuite/records/term_spec.rb
225
225
  - spec/netsuite/response_spec.rb
226
226
  - spec/netsuite/support/actions_spec.rb
227
227
  - spec/netsuite/support/attributes_spec.rb
@@ -246,41 +246,31 @@ files:
246
246
  - spec/support/savon.rb
247
247
  - wsdl/2011_2.wsdl
248
248
  - wsdl/2012_1.wsdl
249
- has_rdoc: true
250
249
  homepage: https://github.com/RevolutionPrep/netsuite
251
250
  licenses: []
252
-
253
251
  post_install_message:
254
252
  rdoc_options: []
255
-
256
- require_paths:
253
+ require_paths:
257
254
  - lib
258
- required_ruby_version: !ruby/object:Gem::Requirement
255
+ required_ruby_version: !ruby/object:Gem::Requirement
259
256
  none: false
260
- requirements:
261
- - - ">="
262
- - !ruby/object:Gem::Version
263
- hash: 3
264
- segments:
265
- - 0
266
- version: "0"
267
- required_rubygems_version: !ruby/object:Gem::Requirement
257
+ requirements:
258
+ - - ! '>='
259
+ - !ruby/object:Gem::Version
260
+ version: '0'
261
+ required_rubygems_version: !ruby/object:Gem::Requirement
268
262
  none: false
269
- requirements:
270
- - - ">="
271
- - !ruby/object:Gem::Version
272
- hash: 3
273
- segments:
274
- - 0
275
- version: "0"
263
+ requirements:
264
+ - - ! '>='
265
+ - !ruby/object:Gem::Version
266
+ version: '0'
276
267
  requirements: []
277
-
278
268
  rubyforge_project:
279
- rubygems_version: 1.4.2
269
+ rubygems_version: 1.8.24
280
270
  signing_key:
281
271
  specification_version: 3
282
272
  summary: NetSuite SuiteTalk API Wrapper
283
- test_files:
273
+ test_files:
284
274
  - spec/netsuite/actions/add_spec.rb
285
275
  - spec/netsuite/actions/delete_spec.rb
286
276
  - spec/netsuite/actions/get_spec.rb
@@ -310,6 +300,7 @@ test_files:
310
300
  - spec/netsuite/records/customer_refund_deposit_spec.rb
311
301
  - spec/netsuite/records/customer_refund_spec.rb
312
302
  - spec/netsuite/records/customer_spec.rb
303
+ - spec/netsuite/records/department_spec.rb
313
304
  - spec/netsuite/records/duration_spec.rb
314
305
  - spec/netsuite/records/inventory_item_spec.rb
315
306
  - spec/netsuite/records/invoice_item_list_spec.rb
@@ -325,6 +316,7 @@ test_files:
325
316
  - spec/netsuite/records/record_ref_spec.rb
326
317
  - spec/netsuite/records/rev_rec_template_spec.rb
327
318
  - spec/netsuite/records/ship_address_spec.rb
319
+ - spec/netsuite/records/term_spec.rb
328
320
  - spec/netsuite/response_spec.rb
329
321
  - spec/netsuite/support/actions_spec.rb
330
322
  - spec/netsuite/support/attributes_spec.rb
data/.rvmrc DELETED
@@ -1 +0,0 @@
1
- rvm use ree-1.8.7-2010.02@netsuite --create