diff --git a/app/models/form/lettings/questions/ppcodenk.rb b/app/models/form/lettings/questions/ppcodenk.rb
index 25557a166..c8dbd24d0 100644
--- a/app/models/form/lettings/questions/ppcodenk.rb
+++ b/app/models/form/lettings/questions/ppcodenk.rb
@@ -8,11 +8,14 @@ class Form::Lettings::Questions::Ppcodenk < ::Form::Question
@check_answers_card_number = 0
@hint_text = "This is also known as the household’s ‘last settled home’."
@answer_options = ANSWER_OPTIONS
- @conditional_for = { "ppostcode_full" => [1] }
+ @conditional_for = { "ppostcode_full" => [0] }
@hidden_in_check_answers = { "depends_on" => [{ "ppcodenk" => 0 }, { "ppcodenk" => 1 }] }
@question_number = 80
@disable_clearing_if_not_routed_or_dynamic_answer_options = true
end
- ANSWER_OPTIONS = { "1" => { "value" => "Yes" }, "0" => { "value" => "No" } }.freeze
+ ANSWER_OPTIONS = {
+ "0" => { "value" => "Yes" },
+ "1" => { "value" => "No" },
+ }.freeze
end
diff --git a/app/models/form/lettings/questions/ppostcode_full.rb b/app/models/form/lettings/questions/ppostcode_full.rb
index 86b4c7b31..edcbaf30a 100644
--- a/app/models/form/lettings/questions/ppostcode_full.rb
+++ b/app/models/form/lettings/questions/ppostcode_full.rb
@@ -6,7 +6,12 @@ class Form::Lettings::Questions::PpostcodeFull < ::Form::Question
@header = "Postcode for the previous accommodation"
@type = "text"
@width = 5
- @inferred_check_answers_value = [{ "condition" => { "ppcodenk" => 0 }, "value" => "Not known" }]
+ @inferred_check_answers_value = [{
+ "condition" => {
+ "ppcodenk" => 1,
+ },
+ "value" => "Not known",
+ }]
@check_answers_card_number = 0
@hint_text = ""
@inferred_answers = { "prevloc" => { "is_previous_la_inferred" => true } }
diff --git a/app/models/form/question.rb b/app/models/form/question.rb
index c27dca9c2..9f0a8aac9 100644
--- a/app/models/form/question.rb
+++ b/app/models/form/question.rb
@@ -116,20 +116,20 @@ class Form::Question
if is_derived_or_has_inferred_check_answers_value?(log)
"Change"
elsif type == "checkbox"
- answer_options.keys.any? { |key| value_is_yes?(log[key], log.lettings?) } ? "Change" : "Answer"
+ answer_options.keys.any? { |key| value_is_yes?(log[key]) } ? "Change" : "Answer"
else
log[id].blank? ? "Answer" : "Change"
end
end
def unanswered?(log)
- return answer_options.keys.none? { |key| value_is_yes?(log[key], log.lettings?) } if type == "checkbox"
+ return answer_options.keys.none? { |key| value_is_yes?(log[key]) } if type == "checkbox"
log[id].blank?
end
def completed?(log)
- return answer_options.keys.any? { |key| value_is_yes?(log[key], log.lettings?) } if type == "checkbox"
+ return answer_options.keys.any? { |key| value_is_yes?(log[key]) } if type == "checkbox"
log[id].present? || !log.respond_to?(id.to_sym) || has_inferred_display_value?(log)
end
@@ -166,18 +166,18 @@ class Form::Question
label || value.to_s
end
- def value_is_yes?(value, is_lettings)
+ def value_is_yes?(value)
case type
when "checkbox"
value == 1
when "radio"
- is_lettings ? RADIO_YES_VALUE_LETTINGS[id.to_sym]&.include?(value) : RADIO_YES_VALUE_SALES[id.to_sym]&.include?(value)
+ RADIO_YES_VALUE[id.to_sym]&.include?(value)
else
%w[yes].include?(value.downcase)
end
end
- def value_is_no?(value, is_lettings)
+ def value_is_no?(value)
case type
when "checkbox"
value && value.zero?
@@ -272,9 +272,9 @@ private
def checkbox_answer_label(log)
answer = []
- return "Yes" if id == "declaration" && value_is_yes?(log["declaration"], log.lettings?)
+ return "Yes" if id == "declaration" && value_is_yes?(log["declaration"])
- answer_options.each { |key, options| value_is_yes?(log[key], log.lettings?) ? answer << options["value"] : nil }
+ answer_options.each { |key, options| value_is_yes?(log[key]) ? answer << options["value"] : nil }
answer.join(", ")
end
@@ -338,6 +338,7 @@ private
is_carehome: [1],
hbrentshortfall: [1],
net_income_value_check: [0],
+ ppcodenk: [0],
}.freeze
RADIO_NO_VALUE = {
@@ -362,13 +363,9 @@ private
is_carehome: [0],
hbrentshortfall: [2],
net_income_value_check: [1],
+ ppcodenk: [1],
}.freeze
- RADIO_YES_VALUE_LETTINGS = RADIO_YES_VALUE.merge({ ppcodenk: [1] })
- RADIO_YES_VALUE_SALES = RADIO_YES_VALUE.merge({ ppcodenk: [0] })
- RADIO_NO_VALUE_LETTINGS = RADIO_NO_VALUE.merge({ ppcodenk: [0] })
- RADIO_NO_VALUE_SALES = RADIO_NO_VALUE.merge({ ppcodenk: [1] })
-
RADIO_DONT_KNOW_VALUE = {
sheltered: [3],
underoccupation_benefitcap: [3],
diff --git a/app/models/lettings_log.rb b/app/models/lettings_log.rb
index 9ab6329d2..6d15699cc 100644
--- a/app/models/lettings_log.rb
+++ b/app/models/lettings_log.rb
@@ -260,8 +260,8 @@ class LettingsLog < Log
end
def previous_postcode_known?
- # 1: Yes
- ppcodenk == 1
+ # 0: Yes
+ ppcodenk&.zero?
end
def previous_la_known?
@@ -628,16 +628,22 @@ private
def process_postcode_changes!
self.postcode_full = upcase_and_remove_whitespace(postcode_full)
- process_postcode(postcode_full, "postcode_known", "is_la_inferred", "la")
+ return if postcode_full.blank?
+
+ self.postcode_known = 1
+ inferred_la = get_inferred_la(postcode_full)
+ self.is_la_inferred = inferred_la.present?
+ self.la = inferred_la if inferred_la.present?
end
- def process_postcode(postcode, postcode_known_key, la_inferred_key, la_key)
- return if postcode.blank?
+ def process_previous_postcode_changes!
+ self.ppostcode_full = upcase_and_remove_whitespace(ppostcode_full)
+ return if ppostcode_full.blank?
- self[postcode_known_key] = 1
- inferred_la = get_inferred_la(postcode)
- self[la_inferred_key] = inferred_la.present?
- self[la_key] = inferred_la if inferred_la.present?
+ self.ppcodenk = 0
+ inferred_la = get_inferred_la(ppostcode_full)
+ self.is_previous_la_inferred = inferred_la.present?
+ self.prevloc = inferred_la if inferred_la.present?
end
def get_has_benefits
diff --git a/app/models/log.rb b/app/models/log.rb
index 024470b21..849927cf1 100644
--- a/app/models/log.rb
+++ b/app/models/log.rb
@@ -232,11 +232,6 @@ private
PIO = PostcodeService.new
- def process_previous_postcode_changes!
- self.ppostcode_full = upcase_and_remove_whitespace(ppostcode_full)
- process_postcode(ppostcode_full, "ppcodenk", "is_previous_la_inferred", "prevloc")
- end
-
LA_CHANGES = {
"E07000027" => "E06000064", # Barrow-in-Furness => Westmorland and Furness
"E07000030" => "E06000064", # Eden => Westmorland and Furness
diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb
index 283485d11..f144336bf 100644
--- a/app/models/sales_log.rb
+++ b/app/models/sales_log.rb
@@ -278,15 +278,6 @@ class SalesLog < Log
mortgage + deposit
end
- def process_postcode(postcode, postcode_known_key, la_inferred_key, la_key)
- return if postcode.blank?
-
- self[postcode_known_key] = 0
- inferred_la = get_inferred_la(postcode)
- self[la_inferred_key] = inferred_la.present?
- self[la_key] = inferred_la if inferred_la.present?
- end
-
def outright_sale?
ownershipsch == 3
end
@@ -305,7 +296,22 @@ class SalesLog < Log
def process_postcode_changes!
self.postcode_full = upcase_and_remove_whitespace(postcode_full)
- process_postcode(postcode_full, "pcodenk", "is_la_inferred", "la")
+ return if postcode_full.blank?
+
+ self.pcodenk = 0
+ inferred_la = get_inferred_la(postcode_full)
+ self.is_la_inferred = inferred_la.present?
+ self.la = inferred_la if inferred_la.present?
+ end
+
+ def process_previous_postcode_changes!
+ self.ppostcode_full = upcase_and_remove_whitespace(ppostcode_full)
+ return if ppostcode_full.blank?
+
+ self.ppcodenk = 0
+ inferred_la = get_inferred_la(ppostcode_full)
+ self.is_previous_la_inferred = inferred_la.present?
+ self.prevloc = inferred_la if inferred_la.present?
end
def reset_created_by!
diff --git a/app/services/bulk_upload/lettings/year2022/row_parser.rb b/app/services/bulk_upload/lettings/year2022/row_parser.rb
index 9bef9312f..a5c598d5a 100644
--- a/app/services/bulk_upload/lettings/year2022/row_parser.rb
+++ b/app/services/bulk_upload/lettings/year2022/row_parser.rb
@@ -1285,9 +1285,9 @@ private
def ppcodenk
case field_65
when 1
- 1
- when 2
0
+ when 2
+ 1
end
end
diff --git a/app/services/bulk_upload/lettings/year2023/row_parser.rb b/app/services/bulk_upload/lettings/year2023/row_parser.rb
index 8d023792c..4abfdac17 100644
--- a/app/services/bulk_upload/lettings/year2023/row_parser.rb
+++ b/app/services/bulk_upload/lettings/year2023/row_parser.rb
@@ -1424,9 +1424,9 @@ private
def ppcodenk
case field_106
when 1
- 1
- when 2
0
+ when 2
+ 1
end
end
diff --git a/app/services/imports/lettings_logs_import_service.rb b/app/services/imports/lettings_logs_import_service.rb
index 339dc5ca9..a1c957b85 100644
--- a/app/services/imports/lettings_logs_import_service.rb
+++ b/app/services/imports/lettings_logs_import_service.rb
@@ -465,11 +465,11 @@ module Imports
def previous_postcode_known(xml_doc, previous_postcode, prevloc)
previous_postcode_known = string_or_nil(xml_doc, "Q12bnot")
if previous_postcode_known == "Temporary_or_Unknown" || (previous_postcode.nil? && prevloc.present?)
- 0 # not known
+ 1 # not known
elsif previous_postcode.nil?
nil
else
- 1 # known
+ 0 # known
end
end
diff --git a/config/forms/2021_2022.json b/config/forms/2021_2022.json
index 75660731d..086f201c2 100644
--- a/config/forms/2021_2022.json
+++ b/config/forms/2021_2022.json
@@ -6488,15 +6488,15 @@
"disable_clearing_if_not_routed_or_dynamic_answer_options": true,
"answer_options": {
"1": {
- "value": "Yes"
+ "value": "No"
},
"0": {
- "value": "No"
+ "value": "Yes"
}
},
"conditional_for": {
"ppostcode_full": [
- 1
+ 0
]
},
"hidden_in_check_answers": {
@@ -6524,7 +6524,7 @@
},
"inferred_check_answers_value": [{
"condition": {
- "ppcodenk": 0
+ "ppcodenk": 1
},
"value": "Not known"
}]
diff --git a/config/forms/2022_2023.json b/config/forms/2022_2023.json
index 8d5f674f3..f8eb4d4c5 100644
--- a/config/forms/2022_2023.json
+++ b/config/forms/2022_2023.json
@@ -6388,16 +6388,16 @@
"type": "radio",
"disable_clearing_if_not_routed_or_dynamic_answer_options": true,
"answer_options": {
- "1": {
+ "0": {
"value": "Yes"
},
- "0": {
+ "1": {
"value": "No"
}
},
"conditional_for": {
"ppostcode_full": [
- 1
+ 0
]
},
"hidden_in_check_answers": {
@@ -6425,7 +6425,7 @@
},
"inferred_check_answers_value": [{
"condition": {
- "ppcodenk": 0
+ "ppcodenk": 1
},
"value": "Not known"
}]
diff --git a/lib/tasks/correct_ppcodenk_values.rake b/lib/tasks/correct_ppcodenk_values.rake
new file mode 100644
index 000000000..86c678fc0
--- /dev/null
+++ b/lib/tasks/correct_ppcodenk_values.rake
@@ -0,0 +1,6 @@
+desc "Alter ppcodenk values for non imported lettings logs in the database"
+task correct_ppcodenk_values: :environment do
+ LettingsLog.where.not(ppcodenk: nil).find_each do |log|
+ log.update_columns(ppcodenk: log.ppcodenk == 1 ? 0 : 1)
+ end
+end
diff --git a/spec/factories/lettings_log.rb b/spec/factories/lettings_log.rb
index 59eb48da2..6cce1dfea 100644
--- a/spec/factories/lettings_log.rb
+++ b/spec/factories/lettings_log.rb
@@ -166,7 +166,7 @@ FactoryBot.define do
joint { 3 }
address_line1 { "fake address" }
town_or_city { "London" }
- ppcodenk { 0 }
+ ppcodenk { 1 }
tshortfall_known { 1 }
end
trait :export do
diff --git a/spec/fixtures/exports/general_needs_log.xml b/spec/fixtures/exports/general_needs_log.xml
index f996d5097..27a995304 100644
--- a/spec/fixtures/exports/general_needs_log.xml
+++ b/spec/fixtures/exports/general_needs_log.xml
@@ -109,7 +109,7 @@
325.0
12.0
- 1
+ 0
1
0
100.0
diff --git a/spec/fixtures/exports/general_needs_log_23_24.xml b/spec/fixtures/exports/general_needs_log_23_24.xml
index 796c0c72e..aa3ca758a 100644
--- a/spec/fixtures/exports/general_needs_log_23_24.xml
+++ b/spec/fixtures/exports/general_needs_log_23_24.xml
@@ -109,7 +109,7 @@
325.0
12.0
- 1
+ 0
1
0
100.0
diff --git a/spec/fixtures/exports/supported_housing_logs.xml b/spec/fixtures/exports/supported_housing_logs.xml
index 032590622..73595e76f 100644
--- a/spec/fixtures/exports/supported_housing_logs.xml
+++ b/spec/fixtures/exports/supported_housing_logs.xml
@@ -108,7 +108,7 @@
325.0
12.0
- 1
+ 0
1
0
100.0
diff --git a/spec/fixtures/files/lettings_log_csv_export_codes.csv b/spec/fixtures/files/lettings_log_csv_export_codes.csv
index e4a1c53e3..2fc1624af 100644
--- a/spec/fixtures/files/lettings_log_csv_export_codes.csv
+++ b/spec/fixtures/files/lettings_log_csv_export_codes.csv
@@ -1,2 +1,2 @@
id,status,created_by,is_dpo,created_at,updated_by,updated_at,creation_method,old_id,old_form_id,collection_start_year,owning_organisation_name,managing_organisation_name,needstype,lettype,renewal,startdate,renttype,rent_type_detail,irproduct,irproduct_other,lar,tenancycode,propcode,uprn_known,uprn,uprn_confirmed,address_line1,address_line2,town_or_city,county,postcode_full,is_la_inferred,la_label,la,first_time_property_let_as_social_housing,unitletas,rsnvac,newprop,offered,unittype_gn,builtype,wchair,beds,voiddate,vacdays,void_date_value_check,majorrepairs,mrcdate,major_repairs_date_value_check,joint,startertenancy,tenancy,tenancyother,tenancylength,sheltered,declaration,hhmemb,pregnancy_value_check,age1_known,refused,hhtype,totchild,totelder,totadult,age1,retirement_value_check,sex1,ethnic_group,ethnic,national,ecstat1,details_known_2,relat2,age2_known,age2,sex2,ecstat2,details_known_3,relat3,age3_known,age3,sex3,ecstat3,details_known_4,relat4,age4_known,age4,sex4,ecstat4,details_known_5,relat5,age5_known,age5,sex5,ecstat5,details_known_6,relat6,age6_known,age6,sex6,ecstat6,details_known_7,relat7,age7_known,age7,sex7,ecstat7,details_known_8,relat8,age8_known,age8,sex8,ecstat8,armedforces,leftreg,reservist,preg_occ,housingneeds,housingneeds_type,housingneeds_a,housingneeds_b,housingneeds_c,housingneeds_f,housingneeds_g,housingneeds_h,housingneeds_other,illness,illness_type_4,illness_type_5,illness_type_2,illness_type_6,illness_type_7,illness_type_3,illness_type_9,illness_type_8,illness_type_1,illness_type_10,layear,waityear,reason,reasonother,prevten,new_old,homeless,ppcodenk,ppostcode_full,previous_la_known,is_previous_la_inferred,prevloc_label,prevloc,reasonpref,rp_homeless,rp_insan_unsat,rp_medwel,rp_hardship,rp_dontknow,cbl,cap,chr,letting_allocation_unknown,referral,net_income_known,incref,earnings,incfreq,net_income_value_check,hb,has_benefits,benefits,household_charge,nocharge,period,is_carehome,chcharge,wchchrg,carehome_charges_value_check,brent,wrent,rent_value_check,scharge,wscharge,pscharge,wpschrge,supcharg,wsupchrg,tcharge,wtcharge,hbrentshortfall,tshortfall_known,tshortfall,wtshortfall,scheme_code,scheme_service_name,scheme_sensitive,SCHTYPE,scheme_registered_under_care_act,scheme_owning_organisation_name,scheme_primary_client_group,scheme_has_other_client_group,scheme_secondary_client_group,scheme_support_type,scheme_intended_stay,scheme_created_at,location_code,location_postcode,location_name,location_units,location_type_of_unit,location_mobility_type,location_admin_district,location_startdate
-,completed,s.port@jeemayle.com,false,2023-06-26T00:00:00+01:00,,2023-06-26T00:00:00+01:00,1,,,2023,DLUHC,DLUHC,1,7,0,2023-06-26T00:00:00+01:00,2,1,,,,HIJKLMN,ABCDEFG,0,,,fake address,,London,,NW9 5LL,false,Barnet,E09000003,0,2,6,2,2,7,1,1,3,2023-06-24T00:00:00+01:00,,,1,2023-06-25T00:00:00+01:00,,3,1,4,,2,,1,2,,0,0,4,0,0,2,35,,F,0,2,13,0,0,P,0,32,M,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,4,1,2,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,2,7,4,,6,2,1,1,TN23 6LZ,1,false,Ashford,E07000105,1,0,1,0,0,0,0,0,1,,2,0,0,68,1,,6,1,1,,0,2,,,,,200.0,100.0,,50.0,25.0,40.0,20.0,35.0,17.5,325.0,162.5,1,0,12.0,6.0,,,,,,,,,,,,,,,,,,,,
+,completed,s.port@jeemayle.com,false,2023-06-26T00:00:00+01:00,,2023-06-26T00:00:00+01:00,1,,,2023,DLUHC,DLUHC,1,7,0,2023-06-26T00:00:00+01:00,2,1,,,,HIJKLMN,ABCDEFG,0,,,fake address,,London,,NW9 5LL,false,Barnet,E09000003,0,2,6,2,2,7,1,1,3,2023-06-24T00:00:00+01:00,,,1,2023-06-25T00:00:00+01:00,,3,1,4,,2,,1,2,,0,0,4,0,0,2,35,,F,0,2,13,0,0,P,0,32,M,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,4,1,2,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,2,7,4,,6,2,1,0,TN23 6LZ,1,false,Ashford,E07000105,1,0,1,0,0,0,0,0,1,,2,0,0,68,1,,6,1,1,,0,2,,,,,200.0,100.0,,50.0,25.0,40.0,20.0,35.0,17.5,325.0,162.5,1,0,12.0,6.0,,,,,,,,,,,,,,,,,,,,
diff --git a/spec/fixtures/files/lettings_log_csv_export_non_support_codes.csv b/spec/fixtures/files/lettings_log_csv_export_non_support_codes.csv
index 4cfdc963c..8847034ee 100644
--- a/spec/fixtures/files/lettings_log_csv_export_non_support_codes.csv
+++ b/spec/fixtures/files/lettings_log_csv_export_non_support_codes.csv
@@ -1,2 +1,2 @@
id,status,created_by,is_dpo,created_at,updated_by,updated_at,creation_method,collection_start_year,owning_organisation_name,managing_organisation_name,lettype,renewal,startdate,irproduct,irproduct_other,lar,tenancycode,propcode,uprn_known,uprn,address_line1,address_line2,town_or_city,county,postcode_full,la_label,unitletas,rsnvac,newprop,offered,unittype_gn,builtype,wchair,beds,voiddate,void_date_value_check,majorrepairs,mrcdate,major_repairs_date_value_check,joint,startertenancy,tenancy,tenancyother,tenancylength,sheltered,declaration,refused,age1,sex1,ethnic_group,ethnic,national,ecstat1,relat2,age2,sex2,ecstat2,relat3,age3,sex3,ecstat3,relat4,age4,sex4,ecstat4,relat5,age5,sex5,ecstat5,relat6,age6,sex6,ecstat6,relat7,age7,sex7,ecstat7,relat8,age8,sex8,ecstat8,armedforces,leftreg,reservist,preg_occ,housingneeds,housingneeds_type,housingneeds_a,housingneeds_b,housingneeds_c,housingneeds_f,housingneeds_g,housingneeds_h,housingneeds_other,illness,illness_type_4,illness_type_5,illness_type_2,illness_type_6,illness_type_7,illness_type_3,illness_type_9,illness_type_8,illness_type_1,illness_type_10,layear,waityear,reason,reasonother,prevten,homeless,ppcodenk,ppostcode_full,prevloc_label,reasonpref,rp_homeless,rp_insan_unsat,rp_medwel,rp_hardship,rp_dontknow,cbl,cap,chr,referral,incref,earnings,incfreq,hb,has_benefits,benefits,household_charge,nocharge,period,chcharge,wchchrg,carehome_charges_value_check,brent,scharge,pscharge,supcharg,tcharge,hbrentshortfall,tshortfall,scheme_code,scheme_service_name,scheme_sensitive,SCHTYPE,scheme_registered_under_care_act,scheme_owning_organisation_name,scheme_primary_client_group,scheme_has_other_client_group,scheme_secondary_client_group,scheme_support_type,scheme_intended_stay,scheme_created_at,location_code,location_postcode,location_name,location_units,location_type_of_unit,location_mobility_type,location_admin_district,location_startdate
-,completed,choreographer@owtluk.com,false,2023-06-26T00:00:00+01:00,,2023-06-26T00:00:00+01:00,1,2023,DLUHC,DLUHC,7,0,2023-06-26T00:00:00+01:00,,,,HIJKLMN,ABCDEFG,0,,fake address,,London,,NW9 5LL,Barnet,2,6,2,2,7,1,1,3,2023-06-24T00:00:00+01:00,,1,2023-06-25T00:00:00+01:00,,3,1,4,,2,,1,0,35,F,0,2,13,0,P,32,M,6,,,,,,,,,,,,,,,,,,,,,,,,,1,4,1,2,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,2,7,4,,6,1,1,TN23 6LZ,Ashford,1,0,1,0,0,0,0,0,1,2,0,68,1,6,1,1,,0,2,,,,200.0,50.0,40.0,35.0,325.0,1,12.0,,,,,,,,,,,,,,,,,,,,
+,completed,choreographer@owtluk.com,false,2023-06-26T00:00:00+01:00,,2023-06-26T00:00:00+01:00,1,2023,DLUHC,DLUHC,7,0,2023-06-26T00:00:00+01:00,,,,HIJKLMN,ABCDEFG,0,,fake address,,London,,NW9 5LL,Barnet,2,6,2,2,7,1,1,3,2023-06-24T00:00:00+01:00,,1,2023-06-25T00:00:00+01:00,,3,1,4,,2,,1,0,35,F,0,2,13,0,P,32,M,6,,,,,,,,,,,,,,,,,,,,,,,,,1,4,1,2,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,2,7,4,,6,1,0,TN23 6LZ,Ashford,1,0,1,0,0,0,0,0,1,2,0,68,1,6,1,1,,0,2,,,,200.0,50.0,40.0,35.0,325.0,1,12.0,,,,,,,,,,,,,,,,,,,,
diff --git a/spec/lib/tasks/correct_ppcodenk_values_spec.rb b/spec/lib/tasks/correct_ppcodenk_values_spec.rb
new file mode 100644
index 000000000..fabfd05f3
--- /dev/null
+++ b/spec/lib/tasks/correct_ppcodenk_values_spec.rb
@@ -0,0 +1,67 @@
+require "rails_helper"
+require "rake"
+
+RSpec.describe "correct_ppcodenk_values" do
+ describe ":correct_ppcodenk_values", type: :task do
+ subject(:task) { Rake::Task["correct_ppcodenk_values"] }
+
+ before do
+ Rake.application.rake_require("tasks/correct_ppcodenk_values")
+ Rake::Task.define_task(:environment)
+ task.reenable
+ end
+
+ context "when the rake task is run" do
+ let!(:lettings_log) { create(:lettings_log, :completed) }
+
+ it "updates lettings logs with ppcodenk 0 to have ppcodenk 1" do
+ lettings_log.update!(ppcodenk: 0)
+ task.invoke
+ expect(lettings_log.reload.ppcodenk).to eq(1)
+ end
+
+ it "updates lettings logs with ppcodenk 1 to have ppcodenk 0" do
+ lettings_log.update!(ppcodenk: 1)
+ task.invoke
+ expect(lettings_log.reload.ppcodenk).to eq(0)
+ end
+
+ it "does not update lettings logs with ppcodenk nil" do
+ lettings_log.update!(ppcodenk: nil)
+ task.invoke
+ expect(lettings_log.reload.ppcodenk).to eq(nil)
+ end
+
+ context "with multiple lettings logs" do
+ let(:lettings_log_2) { create(:lettings_log, :completed) }
+ let(:lettings_log_3) { create(:lettings_log, :completed) }
+
+ it "only updates each log once" do
+ lettings_log.update!(ppcodenk: nil)
+ lettings_log_2.update!(ppcodenk: 0)
+ lettings_log_3.update!(ppcodenk: 1)
+ task.invoke
+ expect(lettings_log.reload.ppcodenk).to eq(nil)
+ expect(lettings_log_2.reload.ppcodenk).to eq(1)
+ expect(lettings_log_3.reload.ppcodenk).to eq(0)
+ end
+ end
+
+ it "does not update updated_at value" do
+ lettings_log.updated_at = Time.zone.local(2021, 3, 3)
+ lettings_log.save!(validate: false)
+ expect(lettings_log.updated_at.to_date).to eq(Time.zone.local(2021, 3, 3))
+ task.invoke
+ expect(lettings_log.updated_at.to_date).to eq(Time.zone.local(2021, 3, 3))
+ end
+
+ it "skips validations for previous years" do
+ lettings_log.update!(ppcodenk: 1)
+ lettings_log.startdate = Time.zone.local(2021, 3, 3)
+ lettings_log.save!(validate: false)
+ task.invoke
+ expect(lettings_log.reload.ppcodenk).to eq(0)
+ end
+ end
+ end
+end
diff --git a/spec/models/form/question_spec.rb b/spec/models/form/question_spec.rb
index 08d08032f..4c3579793 100644
--- a/spec/models/form/question_spec.rb
+++ b/spec/models/form/question_spec.rb
@@ -60,37 +60,9 @@ RSpec.describe Form::Question, type: :model do
end
it "has a yes value helper" do
- expect(question).to be_value_is_yes("Yes", true)
- expect(question).to be_value_is_yes("YES", true)
- expect(question).not_to be_value_is_yes("random", true)
- end
-
- it "has a no value helper" do
- expect(question).to be_value_is_no("No", true)
- expect(question).to be_value_is_no("NO", true)
- expect(question).not_to be_value_is_no("random", true)
- end
-
- context "when there are different value helper values for lettings and sales" do
- context "with a lettings log" do
- let(:lettings_log) { FactoryBot.build(:lettings_log, :in_progress) }
- let(:question) { Form::Lettings::Questions::Ppcodenk.new(nil, nil, Form::Lettings::Pages::PreviousPostcode.new("previous_postcode", nil, Form::Lettings::Subsections::HouseholdSituation.new(nil, nil, Form::Lettings::Sections::Household))) }
-
- it "has the correct values" do
- expect(question.value_is_yes?(1, lettings_log.lettings?)).to be true
- expect(question.value_is_no?(0, lettings_log.lettings?)).to be true
- end
- end
-
- context "with a sales log" do
- let(:sales_log) { FactoryBot.build(:sales_log, :in_progress) }
- let(:question) { Form::Sales::Questions::PreviousPostcodeKnown.new(nil, nil, Form::Sales::Pages::LastAccommodation.new("previous_postcode", nil, Form::Sales::Subsections::HouseholdSituation.new(nil, nil, Form::Sales::Sections::Household))) }
-
- it "has the correct values" do
- expect(question.value_is_yes?(0, sales_log.lettings?)).to be true
- expect(question.value_is_no?(1, sales_log.lettings?)).to be true
- end
- end
+ expect(question).to be_value_is_yes("Yes")
+ expect(question).to be_value_is_yes("YES")
+ expect(question).not_to be_value_is_yes("random")
end
context "when type is numeric" do
@@ -130,10 +102,8 @@ RSpec.describe Form::Question, type: :model do
let(:question_id) { "illness" }
it "maps those options" do
- expect(question).to be_value_is_yes(1, true)
- expect(question).not_to be_value_is_no(1, true)
+ expect(question).to be_value_is_yes(1)
expect(question).not_to be_value_is_refused(1)
- expect(question).to be_value_is_no(2, true)
expect(question).to be_value_is_dont_know(3)
end
end
@@ -145,8 +115,7 @@ RSpec.describe Form::Question, type: :model do
let(:question_id) { "layear" }
it "maps those options" do
- expect(question).not_to be_value_is_yes(7, true)
- expect(question).not_to be_value_is_no(7, true)
+ expect(question).not_to be_value_is_yes(7)
expect(question).not_to be_value_is_refused(7)
expect(question).to be_value_is_dont_know(7)
end
@@ -231,13 +200,8 @@ RSpec.describe Form::Question, type: :model do
end
it "can map yes values" do
- expect(question).to be_value_is_yes(1, true)
- expect(question).not_to be_value_is_yes(0, true)
- end
-
- it "can map no values" do
- expect(question).to be_value_is_no(0, true)
- expect(question).not_to be_value_is_no(1, true)
+ expect(question).to be_value_is_yes(1)
+ expect(question).not_to be_value_is_yes(0)
end
end
diff --git a/spec/models/lettings_log_spec.rb b/spec/models/lettings_log_spec.rb
index e89015233..74a04f9e6 100644
--- a/spec/models/lettings_log_spec.rb
+++ b/spec/models/lettings_log_spec.rb
@@ -1329,7 +1329,7 @@ RSpec.describe LettingsLog do
managing_organisation: owning_organisation,
owning_organisation:,
created_by: created_by_user,
- ppcodenk: 1,
+ ppcodenk: 0,
ppostcode_full: "M1 1AE",
})
end
@@ -1369,7 +1369,7 @@ RSpec.describe LettingsLog do
end
it "correctly resets all fields if previous postcode not known" do
- address_lettings_log.update!({ ppcodenk: 0 })
+ address_lettings_log.update!({ ppcodenk: 1 })
record_from_db = described_class.find(address_lettings_log.id)
expect(record_from_db["ppostcode_full"]).to eq(nil)
@@ -1378,7 +1378,7 @@ RSpec.describe LettingsLog do
end
it "correctly resets la if la is not known" do
- address_lettings_log.update!({ ppcodenk: 0 })
+ address_lettings_log.update!({ ppcodenk: 1 })
address_lettings_log.update!({ previous_la_known: 1, prevloc: "S92000003" })
record_from_db = described_class.find(address_lettings_log.id)
expect(record_from_db["prevloc"]).to eq("S92000003")
@@ -1391,7 +1391,7 @@ RSpec.describe LettingsLog do
end
it "changes the prevloc if previous postcode changes from not known to known and provided" do
- address_lettings_log.update!({ ppcodenk: 0 })
+ address_lettings_log.update!({ ppcodenk: 1 })
address_lettings_log.update!({ previous_la_known: 1, prevloc: "E09000033" })
record_from_db = described_class.find(address_lettings_log.id)
diff --git a/spec/models/validations/local_authority_validations_spec.rb b/spec/models/validations/local_authority_validations_spec.rb
index 1c0388c34..3b903e4dc 100644
--- a/spec/models/validations/local_authority_validations_spec.rb
+++ b/spec/models/validations/local_authority_validations_spec.rb
@@ -4,35 +4,35 @@ RSpec.describe Validations::LocalAuthorityValidations do
subject(:local_auth_validator) { validator_class.new }
let(:validator_class) { Class.new { include Validations::LocalAuthorityValidations } }
- let(:record) { FactoryBot.create(:lettings_log) }
+ let(:log) { create(:lettings_log) }
describe "#validate_previous_accommodation_postcode" do
- it "does not add an error if the record ppostcode_full is missing" do
- record.ppostcode_full = nil
- local_auth_validator.validate_previous_accommodation_postcode(record)
- expect(record.errors).to be_empty
+ it "does not add an error if the log ppostcode_full is missing" do
+ log.ppostcode_full = nil
+ local_auth_validator.validate_previous_accommodation_postcode(log)
+ expect(log.errors).to be_empty
end
- it "does not add an error if the record ppostcode_full is valid (uppercase space)" do
- record.ppcodenk = 1
- record.ppostcode_full = "M1 1AE"
- local_auth_validator.validate_previous_accommodation_postcode(record)
- expect(record.errors).to be_empty
+ it "does not add an error if the log ppostcode_full is valid (uppercase space)" do
+ log.ppcodenk = 0
+ log.ppostcode_full = "M1 1AE"
+ local_auth_validator.validate_previous_accommodation_postcode(log)
+ expect(log.errors).to be_empty
end
- it "does not add an error if the record ppostcode_full is valid (lowercase no space)" do
- record.ppcodenk = 1
- record.ppostcode_full = "m11ae"
- local_auth_validator.validate_previous_accommodation_postcode(record)
- expect(record.errors).to be_empty
+ it "does not add an error if the log ppostcode_full is valid (lowercase no space)" do
+ log.ppcodenk = 0
+ log.ppostcode_full = "m11ae"
+ local_auth_validator.validate_previous_accommodation_postcode(log)
+ expect(log.errors).to be_empty
end
it "does add an error when the postcode is invalid" do
- record.ppcodenk = 1
- record.ppostcode_full = "invalid"
- local_auth_validator.validate_previous_accommodation_postcode(record)
- expect(record.errors).not_to be_empty
- expect(record.errors["ppostcode_full"]).to include(match I18n.t("validations.postcode"))
+ log.ppcodenk = 0
+ log.ppostcode_full = "invalid"
+ local_auth_validator.validate_previous_accommodation_postcode(log)
+ expect(log.errors).not_to be_empty
+ expect(log.errors["ppostcode_full"]).to include(match I18n.t("validations.postcode"))
end
end
end
diff --git a/spec/services/bulk_upload/lettings/log_creator_spec.rb b/spec/services/bulk_upload/lettings/log_creator_spec.rb
index 03724577b..6dfaff46c 100644
--- a/spec/services/bulk_upload/lettings/log_creator_spec.rb
+++ b/spec/services/bulk_upload/lettings/log_creator_spec.rb
@@ -67,7 +67,7 @@ RSpec.describe BulkUpload::Lettings::LogCreator do
waityear: 9,
joint: 2,
tenancy: 9,
- ppcodenk: 0,
+ ppcodenk: 1,
)
end
@@ -153,7 +153,7 @@ RSpec.describe BulkUpload::Lettings::LogCreator do
waityear: 9,
joint: 2,
tenancy: 9,
- ppcodenk: 0,
+ ppcodenk: 1,
)
end
diff --git a/spec/services/bulk_upload/lettings/year2022/row_parser_spec.rb b/spec/services/bulk_upload/lettings/year2022/row_parser_spec.rb
index 6b5eaa2ae..7380ca550 100644
--- a/spec/services/bulk_upload/lettings/year2022/row_parser_spec.rb
+++ b/spec/services/bulk_upload/lettings/year2022/row_parser_spec.rb
@@ -1562,7 +1562,7 @@ RSpec.describe BulkUpload::Lettings::Year2022::RowParser do
let(:attributes) { { bulk_upload:, field_65: "2" } }
it "sets correct value from mapping" do
- expect(parser.log.ppcodenk).to eq(0)
+ expect(parser.log.ppcodenk).to eq(1)
end
end
diff --git a/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb b/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb
index cac166f46..c2f816ab6 100644
--- a/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb
+++ b/spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb
@@ -1642,7 +1642,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do
let(:attributes) { { bulk_upload:, field_106: "2" } }
it "sets correct value from mapping" do
- expect(parser.log.ppcodenk).to eq(0)
+ expect(parser.log.ppcodenk).to eq(1)
end
end
diff --git a/spec/services/bulk_upload/processor_spec.rb b/spec/services/bulk_upload/processor_spec.rb
index f01f2daf7..9f287c592 100644
--- a/spec/services/bulk_upload/processor_spec.rb
+++ b/spec/services/bulk_upload/processor_spec.rb
@@ -176,7 +176,7 @@ RSpec.describe BulkUpload::Processor do
waityear: 9,
joint: 2,
tenancy: 9,
- ppcodenk: 0,
+ ppcodenk: 1,
voiddate: nil,
mrcdate: nil,
startdate: Date.new(2022, 10, 1),
@@ -385,7 +385,7 @@ RSpec.describe BulkUpload::Processor do
waityear: 9,
joint: 2,
tenancy: 2,
- ppcodenk: 0,
+ ppcodenk: 1,
voiddate: Date.new(2022, 1, 1),
reason: 40,
leftreg: 3,