netsuite 0.6.6 → 0.6.7

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.
@@ -112,6 +112,7 @@ module NetSuite
112
112
  autoload :CustomerPartner, 'netsuite/records/customer_partner'
113
113
  autoload :ContactList, 'netsuite/records/contact_list'
114
114
  autoload :Contact, 'netsuite/records/contact'
115
+ autoload :ContactRole, 'netsuite/records/contact_role'
115
116
  autoload :ContactAccessRoles, 'netsuite/records/contact_access_roles'
116
117
  autoload :ContactAccessRolesList, 'netsuite/records/contact_access_roles_list'
117
118
  autoload :Currency, 'netsuite/records/currency'
@@ -195,7 +196,6 @@ module NetSuite
195
196
  autoload :Task, 'netsuite/records/task'
196
197
  autoload :Term, 'netsuite/records/term'
197
198
  autoload :TimeBill, 'netsuite/records/time_bill'
198
- autoload :Transaction, 'netsuite/records/transaction'
199
199
  autoload :TransferOrder, 'netsuite/records/transfer_order'
200
200
  autoload :TransferOrderItemList, 'netsuite/records/transfer_order_item_list'
201
201
  autoload :TransferOrderItem, 'netsuite/records/transfer_order_item'
@@ -0,0 +1,23 @@
1
+ module NetSuite
2
+ module Records
3
+ class ContactRole
4
+ include Support::Fields
5
+ include Support::RecordRefs
6
+ include Support::Records
7
+ include Support::Actions
8
+ include Namespaces::ListAcct
9
+
10
+ actions :get, :get_list, :initialize, :search
11
+
12
+ fields :name, :is_inactive, :description, :created_date
13
+
14
+ attr_reader :internal_id
15
+
16
+ def initialize(attributes = {})
17
+ @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
18
+ initialize_from_attributes_hash(attributes)
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -1,7 +1,71 @@
1
1
  module NetSuite
2
2
  module Records
3
- class KitItem < InventoryItem
4
-
3
+ class KitItem
4
+ include Support::Fields
5
+ include Support::RecordRefs
6
+ include Support::Records
7
+ include Support::Actions
8
+ include Namespaces::ListAcct
9
+
10
+ actions :get, :get_list, :add, :delete, :search, :update, :upsert
11
+
12
+ fields :available_to_partners, :cost_estimate, :created_date, :defer_rev_rec, :description, :display_name,
13
+ :dont_show_price, :enforce_min_qty_internally, :exclude_from_sitemap, :featured_description, :handling_cost,
14
+ :hazmat_hazard_class, :hazmat_id, :hazmat_item_units, :hazmat_item_units_qty, :hazmat_shipping_name, :include_children,
15
+ :is_donation_item, :is_fulfillable, :is_gco_compliant, :is_hazmat_item, :is_inactive, :is_online, :is_taxable, :item_id,
16
+ :last_modified_date, :manufacturer, :manufactureraddr1, :manufacturer_city, :manufacturer_state, :manufacturer_tariff,
17
+ :manufacturer_tax_id, :manufacturer_zip, :max_donation_amount, :meta_tag_html, :minimum_quantity, :mpn,
18
+ :mult_manufacture_addr, :nex_tag_category, :no_price_message, :offer_support, :on_special, :out_of_stock_message,
19
+ :page_title, :prices_include_tax, :print_items, :producer, :rate, :related_items_description, :schedule_b_number,
20
+ :schedule_b_quantity, :search_keywords, :ship_individually, :shipping_cost, :shopping_dot_com_category,
21
+ :shopzilla_category_id, :show_default_donation_amount, :specials_description, :stock_description, :store_description,
22
+ :store_detailed_description, :store_display_name, :upc_code, :url_component, :use_marginal_rates, :vsoe_delivered,
23
+ :vsoe_price, :weight
24
+
25
+ record_refs :billing_schedule, :custom_form, :default_item_ship_method, :deferred_revenue_account, :department,
26
+ :income_account, :issue_product, :item_revenue_category, :klass, :location, :parent, :pricing_group,
27
+ :quantity_pricing_schedule, :revenue_allocation_group, :revenue_recognition_rule, :rev_rec_schedule, :sales_tax_code,
28
+ :schedule_b_code, :ship_package, :soft_descriptor, :store_display_image, :store_display_thumbnail, :store_item_template,
29
+ :tax_schedule, :weight_unit
30
+
31
+ field :custom_field_list, CustomFieldList
32
+ field :pricing_matrix, PricingMatrix
33
+ field :subsidiary_list, RecordRefList
34
+
35
+ # TODO custom records need to be implemented
36
+ # field :accounting_book_detail_list, ItemAccountingBookDetailList
37
+ # field :cost_estimate_type, ItemCostEstimateType
38
+ # field :country_of_manufacture, Country
39
+ # field :create_revenue_plans_on, ItemCreateRevenuePlansOn
40
+ # field :hazmat_packing_group, HazmatPackingGroup
41
+ # field :item_carrier, ItemCarrier
42
+ # field :item_options_list, ItemOptionsList
43
+ # field :item_ship_method_list, RecordRefList
44
+ # field :member_list, ItemMemberList
45
+ # field :out_of_stock_behavior, ItemOutOfStockBehavior
46
+ # field :overall_quantity_pricing_type, ItemOverallQuantityPricingType
47
+ # field :preference_criterion, ItemPreferenceCriterion
48
+ # field :presentation_item_list, PresentationItemList
49
+ # field :product_feed_list, ProductFeedList
50
+ # field :site_category_list, SiteCategoryList
51
+ # field :sitemap_priority, SitemapPriority
52
+ # field :translations_list, TranslationList
53
+ # field :vsoe_deferral, VsoeDeferral
54
+ # field :vsoe_permit_discount, VsoePermitDiscount
55
+ # field :vsoe_sop_group, VsoeSopGroup
56
+
57
+ attr_reader :internal_id
58
+ attr_accessor :external_id
59
+
60
+ def initialize(attributes = {})
61
+ @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
62
+ @external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
63
+ initialize_from_attributes_hash(attributes)
64
+ end
65
+
66
+ def self.search_class_name
67
+ "Item"
68
+ end
5
69
  end
