Browse Source

Update services

CLDC-3787-Autocomplete-address-search
Kat 2 days ago
parent
commit
5822cbe06e
  1. 16
      app/models/derived_variables/lettings_log_variables.rb
  2. 16
      app/models/derived_variables/sales_log_variables.rb
  3. 1
      app/services/bulk_upload/lettings/year2024/row_parser.rb
  4. 1
      app/services/bulk_upload/sales/year2024/row_parser.rb
  5. 22
      app/services/csv/lettings_log_csv_service.rb
  6. 14
      app/services/csv/sales_log_csv_service.rb
  7. 6
      spec/factories/lettings_log.rb
  8. 6
      spec/factories/sales_log.rb
  9. 2
      spec/fixtures/files/sales_logs_csv_export_labels_24.csv
  10. 2
      spec/fixtures/files/sales_logs_csv_export_non_support_labels_24.csv
  11. 8
      spec/services/csv/sales_log_csv_service_spec.rb
  12. 5
      spec/services/exports/lettings_log_export_service_spec.rb

16
app/models/derived_variables/lettings_log_variables.rb

@ -112,13 +112,15 @@ module DerivedVariables::LettingsLogVariables
self.previous_la_known = nil if is_renewal?
end
if manual_address_entry_selected
self.uprn_known = 0
self.uprn_selection = nil
else
self.uprn_confirmed = 1 if uprn.present?
self.uprn_known = 1 if uprn.present?
reset_address_fields! if uprn.blank?
if form.start_year_2024_or_later?
if manual_address_entry_selected
self.uprn_known = 0
self.uprn_selection = nil
else
self.uprn_confirmed = 1 if uprn.present?
self.uprn_known = 1 if uprn.present?
reset_address_fields! if uprn.blank?
end
end
if is_renewal?

16
app/models/derived_variables/sales_log_variables.rb

@ -64,13 +64,15 @@ module DerivedVariables::SalesLogVariables
self.uprn_confirmed = nil
end
if manual_address_entry_selected
self.uprn_known = 0
self.uprn_selection = nil
else
self.uprn_confirmed = 1 if uprn.present?
self.uprn_known = 1 if uprn.present?
reset_address_fields! if uprn.blank?
if form.start_year_2024_or_later?
if manual_address_entry_selected
self.uprn_known = 0
self.uprn_selection = nil
else
self.uprn_confirmed = 1 if uprn.present?
self.uprn_known = 1 if uprn.present?
reset_address_fields! if uprn.blank?
end
end
if form.start_year_2025_or_later? && is_bedsit?

1
app/services/bulk_upload/lettings/year2024/row_parser.rb

@ -1341,6 +1341,7 @@ private
attributes["address_line1_input"] = address_line1_input
attributes["postcode_full_input"] = postcode_full
attributes["select_best_address_match"] = true if field_16.blank?
attributes["manual_address_entry_selected"] = field_16.blank?
end
attributes

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

@ -985,6 +985,7 @@ private
attributes["address_line1_input"] = address_line1_input
attributes["postcode_full_input"] = postcode_full
attributes["select_best_address_match"] = true if field_22.blank?
attributes["manual_address_entry_selected"] = field_22.blank?
attributes["ethnic_group2"] = infer_buyer2_ethnic_group_from_ethnic
attributes["ethnicbuy2"] = field_40

22
app/services/csv/lettings_log_csv_service.rb

