Compare commits

...

2 Commits

Author SHA1 Message Date
Samuel Young 61eb52516d
CLDC-4204: Update bulk upload fields sales (#3223) 2 days ago
Nat Dean-Lewis c95e33bf35
CLDC-4295: hhtype export updates (#3232) 2 days ago
  1. 1
      app/helpers/bulk_upload/lettings_log_to_csv.rb
  2. 76
      app/helpers/bulk_upload/sales_log_to_csv.rb
  3. 4
      app/services/bulk_upload/lettings/year2026/csv_parser.rb
  4. 4
      app/services/bulk_upload/sales/year2026/csv_parser.rb
  5. 1058
      app/services/bulk_upload/sales/year2026/row_parser.rb
  6. 32
      spec/fixtures/files/2026_27_sales_bulk_upload.csv
  7. 2
      spec/fixtures/files/sales_logs_csv_export_codes_26.csv
  8. 2
      spec/fixtures/files/sales_logs_csv_export_labels_26.csv
  9. 1
      spec/fixtures/variable_definitions/sales_download_26_27.csv
  10. 2
      spec/lib/tasks/log_variable_definitions_spec.rb
  11. 2
      spec/services/bulk_upload/sales/validator_spec.rb
  12. 2
      spec/services/bulk_upload/sales/year2026/csv_parser_spec.rb
  13. 504
      spec/services/bulk_upload/sales/year2026/row_parser_spec.rb

1
app/helpers/bulk_upload/lettings_log_to_csv.rb

@ -94,7 +94,6 @@ class BulkUpload::LettingsLogToCsv
end
def to_2026_row
# TODO: CLDC-4162: Implement when 2026 format is known
[
overrides[:organisation_id] || log.owning_organisation&.old_visible_id, # 1
overrides[:managing_organisation_id] || log.managing_organisation&.old_visible_id,

76
app/helpers/bulk_upload/sales_log_to_csv.rb

@ -533,7 +533,6 @@ class BulkUpload::SalesLogToCsv
end
def to_2026_row
# TODO: CLDC-4162: Implement when 2026 template is available
[
log.saledate&.day,
log.saledate&.month,
@ -552,53 +551,66 @@ class BulkUpload::SalesLogToCsv
log.privacynotice,
log.uprn,
log.address_line1&.tr(",", " "), # 20
log.address_line1&.tr(",", " "),
log.address_line2&.tr(",", " "),
log.town_or_city&.tr(",", " "),
log.county&.tr(",", " "),
log.county&.tr(",", " "), # 20
((log.postcode_full || "").split(" ") || [""]).first,
((log.postcode_full || "").split(" ") || [""]).last,
log.la,
log.proptype,
log.buildheightclass,
log.beds,
log.builtype,
log.wchair,
log.age1,
log.sexrab1,
log.ethnic, # 30
log.sexrab1, # 30
log.gender_same_as_sex1,
log.gender_description1,
log.ethnic,
log.nationality_all_group,
log.ecstat1,
log.buy1livein,
{ "P" => 1, "X" => 2, "R" => 3 }[log.relat2],
log.age2,
log.sexrab2,
log.gender_same_as_sex2, # 40
log.gender_description2,
log.ethnic_group2,
log.nationality_all_buyer2_group,
log.ecstat2,
log.buy2livein, # 40
log.buy2livein,
log.hholdcount,
{ "P" => 1, "X" => 2, "R" => 3 }[log.relat3],
log.age3,
log.sexrab3,
log.gender_same_as_sex3, # 50
log.gender_description3,
log.ecstat3,
{ "P" => 1, "X" => 2, "R" => 3 }[log.relat4],
log.age4,
log.sexrab4,
log.gender_same_as_sex4,
log.gender_description4,
log.ecstat4,
{ "P" => 1, "X" => 2, "R" => 3 }[log.relat5], # 50
log.age5,
{ "P" => 1, "X" => 2, "R" => 3 }[log.relat5],
log.age5, # 60
log.sexrab5,
log.gender_same_as_sex5,
log.gender_description5,
log.ecstat5,
{ "P" => 1, "X" => 2, "R" => 3 }[log.relat6],
log.age6,
log.sexrab6,
log.ecstat6,
log.gender_same_as_sex6,
log.gender_description6,
log.ecstat6, # 70
log.prevten,
log.ppcodenk,
((log.ppostcode_full || "").split(" ") || [""]).first, # 60
((log.ppostcode_full || "").split(" ") || [""]).first,
((log.ppostcode_full || "").split(" ") || [""]).last,
log.prevloc,
log.buy2living,
@ -606,32 +618,32 @@ class BulkUpload::SalesLogToCsv
log.hhregres,
log.hhregresstill,
log.armedforcesspouse,
log.armedforcesspouse, # 80
log.disabled,
log.wheel,
log.income1, # 70
log.income1,
log.inc1mort,
log.income2,
log.inc2mort,
log.hb,
log.savings.present? || "R",
log.prevown,
log.prevshared,
log.prevshared, # 90
log.resale,
log.proplen,
log.hodate&.day, # 80
log.hodate&.day,
log.hodate&.month,
log.hodate&.strftime("%y"),
log.frombeds,
log.fromprop,
log.socprevten,
log.value,
log.equity,
log.equity, # 100
log.mortgageused,
log.mortgage,
log.mortlen, # 90
log.mortlen,
log.deposit,
log.cashdis,
log.mrent,
@ -639,48 +651,34 @@ class BulkUpload::SalesLogToCsv
log.management_fee,
log.stairbought,
log.stairowned,
log.stairowned, # 110
log.staircasesale,
log.firststair,
log.initialpurchase&.day, # 100
log.initialpurchase&.day,
log.initialpurchase&.month,
log.initialpurchase&.strftime("%y"),
log.numstair,
log.lasttransaction&.day,
log.lasttransaction&.month,
log.lasttransaction&.strftime("%y"),
log.value,
log.value, # 120
log.equity,
log.mortgageused,
log.mrentprestaircasing, # 110
log.mrentprestaircasing,
log.mrent,
log.hasservicechargeschanged,
log.newservicecharges,
log.proplen,
log.value,
log.grant,
log.discount,
log.discount, # 130
log.mortgageused,
log.mortgage,
log.mortlen,
log.extrabor,
log.deposit, # 120
log.mscharge,
log.buildheightclass,
log.gender_same_as_sex1,
log.gender_description1,
log.gender_same_as_sex2,
log.gender_description2,
log.gender_same_as_sex3,
log.gender_description3,
log.gender_same_as_sex4,
log.gender_description4, # 130
log.gender_same_as_sex5,
log.gender_description5,
log.gender_same_as_sex6,
log.gender_description6,
log.hasservicechargeschanged,
log.newservicecharges, # 136
log.deposit,
log.mscharge, # 136
]
end

4
app/services/bulk_upload/lettings/year2026/csv_parser.rb

@ -3,7 +3,6 @@ require "csv"
class BulkUpload::Lettings::Year2026::CsvParser
include CollectionTimeHelper
# TODO: CLDC-4162: Update when 2026 format is known
FIELDS = 147
FORM_YEAR = 2026
@ -26,8 +25,7 @@ class BulkUpload::Lettings::Year2026::CsvParser
end
def cols
# TODO: CLDC-4162: Update when 2026 format is known
@cols ||= ("A".."FA").to_a
@cols ||= ("A".."ER").to_a
end
def row_parsers

4
app/services/bulk_upload/sales/year2026/csv_parser.rb

@ -3,7 +3,6 @@ require "csv"
class BulkUpload::Sales::Year2026::CsvParser
include CollectionTimeHelper
# TODO: CLDC-4162: Update when 2026 format is known
FIELDS = 136
FORM_YEAR = 2026
@ -26,8 +25,7 @@ class BulkUpload::Sales::Year2026::CsvParser
end
def cols
# TODO: CLDC-4162: Update when 2026 format is known
@cols ||= ("A".."EF").to_a
@cols ||= ("A".."EG").to_a
end
def row_parsers

1058
app/services/bulk_upload/sales/year2026/row_parser.rb

File diff suppressed because it is too large Load Diff

32
spec/fixtures/files/2026_27_sales_bulk_upload.csv vendored

File diff suppressed because one or more lines are too long

2
spec/fixtures/files/sales_logs_csv_export_codes_26.csv vendored

File diff suppressed because one or more lines are too long

2
spec/fixtures/files/sales_logs_csv_export_labels_26.csv vendored

File diff suppressed because one or more lines are too long

1
spec/fixtures/variable_definitions/sales_download_26_27.csv vendored

@ -20,3 +20,4 @@ gender_description6,If 'No', enter person 6's gender identity
hasservicechargeschanged,Will the service charge change after this staircasing transaction takes place?
newservicecharges,What are the new total monthly service charges for the property?
hholdcount,In total, how many people live in the property?
hhtype,Household type

1 sexrab1,What was buyer 1's sex at birth?
20 hasservicechargeschanged,Will the service charge change after this staircasing transaction takes place?
21 newservicecharges,What are the new total monthly service charges for the property?
22 hholdcount,In total, how many people live in the property?
23 hhtype,Household type

2
spec/lib/tasks/log_variable_definitions_spec.rb

@ -6,7 +6,7 @@ RSpec.describe "log_variable_definitions" do
subject(:task) { Rake::Task["data_import:add_variable_definitions"] }
let(:path) { "spec/fixtures/variable_definitions" }
let(:total_variable_definitions_count) { 466 }
let(:total_variable_definitions_count) { 467 }
before do
Rake.application.rake_require("tasks/log_variable_definitions")

2
spec/services/bulk_upload/sales/validator_spec.rb

@ -127,7 +127,7 @@ RSpec.describe BulkUpload::Sales::Validator do
before do
log.owning_organisation = nil
log.saledate = date
file.write(log_to_csv.default_field_numbers_row)
file.write(log_to_csv.default_field_numbers_row_for_year(year))
file.write(log_to_csv.to_csv_row)
file.rewind
end

2
spec/services/bulk_upload/sales/year2026/csv_parser_spec.rb

@ -166,7 +166,7 @@ RSpec.describe BulkUpload::Sales::Year2026::CsvParser do
it "returns correct column" do
expect(service.column_for_field("field_1")).to eql("B")
expect(service.column_for_field("field_99")).to eql("CV")
expect(service.column_for_field("field_112")).to eql("DI")
end
end
end

504
spec/services/bulk_upload/sales/year2026/row_parser_spec.rb

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save