netsuite 0.7.9 → 0.8.0
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 +4 -4
- data/.ruby-version +1 -1
- data/README.md +35 -29
- data/lib/netsuite.rb +13 -0
- data/lib/netsuite/records/assembly_build.rb +36 -0
- data/lib/netsuite/records/assembly_component.rb +28 -0
- data/lib/netsuite/records/assembly_component_list.rb +12 -0
- data/lib/netsuite/records/assembly_unbuild.rb +37 -0
- data/lib/netsuite/records/cash_refund.rb +99 -3
- data/lib/netsuite/records/cash_sale.rb +1 -0
- data/lib/netsuite/records/credit_memo.rb +1 -0
- data/lib/netsuite/records/custom_field_list.rb +6 -1
- data/lib/netsuite/records/customer_deposit.rb +1 -0
- data/lib/netsuite/records/customer_deposit_apply.rb +17 -0
- data/lib/netsuite/records/customer_deposit_apply_list.rb +12 -0
- data/lib/netsuite/records/employee.rb +1 -0
- data/lib/netsuite/records/inventory_adjustment_inventory.rb +2 -2
- data/lib/netsuite/records/inventory_number.rb +35 -0
- data/lib/netsuite/records/inventory_number_locations.rb +16 -0
- data/lib/netsuite/records/inventory_number_locations_list.rb +10 -0
- data/lib/netsuite/records/inventory_transfer.rb +2 -2
- data/lib/netsuite/records/inventory_transfer_inventory_list.rb +0 -2
- data/lib/netsuite/records/invoice.rb +2 -2
- data/lib/netsuite/records/item_fulfillment.rb +1 -0
- data/lib/netsuite/records/job.rb +2 -1
- data/lib/netsuite/records/serialized_inventory_item.rb +2 -2
- data/lib/netsuite/records/serialized_inventory_item_location.rb +37 -0
- data/lib/netsuite/records/serialized_inventory_item_locations_list.rb +10 -0
- data/lib/netsuite/records/serialized_inventory_item_numbers.rb +15 -0
- data/lib/netsuite/records/serialized_inventory_item_numbers_list.rb +10 -0
- data/lib/netsuite/records/vendor_bill.rb +2 -1
- data/lib/netsuite/utilities.rb +14 -26
- data/lib/netsuite/version.rb +1 -1
- data/spec/netsuite/records/basic_record_spec.rb +7 -1
- data/spec/netsuite/records/custom_field_list_spec.rb +7 -1
- data/spec/netsuite/records/inventory_transfer_spec.rb +21 -0
- data/spec/netsuite/records/invoice_spec.rb +2 -2
- data/spec/netsuite/utilities_spec.rb +12 -0
- metadata +16 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8c286d33279948996df71637831759f30d28a50
|
4
|
+
data.tar.gz: c3dc58125830de21646b4fcaf905b8c25dd6793e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 654d04316831d5d9e889a22351690bd319a5383b5ef7f4a7575789021b11833bcb6ecbf92dd0d7a462b3ca374404d19ae64a30d0a69e8f183e6fb4720dd8ee83
|
7
|
+
data.tar.gz: 80490066ecb5c094666622be4300294c45ccf14794a7ca853135e798d1dd317b1806945559edf06e71cc9c2d88523cd8757f61695f6153293ceb1596c3a0eeea
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.4.0
|
data/README.md
CHANGED
@@ -3,28 +3,20 @@
|
|
3
3
|
[](http://badge.fury.io/rb/netsuite)
|
4
4
|
[](https://gemnasium.com/netsweet/netsuite)
|
5
5
|
|
6
|
-
# NetSuite Ruby SuiteTalk Gem
|
6
|
+
# NetSuite Ruby SuiteTalk API Gem
|
7
7
|
|
8
|
-
* This gem will act as a wrapper around the NetSuite SuiteTalk WebServices API.
|
9
|
-
* The gem does not cover the entire API, only the subset
|
10
|
-
*
|
11
|
-
* NetSuite development is overall a pretty poor experience. We have a list of [NetSuite Development Resources](https://github.com/NetSweet/netsuite/wiki/NetSuite-Development-Resources) that might make things a bit less painful.
|
8
|
+
* This gem will act as a wrapper around the NetSuite SuiteTalk WebServices API.
|
9
|
+
* The gem does not cover the entire API, only the subset contributors have used so far.
|
10
|
+
* NetSuite is a huge complex system. There's a lot to learn and sparse resources available to learn from. Here's a list of [NetSuite Development Resources](https://github.com/NetSweet/netsuite/wiki/NetSuite-Development-Resources) that might make things a bit less painful.
|
12
11
|
|
13
12
|
# Help & Support
|
14
13
|
|
15
14
|
Join the [slack channel](http://opensuite-slackin.herokuapp.com) for help with any NetSuite issues.
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
Add this line to your application's Gemfile:
|
20
|
-
|
21
|
-
```
|
22
|
-
gem 'netsuite'
|
23
|
-
```
|
24
|
-
|
25
|
-
This gem is built for ruby 1.9.x+, checkout the [1-8-stable](https://github.com/NetSweet/netsuite/tree/1-8-stable) branch for ruby 1.8.x support.
|
16
|
+
Please do not post usage questions as issues in GitHub.
|
26
17
|
|
27
18
|
## Testing
|
19
|
+
|
28
20
|
Before contributing a patch make sure all existing tests pass.
|
29
21
|
|
30
22
|
```
|
@@ -33,8 +25,19 @@ cd netsuite
|
|
33
25
|
bundle
|
34
26
|
bundle exec rspec
|
35
27
|
```
|
28
|
+
|
36
29
|
## Usage
|
37
30
|
|
31
|
+
### Installation
|
32
|
+
|
33
|
+
Add this line to your application's Gemfile:
|
34
|
+
|
35
|
+
```
|
36
|
+
gem 'netsuite'
|
37
|
+
```
|
38
|
+
|
39
|
+
This gem is built for ruby 1.9.x+, checkout the [1-8-stable](https://github.com/NetSweet/netsuite/tree/1-8-stable) branch for ruby 1.8.x support.
|
40
|
+
|
38
41
|
### Configuration
|
39
42
|
|
40
43
|
Not sure how to find your account id? Search for "web service preferences" in the NetSuite global search.
|
@@ -70,9 +73,7 @@ NetSuite.configure do
|
|
70
73
|
end
|
71
74
|
```
|
72
75
|
|
73
|
-
|
74
|
-
|
75
|
-
OAuth credentials are also supported:
|
76
|
+
OAuth credentials are also supported. [Learn more about how to set up token based authentication here](http://mikebian.co/using-netsuites-token-based-authentication-with-suitetalk/).
|
76
77
|
|
77
78
|
```ruby
|
78
79
|
NetSuite.configure do
|
@@ -84,7 +85,7 @@ NetSuite.configure do
|
|
84
85
|
consumer_secret ENV['NETSUITE_CONSUMER_SECRET']
|
85
86
|
token_id ENV['NETSUITE_TOKEN_ID']
|
86
87
|
token_secret ENV['NETSUITE_TOKEN_SECRET']
|
87
|
-
|
88
|
+
|
88
89
|
# oauth does not work with API versions less than 2015_2
|
89
90
|
api_version '2015_2'
|
90
91
|
end
|
@@ -100,7 +101,8 @@ customer = NetSuite::Records::Customer.get(:internal_id => 4)
|
|
100
101
|
customer.is_person
|
101
102
|
|
102
103
|
# or
|
103
|
-
NetSuite::Records::Customer.get(4)
|
104
|
+
NetSuite::Records::Customer.get(4)
|
105
|
+
|
104
106
|
|
105
107
|
# get a list of customers
|
106
108
|
customers = NetSuite::Records::Customer.get_list(:list => [4, 5, 6])
|
@@ -120,10 +122,15 @@ task.add
|
|
120
122
|
# this will only work on OS X, open a browser to the record that was just created
|
121
123
|
`open https://system.sandbox.netsuite.com/app/crm/calendar/task.nl?id=#{invoice.internal_id}`
|
122
124
|
|
123
|
-
|
125
|
+
# update a field on a record
|
126
|
+
task.update(message: 'New Message')
|
124
127
|
|
128
|
+
# delete a record
|
125
129
|
task.delete
|
126
130
|
|
131
|
+
# refresh/reload a record (helpful after adding the record for the first time)
|
132
|
+
task.reload
|
133
|
+
|
127
134
|
# using get_select_value with a standard record
|
128
135
|
NetSuite::Records::BaseRefList.get_select_value(
|
129
136
|
recordType: 'serviceSaleItem',
|
@@ -251,15 +258,14 @@ NetSuite::Records::Customer.search({
|
|
251
258
|
]
|
252
259
|
}).results
|
253
260
|
|
254
|
-
|
255
|
-
NetSuite::Records::Transaction.search({
|
261
|
+
NetSuite::Records::SalesOrder.search({
|
256
262
|
criteria: {
|
257
263
|
basic: [
|
264
|
+
# NOTE do not search for more than one transaction type at a time!
|
258
265
|
{
|
259
266
|
field: 'type',
|
260
267
|
operator: 'anyOf',
|
261
|
-
|
262
|
-
value: [ "_invoice", "_salesOrder" ]
|
268
|
+
value: [ "_invoice"]
|
263
269
|
},
|
264
270
|
{
|
265
271
|
field: 'tranDate',
|
@@ -267,10 +273,7 @@ NetSuite::Records::Transaction.search({
|
|
267
273
|
# this is needed for date range search requests, for date requests with a single param type is not needed
|
268
274
|
type: 'SearchDateField',
|
269
275
|
value: [
|
270
|
-
#
|
271
|
-
# Date.parse("1/1/2012").strftime("%Y-%m-%dT%H:%M:%S%z"),
|
272
|
-
# Date.parse("30/07/2013").strftime("%Y-%m-%dT%H:%M:%S%z")
|
273
|
-
|
276
|
+
# NetSuite requires iso8601 time format
|
274
277
|
# need to require the time library for this to work
|
275
278
|
Time.parse("01/01/2012").iso8601,
|
276
279
|
Time.parse("30/07/2013").iso8601,
|
@@ -337,7 +340,10 @@ NetSuite::Records::Transaction.search({
|
|
337
340
|
},
|
338
341
|
|
339
342
|
preferences: {
|
340
|
-
page_size: 10
|
343
|
+
page_size: 10,
|
344
|
+
|
345
|
+
# only returning body fields increases performance!
|
346
|
+
body_fields_only: true
|
341
347
|
}
|
342
348
|
}).results
|
343
349
|
|
data/lib/netsuite.rb
CHANGED
@@ -66,6 +66,10 @@ module NetSuite
|
|
66
66
|
|
67
67
|
module Records
|
68
68
|
autoload :AssemblyItem, 'netsuite/records/assembly_item'
|
69
|
+
autoload :AssemblyBuild, 'netsuite/records/assembly_build'
|
70
|
+
autoload :AssemblyComponent, 'netsuite/records/assembly_component'
|
71
|
+
autoload :AssemblyComponentList, 'netsuite/records/assembly_component_list'
|
72
|
+
autoload :AssemblyUnbuild, 'netsuite/records/assembly_unbuild'
|
69
73
|
autoload :Account, 'netsuite/records/account'
|
70
74
|
autoload :AccountingPeriod, 'netsuite/records/accounting_period'
|
71
75
|
autoload :Address, 'netsuite/records/address'
|
@@ -105,6 +109,8 @@ module NetSuite
|
|
105
109
|
autoload :CustomerCurrency, 'netsuite/records/customer_currency'
|
106
110
|
autoload :CustomerCurrencyList, 'netsuite/records/customer_currency_list'
|
107
111
|
autoload :CustomerDeposit, 'netsuite/records/customer_deposit'
|
112
|
+
autoload :CustomerDepositApplyList, 'netsuite/records/customer_deposit_apply_list'
|
113
|
+
autoload :CustomerDepositApply, 'netsuite/records/customer_deposit_apply'
|
108
114
|
autoload :CustomerPartnersList, 'netsuite/records/customer_partners_list'
|
109
115
|
autoload :CustomerPayment, 'netsuite/records/customer_payment'
|
110
116
|
autoload :CustomerPaymentApply, 'netsuite/records/customer_payment_apply'
|
@@ -148,6 +154,9 @@ module NetSuite
|
|
148
154
|
autoload :InventoryAssignmentList, 'netsuite/records/inventory_assignment_list'
|
149
155
|
autoload :InventoryDetail, 'netsuite/records/inventory_detail'
|
150
156
|
autoload :InventoryItem, 'netsuite/records/inventory_item'
|
157
|
+
autoload :InventoryNumber, 'netsuite/records/inventory_number'
|
158
|
+
autoload :InventoryNumberLocations, 'netsuite/records/inventory_number_locations'
|
159
|
+
autoload :InventoryNumberLocationsList, 'netsuite/records/inventory_number_locations_list'
|
151
160
|
autoload :InventoryTransfer, 'netsuite/records/inventory_transfer'
|
152
161
|
autoload :InventoryTransferInventory, 'netsuite/records/inventory_transfer_inventory'
|
153
162
|
autoload :InventoryTransferInventoryList, 'netsuite/records/inventory_transfer_inventory_list'
|
@@ -211,6 +220,10 @@ module NetSuite
|
|
211
220
|
autoload :ServiceResaleItem, 'netsuite/records/service_resale_item'
|
212
221
|
autoload :ServiceSaleItem, 'netsuite/records/service_sale_item'
|
213
222
|
autoload :SerializedInventoryItem, 'netsuite/records/serialized_inventory_item'
|
223
|
+
autoload :SerializedInventoryItemNumbers, 'netsuite/records/serialized_inventory_item_numbers'
|
224
|
+
autoload :SerializedInventoryItemNumbersList, 'netsuite/records/serialized_inventory_item_numbers_list'
|
225
|
+
autoload :SerializedInventoryItemLocation, 'netsuite/records/serialized_inventory_item_location'
|
226
|
+
autoload :SerializedInventoryItemLocationsList, 'netsuite/records/serialized_inventory_item_locations_list'
|
214
227
|
autoload :ShipAddress, 'netsuite/records/ship_address'
|
215
228
|
autoload :SiteCategory, 'netsuite/records/site_category'
|
216
229
|
autoload :Subsidiary, 'netsuite/records/subsidiary'
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module NetSuite
|
2
|
+
module Records
|
3
|
+
class AssemblyBuild
|
4
|
+
include Support::Fields
|
5
|
+
include Support::RecordRefs
|
6
|
+
include Support::Actions
|
7
|
+
include Support::Records
|
8
|
+
include Namespaces::TranInvt
|
9
|
+
|
10
|
+
actions :get, :add, :initialize, :delete, :update, :upsert, :upsert_list,
|
11
|
+
:search
|
12
|
+
|
13
|
+
fields :bin_numbers, :buildable, :created_date, :expiration_date,
|
14
|
+
:last_modified_date, :memo, :quantity, :serial_numbers, :total,
|
15
|
+
:tran_date, :tran_id
|
16
|
+
|
17
|
+
record_refs :klass, :created_from, :item, :custom_form,
|
18
|
+
:department, :job, :location, :posting_period, :revision,
|
19
|
+
:subsidiary, :units
|
20
|
+
|
21
|
+
field :component_list, AssemblyComponentList
|
22
|
+
field :inventory_detail, InventoryDetail
|
23
|
+
|
24
|
+
|
25
|
+
attr_reader :internal_id
|
26
|
+
attr_accessor :external_id
|
27
|
+
|
28
|
+
def initialize(attributes = {})
|
29
|
+
@internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
|
30
|
+
@external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
|
31
|
+
initialize_from_attributes_hash(attributes)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module NetSuite
|
2
|
+
module Records
|
3
|
+
class AssemblyComponent
|
4
|
+
include Support::Fields
|
5
|
+
include Support::RecordRefs
|
6
|
+
include Support::Records
|
7
|
+
include Namespaces::TranInvt
|
8
|
+
|
9
|
+
fields :bin_number, :component_numbers, :line_number, :quantity,
|
10
|
+
:quantity_on_hand
|
11
|
+
|
12
|
+
field :component_inventory_detail, InventoryDetail
|
13
|
+
|
14
|
+
record_refs :item
|
15
|
+
|
16
|
+
attr_reader :internal_id
|
17
|
+
attr_accessor :external_id
|
18
|
+
attr_accessor :search_joins
|
19
|
+
|
20
|
+
def initialize(attributes = {})
|
21
|
+
@internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
|
22
|
+
@external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
|
23
|
+
initialize_from_attributes_hash(attributes)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module NetSuite
|
2
|
+
module Records
|
3
|
+
class AssemblyUnbuild
|
4
|
+
include Support::Fields
|
5
|
+
include Support::RecordRefs
|
6
|
+
include Support::Records
|
7
|
+
include Support::Actions
|
8
|
+
include Namespaces::TranInvt
|
9
|
+
|
10
|
+
actions :get, :add, :initialize, :delete, :update, :upsert, :upsert_list,
|
11
|
+
:search
|
12
|
+
|
13
|
+
fields :bin_numbers, :built, :created_date, :expiration_date,
|
14
|
+
:last_modified_date, :memo, :quantity, :serial_numbers, :total,
|
15
|
+
:tran_date, :tran_id
|
16
|
+
|
17
|
+
field :component_list, AssemblyComponentList
|
18
|
+
field :inventory_detail, InventoryDetail
|
19
|
+
|
20
|
+
record_refs :klass, :created_from, :item, :custom_form,
|
21
|
+
:department, :job, :location, :posting_period, :revision,
|
22
|
+
:subsidiary, :units
|
23
|
+
|
24
|
+
attr_reader :internal_id
|
25
|
+
attr_accessor :external_id
|
26
|
+
attr_accessor :search_joins
|
27
|
+
|
28
|
+
def initialize(attributes = {})
|
29
|
+
@internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
|
30
|
+
@external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
|
31
|
+
initialize_from_attributes_hash(attributes)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
|
@@ -7,17 +7,113 @@ module NetSuite
|
|
7
7
|
include Support::Actions
|
8
8
|
include Namespaces::TranCust
|
9
9
|
|
10
|
-
actions :add, :
|
10
|
+
actions :get, :add, :initialize, :delete, :update, :upsert, :search
|
11
11
|
|
12
|
-
fields :
|
12
|
+
fields :alt_handling_cost,
|
13
|
+
:alt_shipping_cost,
|
14
|
+
:billing_address,
|
15
|
+
:cc_approved,
|
16
|
+
:cc_expire_date,
|
17
|
+
:cc_is_purchase_card_bin,
|
18
|
+
:cc_name,
|
19
|
+
:cc_number,
|
20
|
+
:cc_process_as_purchase_card,
|
21
|
+
:cc_street,
|
22
|
+
:cc_zip_code,
|
23
|
+
:charge_it,
|
24
|
+
:contrib_pct,
|
25
|
+
:created_date,
|
26
|
+
:currency_name,
|
27
|
+
:debit_card_issue_no,
|
28
|
+
:deferred_revenue,
|
29
|
+
:discount_rate,
|
30
|
+
:discount_total,
|
31
|
+
:email,
|
32
|
+
:est_gross_profit,
|
33
|
+
:est_gross_profit_percent,
|
34
|
+
:exchange_rate,
|
35
|
+
:exclude_commission,
|
36
|
+
:fax,
|
37
|
+
:gift_cert_applied,
|
38
|
+
:gift_cert_available,
|
39
|
+
:gift_cert_total,
|
40
|
+
:handling_cost,
|
41
|
+
:handling_tax1_rate,
|
42
|
+
:handling_tax2_rate,
|
43
|
+
:is_taxable,
|
44
|
+
:last_modified_date,
|
45
|
+
:memo,
|
46
|
+
:message,
|
47
|
+
:other_ref_num,
|
48
|
+
:pay_pal_auth_id,
|
49
|
+
:pay_pal_process,
|
50
|
+
:pay_pal_status,
|
51
|
+
:pay_pal_tran_id,
|
52
|
+
:pn_ref_num,
|
53
|
+
:recognized_revenue,
|
54
|
+
:refund_check,
|
55
|
+
:rev_rec_on_rev_commitment,
|
56
|
+
:sales_effective_date,
|
57
|
+
:shipping_cost,
|
58
|
+
:shipping_tax1_rate,
|
59
|
+
:shipping_tax2_rate,
|
60
|
+
:source,
|
61
|
+
:status,
|
62
|
+
:sub_total,
|
63
|
+
:sync_partner_teams,
|
64
|
+
:sync_sales_teams,
|
65
|
+
:tax2_total,
|
66
|
+
:tax_rate,
|
67
|
+
:tax_total,
|
68
|
+
:to_be_emailed,
|
69
|
+
:to_be_faxed,
|
70
|
+
:to_be_printed,
|
71
|
+
:to_print2,
|
72
|
+
:total,
|
73
|
+
:total_cost_estimate,
|
74
|
+
:tran_date,
|
75
|
+
:tran_id,
|
76
|
+
:tran_is_vsoe_bundle,
|
77
|
+
:valid_from,
|
78
|
+
:vat_reg_num,
|
79
|
+
:vsoe_auto_calc
|
13
80
|
|
14
81
|
field :item_list, CashRefundItemList
|
15
82
|
field :custom_field_list, CustomFieldList
|
83
|
+
# partnersList CashRefundPartnersList
|
84
|
+
# salesTeamList CashRefundSalesTeamList
|
16
85
|
|
17
|
-
record_refs :
|
86
|
+
record_refs :account,
|
87
|
+
:bill_address_list,
|
88
|
+
:klass,
|
89
|
+
:created_from,
|
90
|
+
:credit_card,
|
91
|
+
:credit_card_processor,
|
92
|
+
:currency,
|
93
|
+
:custom_form,
|
94
|
+
:department,
|
95
|
+
:discount_item,
|
96
|
+
:entity,
|
97
|
+
:gift_cert,
|
98
|
+
:handling_tax_code,
|
99
|
+
:job,
|
100
|
+
:lead_source,
|
101
|
+
:location,
|
102
|
+
:message_sel,
|
103
|
+
:partner,
|
104
|
+
:payment_method,
|
105
|
+
:posting_period,
|
106
|
+
:promo_code,
|
107
|
+
:sales_group,
|
108
|
+
:sales_rep,
|
109
|
+
:ship_method,
|
110
|
+
:shipping_tax_code,
|
111
|
+
:subsidiary,
|
112
|
+
:tax_item
|
18
113
|
|
19
114
|
attr_reader :internal_id
|
20
115
|
attr_accessor :external_id
|
116
|
+
attr_accessor :search_joins
|
21
117
|
|
22
118
|
def initialize(attributes = {})
|
23
119
|
@internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
|
@@ -25,7 +25,12 @@ module NetSuite
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def delete_custom_field(field)
|
28
|
-
custom_fields.delete_if
|
28
|
+
custom_fields.delete_if do |c|
|
29
|
+
# https://github.com/NetSweet/netsuite/issues/325
|
30
|
+
c.send(reference_id_type) &&
|
31
|
+
c.send(reference_id_type).to_sym == field
|
32
|
+
end
|
33
|
+
|
29
34
|
@custom_fields_assoc.delete(field)
|
30
35
|
end
|
31
36
|
|
@@ -16,6 +16,7 @@ module NetSuite
|
|
16
16
|
:check_num, :klass, :currency_name, :is_recurring_payment, :charge_it
|
17
17
|
|
18
18
|
field :custom_field_list, CustomFieldList
|
19
|
+
field :apply_list, CustomerDepositApplyList
|
19
20
|
|
20
21
|
record_refs :customer, :sales_order, :account, :department, :payment_method,
|
21
22
|
:custom_form, :currency, :posting_period, :subsidiary,
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module NetSuite
|
2
|
+
module Records
|
3
|
+
class CustomerDepositApply
|
4
|
+
include Support::Fields
|
5
|
+
include Support::Records
|
6
|
+
include Namespaces::TranCust
|
7
|
+
|
8
|
+
fields :amount, :apply, :apply_date, :currency, :disc, :disc_amt, :disc_date,
|
9
|
+
:doc, :due, :job, :line, :ref_num, :total, :type
|
10
|
+
|
11
|
+
def initialize(attributes = {})
|
12
|
+
initialize_from_attributes_hash(attributes)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -7,11 +7,11 @@ module NetSuite
|
|
7
7
|
include Namespaces::TranInvt
|
8
8
|
|
9
9
|
fields :adjust_qty_by, :description, :bin_numbers, :line,
|
10
|
-
:quantity_on_hand, :serial_numbers, :
|
10
|
+
:quantity_on_hand, :serial_numbers, :unit_cost
|
11
11
|
|
12
12
|
field :inventory_detail, InventoryDetail
|
13
13
|
|
14
|
-
record_refs :item, :units
|
14
|
+
record_refs :item, :units, :location
|
15
15
|
|
16
16
|
def initialize(attributes = {})
|
17
17
|
initialize_from_attributes_hash(attributes)
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module NetSuite
|
2
|
+
module Records
|
3
|
+
class InventoryNumber
|
4
|
+
include Support::Fields
|
5
|
+
include Support::RecordRefs
|
6
|
+
include Support::Records
|
7
|
+
include Support::Actions
|
8
|
+
include Namespaces::ListAcct
|
9
|
+
|
10
|
+
actions :get, :search
|
11
|
+
|
12
|
+
fields :expiration_date, :inventory_number, :isonhand, :memo, :status, :units, :location,
|
13
|
+
:quantityavailable, :quantityintransit, :quantityonhand, :quantityonorder
|
14
|
+
|
15
|
+
field :locations_list, InventoryNumberLocationsList
|
16
|
+
field :custom_field_list, CustomFieldList
|
17
|
+
|
18
|
+
record_refs :item
|
19
|
+
|
20
|
+
attr_reader :internal_id
|
21
|
+
attr_accessor :external_id
|
22
|
+
attr_accessor :search_joins
|
23
|
+
|
24
|
+
def initialize(attributes = {})
|
25
|
+
@internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
|
26
|
+
@external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
|
27
|
+
initialize_from_attributes_hash(attributes)
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.search_class_name
|
31
|
+
"InventoryNumber"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module NetSuite
|
2
|
+
module Records
|
3
|
+
class InventoryNumberLocations
|
4
|
+
include Support::Fields
|
5
|
+
include Support::Records
|
6
|
+
include Namespaces::ListAcct
|
7
|
+
|
8
|
+
fields :location, :quantity_available, :quantity_in_transit,
|
9
|
+
:quantity_on_hand, :quantity_on_order
|
10
|
+
|
11
|
+
def initialize(attributes = {})
|
12
|
+
initialize_from_attributes_hash(attributes)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -9,10 +9,10 @@ module NetSuite
|
|
9
9
|
|
10
10
|
actions :get, :add, :delete, :search, :update, :upsert, :upsert_list
|
11
11
|
|
12
|
-
fields :created_date, :last_modified_date, :tran_date, :tran_id, :memo
|
12
|
+
fields :klass, :created_date, :last_modified_date, :tran_date, :tran_id, :memo
|
13
13
|
|
14
14
|
field :inventory_list, InventoryTransferInventoryList
|
15
|
-
|
15
|
+
|
16
16
|
record_refs :posting_period, :location, :transfer_location, :department,
|
17
17
|
:subsidiary
|
18
18
|
|
@@ -20,7 +20,7 @@ module NetSuite
|
|
20
20
|
:exp_cost_tax_rate_2, :fax, :fob, :gift_cert_redemption_list, :handling_tax_1_rate,
|
21
21
|
:handling_tax_2_rate, :handling_tax_code, :is_taxable, :item_cost_disc_amount, :item_cost_disc_print,
|
22
22
|
:item_cost_disc_rate, :item_cost_disc_tax_1_amt, :item_cost_disc_taxable, :item_cost_discount, :item_cost_list,
|
23
|
-
:item_cost_tax_code, :item_cost_tax_rate_1, :item_cost_tax_rate_2, :
|
23
|
+
:item_cost_tax_code, :item_cost_tax_rate_1, :item_cost_tax_rate_2, :last_modified_date,
|
24
24
|
:linked_tracking_numbers, :memo, :message, :message_sel, :on_credit_hold, :opportunity,
|
25
25
|
:other_ref_num, :partners_list, :rev_rec_end_date,
|
26
26
|
:rev_rec_on_rev_commitment, :rev_rec_schedule, :rev_rec_start_date, :revenue_status, :sales_effective_date,
|
@@ -44,7 +44,7 @@ module NetSuite
|
|
44
44
|
|
45
45
|
record_refs :account, :bill_address_list, :custom_form, :department, :entity, :klass, :partner,
|
46
46
|
:posting_period, :ship_address_list, :terms, :location, :sales_rep, :tax_item, :created_from,
|
47
|
-
:ship_method, :lead_source, :promo_code, :subsidiary, :currency, :approval_status
|
47
|
+
:ship_method, :lead_source, :promo_code, :subsidiary, :currency, :approval_status, :job
|
48
48
|
|
49
49
|
attr_reader :internal_id
|
50
50
|
attr_accessor :external_id
|
data/lib/netsuite/records/job.rb
CHANGED
@@ -25,10 +25,11 @@ module NetSuite
|
|
25
25
|
field :custom_field_list, CustomFieldList
|
26
26
|
|
27
27
|
record_refs :billing_schedule, :category, :currency, :custom_form, :entity_status, :estimate_rev_rec_template, :job_item,
|
28
|
-
:job_type, :language, :parent, :subsidiary, :workplace
|
28
|
+
:job_type, :language, :parent, :subsidiary, :workplace, :customer
|
29
29
|
|
30
30
|
attr_reader :internal_id
|
31
31
|
attr_accessor :external_id
|
32
|
+
attr_accessor :search_joins
|
32
33
|
|
33
34
|
def initialize(attributes = {})
|
34
35
|
@internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
|
@@ -67,7 +67,6 @@ module NetSuite
|
|
67
67
|
# locations_list SerializedInventoryItemLocationsList
|
68
68
|
# matrix_option_list MatrixOptionList
|
69
69
|
# matrix_type ItemMatrixType
|
70
|
-
# numbers_list SerializedInventoryItemNumbersList
|
71
70
|
# out_of_stock_behavior ItemOutOfStockBehavior
|
72
71
|
# overall_quantity_pricing_type ItemOverallQuantityPricingType
|
73
72
|
# periodic_lot_size_type PeriodicLotSizeType
|
@@ -222,8 +221,9 @@ module NetSuite
|
|
222
221
|
# weight_unit ItemWeightUnit
|
223
222
|
|
224
223
|
field :custom_field_list, CustomFieldList
|
225
|
-
field :locations_list,
|
224
|
+
field :locations_list, SerializedInventoryItemLocationsList
|
226
225
|
field :subsidiary_list, RecordRefList
|
226
|
+
field :numbers_list, SerializedInventoryItemNumbersList
|
227
227
|
|
228
228
|
# TODO from standard copied item record; may need to be deleted
|
229
229
|
# field :pricing_matrix, PricingMatrix
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module NetSuite
|
2
|
+
module Records
|
3
|
+
class SerializedInventoryItemLocation
|
4
|
+
include Support::Fields
|
5
|
+
include Support::RecordRefs
|
6
|
+
include Support::Records
|
7
|
+
include Namespaces::ListAcct
|
8
|
+
|
9
|
+
fields :average_cost_mil, :backward_consumption_days, :build_time,
|
10
|
+
:cost, :costing_lot_size, :default_return_cost, :demand_time_force,
|
11
|
+
:fixed_lot_size, :forward_consumption_days, :invt_count_interval,
|
12
|
+
:is_wip, :last_invt_count_date, :last_purchase_price_mli, :lead_time,
|
13
|
+
:location, :next_invt_count_date, :on_hand_value_mli,
|
14
|
+
:periodic_lot_size_days, :preferred_stock_level, :quantity_available,
|
15
|
+
:quantity_back_ordered, :quantity_committed, :quantity_on_hand,
|
16
|
+
:quantity_on_order, :reorder_point, :reschedule_in_days,
|
17
|
+
:reschedule_out_days, :safety_stock_level, :serial_numbers
|
18
|
+
|
19
|
+
# field :invt_classification, ItemInvtClassification
|
20
|
+
# field :periodic_lot_size_type, PeriodicLotSizeType
|
21
|
+
|
22
|
+
record_refs :alternate_demand_source_item, :demand_source, :inventory_cost_template,
|
23
|
+
:location_id, :supply_lot_sizing_method, :supply_replenishment_method, :supply_type
|
24
|
+
|
25
|
+
attr_reader :internal_id
|
26
|
+
attr_accessor :external_id
|
27
|
+
attr_accessor :search_joins
|
28
|
+
|
29
|
+
def initialize(attributes = {})
|
30
|
+
@internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
|
31
|
+
@external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
|
32
|
+
initialize_from_attributes_hash(attributes)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module NetSuite
|
2
|
+
module Records
|
3
|
+
class SerializedInventoryItemNumbers
|
4
|
+
include Support::Fields
|
5
|
+
include Support::Records
|
6
|
+
include Namespaces::ListAcct
|
7
|
+
|
8
|
+
fields :serial_number
|
9
|
+
|
10
|
+
def initialize(attributes = {})
|
11
|
+
initialize_from_attributes_hash(attributes)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -11,7 +11,7 @@ module NetSuite
|
|
11
11
|
|
12
12
|
fields :created_date, :credit_limit, :currency_name, :discount_amount, :discount_date, :due_date, :exchange_rate,
|
13
13
|
:landed_costs_list, :landed_cost_method, :landed_cost_per_line, :last_modified_date, :memo, :tax_total,
|
14
|
-
:tax_2_total, :transaction_number, :tran_date, :tran_id, :user_total, :vat_reg_num
|
14
|
+
:tax_2_total, :transaction_number, :tran_date, :tran_id, :user_total, :vat_reg_num, :payment_hold, :amount_remaining
|
15
15
|
|
16
16
|
field :custom_field_list, CustomFieldList
|
17
17
|
field :expense_list, VendorBillExpenseList
|
@@ -25,6 +25,7 @@ module NetSuite
|
|
25
25
|
|
26
26
|
attr_reader :internal_id
|
27
27
|
attr_accessor :external_id
|
28
|
+
attr_accessor :search_joins
|
28
29
|
|
29
30
|
def initialize(attributes = {})
|
30
31
|
@internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
|
data/lib/netsuite/utilities.rb
CHANGED
@@ -214,33 +214,21 @@ module NetSuite
|
|
214
214
|
DataCenter.get(*args)
|
215
215
|
end
|
216
216
|
|
217
|
-
#
|
218
|
-
#
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
# to force the same time to be displayed in the NS UI
|
231
|
-
|
232
|
-
is_dst = Time.parse(datetime.to_s).dst?
|
233
|
-
|
234
|
-
datetime.new_offset(0) + datetime.offset + Rational(is_dst ? 5 : 6, 24)
|
235
|
-
end
|
236
|
-
|
237
|
-
# use when displaying times from a NS record
|
238
|
-
def normalize_datetime_from_netsuite(datetime)
|
239
|
-
# the code below eliminates the TimeZone offset then shifts the date forward 2 hours (7200 seconds)
|
240
|
-
# this ensures that ActiveRecord is given a UTC0 DateTime with the exact hour that
|
241
|
-
# was displayed in the NS UI (CST time zone), which will result in the correct display on the web side
|
217
|
+
# http://mikebian.co/notes-on-dates-timezones-with-netsuites-suitetalk-api/
|
218
|
+
# assumes input is UTC0 unix timestamp
|
219
|
+
def normalize_time_to_netsuite_date(unix_timestamp)
|
220
|
+
# convert to date to eliminate hr/min/sec
|
221
|
+
time = Time.at(unix_timestamp).utc.to_date.to_datetime
|
222
|
+
|
223
|
+
offset = 8
|
224
|
+
time = time.new_offset("-08:00")
|
225
|
+
|
226
|
+
if time.to_time.dst?
|
227
|
+
offset = 7
|
228
|
+
time = time.new_offset("-07:00")
|
229
|
+
end
|
242
230
|
|
243
|
-
|
231
|
+
(time + Rational(offset, 24)).iso8601
|
244
232
|
end
|
245
233
|
|
246
234
|
end
|
data/lib/netsuite/version.rb
CHANGED
@@ -4,6 +4,8 @@ describe 'basic records' do
|
|
4
4
|
let(:basic_record_list) {
|
5
5
|
[
|
6
6
|
NetSuite::Records::Currency,
|
7
|
+
NetSuite::Records::CashSale,
|
8
|
+
NetSuite::Records::CashRefund,
|
7
9
|
NetSuite::Records::Location,
|
8
10
|
NetSuite::Records::JobStatus,
|
9
11
|
NetSuite::Records::TimeBill,
|
@@ -46,7 +48,11 @@ describe 'basic records' do
|
|
46
48
|
NetSuite::Records::SerializedInventoryItem,
|
47
49
|
NetSuite::Records::DepositApplication,
|
48
50
|
NetSuite::Records::InventoryAdjustment,
|
49
|
-
NetSuite::Records::VendorReturnAuthorization
|
51
|
+
NetSuite::Records::VendorReturnAuthorization,
|
52
|
+
NetSuite::Records::AssemblyBuild,
|
53
|
+
NetSuite::Records::AssemblyUnbuild,
|
54
|
+
NetSuite::Records::AssemblyComponent,
|
55
|
+
NetSuite::Records::InventoryNumber
|
50
56
|
]
|
51
57
|
}
|
52
58
|
|
@@ -6,7 +6,7 @@ describe NetSuite::Records::CustomFieldList do
|
|
6
6
|
it 'has a custom_fields attribute' do
|
7
7
|
expect(list.custom_fields).to be_kind_of(Array)
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
it 'accepts a collection of CustomField records' do
|
11
11
|
field = NetSuite::Records::CustomField.new({:value=>{:internal_id=>"5", :type_id=>"103"},
|
12
12
|
:script_id=>"custitem_item_category", :"@xsi:type"=>"platformCore:SelectCustomFieldRef"})
|
@@ -41,6 +41,12 @@ describe NetSuite::Records::CustomFieldList do
|
|
41
41
|
list.custom_fields.first.value.should == 'a value'
|
42
42
|
list.custom_fields.first.type.should == 'platformCore:StringCustomFieldRef'
|
43
43
|
end
|
44
|
+
|
45
|
+
# https://github.com/NetSweet/netsuite/issues/325
|
46
|
+
it 'should create a custom field entry when some fields exist without scriptIds' do
|
47
|
+
list.custom_fields << NetSuite::Records::CustomField.new
|
48
|
+
list.custrecord_somefield = 123
|
49
|
+
end
|
44
50
|
end
|
45
51
|
|
46
52
|
context 'custom field internalId-to-scriptId transition at WSDL 2013_2:' do
|
@@ -19,6 +19,27 @@ describe NetSuite::Records::InventoryTransfer do
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
describe '#to_record' do
|
23
|
+
it 'includes the inventory_list' do
|
24
|
+
attributes = {
|
25
|
+
:inventory => [{
|
26
|
+
:inventory_detail => {
|
27
|
+
:custom_form => {
|
28
|
+
internal_id: 1
|
29
|
+
},
|
30
|
+
:inventory_assignment_list => {
|
31
|
+
:inventory_assignment => [{
|
32
|
+
quantity: 3
|
33
|
+
}]
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}]
|
37
|
+
}
|
38
|
+
inventory_transfer.inventory_list = attributes
|
39
|
+
list = inventory_transfer.to_record.fetch("tranInvt:inventoryList").fetch("tranInvt:inventory")
|
40
|
+
expect(list.count).to eq(1)
|
41
|
+
end
|
42
|
+
end
|
22
43
|
|
23
44
|
describe '#inventory_list' do
|
24
45
|
it 'can be set from attributes' do
|
@@ -16,7 +16,7 @@ describe NetSuite::Records::Invoice do
|
|
16
16
|
:exp_cost_tax_rate_2, :fax, :fob, :gift_cert_redemption_list, :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, :
|
19
|
+
:item_cost_tax_code, :item_cost_tax_rate_1, :item_cost_tax_rate_2, :last_modified_date,
|
20
20
|
:linked_tracking_numbers, :memo, :message, :message_sel, :on_credit_hold, :opportunity,
|
21
21
|
:other_ref_num, :partners_list, :rev_rec_end_date,
|
22
22
|
:rev_rec_on_rev_commitment, :rev_rec_schedule, :rev_rec_start_date, :revenue_status, :sales_effective_date,
|
@@ -43,7 +43,7 @@ describe NetSuite::Records::Invoice do
|
|
43
43
|
|
44
44
|
it 'has the right record_refs' do
|
45
45
|
[
|
46
|
-
:account, :bill_address_list, :custom_form, :department, :entity, :klass, :posting_period, :ship_address_list, :terms,
|
46
|
+
:account, :bill_address_list, :job, :custom_form, :department, :entity, :klass, :posting_period, :ship_address_list, :terms,
|
47
47
|
:created_from, :location, :sales_rep, :ship_method, :tax_item, :partner, :lead_source, :promo_code, :subsidiary
|
48
48
|
].each do |record_ref|
|
49
49
|
expect(invoice).to have_record_ref(record_ref)
|
@@ -1,6 +1,18 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe NetSuite::Utilities do
|
4
|
+
describe 'time utilities' do
|
5
|
+
it '#normalize_time_to_netsuite_date' do
|
6
|
+
stamp = DateTime.parse('Wed, 27 Jul 2016 00:00:00 -0000')
|
7
|
+
formatted_date = NetSuite::Utilities.normalize_time_to_netsuite_date(stamp.to_time.to_i)
|
8
|
+
expect(formatted_date).to eq('2016-07-27T00:00:00-07:00')
|
9
|
+
|
10
|
+
no_dst_stamp = DateTime.parse('Sun, November 6 2017 00:00:00 -0000')
|
11
|
+
formatted_date = NetSuite::Utilities.normalize_time_to_netsuite_date(no_dst_stamp.to_time.to_i)
|
12
|
+
expect(formatted_date).to eq('2017-11-06T00:00:00-08:00')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
4
16
|
describe '#get_record' do
|
5
17
|
context 'caching' do
|
6
18
|
it 'does not hit the netsuite API' do
|
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
|
+
version: 0.8.0
|
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: 2017-
|
12
|
+
date: 2017-04-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: savon
|
@@ -97,7 +97,11 @@ files:
|
|
97
97
|
- lib/netsuite/records/account.rb
|
98
98
|
- lib/netsuite/records/accounting_period.rb
|
99
99
|
- lib/netsuite/records/address.rb
|
100
|
+
- lib/netsuite/records/assembly_build.rb
|
101
|
+
- lib/netsuite/records/assembly_component.rb
|
102
|
+
- lib/netsuite/records/assembly_component_list.rb
|
100
103
|
- lib/netsuite/records/assembly_item.rb
|
104
|
+
- lib/netsuite/records/assembly_unbuild.rb
|
101
105
|
- lib/netsuite/records/base_ref_list.rb
|
102
106
|
- lib/netsuite/records/bill_address.rb
|
103
107
|
- lib/netsuite/records/billing_schedule.rb
|
@@ -142,6 +146,8 @@ files:
|
|
142
146
|
- lib/netsuite/records/customer_currency.rb
|
143
147
|
- lib/netsuite/records/customer_currency_list.rb
|
144
148
|
- lib/netsuite/records/customer_deposit.rb
|
149
|
+
- lib/netsuite/records/customer_deposit_apply.rb
|
150
|
+
- lib/netsuite/records/customer_deposit_apply_list.rb
|
145
151
|
- lib/netsuite/records/customer_partner.rb
|
146
152
|
- lib/netsuite/records/customer_partners_list.rb
|
147
153
|
- lib/netsuite/records/customer_payment.rb
|
@@ -178,6 +184,9 @@ files:
|
|
178
184
|
- lib/netsuite/records/inventory_assignment_list.rb
|
179
185
|
- lib/netsuite/records/inventory_detail.rb
|
180
186
|
- lib/netsuite/records/inventory_item.rb
|
187
|
+
- lib/netsuite/records/inventory_number.rb
|
188
|
+
- lib/netsuite/records/inventory_number_locations.rb
|
189
|
+
- lib/netsuite/records/inventory_number_locations_list.rb
|
181
190
|
- lib/netsuite/records/inventory_transfer.rb
|
182
191
|
- lib/netsuite/records/inventory_transfer_inventory.rb
|
183
192
|
- lib/netsuite/records/inventory_transfer_inventory_list.rb
|
@@ -239,6 +248,10 @@ files:
|
|
239
248
|
- lib/netsuite/records/sales_order_ship_group_list.rb
|
240
249
|
- lib/netsuite/records/sales_tax_item.rb
|
241
250
|
- lib/netsuite/records/serialized_inventory_item.rb
|
251
|
+
- lib/netsuite/records/serialized_inventory_item_location.rb
|
252
|
+
- lib/netsuite/records/serialized_inventory_item_locations_list.rb
|
253
|
+
- lib/netsuite/records/serialized_inventory_item_numbers.rb
|
254
|
+
- lib/netsuite/records/serialized_inventory_item_numbers_list.rb
|
242
255
|
- lib/netsuite/records/service_resale_item.rb
|
243
256
|
- lib/netsuite/records/service_sale_item.rb
|
244
257
|
- lib/netsuite/records/ship_address.rb
|
@@ -484,7 +497,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
484
497
|
version: '0'
|
485
498
|
requirements: []
|
486
499
|
rubyforge_project:
|
487
|
-
rubygems_version: 2.
|
500
|
+
rubygems_version: 2.6.8
|
488
501
|
signing_key:
|
489
502
|
specification_version: 4
|
490
503
|
summary: NetSuite SuiteTalk API (SOAP) Wrapper
|