6
70
  end
7
71
  end
@@ -13,10 +13,10 @@ module NetSuite
13
13
  :handling_tax2_rate, :last_modified_date, :linked_tracking_numbers,
14
14
  :memo, :ship_complete, :ship_date, :ship_is_residential, :shipping_cost,
15
15
  :shipping_tax1_rate, :shipping_tax2_rate, :source, :status, :sub_total,
16
- :total, :tracking_numbers, :tran_date, :tran_id
16
+ :total, :tracking_numbers, :tran_date, :tran_id, :order_status
17
17
 
18
18
  record_refs :transfer_location, :shipping_tax_code, :subsidiary, :shipping_address,
19
- :ship_method, :order_status, :employee, :handling_tax_code,
19
+ :ship_method, :employee, :handling_tax_code,
20
20
  :location, :custom_form, :department, :klass, :ship_address_list
21
21
 
22
22
  field :custom_field_list, CustomFieldList
@@ -40,6 +40,14 @@ module NetSuite
40
40
  rec
41
41
  end
42
42
 
43
+ def self.search_class_name
44
+ "Transaction"
45
+ end
46
+
47
+ def self.search_class_namespace
48
+ 'tranSales'
49
+ end
50
+
43
51
  end
44
52
  end
45
53
  end
@@ -7,11 +7,13 @@ module NetSuite
7
7
  include Support::Actions
8
8
  include Namespaces::TranPurch
9
9
 
10
- actions :get, :get_list, :initialize, :add, :delete, :update, :upsert
10
+ actions :get, :get_list, :initialize, :add, :delete, :update, :upsert, :search
11
11
 
12
- fields :address, :balance, :bill_pay, :created_at, :credit_list, :currency_name, :exchange_rate, :last_modified_date,
12
+ fields :address, :balance, :bill_pay, :created_date, :credit_list, :currency_name, :exchange_rate, :last_modified_date,
13
13
  :memo, :print_voucher, :status, :to_ach, :to_be_printed, :total, :tran_date, :tran_id, :transaction_number
14
14
 
15
+ alias_method :created_at, :created_date
16
+
15
17
  field :apply_list, VendorPaymentApplyList
16
18
  field :custom_field_list, CustomFieldList
17
19
 
@@ -35,6 +37,13 @@ module NetSuite
35
37
  rec
36
38
  end
