netsuite 0.0.9 → 0.0.10

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.
@@ -23,6 +23,7 @@ require 'netsuite/records/invoice'
23
23
  require 'netsuite/records/record_ref'
24
24
  require 'netsuite/records/ship_address'
25
25
  require 'netsuite/records/non_inventory_sale_item'
26
+ require 'netsuite/records/invoice_item_list'
26
27
 
27
28
  module NetSuite
28
29
 
@@ -44,6 +44,15 @@ module NetSuite
44
44
  attributes[:transaction_ship_address] = ShipAddress.new(attrs)
45
45
  end
46
46
 
47
+ def item_list=(attrs)
48
+ attributes[:item_list] = case attrs[:item]
49
+ when Hash
50
+ InvoiceItemList.new(attrs[:item])
51
+ when Array
52
+ attrs[:item].map { |item| InvoiceItemList.new(item) }
53
+ end
54
+ end
55
+
47
56
  def self.get(id)
48
57
  response = Actions::Get.call(id, self)
49
58
  if response.success?
@@ -0,0 +1,23 @@
1
+ module NetSuite
2
+ module Records
3
+ class InvoiceItemList
4
+ include FieldSupport
5
+ include RecordRefSupport
6
+
7
+ fields :amount, :amount_ordered, :bin_numbers, :cost_estimate, :cost_estimate_type, :current_percent, :custom_field_list,
8
+ :defer_rev_rec, :description, :gift_cert_from, :gift_cert_message, :gift_cert_number, :gift_cert_recipient_email,
9
+ :gift_cert_recipient_name, :gross_amt, :inventory_detail, :is_taxable, :item_is_fulfilled, :license_code, :line,
10
+ :options, :order_line, :percent_complete, :quantity, :quantity_available, :quantity_fulfilled, :quantity_on_hand,
11
+ :quantity_ordered, :quantity_remaining, :rate, :rev_rec_end_date, :rev_rec_start_date, :serial_numbers, :ship_group,
12
+ :tax1_amt, :tax_rate1, :tax_rate2, :vsoe_allocation, :vsoe_amount, :vsoe_deferral, :vsoe_delivered,
13
+ :vsoe_permit_discount, :vsoe_price
14
+
15
+ record_refs :department, :item, :job, :location, :price, :rev_rec_schedule, :ship_address, :ship_method, :tax_code, :units
16
+
17
+ def initialize(attributes = {})
18
+ initialize_from_attributes_hash(attributes)
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -25,7 +25,11 @@ module NetSuite
25
25
  :rev_rec_schedule, :sale_unit, :sales_tax_code, :ship_package, :store_display_image, :store_display_thumbnail,
26
26
  :store_item_template, :subsidiary_list, :tax_schedule, :units_type
27
27
 
28
+ attr_reader :internal_id, :external_id
29
+
28
30
  def initialize(attributes = {})
31
+ @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
32
+ @external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
29
33
  initialize_from_attributes_hash(attributes)
30
34
  end
31
35
 
@@ -1,3 +1,3 @@
1
1
  module Netsuite
2
- VERSION = '0.0.9'
2
+ VERSION = '0.0.10'
3
3
  end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe NetSuite::Records::InvoiceItemList do
4
+ let(:list) { NetSuite::Records::InvoiceItemList.new }
5
+
6
+ it 'has the right fields' do
7
+ [
8
+ :amount, :amount_ordered, :bin_numbers, :cost_estimate, :cost_estimate_type, :current_percent, :custom_field_list, :defer_rev_rec, :description, :gift_cert_from, :gift_cert_message, :gift_cert_number, :gift_cert_recipient_email, :gift_cert_recipient_name, :gross_amt, :inventory_detail, :is_taxable, :item_is_fulfilled, :license_code, :line, :options, :order_line, :percent_complete, :quantity, :quantity_available, :quantity_fulfilled, :quantity_on_hand, :quantity_ordered, :quantity_remaining, :rate, :rev_rec_end_date, :rev_rec_start_date, :serial_numbers, :ship_group, :tax1_amt, :tax_rate1, :tax_rate2, :vsoe_allocation, :vsoe_amount, :vsoe_deferral, :vsoe_delivered, :vsoe_permit_discount, :vsoe_price
9
+ ].each do |field|
10
+ list.should have_field(field)
11
+ end
12
+ end
13
+
14
+ it 'has the right record_refs' do
15
+ [
16
+ :department, :item, :job, :location, :price, :rev_rec_schedule, :ship_address, :ship_method, :tax_code, :units
17
+ ].each do |record_ref|
18
+ list.should have_record_ref(record_ref)
19
+ end
20
+ end
21
+
22
+ # :class RecordRef
23
+
24
+ end
@@ -16,7 +16,7 @@ describe NetSuite::Records::Invoice do
16
16
  :exp_cost_tax_rate_2, :fax, :fob, :gift_cert_applied, :gift_cert_redemption_list, :handling_cost, :handling_tax_1_rate,
17
17
  :handling_tax_2_rate, :handling_tax_code, :is_taxable, :item_cost_disc_amount, :item_cost_disc_print,
18
18
  :item_cost_disc_rate, :item_cost_disc_tax_1_amt, :item_cost_disc_taxable, :item_cost_discount, :item_cost_list,
19
- :item_cost_tax_code, :item_cost_tax_rate_1, :item_cost_tax_rate_2, :item_list, :job, :klass, :last_modified_date,
19
+ :item_cost_tax_code, :item_cost_tax_rate_1, :item_cost_tax_rate_2, :job, :klass, :last_modified_date,
20
20
  :lead_source, :linked_tracking_numbers, :location, :memo, :message, :message_sel, :on_credit_hold, :opportunity,