@ -208,6 +208,11 @@ module Csv
3 => "Intermediate Rent",
}.freeze
UPRN_KNOWN_LABELS = {
0 => "No",
1 => "Yes",
}.freeze
LABELS = {
"lettype" => LETTYPE_LABELS,
"irproduct" => IRPRODUCT_LABELS,
@ -215,6 +220,7 @@ module Csv
"newprop" => NEWPROP_LABELS,
"incref" => INCREF_LABELS,
"renttype" => RENTTYPE_LABELS,
"uprn_known" => UPRN_KNOWN_LABELS,
}.freeze
CONVENTIONAL_YES_NO_ATTRIBUTES = %w[illness_type_1 illness_type_2 illness_type_3 illness_type_4 illness_type_5 illness_type_6 illness_type_7 illness_type_8 illness_type_9 illness_type_10 refused cbl cap chr accessible_register letting_allocation_none housingneeds_a housingneeds_b housingneeds_c housingneeds_d housingneeds_e housingneeds_f housingneeds_g housingneeds_h has_benefits nocharge postcode_known].freeze
@ -249,6 +255,18 @@ module Csv
"letting_allocation_unknown" => %w[letting_allocation_none],
}.freeze
ATTRIBUTE_MAPPINGS_2024 = {
"uprn" => %w[uprn_known uprn],
}.freeze
def attribute_mappings
if @year >= 2024
ATTRIBUTE_MAPPINGS.merge(ATTRIBUTE_MAPPINGS_2024)
else
ATTRIBUTE_MAPPINGS
end
end
ORDERED_ADDRESS_FIELDS = %w[uprn address_line1 address_line2 town_or_city county postcode_full is_la_inferred la_label la uprn_known uprn_selection address_search_value_check address_line1_input postcode_full_input address_line1_as_entered address_line2_as_entered town_or_city_as_entered county_as_entered postcode_full_as_entered la_as_entered].freeze
SUPPORT_ONLY_ATTRIBUTES = %w[postcode_known is_la_inferred totchild totelder totadult net_income_known previous_la_known is_previous_la_inferred age1_known age2_known age3_known age4_known age5_known age6_known age7_known age8_known details_known_2 details_known_3 details_known_4 details_known_5 details_known_6 details_known_7 details_known_8 wrent wscharge wpschrge wsupchrg wtcharge wtshortfall old_form_id old_id tshortfall_known hhtype la prevloc updated_by_id uprn_confirmed address_line1_input postcode_full_input uprn_selection address_line1_as_entered address_line2_as_entered town_or_city_as_entered county_as_entered postcode_full_as_entered la_as_entered created_by].freeze
@ -279,10 +297,10 @@ module Csv
ordered_questions.flat_map do |question|
if question.type == "checkbox"
question.answer_options.keys.reject { |key| key == "divider" }.map { |key|
ATTRIBUTE_MAPPINGS.fetch(key, key)
attribute_mappings.fetch(key, key)
}.flatten
else
ATTRIBUTE_MAPPINGS.fetch(question.id, question.id)
attribute_mappings.fetch(question.id, question.id)
end
end
end

14
app/services/csv/sales_log_csv_service.rb

@ -152,6 +152,15 @@ module Csv
"uprn_confirmed" => "UPRNCONFIRMED",
}.freeze
UPRN_CONFIRMED_LABELS = {
0 => "No",
1 => "Yes",
}.freeze
LABELS = {
"uprn_confirmed" => UPRN_CONFIRMED_LABELS,
}.freeze
def formatted_attribute_headers
return @attributes unless @user.support?
@ -208,6 +217,9 @@ module Csv
unless @user.support? && @year >= 2024
mappings["postcode_full"] = %w[pcode1 pcode2]
end
if @year >= 2024
mappings["uprn"] = %w[uprn uprn_confirmed address_line1_input postcode_full_input uprn_selection]
end
mappings
end
@ -280,6 +292,8 @@ module Csv
end
def get_label(value, attribute, log)
return LABELS[attribute][value] if LABELS.key?(attribute)
log.form
.get_question(attribute, log)
&.label_from_value(value)

6
spec/factories/lettings_log.rb

@ -167,13 +167,13 @@ FactoryBot.define do
town_or_city { Faker::Address.city }
ppcodenk { 1 }
tshortfall_known { 1 }
after(:build) do |log, _evaluator|
after(:build) do |log, evaluator|
if log.startdate >= Time.zone.local(2024, 4, 1)
log.address_line1_input = log.address_line1
log.postcode_full_input = log.postcode_full
log.nationality_all_group = 826
log.uprn = "10033558653"
log.uprn_selection = 1
log.uprn = evaluator.uprn || "10033558653"
log.uprn_selection = evaluator.uprn_selection || "1"
end
end
end

6
spec/factories/sales_log.rb

@ -168,14 +168,14 @@ FactoryBot.define do
nationalbuy2 { 13 }
buy2living { 3 }
proplen_asked { 1 }
after(:build) do |log, _evaluator|
after(:build) do |log, evaluator|
if log.saledate >= Time.zone.local(2024, 4, 1)
log.address_line1_input = log.address_line1
log.postcode_full_input = log.postcode_full
log.nationality_all_group = 826
log.nationality_all_buyer2_group = 826
log.uprn = "10033558653"
log.uprn_selection = 1
log.uprn = evaluator.uprn || "10033558653"
log.uprn_selection = evaluator.uprn_selection || "1"
end
if log.saledate >= Time.zone.local(2025, 4, 1)
log.relat2 = "X" if log.relat2 == "C"

