netsuite 0.4.8 → 0.4.9

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzU4NWNkY2Y0MzllYWE4ODhkYzQ2OTRiYWM4N2QwZTNmMjhmOWIxZQ==
4
+ M2VmMmY0OGFlY2M1NmM2NDI5NTk5NDk3OGM4YzI1YWM2ZmQzNDIzNQ==
5
5
  data.tar.gz: !binary |-
6
- MDFiMjY3ZmI5NzYyOWQ3OTVkNDAxMzA1MDIwZjk2MTM1MjUwODFkMA==
6
+ OGJhM2M0ZGZhNzAyNmYzYTdmYTI5OTc0ZjkyZjk2NGUwYjQ5MzMyMQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MTUzODZjM2QwMDNjNWE2NTdjMWMxNjYwYTA5ZmE0M2I5NTA1YWJkZGEwYjBk
10
- NTIyNDBmY2Q0ODcwNjk1MmY0OWRjNGFkMjE2MTE3MDUzNzZjM2IwMWIzMzYy
11
- OWI0NDZjOWU4MDY4Y2IwMzQzZjVkMTA4ZWMzY2E4NjhlYTE4ZTE=
9
+ NDZjNjE0N2JmNmNiZTI1Nzc4NjNlZmI1YmU0OTljMzIzM2VhYTIwMWQxODI5
10
+ NTJiM2JlYjJmMWVmYmJhMDdjOWZhNTdkNDc1ODJhYjAxMmYxNTIyMTI4NmY4
11
+ NGE0OThmYjhlYzNlODdlNjYwZDk1YzZlOWFlNTVjMjdjNzM1N2U=
12
12
  data.tar.gz: !binary |-
