From 9ae09522936bea02eafa291db46eeff81a6e8887 Mon Sep 17 00:00:00 2001 From: fabiensebban Date: Fri, 25 Oct 2024 17:09:24 +0200 Subject: [PATCH 1/9] customer subsidiary relationship --- .../customer_subsidiary_relationship.rb | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 lib/netsuite/records/customer_subsidiary_relationship.rb diff --git a/lib/netsuite/records/customer_subsidiary_relationship.rb b/lib/netsuite/records/customer_subsidiary_relationship.rb new file mode 100644 index 00000000..da130c5f --- /dev/null +++ b/lib/netsuite/records/customer_subsidiary_relationship.rb @@ -0,0 +1,21 @@ +module NetSuite + module Records + class CustomerSubsidiaryRelationship + include Support::Records + include Support::Actions + + actions :get, :get_list, :add, :search + + attr_reader :internal_id + attr_accessor :external_id + + def initialize(attributes = {}) + @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) + @external_id = attributes.delete(:external_id) || attributes.delete(:@external_id) + + initialize_from_attributes_hash(attributes) + end + + end + end +end From 26c5f7b4c3df7760920b76b6b415f2f529d7fe98 Mon Sep 17 00:00:00 2001 From: fabiensebban Date: Sun, 27 Oct 2024 19:05:03 +0100 Subject: [PATCH 2/9] load customer subsidiary relationship --- lib/netsuite.rb | 1 + spec/netsuite/records/basic_record_spec.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/netsuite.rb b/lib/netsuite.rb index 761dc8b1..83449ec8 100644 --- a/lib/netsuite.rb +++ b/lib/netsuite.rb @@ -135,6 +135,7 @@ module Records autoload :CustomerRefundDeposit, 'netsuite/records/customer_refund_deposit' autoload :CustomerRefundDepositList, 'netsuite/records/customer_refund_deposit_list' autoload :CustomerStatus, 'netsuite/records/customer_status' + autoload :CustomerSubsidiaryRelationship, 'netsuite/records/customer_subsidiary_relationship' autoload :CustomerPartner, 'netsuite/records/customer_partner' autoload :CustomerSalesTeam, 'netsuite/records/customer_sales_team' autoload :CustomerSalesTeamList, 'netsuite/records/customer_sales_team_list' diff --git a/spec/netsuite/records/basic_record_spec.rb b/spec/netsuite/records/basic_record_spec.rb index 887eba20..74720e52 100644 --- a/spec/netsuite/records/basic_record_spec.rb +++ b/spec/netsuite/records/basic_record_spec.rb @@ -63,6 +63,7 @@ NetSuite::Records::BinTransfer, NetSuite::Records::SerializedAssemblyItem, NetSuite::Records::CustomerStatus, + NetSuite::Records::CustomerSubsidiaryRelationship, NetSuite::Records::CustomerPayment, NetSuite::Records::TransactionBodyCustomField, NetSuite::Records::TransactionColumnCustomField, From 26941ce36eea137ac7f7267a0bcb17de3e12edd3 Mon Sep 17 00:00:00 2001 From: fabiensebban Date: Sun, 27 Oct 2024 19:54:00 +0100 Subject: [PATCH 3/9] add fields --- lib/netsuite/records/customer_subsidiary_relationship.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/netsuite/records/customer_subsidiary_relationship.rb b/lib/netsuite/records/customer_subsidiary_relationship.rb index da130c5f..a34db35c 100644 --- a/lib/netsuite/records/customer_subsidiary_relationship.rb +++ b/lib/netsuite/records/customer_subsidiary_relationship.rb @@ -6,6 +6,15 @@ class CustomerSubsidiaryRelationship actions :get, :get_list, :add, :search + # https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2024_1/schema/record/customersubsidiaryrelationship.html + + fields :is_primary_sub, :is_inactive + + field :subsidiary, Subsidiary + field :custom_field_list, CustomFieldList + + record_refs :entity, :primary_currency + attr_reader :internal_id attr_accessor :external_id From 59e02b13f3495600cc85be81031de4eff901c7ae Mon Sep 17 00:00:00 2001 From: fabiensebban Date: Sun, 27 Oct 2024 19:58:31 +0100 Subject: [PATCH 4/9] fix - add Fields lib --- lib/netsuite/records/customer_subsidiary_relationship.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/netsuite/records/customer_subsidiary_relationship.rb b/lib/netsuite/records/customer_subsidiary_relationship.rb index a34db35c..e7f85436 100644 --- a/lib/netsuite/records/customer_subsidiary_relationship.rb +++ b/lib/netsuite/records/customer_subsidiary_relationship.rb @@ -1,6 +1,7 @@ module NetSuite module Records class CustomerSubsidiaryRelationship + include Support::Fields include Support::Records include Support::Actions From 734cbd8cc82f4aa7b445553a3ed15b2632e8a081 Mon Sep 17 00:00:00 2001 From: fabiensebban Date: Sun, 27 Oct 2024 20:39:13 +0100 Subject: [PATCH 5/9] fix - add RecordRefs lib --- lib/netsuite/records/customer_subsidiary_relationship.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/netsuite/records/customer_subsidiary_relationship.rb b/lib/netsuite/records/customer_subsidiary_relationship.rb index e7f85436..524cafb7 100644 --- a/lib/netsuite/records/customer_subsidiary_relationship.rb +++ b/lib/netsuite/records/customer_subsidiary_relationship.rb @@ -2,6 +2,7 @@ module NetSuite module Records class CustomerSubsidiaryRelationship include Support::Fields + include Support::RecordRefs include Support::Records include Support::Actions From 6444f967f3485a94c42156ab0a10bc6466b31e6f Mon Sep 17 00:00:00 2001 From: yossix Date: Mon, 28 Oct 2024 09:53:29 +0100 Subject: [PATCH 6/9] change record ref declaration --- lib/netsuite/records/customer_subsidiary_relationship.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/netsuite/records/customer_subsidiary_relationship.rb b/lib/netsuite/records/customer_subsidiary_relationship.rb index 524cafb7..98cdb0b4 100644 --- a/lib/netsuite/records/customer_subsidiary_relationship.rb +++ b/lib/netsuite/records/customer_subsidiary_relationship.rb @@ -12,10 +12,10 @@ class CustomerSubsidiaryRelationship fields :is_primary_sub, :is_inactive - field :subsidiary, Subsidiary + #field :subsidiary, Subsidiary field :custom_field_list, CustomFieldList - record_refs :entity, :primary_currency + record_refs :entity, :primary_currency, :subsidiary attr_reader :internal_id attr_accessor :external_id From 2c79f5d5b2ee2de3f2202ea008627d98e9254523 Mon Sep 17 00:00:00 2001 From: yossix Date: Mon, 28 Oct 2024 10:16:33 +0100 Subject: [PATCH 7/9] add name space listrel --- lib/netsuite/records/customer_subsidiary_relationship.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/netsuite/records/customer_subsidiary_relationship.rb b/lib/netsuite/records/customer_subsidiary_relationship.rb index 98cdb0b4..632a35d4 100644 --- a/lib/netsuite/records/customer_subsidiary_relationship.rb +++ b/lib/netsuite/records/customer_subsidiary_relationship.rb @@ -5,6 +5,7 @@ class CustomerSubsidiaryRelationship include Support::RecordRefs include Support::Records include Support::Actions + include Namespaces::ListRel actions :get, :get_list, :add, :search From 2d6ab399a866f7811b4a47f73801ade07179c831 Mon Sep 17 00:00:00 2001 From: yossix Date: Mon, 28 Oct 2024 11:31:18 +0100 Subject: [PATCH 8/9] delete subsidiary field --- lib/netsuite/records/customer_subsidiary_relationship.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/netsuite/records/customer_subsidiary_relationship.rb b/lib/netsuite/records/customer_subsidiary_relationship.rb index 632a35d4..70d5dd3f 100644 --- a/lib/netsuite/records/customer_subsidiary_relationship.rb +++ b/lib/netsuite/records/customer_subsidiary_relationship.rb @@ -13,7 +13,6 @@ class CustomerSubsidiaryRelationship fields :is_primary_sub, :is_inactive - #field :subsidiary, Subsidiary field :custom_field_list, CustomFieldList record_refs :entity, :primary_currency, :subsidiary From eb473e8f24adc16da31682236f6f775bbced139d Mon Sep 17 00:00:00 2001 From: fabiensebban Date: Wed, 27 Nov 2024 11:06:30 +0100 Subject: [PATCH 9/9] add tests --- .../customer_subsidiary_relationship_spec.rb | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 spec/netsuite/records/customer_subsidiary_relationship_spec.rb diff --git a/spec/netsuite/records/customer_subsidiary_relationship_spec.rb b/spec/netsuite/records/customer_subsidiary_relationship_spec.rb new file mode 100644 index 00000000..8fc4c670 --- /dev/null +++ b/spec/netsuite/records/customer_subsidiary_relationship_spec.rb @@ -0,0 +1,119 @@ +require 'spec_helper' + +describe NetSuite::Records::CustomerSubsidiaryRelationship do + let(:customer_subsidiary_record) { NetSuite::Records::CustomerSubsidiaryRelationship.new } + + it 'has all the right fields' do + [ + :is_primary_sub, + :is_inactive + ].each do |field| + expect(customer_subsidiary_record).to have_field(field) + end + end + + it 'has all the right record refs' do + [ + :entity, + :primary_currency, + :subsidiary + ].each do |record_ref| + expect(customer_subsidiary_record).to have_record_ref(record_ref) + end + end + + it 'can initialize with attributes' do + attributes = { + internal_id: '123', + external_id: '456', + is_primary_sub: true, + is_inactive: false + } + record = NetSuite::Records::CustomerSubsidiaryRelationship.new(attributes) + expect(record.internal_id).to eq('123') + expect(record.external_id).to eq('456') + expect(record.is_primary_sub).to be true + expect(record.is_inactive).to be false + end + + it 'can initialize without attributes' do + record = NetSuite::Records::CustomerSubsidiaryRelationship.new + expect(record.internal_id).to be_nil + expect(record.external_id).to be_nil + end + + describe '#custom_field_list' do + it 'can be set from attributes' do + attributes = { + :custom_field => { + :value => 10, + :internal_id => 'custfield_value' + } + } + customer_subsidiary_record.custom_field_list = attributes + expect(customer_subsidiary_record.custom_field_list).to be_kind_of(NetSuite::Records::CustomFieldList) + expect(customer_subsidiary_record.custom_field_list.custom_fields.length).to eql(1) + end + end + + + describe '.get' do + context 'when the response is successful' do + let(:response) { NetSuite::Response.new(:success => true, :body => { :is_person => true }) } + + it 'returns an CustomerSubsidiaryRelationship instance populated with the data from the response object' do + expect(NetSuite::Actions::Get).to receive(:call).with([NetSuite::Records::CustomerSubsidiaryRelationship, {:external_id => 10}], {}).and_return(response) + customer_subsidiary_relationship = NetSuite::Records::CustomerSubsidiaryRelationship.get(:external_id => 10) + expect(customer_subsidiary_relationship).to be_kind_of(NetSuite::Records::CustomerSubsidiaryRelationship) + end + end + + context 'when the response is unsuccessful' do + let(:response) { NetSuite::Response.new(:success => false, :body => {}) } + + it 'raises a RecordNotFound exception' do + expect(NetSuite::Actions::Get).to receive(:call).with([NetSuite::Records::CustomerSubsidiaryRelationship, {:external_id => 10}], {}).and_return(response) + expect { + NetSuite::Records::CustomerSubsidiaryRelationship.get(:external_id => 10) + }.to raise_error(NetSuite::RecordNotFound, + /NetSuite::Records::CustomerSubsidiaryRelationship with OPTIONS=(.*) could not be found/) + end + end + end + + describe '#add' do + let(:test_data) { + { + :entity => NetSuite::Records::RecordRef.new(internal_id: 1), + :subsidiary => NetSuite::Records::RecordRef.new(internal_id: 2) + } + } + + context 'when the response is successful' do + let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) } + + it 'returns true' do + customer_subsidiary_relationship = NetSuite::Records::CustomerSubsidiaryRelationship.new(test_data) + expect(NetSuite::Actions::Add).to receive(:call). + with([customer_subsidiary_relationship], {}). + and_return(response) + expect(customer_subsidiary_relationship.add).to be_truthy + end + end + + context 'when the response is unsuccessful' do + let(:response) { NetSuite::Response.new(:success => false, :body => {}) } + + it 'returns false' do + customer_subsidiary_relationship = NetSuite::Records::CustomerSubsidiaryRelationship.new(test_data) + expect(NetSuite::Actions::Add).to receive(:call). + with([customer_subsidiary_relationship], {}). + and_return(response) + expect(customer_subsidiary_relationship.add).to be_falsey + end + end + end + + +end +