netsuite 0.2.6 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +3 -0
- data/Gemfile +2 -0
- data/README.md +132 -54
- data/lib/netsuite.rb +123 -76
- data/lib/netsuite/actions/add.rb +1 -0
- data/lib/netsuite/actions/delete.rb +1 -0
- data/lib/netsuite/actions/get.rb +1 -0
- data/lib/netsuite/actions/get_all.rb +67 -0
- data/lib/netsuite/actions/get_list.rb +2 -1
- data/lib/netsuite/actions/get_select_value.rb +1 -0
- data/lib/netsuite/actions/initialize.rb +1 -0
- data/lib/netsuite/actions/login.rb +2 -0
- data/lib/netsuite/actions/search.rb +3 -2
- data/lib/netsuite/actions/update.rb +18 -0
- data/lib/netsuite/actions/upsert.rb +1 -0
- data/lib/netsuite/actions/upsert_list.rb +114 -0
- data/lib/netsuite/configuration.rb +5 -0
- data/lib/netsuite/namespaces/file_cabinet.rb +11 -0
- data/lib/netsuite/namespaces/list_emp.rb +12 -0
- data/lib/netsuite/namespaces/list_mkt.rb +12 -0
- data/lib/netsuite/namespaces/list_website.rb +11 -0
- data/lib/netsuite/namespaces/tran_invt.rb +11 -0
- data/lib/netsuite/records/accounting_period.rb +1 -1
- data/lib/netsuite/records/assembly_item.rb +10 -4
- data/lib/netsuite/records/billing_schedule.rb +33 -0
- data/lib/netsuite/records/billing_schedule_milestone.rb +28 -0
- data/lib/netsuite/records/billing_schedule_milestone_list.rb +33 -0
- data/lib/netsuite/records/billing_schedule_recurrence.rb +28 -0
- data/lib/netsuite/records/billing_schedule_recurrence_list.rb +33 -0
- data/lib/netsuite/records/bin.rb +22 -0
- data/lib/netsuite/records/campaign.rb +28 -0
- data/lib/netsuite/records/cash_refund.rb +1 -1
- data/lib/netsuite/records/classification.rb +1 -1
- data/lib/netsuite/records/contact.rb +1 -1
- data/lib/netsuite/records/contact_access_roles.rb +14 -0
- data/lib/netsuite/records/contact_access_roles_list.rb +9 -0
- data/lib/netsuite/records/custom_field.rb +2 -1
- data/lib/netsuite/records/custom_field_list.rb +23 -4
- data/lib/netsuite/records/custom_list.rb +27 -0
- data/lib/netsuite/records/custom_list_custom_value.rb +14 -0
- data/lib/netsuite/records/custom_list_custom_value_list.rb +13 -0
- data/lib/netsuite/records/custom_record.rb +1 -1
- data/lib/netsuite/records/custom_record_type.rb +1 -1
- data/lib/netsuite/records/customer.rb +4 -4
- data/lib/netsuite/records/customer_addressbook.rb +8 -5
- data/lib/netsuite/records/customer_addressbook_list.rb +13 -1
- data/lib/netsuite/records/customer_deposit.rb +3 -2
- data/lib/netsuite/records/customer_payment.rb +1 -1
- data/lib/netsuite/records/customer_refund.rb +1 -1
- data/lib/netsuite/records/department.rb +4 -2
- data/lib/netsuite/records/deposit.rb +1 -1
- data/lib/netsuite/records/deposit_cash_back.rb +2 -2
- data/lib/netsuite/records/deposit_other.rb +2 -2
- data/lib/netsuite/records/discount_item.rb +32 -0
- data/lib/netsuite/records/employee.rb +20 -0
- data/lib/netsuite/records/file.rb +28 -0
- data/lib/netsuite/records/inventory_assignment.rb +24 -0
- data/lib/netsuite/records/inventory_assignment_list.rb +32 -0
- data/lib/netsuite/records/inventory_detail.rb +18 -0
- data/lib/netsuite/records/inventory_transfer.rb +29 -0
- data/lib/netsuite/records/inventory_transfer_inventory.rb +21 -0
- data/lib/netsuite/records/inventory_transfer_inventory_list.rb +33 -0
- data/lib/netsuite/records/item_fulfillment.rb +1 -1
- data/lib/netsuite/records/item_fulfillment_item_list.rb +3 -21
- data/lib/netsuite/records/item_member.rb +21 -0
- data/lib/netsuite/records/journal_entry.rb +1 -1
- data/lib/netsuite/records/kit_item.rb +1 -1
- data/lib/netsuite/records/location.rb +3 -1
- data/lib/netsuite/records/member_list.rb +32 -0
- data/lib/netsuite/records/non_inventory_sale_item.rb +4 -1
- data/lib/netsuite/records/partner.rb +21 -0
- data/lib/netsuite/records/promotion_code.rb +38 -0
- data/lib/netsuite/records/record_ref_list.rb +40 -0
- data/lib/netsuite/records/role_list.rb +25 -0
- data/lib/netsuite/records/sales_order.rb +6 -2
- data/lib/netsuite/records/sales_tax_item.rb +32 -0
- data/lib/netsuite/records/site_category.rb +33 -0
- data/lib/netsuite/records/subsidiary.rb +38 -0
- data/lib/netsuite/records/tax_type.rb +22 -0
- data/lib/netsuite/records/term.rb +1 -1
- data/lib/netsuite/records/units_type.rb +25 -0
- data/lib/netsuite/records/units_type_uom.rb +20 -0
- data/lib/netsuite/records/units_type_uom_list.rb +33 -0
- data/lib/netsuite/records/work_order.rb +38 -0
- data/lib/netsuite/records/work_order_item.rb +31 -0
- data/lib/netsuite/records/work_order_item_list.rb +31 -0
- data/lib/netsuite/support/actions.rb +4 -0
- data/lib/netsuite/support/base.rb +21 -0
- data/lib/netsuite/support/country.rb +273 -0
- data/lib/netsuite/support/search_result.rb +4 -0
- data/lib/netsuite/support/sublist.rb +54 -0
- data/lib/netsuite/version.rb +1 -1
- data/spec/netsuite/actions/search_spec.rb +1 -1
- data/spec/netsuite/actions/update_spec.rb +62 -31
- data/spec/netsuite/actions/upsert_list_spec.rb +112 -0
- data/spec/netsuite/records/account_spec.rb +4 -4
- data/spec/netsuite/records/accounting_period_spec.rb +4 -4
- data/spec/netsuite/records/assembly_item_spec.rb +38 -0
- data/spec/netsuite/records/billing_schedule_milestone_list_spec.rb +24 -0
- data/spec/netsuite/records/billing_schedule_milestone_spec.rb +51 -0
- data/spec/netsuite/records/billing_schedule_recurrence_list_spec.rb +24 -0
- data/spec/netsuite/records/billing_schedule_recurrence_spec.rb +49 -0
- data/spec/netsuite/records/billing_schedule_spec.rb +164 -0
- data/spec/netsuite/records/campaign_spec.rb +43 -0
- data/spec/netsuite/records/cash_refund_spec.rb +1 -1
- data/spec/netsuite/records/classification_spec.rb +2 -2
- data/spec/netsuite/records/credit_memo_spec.rb +4 -4
- data/spec/netsuite/records/custom_field_list_spec.rb +10 -0
- data/spec/netsuite/records/custom_list_spec.rb +21 -0
- data/spec/netsuite/records/custom_record_spec.rb +5 -5
- data/spec/netsuite/records/custom_record_type_spec.rb +5 -5
- data/spec/netsuite/records/customer_addressbook_list_spec.rb +19 -1
- data/spec/netsuite/records/customer_addressbook_spec.rb +42 -13
- data/spec/netsuite/records/customer_payment_spec.rb +4 -4
- data/spec/netsuite/records/customer_refund_spec.rb +4 -4
- data/spec/netsuite/records/customer_spec.rb +80 -6
- data/spec/netsuite/records/department_spec.rb +4 -4
- data/spec/netsuite/records/deposit_spec.rb +22 -4
- data/spec/netsuite/records/discount_item_spec.rb +124 -0
- data/spec/netsuite/records/inventory_item_spec.rb +4 -4
- data/spec/netsuite/records/inventory_transfer_spec.rb +58 -0
- data/spec/netsuite/records/invoice_spec.rb +4 -4
- data/spec/netsuite/records/job_spec.rb +7 -7
- data/spec/netsuite/records/journal_entry_spec.rb +5 -5
- data/spec/netsuite/records/non_inventory_sale_item_spec.rb +4 -4
- data/spec/netsuite/records/payment_method_spec.rb +1 -1
- data/spec/netsuite/records/pomo_code_spec.rb +40 -0
- data/spec/netsuite/records/sales_order_spec.rb +18 -18
- data/spec/netsuite/records/sales_tax_item_spec.rb +30 -0
- data/spec/netsuite/records/service_sale_item_spec.rb +4 -4
- data/spec/netsuite/records/site_category_spec.rb +51 -0
- data/spec/netsuite/records/subsidiary_spec.rb +25 -0
- data/spec/netsuite/records/support_case_spec.rb +8 -8
- data/spec/netsuite/records/tax_type_spec.rb +11 -0
- data/spec/netsuite/records/term_spec.rb +4 -4
- data/spec/netsuite/records/units_type_spec.rb +33 -0
- data/spec/netsuite/records/units_type_uom_list_spec.rb +23 -0
- data/spec/netsuite/records/units_type_uom_spec.rb +14 -0
- data/spec/netsuite/records/work_order_item_list_spec.rb +26 -0
- data/spec/netsuite/records/work_order_item_spec.rb +45 -0
- data/spec/netsuite/records/work_order_spec.rb +92 -0
- data/spec/netsuite/support/record_refs_spec.rb +1 -1
- data/spec/netsuite/support/sublist_spec.rb +36 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/fixtures/update/update_customer_error.xml +21 -0
- data/spec/support/fixtures/update/update_customer_multiple_errors.xml +25 -0
- data/spec/support/fixtures/upsert_list/upsert_list_customers.xml +21 -0
- data/spec/support/fixtures/upsert_list/upsert_list_one_customer.xml +17 -0
- data/spec/support/fixtures/upsert_list/upsert_list_with_errors.xml +32 -0
- data/spec/support/read_only_field_matcher.rb +1 -1
- metadata +115 -5
- checksums.yaml +0 -15
data/lib/netsuite/actions/add.rb
CHANGED
data/lib/netsuite/actions/get.rb
CHANGED
@@ -0,0 +1,67 @@
|
|
1
|
+
# https://system.netsuite.com/help/helpcenter/en_US/Output/Help/SuiteCloudCustomizationScriptingWebServices/SuiteTalkWebServices/getAll.html
|
2
|
+
module NetSuite
|
3
|
+
module Actions
|
4
|
+
class GetAll
|
5
|
+
include Support::Requests
|
6
|
+
|
7
|
+
def initialize(klass)
|
8
|
+
@klass = klass
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def request(credentials={})
|
14
|
+
NetSuite::Configuration.connection(
|
15
|
+
{ element_form_default: :unqualified }, credentials
|
16
|
+
).call(:get_all, message: request_body)
|
17
|
+
end
|
18
|
+
|
19
|
+
# <soap:Body>
|
20
|
+
# <platformMsgs:getAll>
|
21
|
+
# <record>
|
22
|
+
# <recordType>salesTaxItem</recordType>
|
23
|
+
# </record>
|
24
|
+
# </platformMsgs:getAll>
|
25
|
+
# </soap:Body>
|
26
|
+
def request_body
|
27
|
+
type = @klass.to_s.split('::').last.sub(/[A-Z]/) { |m| m[0].downcase }
|
28
|
+
|
29
|
+
{
|
30
|
+
record: [
|
31
|
+
record_type: type
|
32
|
+
]
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def success?
|
37
|
+
@success ||= response_hash[:status][:@is_success] == 'true'
|
38
|
+
end
|
39
|
+
|
40
|
+
def response_body
|
41
|
+
@response_body ||= response_hash[:record_list][:record]
|
42
|
+
end
|
43
|
+
|
44
|
+
def response_hash
|
45
|
+
@response_hash = @response.body[:get_all_response][:get_all_result]
|
46
|
+
end
|
47
|
+
|
48
|
+
module Support
|
49
|
+
|
50
|
+
def self.included(base)
|
51
|
+
base.extend(ClassMethods)
|
52
|
+
end
|
53
|
+
|
54
|
+
module ClassMethods
|
55
|
+
def get_all(credentials = {})
|
56
|
+
response = NetSuite::Actions::GetAll.call([self], credentials)
|
57
|
+
if response.success?
|
58
|
+
response.body.map { |attr| new(attr) }
|
59
|
+
else
|
60
|
+
raise RecordNotFound, "#{self} with OPTIONS=#{options.inspect} could not be found"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# https://system.netsuite.com/help/helpcenter/en_US/Output/Help/SuiteCloudCustomizationScriptingWebServices/SuiteTalkWebServices/getList.html
|
1
2
|
module NetSuite
|
2
3
|
module Actions
|
3
4
|
class GetList
|
@@ -87,4 +88,4 @@ module NetSuite
|
|
87
88
|
end
|
88
89
|
end
|
89
90
|
end
|
90
|
-
end
|
91
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# https://system.netsuite.com/help/helpcenter/en_US/Output/Help/SuiteCloudCustomizationScriptingWebServices/SuiteTalkWebServices/login.html
|
1
2
|
module NetSuite
|
2
3
|
module Actions
|
3
4
|
class Login
|
@@ -6,6 +7,7 @@ module NetSuite
|
|
6
7
|
passport = NetSuite::Configuration.auth_header.dup
|
7
8
|
passport['platformMsgs:passport']['platformCore:email'] = credentials[:email] || ''
|
8
9
|
passport['platformMsgs:passport']['platformCore:password'] = credentials[:password] || ''
|
10
|
+
passport['platformMsgs:passport']['platformCore:role'] = credentials[:role] || ''
|
9
11
|
|
10
12
|
begin
|
11
13
|
response = NetSuite::Configuration.connection(soap_header: {}).call :login, message: passport
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# https://system.netsuite.com/help/helpcenter/en_US/Output/Help/SuiteCloudCustomizationScriptingWebServices/SuiteTalkWebServices/search.html
|
1
2
|
module NetSuite
|
2
3
|
module Actions
|
3
4
|
class Search
|
@@ -21,7 +22,7 @@ module NetSuite
|
|
21
22
|
# https://system.netsuite.com/help/helpcenter/en_US/Output/Help/SuiteCloudCustomizationScriptingWebServices/SuiteTalkWebServices/SettingSearchPreferences.html
|
22
23
|
# https://webservices.netsuite.com/xsd/platform/v2012_2_0/messages.xsd
|
23
24
|
|
24
|
-
preferences = NetSuite::Configuration.auth_header(credentials).
|
25
|
+
preferences = NetSuite::Configuration.auth_header(credentials).merge(
|
25
26
|
(@options.delete(:preferences) || {}).inject({'platformMsgs:SearchPreferences' => {}}) do |h, (k, v)|
|
26
27
|
h['platformMsgs:SearchPreferences'][k.to_s.lower_camelcase] = v
|
27
28
|
h
|
@@ -116,7 +117,7 @@ module NetSuite
|
|
116
117
|
'platformCore:customField' => custom_field_list,
|
117
118
|
:attributes! => {
|
118
119
|
'platformCore:customField' => {
|
119
|
-
'
|
120
|
+
'scriptId' => condition[:value].map { |h| h[:field] },
|
120
121
|
'operator' => condition[:value].map { |h| h[:operator] },
|
121
122
|
'xsi:type' => condition[:value].map { |h| "platformCore:#{h[:type]}" }
|
122
123
|
}
|
@@ -1,8 +1,11 @@
|
|
1
|
+
# https://system.netsuite.com/help/helpcenter/en_US/Output/Help/SuiteCloudCustomizationScriptingWebServices/SuiteTalkWebServices/update.html
|
1
2
|
module NetSuite
|
2
3
|
module Actions
|
3
4
|
class Update
|
4
5
|
include Support::Requests
|
5
6
|
|
7
|
+
attr_reader :response_hash
|
8
|
+
|
6
9
|
def initialize(klass, attributes)
|
7
10
|
@klass = klass
|
8
11
|
@attributes = attributes
|
@@ -48,15 +51,30 @@ module NetSuite
|
|
48
51
|
@response_body ||= response_hash[:base_ref]
|
49
52
|
end
|
50
53
|
|
54
|
+
def response_errors
|
55
|
+
if response_hash[:status] && response_hash[:status][:status_detail]
|
56
|
+
@response_errors ||= errors
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
51
60
|
def response_hash
|
52
61
|
@response_hash ||= @response.to_hash[:update_response][:write_response]
|
53
62
|
end
|
54
63
|
|
64
|
+
def errors
|
65
|
+
error_obj = response_hash[:status][:status_detail]
|
66
|
+
error_obj = [error_obj] if error_obj.class == Hash
|
67
|
+
error_obj.map do |error|
|
68
|
+
NetSuite::Error.new(error)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
55
72
|
module Support
|
56
73
|
def update(options = {}, credentials={})
|
57
74
|
options.merge!(:internal_id => internal_id) if respond_to?(:internal_id) && internal_id
|
58
75
|
options.merge!(:external_id => external_id) if respond_to?(:external_id) && external_id
|
59
76
|
response = NetSuite::Actions::Update.call([self.class, options], credentials)
|
77
|
+
@errors = response.errors
|
60
78
|
response.success?
|
61
79
|
end
|
62
80
|
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
# https://system.netsuite.com/help/helpcenter/en_US/Output/Help/SuiteCloudCustomizationScriptingWebServices/SuiteTalkWebServices/upsertList.html
|
2
|
+
module NetSuite
|
3
|
+
module Actions
|
4
|
+
class UpsertList
|
5
|
+
include Support::Requests
|
6
|
+
|
7
|
+
def initialize(*objects)
|
8
|
+
@objects = objects
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def request(credentials={})
|
14
|
+
NetSuite::Configuration.connection(
|
15
|
+
{ element_form_default: :unqualified }, credentials
|
16
|
+
).call(:upsert_list, message: request_body)
|
17
|
+
end
|
18
|
+
|
19
|
+
# <soap:Body>
|
20
|
+
# <upsertList>
|
21
|
+
# <record xsi:type="listRel:Customer" externalId="ext1">
|
22
|
+
# <listRel:entityId>Shutter Fly</listRel:entityId>
|
23
|
+
# <listRel:companyName>Shutter Fly, Inc</listRel:companyName>
|
24
|
+
# </record>
|
25
|
+
# <record xsi:type="listRel:Customer" externalId="ext2">
|
26
|
+
# <listRel:entityId>Target</listRel:entityId>
|
27
|
+
# <listRel:companyName>Target</listRel:companyName>
|
28
|
+
# </record>
|
29
|
+
# </upsertList>
|
30
|
+
# </soap:Body>
|
31
|
+
def request_body
|
32
|
+
attrs = @objects.map do |o|
|
33
|
+
hash = o.to_record.merge({
|
34
|
+
'@xsi:type' => o.record_type
|
35
|
+
})
|
36
|
+
|
37
|
+
if o.respond_to?(:external_id) && o.external_id
|
38
|
+
hash['@externalId'] = o.external_id
|
39
|
+
end
|
40
|
+
|
41
|
+
hash
|
42
|
+
end
|
43
|
+
|
44
|
+
{ 'record' => attrs }
|
45
|
+
end
|
46
|
+
|
47
|
+
def response_hash
|
48
|
+
@response_hash ||= Array[@response.body[:upsert_list_response][:write_response_list][:write_response]].flatten
|
49
|
+
end
|
50
|
+
|
51
|
+
def response_body
|
52
|
+
@response_body ||= response_hash.map { |h| h[:base_ref] }
|
53
|
+
end
|
54
|
+
|
55
|
+
def response_errors
|
56
|
+
if response_hash.any? { |h| h[:status] && h[:status][:status_detail] }
|
57
|
+
@response_errors ||= errors
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def errors
|
62
|
+
errors = response_hash.select { |h| h[:status] && h[:status][:status_detail] }.map do |obj|
|
63
|
+
error_obj = obj[:status][:status_detail]
|
64
|
+
error_obj = [error_obj] if error_obj.class == Hash
|
65
|
+
errors = error_obj.map do |error|
|
66
|
+
NetSuite::Error.new(error)
|
67
|
+
end
|
68
|
+
|
69
|
+
[obj[:base_ref][:@external_id], errors]
|
70
|
+
end
|
71
|
+
Hash[errors]
|
72
|
+
end
|
73
|
+
|
74
|
+
def success?
|
75
|
+
@success ||= response_hash.all? { |h| h[:status][:@is_success] == 'true' }
|
76
|
+
end
|
77
|
+
|
78
|
+
module Support
|
79
|
+
|
80
|
+
def self.included(base)
|
81
|
+
base.extend(ClassMethods)
|
82
|
+
end
|
83
|
+
|
84
|
+
module ClassMethods
|
85
|
+
def upsert_list(records, credentials = {})
|
86
|
+
netsuite_records = records.map do |r|
|
87
|
+
if r.kind_of?(self)
|
88
|
+
r
|
89
|
+
else
|
90
|
+
self.new(r)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
response = NetSuite::Actions::UpsertList.call(netsuite_records, credentials)
|
95
|
+
|
96
|
+
if response.success?
|
97
|
+
response.body.map do |attr|
|
98
|
+
record = netsuite_records.find do |r|
|
99
|
+
r.external_id == attr[:@external_id]
|
100
|
+
end
|
101
|
+
|
102
|
+
record.instance_variable_set('@internal_id', attr[:@internal_id])
|
103
|
+
end
|
104
|
+
|
105
|
+
netsuite_records
|
106
|
+
else
|
107
|
+
false
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -101,8 +101,13 @@ module NetSuite
|
|
101
101
|
'xmlns:listAcct' => "urn:accounting_#{api_version}.lists.webservices.netsuite.com",
|
102
102
|
'xmlns:tranBank' => "urn:bank_#{api_version}.transactions.webservices.netsuite.com",
|
103
103
|
'xmlns:tranCust' => "urn:customers_#{api_version}.transactions.webservices.netsuite.com",
|
104
|
+
'xmlns:tranInvt' => "urn:inventory_#{api_version}.transactions.webservices.netsuite.com",
|
104
105
|
'xmlns:listSupport' => "urn:support_#{api_version}.lists.webservices.netsuite.com",
|
105
106
|
'xmlns:tranGeneral' => "urn:general_#{api_version}.transactions.webservices.netsuite.com",
|
107
|
+
'xmlns:listMkt' => "urn:marketing_#{api_version}.lists.webservices.netsuite.com",
|
108
|
+
'xmlns:listWebsite' => "urn:website_#{api_version}.lists.webservices.netsuite.com",
|
109
|
+
'xmlns:fileCabinet' => "urn:filecabinet_#{api_version}.documents.webservices.netsuite.com",
|
110
|
+
'xmlns:listEmp' => "urn:employees_#{api_version}.lists.webservices.netsuite.com"
|
106
111
|
}
|
107
112
|
end
|
108
113
|
|
@@ -6,7 +6,7 @@ module NetSuite
|
|
6
6
|
include Support::Actions
|
7
7
|
include Namespaces::ListAcct
|
8
8
|
|
9
|
-
actions :get, :add, :delete, :search
|
9
|
+
actions :get, :add, :delete, :upsert, :search
|
10
10
|
|
11
11
|
fields :allow_non_gl_changes, :end_date, :is_adjust, :is_quarter, :is_year, :period_name, :start_date
|
12
12
|
|
@@ -7,14 +7,14 @@ module NetSuite
|
|
7
7
|
include Support::Actions
|
8
8
|
include Namespaces::ListAcct
|
9
9
|
|
10
|
-
actions :get, :add, :delete
|
10
|
+
actions :get, :get_list, :get_select_value, :add, :delete, :update, :upsert, :upsert_list, :search
|
11
11
|
|
12
|
-
fields :auto_lead_time, :auto_preferred_stock_level, :auto_reorder_point, :available_to_partners, :average_cost,
|
12
|
+
fields :auto_lead_time, :auto_preferred_stock_level, :auto_reorder_point, :available_to_partners, :average_cost, :build_entire_assembly,
|
13
13
|
:copy_description, :cost, :cost_estimate, :cost_estimate_type, :cost_estimate_units, :cost_units, :costing_method,
|
14
|
-
:costing_method_display, :country_of_manufacture, :created_date, :currency, :date_converted_to_inv,
|
14
|
+
:costing_method_display, :country_of_manufacture, :created_date, :currency, :date_converted_to_inv, :description,
|
15
15
|
:default_return_cost, :demand_modifier, :display_name, :dont_show_price, :enforce_min_qty_internally,
|
16
16
|
:exclude_from_sitemap, :featured_description, :fixed_lot_size, :handling_cost, :handling_cost_units, :include_children,
|
17
|
-
:is_donation_item, :is_drop_ship_item, :is_gco_compliant, :is_inactive, :is_online, :is_special_order_item, :is_taxable,
|
17
|
+
:is_donation_item, :is_drop_ship_item, :is_gco_compliant, :is_inactive, :is_online, :is_special_order_item, :is_special_work_order_item, :is_taxable,
|
18
18
|
:item_id, :last_modified_date, :last_purchase_price, :lead_time, :manufacturer, :manufacturer_addr1, :manufacturer_city,
|
19
19
|
:manufacturer_state, :manufacturer_tariff, :manufacturer_tax_id, :manufacturer_zip, :match_bill_to_receipt,
|
20
20
|
:matrix_type, :max_donation_amount, :meta_tag_html, :minimum_quantity, :minimum_quantity_units, :mpn,
|
@@ -43,6 +43,8 @@ module NetSuite
|
|
43
43
|
field :custom_field_list, CustomFieldList
|
44
44
|
field :bin_number_list, BinNumberList
|
45
45
|
field :pricing_matrix, PricingMatrix
|
46
|
+
field :member_list, MemberList
|
47
|
+
field :subsidiary_list, RecordRefList
|
46
48
|
|
47
49
|
attr_reader :internal_id
|
48
50
|
attr_accessor :external_id
|
@@ -52,6 +54,10 @@ module NetSuite
|
|
52
54
|
@external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
|
53
55
|
initialize_from_attributes_hash(attributes)
|
54
56
|
end
|
57
|
+
|
58
|
+
def self.search_class_name
|
59
|
+
"Item"
|
60
|
+
end
|
55
61
|
end
|
56
62
|
end
|
57
63
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module NetSuite
|
2
|
+
module Records
|
3
|
+
class BillingSchedule
|
4
|
+
include Support::Fields
|
5
|
+
include Support::RecordRefs
|
6
|
+
include Support::Records
|
7
|
+
include Support::Actions
|
8
|
+
include Namespaces::ListAcct
|
9
|
+
|
10
|
+
actions :get, :add, :delete, :upsert, :search
|
11
|
+
|
12
|
+
fields :bill_for_actuals, :day_period, :frequency, :in_arrears, :initial_amount, :is_inactive,
|
13
|
+
:is_public, :month_dom, :month_dow, :month_dowim, :month_mode, :name,
|
14
|
+
:number_remaining, :recurrence_dow_mask_list, :repeat_every, :schedule_type,
|
15
|
+
:series_start_date, :year_dom, :year_dow, :year_dowim, :year_dowim_month,
|
16
|
+
:year_mode, :year_month
|
17
|
+
|
18
|
+
record_refs :initial_terms, :project, :recurrence_terms, :transaction
|
19
|
+
|
20
|
+
attr_reader :internal_id
|
21
|
+
attr_accessor :external_id
|
22
|
+
|
23
|
+
field :milestone_list, BillingScheduleMilestoneList
|
24
|
+
field :recurrence_list, BillingScheduleRecurrenceList
|
25
|
+
|
26
|
+
def initialize(attributes = {})
|
27
|
+
@internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
|
28
|
+
@external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
|
29
|
+
initialize_from_attributes_hash(attributes)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|