netsuite 0.7.9 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Gem Version](https://badge.fury.io/rb/netsuite.svg)](http://badge.fury.io/rb/netsuite)
|
4
4
|
[![Dependency Status](https://gemnasium.com/roidrage/lograge.svg)](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
|