13
- Zjc2ZGU1OTU2MzhiZWM5NTlhOTA1NDEzNmNkOGE0YmNkNTUzYzhiYzI0MDIw
14
- OWFlZTlmOTYyMmVhOTcxZDI2Y2FhNGYxZGViZTJiZjM1YWYyMTcwNjk3NDk0
15
- ZTI2NzljOTNiNzY2YWM3ZGUyNDExYmE2MGE5M2QwNzNlZTA0NjY=
13
+ ODNhNDBhMGUwZDFiYmFiNWQzYzdlN2M3ZjRiNTQyZDRmMzRmN2UwZmQ2NmYx
14
+ MDg2M2U0YTJiNmZjNGJhMDkxZDFjMTkxMWU3Y2U1ODM3MGIxOWU1NGRmYWNj
15
+ YWQ3MDE0ZDI5NDJmMmJmNDRjMzdjNDA3NzNhMWM0NDk2Y2I2NmY=
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
- gem 'pry-nav'
4
+ gem 'simplecov', :require => false
5
+ gem 'pry-nav'
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Build Status](https://travis-ci.org/NetSweet/netsuite.svg)](https://travis-ci.org/NetSweet/netsuite)
1
+ [![Circle CI](https://circleci.com/gh/NetSweet/netsuite/tree/master.svg?style=svg)](https://circleci.com/gh/NetSweet/netsuite/tree/master)
2
2
 
3
3
  # NetSuite Ruby SuiteTalk Gem
4
4
 
@@ -413,3 +413,13 @@ states = NetSuite::Configuration.connection.call(:get_all, message: {
413
413
  })
414
414
  states.to_array.first[:get_all_response][:get_all_result][:record_list][:record].map { |r| { country: r[:country], abbr: r[:shortname], name: r[:full_name] } }
415
415
  ```
416
+
417
+ #### 2015_2 ApplicationId Support
418
+
419
+ ```ruby
420
+ NetSuite::Configuration.soap_header = {
421
+ 'platformMsgs:ApplicationInfo' => {
422
+ 'platformMsgs:applicationId' => 'your-netsuite-app-id'
423
+ }
424
+ }
425
+ ```
File without changes
@@ -99,6 +99,7 @@ module NetSuite
99
99
  autoload :CustomerCurrency, 'netsuite/records/customer_currency'
100
100
  autoload :CustomerCurrencyList, 'netsuite/records/customer_currency_list'
101
101
  autoload :CustomerDeposit, 'netsuite/records/customer_deposit'
102
+ autoload :CustomerPartnersList, 'netsuite/records/customer_partners_list'
102
103
  autoload :CustomerPayment, 'netsuite/records/customer_payment'
103
104
  autoload :CustomerPaymentApply, 'netsuite/records/customer_payment_apply'
104
105
  autoload :CustomerPaymentApplyList, 'netsuite/records/customer_payment_apply_list'
@@ -107,6 +108,7 @@ module NetSuite
107
108
  autoload :CustomerRefundApplyList, 'netsuite/records/customer_refund_apply_list'
108
109
  autoload :CustomerRefundDeposit, 'netsuite/records/customer_refund_deposit'
109
110
  autoload :CustomerRefundDepositList, 'netsuite/records/customer_refund_deposit_list'
111
+ autoload :CustomerPartner, 'netsuite/records/customer_partner'
110
112
  autoload :ContactList, 'netsuite/records/contact_list'
111
113
  autoload :Contact, 'netsuite/records/contact'
112
114
  autoload :ContactAccessRoles, 'netsuite/records/contact_access_roles'
@@ -151,8 +153,12 @@ module NetSuite
151
153
  autoload :MatrixOptionList, 'netsuite/records/matrix_option_list'
152
154
  autoload :MemberList, 'netsuite/records/member_list'
153
155
  autoload :NonInventorySaleItem, 'netsuite/records/non_inventory_sale_item'
156
+ autoload :Opportunity, 'netsuite/records/opportunity'
157
+ autoload :OpportunityItem, 'netsuite/records/opportunity_item'
158
+ autoload :OpportunityItemList, 'netsuite/records/opportunity_item_list'
154
159
  autoload :Partner, 'netsuite/records/partner'
155
160
  autoload :PaymentMethod, 'netsuite/records/payment_method'
161
+ autoload :PayrollItem, 'netsuite/records/payroll_item'
156
162
  autoload :PhoneCall, 'netsuite/records/phone_call'
157
163
  autoload :PricingMatrix, 'netsuite/records/pricing_matrix'
158
164
  autoload :PromotionCode, 'netsuite/records/promotion_code'
@@ -165,7 +171,7 @@ module NetSuite
165
171
  autoload :SalesOrderItem, 'netsuite/records/sales_order_item'
166
172
  autoload :SalesOrderItemList, 'netsuite/records/sales_order_item_list'
167
173
  autoload :SalesTaxItem, 'netsuite/records/sales_tax_item'
168
- autoload :ServiceResaleItem, 'netsuite/records/service_resale_item'
174
+ autoload :ServiceResaleItem, 'netsuite/records/service_resale_item'
169
175
  autoload :ServiceSaleItem, 'netsuite/records/service_sale_item'
170
176
  autoload :ShipAddress, 'netsuite/records/ship_address'
171
177
  autoload :SiteCategory, 'netsuite/records/site_category'
@@ -185,6 +191,7 @@ module NetSuite
185
191
  autoload :VendorBillExpenseList, 'netsuite/records/vendor_bill_expense_list'
186
192
  autoload :VendorBillItem, 'netsuite/records/vendor_bill_item'
187
193
  autoload :VendorBillItemList, 'netsuite/records/vendor_bill_item_list'
194
+ autoload :VendorCategory, 'netsuite/records/vendor_category'
188
195
  autoload :VendorPayment, 'netsuite/records/vendor_payment'
189
196
  autoload :VendorPaymentApply, 'netsuite/records/vendor_payment_apply'
190
197
  autoload :VendorPaymentApplyList, 'netsuite/records/vendor_payment_apply_list'
@@ -22,12 +22,14 @@ module NetSuite
22
22
  # https://system.netsuite.com/help/helpcenter/en_US/Output/Help/SuiteCloudCustomizationScriptingWebServices/SuiteTalkWebServices/SettingSearchPreferences.html
23
23
  # https://webservices.netsuite.com/xsd/platform/v2012_2_0/messages.xsd
24
24
 
25
- preferences = NetSuite::Configuration.auth_header(credentials).merge(
26
- (@options.delete(:preferences) || {}).inject({'platformMsgs:SearchPreferences' => {}}) do |h, (k, v)|
27
- h['platformMsgs:SearchPreferences'][k.to_s.lower_camelcase] = v
28
- h
29
- end
30
- )
25
+ preferences = NetSuite::Configuration.auth_header(credentials)
26
+ .update(NetSuite::Configuration.soap_header)
27
+ .merge(
28
+ (@options.delete(:preferences) || {}).inject({'platformMsgs:SearchPreferences' => {}}) do |h, (k, v)|
29
+ h['platformMsgs:SearchPreferences'][k.to_s.lower_camelcase] = v
30
+ h
31
+ end
32
+ )
31
33
 
32
34
  NetSuite::Configuration
33
35
  .connection({ soap_header: preferences }, credentials)
@@ -61,8 +63,12 @@ module NetSuite
61
63
  criteria = @options[:criteria] || @options
62
64
 
63
65
  # TODO find cleaner solution for pulling the namespace of the record, which is a instance method
64
- example_instance = @klass.new
65
- namespace = example_instance.record_namespace
66
+ namespace = if @klass.respond_to?(:search_class_namespace)
67
+ @klass.search_class_namespace
68
+ else
69
+ @klass.new.record_namespace
70
+ end
71
+
66
72
  # extract the class name
67
73
 
68
74
  criteria_structure = {}
@@ -42,6 +42,10 @@ module NetSuite
42
42
  @external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
43
43
  initialize_from_attributes_hash(attributes)
44
44
  end
45
+
46
+ def self.search_class_name
47
+ "Transaction"
48
+ end
45
49
  end
46
50
  end
47
51
  end
@@ -19,7 +19,7 @@ module NetSuite
19
19
  :estimated_budget, :fax, :fax_transactions, :first_name, :first_visit, :give_access, :global_subscription_status,
20
20
  :group_pricing_list, :home_phone, :image, :is_budget_approved, :is_inactive, :is_person, :item_pricing_list, :keywords,
21
21
  :language, :last_modified_date, :last_name, :last_page_visited, :last_visit, :middle_name, :mobile_phone,
22
- :opening_balance, :opening_balance_account, :opening_balance_date, :partners_list,
22
+ :opening_balance, :opening_balance_account, :opening_balance_date,
23
23
  :password, :password2, :phone, :phonetic_name, :pref_cc_processor, :print_on_check_as,
24
24
  :print_transactions, :referrer, :reminder_days, :representing_subsidiary, :require_pwd_change, :resale_number,
25
25
  :sales_group, :sales_readiness, :sales_team_list, :salutation, :send_email, :ship_complete, :shipping_item,
@@ -31,6 +31,8 @@ module NetSuite
31
31
  field :custom_field_list, CustomFieldList
32
32
  field :contact_roles_list, ContactAccessRolesList
33
33
  field :currency_list, CustomerCurrencyList
34
+ field :partners_list, CustomerPartnersList
35
+
34
36
  # TODO subscriptions_list
35
37
 
36
38
  read_only_fields :balance, :consol_balance, :deposit_balance, :consol_deposit_balance, :overdue_balance,
@@ -0,0 +1,24 @@
1
+ module NetSuite
2
+ module Records
3
+ class CustomerPartner
4
+ include Support::Fields
5
+ include Support::RecordRefs
6
+ include Support::Records
7
+ include Namespaces::ListRel
8
+
9
+ fields :is_primary, :contribution
10
+
11
+ record_refs :partner
12
+
13
+ def initialize(attributes_or_record = {})
14
+ case attributes_or_record
15
+ when Hash
16
+ initialize_from_attributes_hash(attributes_or_record)
17
+ when self.class
18
+ initialize_from_record(attributes_or_record)
19
+ end
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,9 @@
1
+ module NetSuite
2
+ module Records
3
+ class CustomerPartnersList < Support::Sublist
4
+ include Namespaces::ListRel
5
+
6
+ sublist :partners, NetSuite::Records::CustomerPartner
7
+ end
8
+ end
9
+ end
@@ -7,13 +7,13 @@ module NetSuite
7
7
  include Support::Actions
8
8
  include Namespaces::TranCust
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
12
  fields :auth_code, :auto_apply, :cc_approved, :cc_avs_street_match, :cc_avs_zip_match,
13
13
  :cc_expire_date, :cc_name, :cc_number, :cc_security_code, :cc_security_code_match, :cc_street, :cc_zip_code,
14
14
  :charge_it, :check_num, :created_date, :currency_name, :debit_card_issue_no, :exchange_rate, :ignore_avs,
15
15
  :last_modified_date, :memo, :payment, :pn_ref_num, :status, :three_d_status_code, :tran_date,
16
- :undep_funds, :valid_from
16
+ :undep_funds, :valid_from, :tran_id
17
17
 
18
18
  field :custom_field_list, CustomFieldList
19
19
  field :apply_list, CustomerPaymentApplyList
@@ -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,7 +7,7 @@ module NetSuite
7
7
  include Support::Actions
8
8
  include Namespaces::TranCust
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
12
  fields :address, :cc_approved, :cc_expire_date, :cc_name, :cc_number, :cc_street, :cc_zip_code, :charge_it,
13
13
  :created_date, :currency_name, :debit_card_issue_no, :exchange_rate, :last_modified_date, :memo, :pn_ref_num, :status,
@@ -39,6 +39,14 @@ module NetSuite
39
39
  rec
40
40
  end
41
41
 
42
+ def self.search_class_name
43
+ "Transaction"
44
+ end
45
+
46
+ def self.search_class_namespace
47
+ 'tranSales'
48
+ end
49
+
42
50
  end
43
51
  end
44
52
  end
@@ -30,7 +30,7 @@ module NetSuite
30
30
  :tax_total, :time_disc_amount, :time_disc_print, :time_disc_rate, :time_disc_tax_1_amt, :time_disc_taxable,
31
31
  :time_discount, :time_list, :time_tax_code, :time_tax_rate_1, :time_tax_rate_2, :to_be_emailed, :to_be_faxed,
32
32
  :to_be_printed, :total_cost_estimate, :tracking_numbers, :tran_date, :tran_id, :tran_is_vsoe_bundle,
33
- :transaction_bill_address, :transaction_ship_address, :vat_reg_num, :vsoe_auto_calc
33
+ :transaction_bill_address, :transaction_ship_address, :vat_reg_num, :vsoe_auto_calc, :tax_rate
34
34
 
35
35
  field :transaction_bill_address, BillAddress
36
36
  field :transaction_ship_address, ShipAddress
@@ -38,7 +38,7 @@ module NetSuite
38
38
  field :custom_field_list, CustomFieldList
39
39
 
40
40
  read_only_fields :sub_total, :discount_total, :total, :recognized_revenue, :amount_remaining, :amount_paid,
41
- :alt_shipping_cost, :gift_cert_applied, :tax_rate, :handling_cost, :alt_handling_cost
41
+ :alt_shipping_cost, :gift_cert_applied, :handling_cost, :alt_handling_cost
42
42
 
43
43
  record_refs :account, :bill_address_list, :custom_form, :department, :entity, :klass, :partner,
44
44
  :posting_period, :ship_address_list, :terms, :location, :sales_rep, :tax_item, :created_from,
@@ -0,0 +1,46 @@
1
+ module NetSuite
2
+ module Records
3
+ class Opportunity
4
+ include Support::Fields
5
+ include Support::RecordRefs
6
+ include Support::Records
7
+ include Support::Actions
8
+ include Namespaces::TranSales
9
+
10
+ actions :get, :get_list, :add, :initialize, :delete, :update, :upsert, :search
11
+
12
+ fields :action_item, :alt_sales_range_high, :alt_sales_range_low,
13
+ :close_date, :contrib_pct, :created_date, :currency_name, :days_open,
14
+ :estimated_budget, :est_gross_profit, :est_gross_profit_percent,
15
+ :exchange_rate, :expected_close_date,
16
+ :is_budget_approved, :last_modified_date,
17
+ :memo, :probability, :proj_alt_sales_amt, :projected_total,
18
+ :range_high, :range_low,
19
+ :ship_is_residential, :source, :status, :sync_partner_teams, :sync_sales_teams,
20
+ :tax2_total, :tax_total, :title, :total_cost_estimate, :tran_date, :tran_id,
21
+ :vat_reg_num, :weighted_total
22
+
23
+ field :ship_address, ShipAddress
24
+ field :bill_address, BillAddress
25
+ field :item_list, OpportunityItemList
26
+ field :custom_field_list, CustomFieldList
27
+
28
+ read_only_fields :discount_total, :sub_total, :tax_total, :total
29
+
30
+ record_refs :account, :buying_reason, :currency, :klass, :department, :entity, :entity_status, :location,
31
+ :partner, :subsidiary, :sales_group, :sales_rep, :custom_form, :job, :forcast_type,
32
+ :lead_source, :sales_readiness, :win_loss_reason
33
+
34
+ attr_reader :internal_id
35
+ attr_accessor :external_id
36
+ attr_accessor :search_joins
37
+
38
+ def initialize(attributes = {})
39
+ @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
40
+ @external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
41
+ initialize_from_attributes_hash(attributes)
42
+ end
43
+
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,41 @@
1
+ module NetSuite
2
+ module Records
3
+ class OpportunityItem
4
+ include Support::Fields
5
+ include Support::RecordRefs
6
+ include Support::Records
7
+ include Namespaces::TranSales
8
+
9
+ fields :alt_sales_amt, :amount, :cost_estimate, :cost_estimate_type,
10
+ :description, :expected_ship_date, :from_job, :gross_amt, :is_estimate,
11
+ :is_taxable, :line, :quantity, :quantity_available, :quantity_on_hand,
12
+ :rate, :rev_rec_term_in_months,
13
+ :tax1_amt, :tax_rate1, :tax_rate2
14
+
15
+ field :custom_field_list, CustomFieldList
16
+
17
+ record_refs :department, :item, :job, :klass, :location, :price, :tax_code, :units
18
+
19
+ def initialize(attributes_or_record = {})
20
+ case attributes_or_record
21
+ when Hash
22
+ initialize_from_attributes_hash(attributes_or_record)
23
+ when self.class
24
+ initialize_from_record(attributes_or_record)
25
+ end
26
+ end
27
+
28
+ def initialize_from_record(record)
29
+ self.attributes = record.send(:attributes)
30
+ end
31
+
32
+ def to_record
33
+ rec = super
34
+ if rec["#{record_namespace}:customFieldList"]
35
+ rec["#{record_namespace}:customFieldList!"] = rec.delete("#{record_namespace}:customFieldList")
36
+ end
37
+ rec
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,9 @@
1
+ module NetSuite
2
+ module Records
3
+ class OpportunityItemList < Support::Sublist
4
+ include Namespaces::TranSales
5
+
6
+ sublist :item, OpportunityItem
7
+ end
8
+ end
9
+ end
@@ -12,7 +12,7 @@ module NetSuite
12
12
 
13
13
  fields :phone, :home_phone, :first_name, :last_name, :alt_name, :is_inactive, :email, :give_access,
14
14
  :partner_code, :is_person, :company_name, :eligible_for_commission, :entity_id, :last_modified_date,
15
- :date_created, :title, :mobile_phone, :comments, :middle_name
15
+ :date_created, :title, :mobile_phone, :comments, :middle_name, :send_email
16
16
 
17
17
  record_refs :klass, :access_role, :department
18
18
 
@@ -20,4 +20,4 @@ module NetSuite
20
20
  end
21
21
 
22
22
  end
23
- end
23
+ end
@@ -4,6 +4,7 @@ module NetSuite
4
4
  include Support::Fields
5
5
  include Support::RecordRefs
6
6
  include Support::Actions
7
+ include Namespaces::ListAcct
7
8
 
8
9
  actions :add, :delete, :get, :get_list, :search, :update, :upsert, :upsert_list
9
10
 
@@ -0,0 +1,37 @@
1
+ module NetSuite
2
+ module Records
3
+ class PayrollItem
4
+ include Support::Fields
5
+ include Support::RecordRefs
6
+ include Support::Records
7
+ include Support::Actions
8
+ include Namespaces::ListEmp
9
+
10
+ actions :add, :delete, :delete_list, :get, :get_list, :search, :update, :upsert, :upsert_list
11
+
12
+ fields :employee_paid, :inactive, :name
13
+
14
+ field :custom_field_list, CustomFieldList
15
+
16
+ record_refs :expense_account, :item_type, :liability_account, :subsidiary, :vendor
17
+
18
+ attr_reader :internal_id
19
+ attr_accessor :external_id
20
+ attr_accessor :search_joins
21
+
22
+ def initialize(attributes = {})
23
+ @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
24
+ @external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
25
+ initialize_from_attributes_hash(attributes)
26
+ end
27
+
28
+ def to_record
29
+ rec = super
30
+ if rec["#{record_namespace}:customFieldList"]
31
+ rec["#{record_namespace}:customFieldList!"] = rec.delete("#{record_namespace}:customFieldList")
32
+ end
33
+ rec
34
+ end
35
+ end
36
+ end
37
+ end
@@ -29,7 +29,7 @@ module NetSuite
29
29
 
30
30
  record_refs :account, :bill_address_list, :created_from, :currency, :custom_form, :department, :discount_item, :entity, :gift_cert,
31
31
  :handling_tax_code, :job, :klass, :lead_source, :location, :message_sel, :opportunity, :partner, :posting_period, :promo_code,
32
- :sales_group, :sales_rep, :ship_method, :shipping_tax_code, :subsidiary, :terms, :tax_item, :payment_method
32
+ :sales_group, :sales_rep, :ship_method, :shipping_tax_code, :subsidiary, :terms, :tax_item, :payment_method, :bill_address_list
33
33
 
34
34
  attr_reader :internal_id
35
35
  attr_accessor :external_id
@@ -0,0 +1,26 @@
1
+ module NetSuite
2
+ module Records
3
+ class VendorCategory
4
+ # NOTE this record is undocumented, look at the WSDL for details
5
+
6
+ include Support::Fields
7
+ include Support::RecordRefs
8
+ include Support::Records
9
+ include Support::Actions
10
+ include Namespaces::ListAcct
11
+
12
+ actions :get, :get_list, :get_all, :add, :update, :delete, :search
13
+
14
+ fields :name, :is_tax_agency, :is_inactive
15
+
16
+ attr_reader :internal_id
17
+ attr_accessor :external_id
18
+
19
+ def initialize(attributes = {})
20
+ @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
21
+ @external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
22
+ initialize_from_attributes_hash(attributes)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,3 +1,3 @@
1
1
  module Netsuite
2
- VERSION = '0.4.8'
2
+ VERSION = '0.4.9'
3
3
  end
@@ -7,7 +7,11 @@ describe 'basic records' do
7
7
  NetSuite::Records::Location,
8
8
  NetSuite::Records::JobStatus,
9
9
  NetSuite::Records::TimeBill,
10
- NetSuite::Records::Customer
10
+ NetSuite::Records::Customer,
11
+ NetSuite::Records::Invoice,
12
+ NetSuite::Records::PayrollItem,
13
+ NetSuite::Records::Opportunity,
14
+ NetSuite::Records::VendorCategory
11
15
  ]
12
16
  }
13
17
 
@@ -28,7 +32,11 @@ describe 'basic records' do
28
32
 
29
33
  standard_fields = (record_class.fields - record_class.record_refs).to_a
30
34
  custom_object_fields = standard_fields.select { |f| !record_instance.send(f).nil? }
35
+ sublist_fields = custom_object_fields.select { |f| record_instance.send(f).kind_of?(NetSuite::Support::Sublist) }
36
+
37
+ custom_object_fields -= sublist_fields
31
38
  standard_fields -= custom_object_fields
39
+ standard_fields -= sublist_fields
32
40
 
33
41
  # ensure that all fields can be set
34
42
  standard_fields.each { |f| expect(record_instance).to have_field(f) }
@@ -46,6 +54,13 @@ describe 'basic records' do
46
54
  record_instance.send(:"#{sample_record_ref_field}=".to_sym, { internal_id: 1 })
47
55
  end
48
56
 
57
+ if !sublist_fields.empty?
58
+ sublist_fields.each do |sublist_field|
59
+ # TODO make a sublist entry with some fields valid for that sublist item
60
+ record_instance.send(sublist_field) << {}
61
+ end
62
+ end
63
+
49
64
  expect(record_instance.to_record).to be_a(Hash)
50
65
 
51
66
  # TODO should test for correct value output
@@ -14,7 +14,7 @@ describe NetSuite::Records::Customer do
14
14
  :estimated_budget, :fax, :fax_transactions, :first_name, :first_visit, :give_access, :global_subscription_status,
15
15
  :group_pricing_list, :home_phone, :image, :is_budget_approved, :is_inactive, :is_person, :item_pricing_list, :keywords,
16
16
  :language, :last_modified_date, :last_name, :last_page_visited, :last_visit, :middle_name, :mobile_phone,
17
- :opening_balance, :opening_balance_account, :opening_balance_date, :overdue_balance, :partners_list,
17
+ :opening_balance, :opening_balance_account, :opening_balance_date, :overdue_balance,
18
18
  :password, :password2, :phone, :phonetic_name, :pref_cc_processor,:print_on_check_as,
19
19
  :print_transactions, :referrer, :reminder_days, :representing_subsidiary, :require_pwd_change, :resale_number,
20
20
  :sales_group, :sales_readiness, :sales_team_list, :salutation, :send_email, :ship_complete, :shipping_item,
@@ -26,7 +26,7 @@ describe NetSuite::Records::Invoice do
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,
29
- :vat_reg_num, :vsoe_auto_calc
29
+ :vat_reg_num, :vsoe_auto_calc, :tax_rate
30
30
  ].each do |field|
31
31
  expect(invoice).to have_field(field)
32
32
  end
@@ -34,7 +34,7 @@ describe NetSuite::Records::Invoice do
34
34
 
35
35
  it 'has all the right read_only_fields' do
36
36
  [
37
- :sub_total, :discount_total, :total, :alt_handling_cost, :alt_shipping_cost, :gift_cert_applied, :tax_rate,
37
+ :sub_total, :discount_total, :total, :alt_handling_cost, :alt_shipping_cost, :gift_cert_applied,
38
38
  :handling_cost, :recognized_revenue, :amount_remaining, :amount_paid
39
39
  ].each do |field|
40
40
  expect(NetSuite::Records::Invoice).to have_read_only_field(field)
@@ -1,5 +1,13 @@
1
1
  $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..') ))
2
2
 
3
+ # https://circleci.com/docs/code-coverage
4
+ if ENV['CIRCLE_ARTIFACTS']
5
+ require 'simplecov'
6
+ dir = File.join("../../../..", ENV['CIRCLE_ARTIFACTS'], "coverage")
7
+ SimpleCov.coverage_dir(dir)
8
+ SimpleCov.start
9
+ end
10
+
3
11
  require 'rspec'
4
12
  require 'netsuite'
5
13
  require 'pry'
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.8
4
+ version: 0.4.9
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-09-23 00:00:00.000000000 Z
12
+ date: 2015-10-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: savon
@@ -49,11 +49,11 @@ extra_rdoc_files: []
49
49
  files:
50
50
  - .gitignore
51
51
  - .rspec
52
- - .travis.yml
53
52
  - Gemfile
54
53
  - LICENSE
55
54
  - README.md
56
55
  - Rakefile
56
+ - circle.yml
57
57
  - lib/netsuite.rb
58
58
  - lib/netsuite/actions/add.rb
59
59
  - lib/netsuite/actions/delete.rb
@@ -133,6 +133,8 @@ files:
133
133
  - lib/netsuite/records/customer_currency.rb
134
134
  - lib/netsuite/records/customer_currency_list.rb
135
135
  - lib/netsuite/records/customer_deposit.rb
136
+ - lib/netsuite/records/customer_partner.rb
137
+ - lib/netsuite/records/customer_partners_list.rb
136
138
  - lib/netsuite/records/customer_payment.rb
137
139
  - lib/netsuite/records/customer_payment_apply.rb
138
140
  - lib/netsuite/records/customer_payment_apply_list.rb
@@ -180,8 +182,12 @@ files:
180
182
  - lib/netsuite/records/matrix_option_list.rb
181
183
  - lib/netsuite/records/member_list.rb
182
184
  - lib/netsuite/records/non_inventory_sale_item.rb
185
+ - lib/netsuite/records/opportunity.rb
186
+ - lib/netsuite/records/opportunity_item.rb
187
+ - lib/netsuite/records/opportunity_item_list.rb
183
188
  - lib/netsuite/records/partner.rb
184
189
  - lib/netsuite/records/payment_method.rb
190
+ - lib/netsuite/records/payroll_item.rb
185
191
  - lib/netsuite/records/phone_call.rb
186
192
  - lib/netsuite/records/pricing_matrix.rb
187
193
  - lib/netsuite/records/promotion_code.rb
@@ -204,7 +210,6 @@ files:
204
210
  - lib/netsuite/records/tax_type.rb
205
211
  - lib/netsuite/records/term.rb
206
212
  - lib/netsuite/records/time_bill.rb
207
- - lib/netsuite/records/transaction.rb
208
213
  - lib/netsuite/records/units_type.rb
209
214
  - lib/netsuite/records/units_type_uom.rb
210
215
  - lib/netsuite/records/units_type_uom_list.rb
@@ -214,6 +219,7 @@ files:
214
219
  - lib/netsuite/records/vendor_bill_expense_list.rb
215
220
  - lib/netsuite/records/vendor_bill_item.rb
216
221
  - lib/netsuite/records/vendor_bill_item_list.rb
222
+ - lib/netsuite/records/vendor_category.rb
217
223
  - lib/netsuite/records/vendor_payment.rb
218
224
  - lib/netsuite/records/vendor_payment_apply.rb
219
225
  - lib/netsuite/records/vendor_payment_apply_list.rb
@@ -1,3 +0,0 @@
1
- notifications:
2
- email: false
3
- script: bundle exec rspec
@@ -1,18 +0,0 @@
1
- # TODO specs
2
- # TODO a transaction is actually the superclass of a SalesOrder, this is backwards
3
-
4
- module NetSuite
5
- module Records
6
- class Transaction < SalesOrder
7
-
8
- def to_record
9
- rec = super
10
- if rec["#{record_namespace}:customFieldList"]
11
- rec["#{record_namespace}:customFieldList!"] = rec.delete("#{record_namespace}:customFieldList")
12
- end
13
- rec
14
- end
15
-
16
- end
17
- end
18
- end