Browse Source

Set 24/25 nationality fields from BU

pull/2193/head
Kat 2 years ago
parent
commit
e6035643e3
  1. 2
      app/models/log.rb
  2. 2
      app/models/sales_log.rb
  3. 20
      app/services/bulk_upload/sales/year2024/row_parser.rb
  4. 148
      spec/services/bulk_upload/sales/year2024/row_parser_spec.rb

2
app/models/log.rb

@ -210,7 +210,7 @@ class Log < ApplicationRecord
end
def nationality_uk_or_prefers_not_to_say?
nationality_all_group == 0 || nationality_all_group == 826
nationality_all_group&.zero? || nationality_all_group == 826
end
private

2
app/models/sales_log.rb

@ -475,6 +475,6 @@ class SalesLog < Log
end
def nationality2_uk_or_prefers_not_to_say?
nationality_all_buyer2_group == 0 || nationality_all_buyer2_group == 826
nationality_all_buyer2_group&.zero? || nationality_all_buyer2_group == 826
end
end

20
app/services/bulk_upload/sales/year2024/row_parser.rb

@ -675,7 +675,8 @@ private
ecstat6: %i[field_60],
ethnic_group: %i[field_33],
ethnic: %i[field_33],
national: %i[field_34],
nationality_all: %i[field_34],
nationality_all_group: %i[field_34],
income1nk: %i[field_77],
income1: %i[field_77],
income2nk: %i[field_79],
@ -767,7 +768,8 @@ private
ethnic_group2: %i[field_40],
ethnicbuy2: %i[field_40],
nationalbuy2: %i[field_41],
nationality_all_buyer2: %i[field_41],
nationality_all_buyer2_group: %i[field_41],
buy2living: %i[field_70],
prevtenbuy2: %i[field_71],
@ -831,7 +833,8 @@ private
attributes["ethnic_group"] = ethnic_group_from_ethnic
attributes["ethnic"] = field_33
attributes["national"] = field_34
attributes["nationality_all"] = field_34
attributes["nationality_all_group"] = nationality_group(attributes["nationality_all"])
attributes["income1nk"] = field_77 == "R" ? 1 : 0
attributes["income1"] = field_77.to_i if attributes["income1nk"]&.zero? && field_77&.match(/\A\d+\z/)
@ -938,7 +941,8 @@ private
attributes["ethnic_group2"] = infer_buyer2_ethnic_group_from_ethnic
attributes["ethnicbuy2"] = field_40
attributes["nationalbuy2"] = field_41
attributes["nationality_all_buyer2"] = field_41
attributes["nationality_all_buyer2_group"] = nationality_group(attributes["nationality_all_buyer2"])
attributes["buy2living"] = field_70
attributes["prevtenbuy2"] = prevtenbuy2
@ -1202,6 +1206,14 @@ private
created_by&.organisation || bulk_upload.user.organisation
end
def nationality_group(nationality_value)
return unless nationality_value
return 0 if nationality_value.zero?
return 826 if nationality_value == 826
12
end
def validate_managing_org_related
if owning_organisation && managing_organisation && !owning_organisation.can_be_managed_by?(organisation: managing_organisation)
block_log_creation!

148
spec/services/bulk_upload/sales/year2024/row_parser_spec.rb