37
39
 
40
+ def self.search_class_name
41
+ "Transaction"
42
+ end
43
+
44
+ def self.search_class_namespace
45
+ 'tranSales'
46
+ end
38
47
  end
39
48
  end
40
49
  end
@@ -1,3 +1,3 @@
1
1
  module Netsuite
2
- VERSION = '0.6.6'
2
+ VERSION = '0.6.7'
3
3
  end
@@ -30,6 +30,7 @@ describe 'basic records' do
30
30
  NetSuite::Records::PurchaseOrder,
31
31
  NetSuite::Records::ItemReceipt,
32
32
  NetSuite::Records::GiftCertificate,
33
+ NetSuite::Records::ContactRole,
33
34
  ]
34
35
  }
35
36
 
@@ -0,0 +1,117 @@
1
+ require 'spec_helper'
2
+
3
+ describe NetSuite::Records::KitItem do
4
+ let(:item) { NetSuite::Records::KitItem.new }
5
+
6
+ it 'has all the right fields' do
7
+ [
8
+ :available_to_partners, :cost_estimate, :created_date, :defer_rev_rec, :description, :display_name, :dont_show_price, :enforce_min_qty_internally, :exclude_from_sitemap, :featured_description, :handling_cost, :hazmat_hazard_class, :hazmat_id, :hazmat_item_units, :hazmat_item_units_qty, :hazmat_shipping_name, :include_children, :is_donation_item, :is_fulfillable, :is_gco_compliant, :is_hazmat_item, :is_inactive, :is_online, :is_taxable, :item_id, :last_modified_date, :manufacturer, :manufactureraddr1, :manufacturer_city, :manufacturer_state, :manufacturer_tariff, :manufacturer_tax_id, :manufacturer_zip, :max_donation_amount, :meta_tag_html, :minimum_quantity, :mpn, :mult_manufacture_addr, :nex_tag_category, :no_price_message, :offer_support, :on_special, :out_of_stock_message, :page_title, :prices_include_tax, :print_items, :producer, :rate, :related_items_description, :schedule_b_number, :schedule_b_quantity, :search_keywords, :ship_individually, :shipping_cost, :shopping_dot_com_category, :shopzilla_category_id, :show_default_donation_amount, :specials_description, :stock_description, :store_description, :store_detailed_description, :store_display_name, :upc_code, :url_component, :use_marginal_rates, :vsoe_delivered, :vsoe_price, :weight
9
+ ].each do |field|
10
+ expect(item).to have_field(field)
11
+ end
12
+ end
13
+
14
+ it 'has all the right record refs' do
15
+ [
16
+ :billing_schedule, :custom_form, :default_item_ship_method, :deferred_revenue_account, :department, :income_account, :issue_product, :item_revenue_category, :location, :parent, :pricing_group, :quantity_pricing_schedule, :revenue_allocation_group, :revenue_recognition_rule, :rev_rec_schedule, :sales_tax_code, :schedule_b_code, :ship_package, :soft_descriptor, :store_display_image, :store_display_thumbnail, :store_item_template, :tax_schedule, :weight_unit
17
+ ].each do |record_ref|
18
+ expect(item).to 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 => { :item_id => "Item100" }) }
25
+
26
+ it 'returns a KitItem instance populated with the data from the response object' do
27
+ expect(NetSuite::Actions::Get).to receive(:call).with([NetSuite::Records::KitItem, {:external_id => 1}], {}).and_return(response)
28
+ item = NetSuite::Records::KitItem.get(:external_id => 1)
29
+ expect(item).to be_kind_of(NetSuite::Records::KitItem)
30
+ expect(item.item_id).to eql("Item100")
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
+ expect(NetSuite::Actions::Get).to receive(:call).with([NetSuite::Records::KitItem, {:external_id => 1}], {}).and_return(response)
39
+ expect {
40
+ NetSuite::Records::KitItem.get(:external_id => 1)
41
+ }.to raise_error(NetSuite::RecordNotFound,
42
+ /NetSuite::Records::KitItem with OPTIONS=(.*) could not be found/)
43
+ end
44
+ end
45
+ end
46
+
47
+ describe '#add' do
48
+ let(:item) { NetSuite::Records::KitItem.new(:item_id => "Item100", :is_inactive => false) }
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
+ expect(NetSuite::Actions::Add).to receive(:call).
55
+ with([item], {}).
56
+ and_return(response)
57
+ expect(item.add).to be_truthy
58
+ end
59
+ end
60
+
61
+ context 'when the response is unsuccessful' do
62
+ let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
63
+
64
+ it 'returns false' do
65
+ expect(NetSuite::Actions::Add).to receive(:call).
66
+ with([item], {}).
67
+ and_return(response)
68
+ expect(item.add).to be_falsey
69
+ end
70
+ end
71
+ end
72
+
73
+ describe '#delete' do
74
+ context 'when the response is successful' do
75
+ let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
76
+
77
+ it 'returns true' do
78
+ expect(NetSuite::Actions::Delete).to receive(:call).
79
+ with([item], {}).
80
+ and_return(response)
81
+ expect(item.delete).to be_truthy
82
+ end
83
+ end
84
+
85
+ context 'when the response is unsuccessful' do
86
+ let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
87
+
88
+ it 'returns false' do
89
+ expect(NetSuite::Actions::Delete).to receive(:call).
90
+ with([item], {}).
91
+ and_return(response)
92
+ expect(item.delete).to be_falsey
93
+ end
94
+ end
95
+ end
96
+
97
+ describe '#to_record' do
98
+ before do
99
+ item.item_id = "Item100"
100
+ item.is_inactive = false
101
+ end
102
+ it 'can represent itself as a SOAP record' do
103
+ record = {
104
+ 'listAcct:itemId' => "Item100",
105
+ 'listAcct:isInactive' => false
106
+ }
107
+ expect(item.to_record).to eql(record)
108
+ end
109
+ end
110
+
111
+ describe '#record_type' do
112
+ it 'returns a string representation of the SOAP type' do
113
+ expect(item.record_type).to eql('listAcct:KitItem')
114
+ end
115
+ end
116
+
117
+ end
@@ -7,7 +7,7 @@ describe NetSuite::Records::VendorPayment do
7
7
 
