netsuite 0.3.3 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/README.md +14 -12
- data/lib/netsuite.rb +16 -2
- data/lib/netsuite/actions/delete_list.rb +104 -0
- data/lib/netsuite/actions/login.rb +26 -1
- data/lib/netsuite/actions/search.rb +7 -3
- data/lib/netsuite/actions/upsert.rb +0 -4
- data/lib/netsuite/configuration.rb +1 -0
- data/lib/netsuite/namespaces/tran_purch.rb +11 -0
- data/lib/netsuite/records/cash_refund.rb +2 -2
- data/lib/netsuite/records/cash_sale.rb +41 -1
- data/lib/netsuite/records/cash_sale_item.rb +40 -0
- data/lib/netsuite/records/cash_sale_item_list.rb +25 -0
- data/lib/netsuite/records/contact.rb +1 -1
- data/lib/netsuite/records/contact_list.rb +1 -4
- data/lib/netsuite/records/credit_memo.rb +1 -1
- data/lib/netsuite/records/credit_memo_apply_list.rb +1 -4
- data/lib/netsuite/records/credit_memo_item.rb +1 -0
- data/lib/netsuite/records/credit_memo_item_list.rb +1 -4
- data/lib/netsuite/records/custom_field_list.rb +3 -0
- data/lib/netsuite/records/customer.rb +8 -8
- data/lib/netsuite/records/customer_payment.rb +1 -1
- data/lib/netsuite/records/customer_payment_apply.rb +1 -1
- data/lib/netsuite/records/customer_payment_apply_list.rb +13 -9
- data/lib/netsuite/records/customer_refund.rb +1 -1
- data/lib/netsuite/records/customer_refund_apply_list.rb +7 -3
- data/lib/netsuite/records/customer_refund_deposit_list.rb +1 -1
- data/lib/netsuite/records/deposit.rb +3 -3
- data/lib/netsuite/records/deposit_payment_list.rb +5 -2
- data/lib/netsuite/records/employee.rb +12 -4
- data/lib/netsuite/records/inventory_assignment.rb +1 -1
- data/lib/netsuite/records/inventory_assignment_list.rb +3 -1
- data/lib/netsuite/records/inventory_detail.rb +3 -3
- data/lib/netsuite/records/inventory_item.rb +4 -0
- data/lib/netsuite/records/invoice.rb +8 -4
- data/lib/netsuite/records/invoice_item_list.rb +4 -21
- data/lib/netsuite/records/job.rb +1 -1
- data/lib/netsuite/records/kit_item.rb +1 -1
- data/lib/netsuite/records/partner.rb +4 -2
- data/lib/netsuite/records/payment_method.rb +1 -1
- data/lib/netsuite/records/promotion_code.rb +1 -1
- data/lib/netsuite/records/rev_rec_template.rb +1 -1
- data/lib/netsuite/records/sales_order.rb +1 -1
- data/lib/netsuite/records/sales_order_item_list.rb +0 -1
- data/lib/netsuite/records/service_sale_item.rb +2 -2
- data/lib/netsuite/records/vendor_bill.rb +45 -0
- data/lib/netsuite/records/vendor_bill_expense.rb +40 -0
- data/lib/netsuite/records/vendor_bill_expense_list.rb +32 -0
- data/lib/netsuite/records/vendor_bill_item.rb +45 -0
- data/lib/netsuite/records/vendor_bill_item_list.rb +32 -0
- data/lib/netsuite/records/vendor_payment.rb +43 -0
- data/lib/netsuite/records/vendor_payment_apply.rb +16 -0
- data/lib/netsuite/records/vendor_payment_apply_list.rb +32 -0
- data/lib/netsuite/support/actions.rb +2 -2
- data/lib/netsuite/support/sublist.rb +13 -0
- data/lib/netsuite/version.rb +1 -1
- data/netsuite.gemspec +1 -1
- data/spec/netsuite/actions/delete_list_spec.rb +86 -0
- data/spec/netsuite/actions/login_spec.rb +21 -0
- data/spec/netsuite/records/cash_refund_spec.rb +1 -1
- data/spec/netsuite/records/cash_sale_item_list_spec.rb +27 -0
- data/spec/netsuite/records/cash_sale_item_spec.rb +23 -0
- data/spec/netsuite/records/credit_memo_apply_list_spec.rb +7 -8
- data/spec/netsuite/records/credit_memo_item_list_spec.rb +6 -8
- data/spec/netsuite/records/customer_payment_apply_list_spec.rb +25 -0
- data/spec/netsuite/records/customer_refund_apply_list_spec.rb +6 -8
- data/spec/netsuite/records/customer_spec.rb +6 -6
- data/spec/netsuite/records/employee_spec.rb +152 -0
- data/spec/netsuite/records/inventory_assignment_list_spec.rb +59 -0
- data/spec/netsuite/records/inventory_assignment_spec.rb +21 -0
- data/spec/netsuite/records/inventory_detail_spec.rb +13 -0
- data/spec/netsuite/records/invoice_spec.rb +3 -3
- data/spec/netsuite/records/job_spec.rb +4 -0
- data/spec/netsuite/records/vendor_bill_expense_list_spec.rb +36 -0
- data/spec/netsuite/records/vendor_bill_expense_spec.rb +72 -0
- data/spec/netsuite/records/vendor_bill_item_list_spec.rb +36 -0
- data/spec/netsuite/records/vendor_bill_item_spec.rb +118 -0
- data/spec/netsuite/records/vendor_bill_spec.rb +187 -0
- data/spec/netsuite/records/vendor_payment_apply_list_spec.rb +25 -0
- data/spec/netsuite/records/vendor_payment_apply_spec.rb +15 -0
- data/spec/netsuite/records/vendor_payment_spec.rb +164 -0
- data/spec/netsuite/support/sublist_spec.rb +6 -0
- data/spec/support/fixtures/delete_list/delete_list_customers.xml +26 -0
- data/spec/support/fixtures/delete_list/delete_list_customers_with_errors.xml +31 -0
- data/spec/support/fixtures/login.xml +35 -0
- metadata +58 -12
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::InventoryAssignmentList do
|
4
|
+
let(:list) { NetSuite::Records::InventoryAssignmentList.new }
|
5
|
+
|
6
|
+
it 'has an assignments attribute' do
|
7
|
+
list.inventory_assignment.should be_kind_of(Array)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#to_record' do
|
11
|
+
before do
|
12
|
+
list.inventory_assignment << NetSuite::Records::InventoryAssignment.new(
|
13
|
+
:quantity => 1
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'can represent itself as a SOAP record' do
|
18
|
+
|
19
|
+
record = {
|
20
|
+
'tranInvt:inventoryAssignment' => [{
|
21
|
+
'platformCommon:quantity' => 1
|
22
|
+
}]
|
23
|
+
}
|
24
|
+
list.to_record.should eql(record)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'can represent replacing all' do
|
28
|
+
list.replace_all = true
|
29
|
+
|
30
|
+
record = {
|
31
|
+
'tranInvt:inventoryAssignment' => [{
|
32
|
+
'platformCommon:quantity' => 1
|
33
|
+
}],
|
34
|
+
:@replaceAll => true,
|
35
|
+
}
|
36
|
+
|
37
|
+
list.to_record.should eql(record)
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'accepts a false replacing all' do
|
41
|
+
list = NetSuite::Records::InventoryAssignmentList.new(
|
42
|
+
:inventory_assignment => {
|
43
|
+
:quantity => 1
|
44
|
+
},
|
45
|
+
:replace_all => true,
|
46
|
+
)
|
47
|
+
list.replace_all = false
|
48
|
+
|
49
|
+
record = {
|
50
|
+
'tranInvt:inventoryAssignment' => [{
|
51
|
+
'platformCommon:quantity' => 1
|
52
|
+
}],
|
53
|
+
:@replaceAll => false,
|
54
|
+
}
|
55
|
+
|
56
|
+
list.to_record.should eql(record)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::InventoryAssignment do
|
4
|
+
let(:item) { NetSuite::Records::InventoryAssignment.new }
|
5
|
+
|
6
|
+
it 'has all the right fields' do
|
7
|
+
[
|
8
|
+
:expiration_date, :quantity, :quantity_available, :receipt_inventory_number
|
9
|
+
].each do |field|
|
10
|
+
item.should have_field(field)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'has all the right record refs' do
|
15
|
+
[
|
16
|
+
:bin_number, :issue_inventory_number, :to_bin_number
|
17
|
+
].each do |record_ref|
|
18
|
+
item.should have_record_ref(record_ref)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::InventoryDetail do
|
4
|
+
let(:item) { NetSuite::Records::InventoryDetail.new }
|
5
|
+
|
6
|
+
it 'has all the right record refs' do
|
7
|
+
[
|
8
|
+
:custom_form
|
9
|
+
].each do |record_ref|
|
10
|
+
item.should have_record_ref(record_ref)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -17,8 +17,8 @@ describe NetSuite::Records::Invoice do
|
|
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
19
|
:item_cost_tax_code, :item_cost_tax_rate_1, :item_cost_tax_rate_2, :job, :last_modified_date,
|
20
|
-
:
|
21
|
-
:other_ref_num, :partners_list, :
|
20
|
+
:linked_tracking_numbers, :memo, :message, :message_sel, :on_credit_hold, :opportunity,
|
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,
|
23
23
|
:sales_group, :sales_team_list, :ship_address, :ship_date, :ship_group_list,
|
24
24
|
:shipping_cost, :shipping_tax_1_rate, :shipping_tax_2_rate, :shipping_tax_code, :source, :start_date,
|
@@ -44,7 +44,7 @@ describe NetSuite::Records::Invoice do
|
|
44
44
|
it 'has the right record_refs' do
|
45
45
|
[
|
46
46
|
:account, :bill_address_list, :custom_form, :department, :entity, :klass, :posting_period, :ship_address_list, :terms,
|
47
|
-
:created_from, :location, :sales_rep, :ship_method, :tax_item, :partner
|
47
|
+
:created_from, :location, :sales_rep, :ship_method, :tax_item, :partner, :lead_source, :promo_code
|
48
48
|
].each do |record_ref|
|
49
49
|
expect(invoice).to have_record_ref(record_ref)
|
50
50
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::VendorBillExpenseList do
|
4
|
+
let(:expense_list) { NetSuite::Records::VendorBillExpenseList.new }
|
5
|
+
let(:expense) { NetSuite::Records::VendorBillExpense.new }
|
6
|
+
|
7
|
+
it 'can be initialized with a hash' do
|
8
|
+
expense_list = NetSuite::Records::VendorBillExpenseList.new(expense: {})
|
9
|
+
expect(expense_list.expenses).to be_kind_of(Array)
|
10
|
+
expect(expense_list.expenses.length).to eql(1)
|
11
|
+
expect(expense_list.expenses[0]).to be_kind_of(NetSuite::Records::VendorBillExpense)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'can be initialized with a hash list' do
|
15
|
+
expense_list = NetSuite::Records::VendorBillExpenseList.new(expense: [{}])
|
16
|
+
expect(expense_list.expenses).to be_kind_of(Array)
|
17
|
+
expect(expense_list.expenses.length).to eql(1)
|
18
|
+
expect(expense_list.expenses[0]).to be_kind_of(NetSuite::Records::VendorBillExpense)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'can have expenses be added to it' do
|
22
|
+
expense_list.expenses << expense
|
23
|
+
expect(expense_list.expenses).to be_kind_of(Array)
|
24
|
+
expect(expense_list.expenses.length).to eql(1)
|
25
|
+
expect(expense_list.expenses[0]).to be_kind_of(NetSuite::Records::VendorBillExpense)
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#to_record' do
|
29
|
+
it 'can represent itself as a SOAP record' do
|
30
|
+
record = {
|
31
|
+
'tranPurch:expense' => []
|
32
|
+
}
|
33
|
+
expect(expense_list.to_record).to eql(record)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::VendorBillExpense do
|
4
|
+
let(:expense) { NetSuite::Records::VendorBillExpense.new }
|
5
|
+
|
6
|
+
it 'has the right fields' do
|
7
|
+
[
|
8
|
+
:amount, :amortization_end_date, :amortiz_start_date, :amortization_residual, :gross_amt, :is_billable,
|
9
|
+
:line, :memo, :order_doc, :order_line, :tax_1_amt, :tax_rate_1, :tax_rate_2
|
10
|
+
].each do |field|
|
11
|
+
expect(expense).to have_field(field)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'has the right record_refs' do
|
16
|
+
[
|
17
|
+
:account, :amortization_sched, :klass, :category, :customer, :department, :location, :tax_code
|
18
|
+
].each do |record_ref|
|
19
|
+
expect(expense).to have_record_ref(record_ref)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'can initialize from a record' do
|
24
|
+
record = NetSuite::Records::VendorBillExpense.new(:amount => 123)
|
25
|
+
expense = NetSuite::Records::VendorBillExpense.new(record)
|
26
|
+
expect(expense).to be_kind_of(NetSuite::Records::VendorBillExpense)
|
27
|
+
expect(expense.amount).to eql(123)
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#custom_field_list' do
|
31
|
+
it 'can be set from attributes' do
|
32
|
+
attributes = {
|
33
|
+
:custom_field => {
|
34
|
+
:value => 10,
|
35
|
+
:internal_id => 'custfield_value'
|
36
|
+
}
|
37
|
+
}
|
38
|
+
expense.custom_field_list = attributes
|
39
|
+
expect(expense.custom_field_list).to be_kind_of(NetSuite::Records::CustomFieldList)
|
40
|
+
expect(expense.custom_field_list.custom_fields.length).to eql(1)
|
41
|
+
expect(expense.custom_field_list.custfield_value.attributes[:value]).to eq(10)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'can be set from a CustomFieldList object' do
|
45
|
+
custom_field_list = NetSuite::Records::CustomFieldList.new
|
46
|
+
expense.custom_field_list = custom_field_list
|
47
|
+
expect(expense.custom_field_list).to eql(custom_field_list)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#to_record' do
|
52
|
+
before do
|
53
|
+
expense.amount = '123'
|
54
|
+
expense.memo = 'a memo'
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'can represent itself as a SOAP record' do
|
58
|
+
record = {
|
59
|
+
'tranPurch:amount' => '123',
|
60
|
+
'tranPurch:memo' => 'a memo'
|
61
|
+
}
|
62
|
+
expect(expense.to_record).to eql(record)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '#record_type' do
|
67
|
+
it 'returns a string of the SOAP record type' do
|
68
|
+
expect(expense.record_type).to eql('tranPurch:VendorBillExpense')
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::VendorBillItemList do
|
4
|
+
let(:item_list) { NetSuite::Records::VendorBillItemList.new }
|
5
|
+
let(:item) { NetSuite::Records::VendorBillItem.new }
|
6
|
+
|
7
|
+
it 'can be initialized with a hash' do
|
8
|
+
item_list = NetSuite::Records::VendorBillItemList.new(item: {})
|
9
|
+
expect(item_list.items).to be_kind_of(Array)
|
10
|
+
expect(item_list.items.length).to eql(1)
|
11
|
+
expect(item_list.items[0]).to be_kind_of(NetSuite::Records::VendorBillItem)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'can be initialized with a hash list' do
|
15
|
+
item_list = NetSuite::Records::VendorBillItemList.new(item: [{}])
|
16
|
+
expect(item_list.items).to be_kind_of(Array)
|
17
|
+
expect(item_list.items.length).to eql(1)
|
18
|
+
expect(item_list.items[0]).to be_kind_of(NetSuite::Records::VendorBillItem)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'can have items be added to it' do
|
22
|
+
item_list.items << item
|
23
|
+
expect(item_list.items).to be_kind_of(Array)
|
24
|
+
expect(item_list.items.length).to eql(1)
|
25
|
+
expect(item_list.items[0]).to be_kind_of(NetSuite::Records::VendorBillItem)
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#to_record' do
|
29
|
+
it 'can represent itself as a SOAP record' do
|
30
|
+
record = {
|
31
|
+
'tranPurch:item' => []
|
32
|
+
}
|
33
|
+
expect(item_list.to_record).to eql(record)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::VendorBillItem do
|
4
|
+
let(:item) { NetSuite::Records::VendorBillItem.new }
|
5
|
+
|
6
|
+
it 'has the right fields' do
|
7
|
+
[
|
8
|
+
:amortization_end_date, :amortization_residual, :amortiz_start_date, :bin_numbers, :bill_variance_status,
|
9
|
+
:description, :expiration_date, :gross_amt, :inventory_detail, :is_billable, :landed_cost, :line,
|
10
|
+
:order_doc, :order_line, :quantity, :serial_numbers, :tax_rate_1, :tax_rate_2, :tax_1_amt, :vendor_name
|
11
|
+
].each do |field|
|
12
|
+
expect(item).to have_field(field)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'has the right record_refs' do
|
17
|
+
[
|
18
|
+
:amortization_sched, :klass, :customer, :department, :item, :landed_cost_category, :location, :tax_code, :units
|
19
|
+
].each do |record_ref|
|
20
|
+
expect(item).to have_record_ref(record_ref)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'has all the right read_only_fields' do
|
25
|
+
[
|
26
|
+
:amount
|
27
|
+
].each do |field|
|
28
|
+
expect(NetSuite::Records::VendorBillItem).to have_read_only_field(field)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'can initialize from a record' do
|
33
|
+
record = NetSuite::Records::VendorBillItem.new(:gross_amt => 123, :description => 'some item')
|
34
|
+
item = NetSuite::Records::VendorBillItem.new(record)
|
35
|
+
expect(item).to be_kind_of(NetSuite::Records::VendorBillItem)
|
36
|
+
expect(item.gross_amt).to eql(123)
|
37
|
+
expect(item.description).to eql('some item')
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#custom_field_list' do
|
41
|
+
it 'can be set from attributes' do
|
42
|
+
attributes = {
|
43
|
+
:custom_field => {
|
44
|
+
:value => 10,
|
45
|
+
:internal_id => 'custfield_value'
|
46
|
+
}
|
47
|
+
}
|
48
|
+
item.custom_field_list = attributes
|
49
|
+
expect(item.custom_field_list).to be_kind_of(NetSuite::Records::CustomFieldList)
|
50
|
+
expect(item.custom_field_list.custom_fields.length).to eql(1)
|
51
|
+
expect(item.custom_field_list.custfield_value.attributes[:value]).to eq(10)
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'can be set from a CustomFieldList object' do
|
55
|
+
custom_field_list = NetSuite::Records::CustomFieldList.new
|
56
|
+
item.custom_field_list = custom_field_list
|
57
|
+
expect(item.custom_field_list).to eql(custom_field_list)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#options' do
|
62
|
+
it 'can be set from attributes' do
|
63
|
+
attributes = {
|
64
|
+
:custom_field => {
|
65
|
+
:value => 10,
|
66
|
+
:internal_id => 'custfield_value'
|
67
|
+
}
|
68
|
+
}
|
69
|
+
item.options = attributes
|
70
|
+
expect(item.options).to be_kind_of(NetSuite::Records::CustomFieldList)
|
71
|
+
expect(item.options.custom_fields.length).to eql(1)
|
72
|
+
expect(item.options.custfield_value.attributes[:value]).to eq(10)
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'can be set from a CustomFieldList object' do
|
76
|
+
custom_field_list = NetSuite::Records::CustomFieldList.new
|
77
|
+
item.custom_field_list = custom_field_list
|
78
|
+
expect(item.custom_field_list).to eql(custom_field_list)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe '#bill_receipts_list' do
|
83
|
+
it 'can be set from attributes' do
|
84
|
+
attributes = {
|
85
|
+
:record_ref => {
|
86
|
+
:internal_id => 'some id',
|
87
|
+
:value => 'some value'
|
88
|
+
}
|
89
|
+
}
|
90
|
+
item.bill_receipts_list = attributes
|
91
|
+
expect(item.bill_receipts_list).to be_kind_of(NetSuite::Records::RecordRefList)
|
92
|
+
expect(item.bill_receipts_list.record_ref.length).to eql(1)
|
93
|
+
expect(item.bill_receipts_list.record_ref[0].value).to eq('some value')
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe '#to_record' do
|
98
|
+
before do
|
99
|
+
item.gross_amt = '123'
|
100
|
+
item.description = 'some item'
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'can represent itself as a SOAP record' do
|
104
|
+
record = {
|
105
|
+
'tranPurch:grossAmt' => '123',
|
106
|
+
'tranPurch:description' => 'some item'
|
107
|
+
}
|
108
|
+
expect(item.to_record).to eql(record)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe '#record_type' do
|
113
|
+
it 'returns a string of the SOAP record type' do
|
114
|
+
expect(item.record_type).to eql('tranPurch:VendorBillItem')
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
@@ -0,0 +1,187 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Records::VendorBill do
|
4
|
+
let(:bill) { NetSuite::Records::VendorBill.new(external_id: 'some id') }
|
5
|
+
let(:vendor) { NetSuite::Records::Vendor.new }
|
6
|
+
let(:response) { NetSuite::Response.new(:success => true, :body => { :@internal_id => '1', :@external_id =>'some id' }) }
|
7
|
+
|
8
|
+
it 'has all the right fields' do
|
9
|
+
[
|
10
|
+
:created_date, :credit_limit, :currency_name, :discount_amount, :discount_date, :due_date, :exchange_rate,
|
11
|
+
:landed_costs_list, :landed_cost_method, :landed_cost_per_line, :last_modified_date, :memo, :tax_total,
|
12
|
+
:tax_2_total, :transaction_number, :tran_date, :tran_id, :user_total, :vat_reg_num
|
13
|
+
].each do |field|
|
14
|
+
expect(bill).to have_field(field)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'has all the right read_only_fields' do
|
19
|
+
[
|
20
|
+
:status
|
21
|
+
].each do |field|
|
22
|
+
expect(NetSuite::Records::VendorBill).to have_read_only_field(field)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'has the right record_refs' do
|
27
|
+
[
|
28
|
+
:custom_form, :account, :entity, :subsidiary, :approval_status, :next_approver, :posting_period, :terms,
|
29
|
+
:currency, :klass, :department, :location
|
30
|
+
].each do |record_ref|
|
31
|
+
expect(bill).to have_record_ref(record_ref)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#custom_field_list' do
|
36
|
+
it 'can be set from attributes' do
|
37
|
+
attributes = {
|
38
|
+
:custom_field => {
|
39
|
+
:amount => 10,
|
40
|
+
:internal_id => 'custfield_amount'
|
41
|
+
}
|
42
|
+
}
|
43
|
+
bill.custom_field_list = attributes
|
44
|
+
expect(bill.custom_field_list).to be_kind_of(NetSuite::Records::CustomFieldList)
|
45
|
+
expect(bill.custom_field_list.custom_fields.length).to eql(1)
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'can be set from a CustomFieldList object' do
|
49
|
+
custom_field_list = NetSuite::Records::CustomFieldList.new
|
50
|
+
bill.custom_field_list = custom_field_list
|
51
|
+
expect(bill.custom_field_list).to eql(custom_field_list)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe '#item_list' do
|
56
|
+
it 'can be set from attributes' do
|
57
|
+
attributes = {
|
58
|
+
:item => {
|
59
|
+
:amount => 10
|
60
|
+
}
|
61
|
+
}
|
62
|
+
bill.item_list = attributes
|
63
|
+
expect(bill.item_list).to be_kind_of(NetSuite::Records::VendorBillItemList)
|
64
|
+
expect(bill.item_list.items.length).to eql(1)
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'can be set from a VendorBillItemList object' do
|
68
|
+
item_list = NetSuite::Records::VendorBillItemList.new
|
69
|
+
bill.item_list = item_list
|
70
|
+
expect(bill.item_list).to eql(item_list)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe '#expense_list' do
|
75
|
+
it 'can be set from attributes' do
|
76
|
+
attributes = {
|
77
|
+
:expense => {
|
78
|
+
:gross_amt => 10
|
79
|
+
}
|
80
|
+
}
|
81
|
+
bill.expense_list = attributes
|
82
|
+
expect(bill.expense_list).to be_kind_of(NetSuite::Records::VendorBillExpenseList)
|
83
|
+
expect(bill.expense_list.expenses.length).to eql(1)
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'can be set from a VendorBillExpenseList object' do
|
87
|
+
expense_list = NetSuite::Records::VendorBillExpenseList.new
|
88
|
+
bill.expense_list = expense_list
|
89
|
+
expect(bill.expense_list).to eql(expense_list)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '#purchase_order_list' do
|
94
|
+
it 'can be set from attributes' do
|
95
|
+
attributes = {
|
96
|
+
:record_ref => {
|
97
|
+
:internal_id => 'some id',
|
98
|
+
:value => 'some value'
|
99
|
+
}
|
100
|
+
}
|
101
|
+
bill.purchase_order_list = attributes
|
102
|
+
expect(bill.purchase_order_list).to be_kind_of(NetSuite::Records::RecordRefList)
|
103
|
+
expect(bill.purchase_order_list.record_ref.length).to eql(1)
|
104
|
+
expect(bill.purchase_order_list.record_ref[0].value).to eq('some value')
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe '.get' do
|
109
|
+
context 'when the response is successful' do
|
110
|
+
it 'returns an VendorBill instance populated with the data from the response object' do
|
111
|
+
expect(NetSuite::Actions::Get).to receive(:call).with([NetSuite::Records::VendorBill, external_id: 'some id'], {}).and_return(response)
|
112
|
+
bill = NetSuite::Records::VendorBill.get(external_id: 'some id')
|
113
|
+
expect(bill).to be_kind_of(NetSuite::Records::VendorBill)
|
114
|
+
expect(bill.internal_id).to eq('1')
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
context 'when the response is unsuccessful' do
|
119
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
120
|
+
|
121
|
+
it 'raises a RecordNotFound exception' do
|
122
|
+
expect(NetSuite::Actions::Get).to receive(:call).with([NetSuite::Records::VendorBill, external_id: 'some id'], {}).and_return(response)
|
123
|
+
expect {
|
124
|
+
NetSuite::Records::VendorBill.get(external_id: 'some id')
|
125
|
+
}.to raise_error(NetSuite::RecordNotFound,
|
126
|
+
/NetSuite::Records::VendorBill with OPTIONS=(.*) could not be found/)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe '.initialize' do
|
132
|
+
context 'when the request is successful' do
|
133
|
+
it 'returns an initialized vendor bill from the vendor entity' do
|
134
|
+
expect(NetSuite::Actions::Initialize).to receive(:call).with([NetSuite::Records::VendorBill, vendor], {}).and_return(response)
|
135
|
+
bill = NetSuite::Records::VendorBill.initialize(vendor)
|
136
|
+
expect(bill).to be_kind_of(NetSuite::Records::VendorBill)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
context 'when the response is unsuccessful' do
|
141
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
142
|
+
|
143
|
+
it 'raises a InitializationError exception' do
|
144
|
+
expect(NetSuite::Actions::Initialize).to receive(:call).with([NetSuite::Records::VendorBill, vendor], {}).and_return(response)
|
145
|
+
expect {
|
146
|
+
NetSuite::Records::VendorBill.initialize(vendor)
|
147
|
+
}.to raise_error(NetSuite::InitializationError,
|
148
|
+
/NetSuite::Records::VendorBill.initialize with .+ failed./)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
describe '#add' do
|
154
|
+
context 'when the response is successful' do
|
155
|
+
it 'returns true' do
|
156
|
+
expect(NetSuite::Actions::Add).to receive(:call).with([bill], {}).and_return(response)
|
157
|
+
expect(bill.add).to be_truthy
|
158
|
+
expect(bill.internal_id).to eq('1')
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
context 'when the response is unsuccessful' do
|
163
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
164
|
+
it 'returns false' do
|
165
|
+
expect(NetSuite::Actions::Add).to receive(:call).with([bill], {}).and_return(response)
|
166
|
+
expect(bill.add).to be_falsey
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
describe '#delete' do
|
172
|
+
context 'when the response is successful' do
|
173
|
+
it 'returns true' do
|
174
|
+
expect(NetSuite::Actions::Delete).to receive(:call).with([bill], {}).and_return(response)
|
175
|
+
expect(bill.delete).to be_truthy
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
context 'when the response is unsuccessful' do
|
180
|
+
let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
|
181
|
+
it 'returns false' do
|
182
|
+
expect(NetSuite::Actions::Delete).to receive(:call).with([bill], {}).and_return(response)
|
183
|
+
expect(bill.delete).to be_falsey
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|