@ -1067,11 +1067,151 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do
end
end
describe "#nationalbuy2" do
let(:attributes) { setup_section_params.merge({ field_41: "18" }) }
describe "#nationality_all" do
context "when field_34 is a 3 digit nationality code" do
let(:attributes) { setup_section_params.merge({ field_34: "036" }) }
it "is correctly set" do
expect(parser.log.nationalbuy2).to be(18)
it "is correctly set" do
expect(parser.log.nationality_all).to be(36)
expect(parser.log.nationality_all_group).to be(12)
end
end
context "when field_34 is a nationality code without the trailing 0s" do
let(:attributes) { setup_section_params.merge({ field_34: "36" }) }
it "is correctly set" do
expect(parser.log.nationality_all).to be(36)
expect(parser.log.nationality_all_group).to be(12)
end
end
context "when field_34 is a nationality code with trailing 0s" do
let(:attributes) { setup_section_params.merge({ field_34: "0036" }) }
it "is correctly set" do
expect(parser.log.nationality_all).to be(36)
expect(parser.log.nationality_all_group).to be(12)
end
end
context "when field_34 is 0" do
let(:attributes) { setup_section_params.merge({ field_34: "0" }) }
it "is correctly set" do
expect(parser.log.nationality_all).to be(0)
expect(parser.log.nationality_all_group).to be(0)
end
end
context "when field_34 is 000" do
let(:attributes) { setup_section_params.merge({ field_34: "000" }) }
it "is correctly set" do
expect(parser.log.nationality_all).to be(0)
expect(parser.log.nationality_all_group).to be(0)
end
end
context "when field_34 is 0000" do
let(:attributes) { setup_section_params.merge({ field_34: "0000" }) }
it "is correctly set" do
expect(parser.log.nationality_all).to be(0)
expect(parser.log.nationality_all_group).to be(0)
end
end
context "when field_34 is 826" do
let(:attributes) { setup_section_params.merge({ field_34: "826" }) }
it "is correctly set" do
expect(parser.log.nationality_all).to be(826)
expect(parser.log.nationality_all_group).to be(826)
end
end
context "when field_34 is 826 with trailing 0s" do
let(:attributes) { setup_section_params.merge({ field_34: "0826" }) }
it "is correctly set" do
expect(parser.log.nationality_all).to be(826)
expect(parser.log.nationality_all_group).to be(826)
end
end
end
describe "#nationality_all_buyer2" do
context "when field_41 is a 3 digit nationality code" do
let(:attributes) { setup_section_params.merge({ field_41: "036" }) }
it "is correctly set" do
expect(parser.log.nationality_all_buyer2).to be(36)
expect(parser.log.nationality_all_buyer2_group).to be(12)
end
end
context "when field_41 is a nationality code without the trailing 0s" do
let(:attributes) { setup_section_params.merge({ field_41: "36" }) }
it "is correctly set" do
expect(parser.log.nationality_all_buyer2).to be(36)
expect(parser.log.nationality_all_buyer2_group).to be(12)
end
end
context "when field_41 is a nationality code with trailing 0s" do
let(:attributes) { setup_section_params.merge({ field_41: "0036" }) }
it "is correctly set" do
expect(parser.log.nationality_all_buyer2).to be(36)
expect(parser.log.nationality_all_buyer2_group).to be(12)
end
end
context "when field_41 is 0" do
let(:attributes) { setup_section_params.merge({ field_41: "0" }) }
it "is correctly set" do
expect(parser.log.nationality_all_buyer2).to be(0)
expect(parser.log.nationality_all_buyer2_group).to be(0)
end
end
context "when field_41 is 000" do
let(:attributes) { setup_section_params.merge({ field_41: "000" }) }
it "is correctly set" do
expect(parser.log.nationality_all_buyer2).to be(0)
expect(parser.log.nationality_all_buyer2_group).to be(0)
end
end
context "when field_41 is 0000" do
let(:attributes) { setup_section_params.merge({ field_41: "0000" }) }
it "is correctly set" do
expect(parser.log.nationality_all_buyer2).to be(0)
expect(parser.log.nationality_all_buyer2_group).to be(0)
end
end
context "when field_41 is 826" do
let(:attributes) { setup_section_params.merge({ field_41: "826" }) }
it "is correctly set" do
expect(parser.log.nationality_all_buyer2).to be(826)
expect(parser.log.nationality_all_buyer2_group).to be(826)
end
end
context "when field_41 is 826 with trailing 0s" do
let(:attributes) { setup_section_params.merge({ field_41: "0826" }) }
it "is correctly set" do
expect(parser.log.nationality_all_buyer2).to be(826)
expect(parser.log.nationality_all_buyer2_group).to be(826)
end
end
end

Loading…
Cancel
Save