21
21
  :other_ref_name, :partner, :partners_list, :promo_code, :recognized_revenue, :rev_rec_end_date,
22
22
  :rev_rec_on_rev_commitment, :rev_rec_schedule, :rev_rec_start_date, :revenue_status, :sales_effective_date,
@@ -40,6 +40,89 @@ describe NetSuite::Records::Invoice do
40
40
  end
41
41
  end
42
42
 
43
+ describe 'item_list' do
44
+ context 'when the attributes constitute an Array of items' do
45
+ it 'builds an InvoiceItemList for each list item_list field' do
46
+ invoice.item_list = {
47
+ :item => [
48
+ {
49
+ :amount => '15993.6',
50
+ :item => {
51
+ :@internal_id => '217',
52
+ :"@xmlns:platform_core" => 'urn:core_2011_2.platform.webservices.netsuite.com',
53
+ :name => 'Dummy Item For Import'
54
+ },
55
+ :line => '1',
56
+ :price => {
57
+ :@internal_id => '-1',
58
+ :"@xmlns:platform_core" => 'urn:core_2011_2.platform.webservices.netsuite.com',
59
+ :name => ' '
60
+ },
61
+ :quantity => '1.0',
62
+ :tax_code => {
63
+ :@internal_id => '-8',
64
+ :"@xmlns:platform_core" => 'urn:core_2011_2.platform.webservices.netsuite.com',
65
+ :name => '-Not Taxable-'
66
+ }
67
+ },
68
+ {
69
+ :amount => '499.0',
70
+ :defer_rev_rec => false,
71
+ :item => {
72
+ :@internal_id => '111',
73
+ :"@xmlns:platform_core" => 'urn:core_2011_2.platform.webservices.netsuite.com',
74
+ :name => 'SAT Prep Course'
75
+ },
76
+ :line => '2',
77
+ :price => {
78
+ :@internal_id => '1',
79
+ :"@xmlns:platform_core" => 'urn:core_2011_2.platform.webservices.netsuite.com',
80
+ :name => 'Base Price'
81
+ },
82
+ :quantity => '1.0',
83
+ :rate => '499.00',
84
+ :tax_code => {
85
+ :@internal_id => '-8',
86
+ :"@xmlns:platform_core" => 'urn:core_2011_2.platform.webservices.netsuite.com',
87
+ :name => '-Not Taxable-'
88
+ }
89
+ }
90
+ ]
91
+ }
92
+ invoice.item_list.should be_kind_of(Array)
93
+ invoice.item_list.each { |il| il.should be_kind_of(NetSuite::Records::InvoiceItemList) }
94
+ end
95
+ end
96
+
97
+ context 'when the attributes constitute a single item' do
98
+ it 'builds an InvoiceItemList for the item_list field' do
99
+ invoice.item_list = {
100
+ :item => {
101
+ :amount => '15993.6',
102
+ :item => {
103
+ :@internal_id => '217',
104
+ :"@xmlns:platform_core" => 'urn:core_2011_2.platform.webservices.netsuite.com',
105
+ :name => 'Dummy Item For Import'
106
+ },
107
+ :line => '1',
108
+ :price => {
109
+ :@internal_id => '-1',
110
+ :"@xmlns:platform_core" => 'urn:core_2011_2.platform.webservices.netsuite.com',
111
+ :name => ' '
112
+ },
113
+ :quantity => '1.0',
114
+ :tax_code => {
115
+ :@internal_id => '-8',
116
+ :"@xmlns:platform_core" => 'urn:core_2011_2.platform.webservices.netsuite.com',
117
+ :name => '-Not Taxable-'
118
+ }
119
+ }
120
+ }
121
+ invoice.item_list.should be_kind_of(NetSuite::Records::InvoiceItemList)
122
+ end
123
+ end
124
+ end
125
+
43
126
  it 'handles the "klass" field correctly'
44
127
  # This field maps to 'class' but cannot be set as such in Ruby as it will cause runtime errors.
45
128
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: netsuite
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 9
10
- version: 0.0.9
9
+ - 10
10
+ version: 0.0.10
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Moran
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-01-09 00:00:00 Z
18
+ date: 2012-01-10 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: savon
@@ -113,6 +113,7 @@ files:
113
113
  - lib/netsuite/records/customer.rb
114
114
  - lib/netsuite/records/customer_addressbook_list.rb
115
115
  - lib/netsuite/records/invoice.rb
116
+ - lib/netsuite/records/invoice_item_list.rb
116
117
  - lib/netsuite/records/non_inventory_sale_item.rb
117
118
  - lib/netsuite/records/record_ref.rb
118
119
  - lib/netsuite/records/ship_address.rb
@@ -131,6 +132,7 @@ files:
131
132
  - spec/netsuite/records/bill_address_spec.rb
132
133
  - spec/netsuite/records/customer_addressbook_list_spec.rb
133
134
  - spec/netsuite/records/customer_spec.rb
135
+ - spec/netsuite/records/invoice_item_list_spec.rb
134
136
  - spec/netsuite/records/invoice_spec.rb
135
137
  - spec/netsuite/records/non_inventory_sale_item_spec.rb
136
138
  - spec/netsuite/records/record_ref_spec.rb
@@ -194,6 +196,7 @@ test_files:
194
196
  - spec/netsuite/records/bill_address_spec.rb
195
197
  - spec/netsuite/records/customer_addressbook_list_spec.rb
196
198
  - spec/netsuite/records/customer_spec.rb
199
+ - spec/netsuite/records/invoice_item_list_spec.rb
197
200
  - spec/netsuite/records/invoice_spec.rb
198
201
  - spec/netsuite/records/non_inventory_sale_item_spec.rb
199
202
  - spec/netsuite/records/record_ref_spec.rb