2
spec/fixtures/files/sales_logs_csv_export_labels_24.csv vendored

File diff suppressed because one or more lines are too long

2
spec/fixtures/files/sales_logs_csv_export_non_support_labels_24.csv vendored

File diff suppressed because one or more lines are too long

8
spec/services/csv/sales_log_csv_service_spec.rb

@ -199,7 +199,7 @@ RSpec.describe Csv::SalesLogCsvService do
let(:fixed_time) { Time.zone.local(2024, 5, 1) }
before do
log.update!(nationality_all: 36)
log.update!(nationality_all: 36, manual_address_entry_selected: false, uprn: "1", uprn_known: 1)
end
it "exports the CSV with the 2024 ordering and all values correct" do
@ -286,6 +286,10 @@ RSpec.describe Csv::SalesLogCsvService do
let(:fixed_time) { Time.zone.local(2024, 5, 1) }
let(:year) { 2024 }
before do
log.update!(manual_address_entry_selected: false, uprn: "1", uprn_known: 1)
end
it "exports the CSV with all values correct" do
expected_content = CSV.read("spec/fixtures/files/sales_logs_csv_export_codes_24.csv")
values_to_delete = %w[ID]
@ -338,7 +342,7 @@ RSpec.describe Csv::SalesLogCsvService do
let(:fixed_time) { Time.zone.local(2024, 5, 1) }
before do
log.update!(nationality_all: 36)
log.update!(nationality_all: 36, manual_address_entry_selected: false, uprn: "1", uprn_known: 1)
end
context "and exporting with labels" do

5
spec/services/exports/lettings_log_export_service_spec.rb

@ -431,12 +431,15 @@ RSpec.describe Exports::LettingsLogExportService do
end
context "and one lettings log is available for export" do
let!(:lettings_log) { FactoryBot.create(:lettings_log, :completed, assigned_to: user, age1: 35, sex1: "F", age2: 32, sex2: "M", ppostcode_full: "A1 1AA", nationality_all_group: 13, propcode: "123", postcode_full: "SE2 6RT", tenancycode: "BZ737", startdate: Time.zone.local(2024, 4, 2, 10, 36, 49), voiddate: Time.zone.local(2021, 11, 3), mrcdate: Time.zone.local(2022, 5, 5, 10, 36, 49), tenancylength: 5, underoccupation_benefitcap: 4, creation_method: 2, bulk_upload_id: 1, address_line1_as_entered: "address line 1 as entered", address_line2_as_entered: "address line 2 as entered", town_or_city_as_entered: "town or city as entered", county_as_entered: "county as entered", postcode_full_as_entered: "AB1 2CD", la_as_entered: "la as entered") }
let!(:lettings_log) { FactoryBot.create(:lettings_log, :completed, assigned_to: user, age1: 35, sex1: "F", age2: 32, sex2: "M", ppostcode_full: "A1 1AA", nationality_all_group: 13, propcode: "123", postcode_full: "SE2 6RT", tenancycode: "BZ737", startdate: Time.zone.local(2024, 4, 2, 10, 36, 49), voiddate: Time.zone.local(2021, 11, 3), mrcdate: Time.zone.local(2022, 5, 5, 10, 36, 49), tenancylength: 5, underoccupation_benefitcap: 4, creation_method: 2, bulk_upload_id: 1, address_line1_as_entered: "address line 1 as entered", address_line2_as_entered: "address line 2 as entered", town_or_city_as_entered: "town or city as entered", county_as_entered: "county as entered", postcode_full_as_entered: "AB1 2CD", la_as_entered: "la as entered", manual_address_entry_selected: false, uprn: "1", uprn_known: 1) }
let(:expected_zip_filename) { "core_2024_2025_apr_mar_f0001_inc0001.zip" }
let(:expected_data_filename) { "core_2024_2025_apr_mar_f0001_inc0001_pt001.xml" }
let(:xml_export_file) { File.open("spec/fixtures/exports/general_needs_log_24_25.xml", "r:UTF-8") }
it "generates an XML export file with the expected content within the ZIP file" do
expect(lettings_log.uprn).to eq("1")
expect(lettings_log.uprn_known).to eq(1)
expect(lettings_log.uprn_confirmed).to eq(1)
expected_content = replace_entity_ids(lettings_log, xml_export_file.read)
expect(storage_service).to receive(:write_file).with(expected_zip_filename, any_args) do |_, content|
entry = Zip::File.open_buffer(content).find_entry(expected_data_filename)

Loading…
Cancel
Save