8
8
  it 'has all the right fields' do
9
9
  [
10
- :address, :balance, :bill_pay, :created_at, :credit_list, :currency_name, :exchange_rate, :last_modified_date,
10
+ :address, :balance, :bill_pay, :created_date, :credit_list, :currency_name, :exchange_rate, :last_modified_date,
11
11
  :memo, :print_voucher, :status, :to_ach, :to_be_printed, :total, :tran_date, :tran_id, :transaction_number
12
12
  ].each do |field|
13
13
  expect(payment).to have_field(field)
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.6.6
4
+ version: 0.6.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-06-08 00:00:00.000000000 Z
13
+ date: 2016-06-25 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: savon
@@ -122,6 +122,7 @@ files:
122
122
  - lib/netsuite/records/contact_access_roles.rb
123
123
  - lib/netsuite/records/contact_access_roles_list.rb
124
124
  - lib/netsuite/records/contact_list.rb
125
+ - lib/netsuite/records/contact_role.rb
125
126
  - lib/netsuite/records/credit_memo.rb
126
127
  - lib/netsuite/records/credit_memo_apply.rb
127
128
  - lib/netsuite/records/credit_memo_apply_list.rb
@@ -340,6 +341,7 @@ files:
340
341
  - spec/netsuite/records/journal_entry_line_list_spec.rb
341
342
  - spec/netsuite/records/journal_entry_line_spec.rb
342
343
  - spec/netsuite/records/journal_entry_spec.rb
344
+ - spec/netsuite/records/kit_item_spec.rb
343
345
  - spec/netsuite/records/location_spec.rb
344
346
  - spec/netsuite/records/matrix_option_list_spec.rb
345
347
  - spec/netsuite/records/non_inventory_sale_item_spec.rb
@@ -517,6 +519,7 @@ test_files:
517
519
  - spec/netsuite/records/journal_entry_line_list_spec.rb
518
520
  - spec/netsuite/records/journal_entry_line_spec.rb
519
521
  - spec/netsuite/records/journal_entry_spec.rb
522
+ - spec/netsuite/records/kit_item_spec.rb
520
523
  - spec/netsuite/records/location_spec.rb
521
524
  - spec/netsuite/records/matrix_option_list_spec.rb
522
525
  - spec/netsuite/records/non_inventory_sale_item_spec.rb