Compare commits

...

10 Commits

Author SHA1 Message Date
Nat Dean-Lewis 6ea8fd7ad2 Merge remote-tracking branch 'origin/CLDC-4236-deploy-review-apps-manually-2' into CLDC-4236-deploy-review-apps-manually-2 2 days ago
Nat Dean-Lewis 676a92cbad CLDC-4263: rename label 2 days ago
Nat Dean-Lewis 31b0cf8c6d
Merge branch 'main' into CLDC-4236-deploy-review-apps-manually-2 2 days ago
Samuel Young 61eb52516d
CLDC-4204: Update bulk upload fields sales (#3223) 2 days ago
Nat Dean-Lewis c15d79b0f8 CLDC-4263: remove broken workflow_dispatches 2 days ago
Nat Dean-Lewis 976dc049a9 CLDC-4263: rename review app workflows for clarity 2 days ago
Nat Dean-Lewis 6073b9deee Merge branch 'main' into CLDC-4236-deploy-review-apps-manually-2 2 days ago
Nat Dean-Lewis c95e33bf35
CLDC-4295: hhtype export updates (#3232) 2 days ago
Nat Dean-Lewis b67833ef25 Revert "CLDC-4263: copy change test" 2 days ago
Nat Dean-Lewis 09df8ab28f CLDC-4263: copy change test 2 days ago
  1. 2
      .github/workflows/manual_review_code_pipeline.yml
  2. 1
      .github/workflows/production_pipeline.yml
  3. 4
      .github/workflows/review_app_hint.yml
  4. 8
      .github/workflows/review_pipeline.yml
  5. 3
      .github/workflows/review_teardown_pipeline.yml
  6. 1
      app/helpers/bulk_upload/lettings_log_to_csv.rb
  7. 76
      app/helpers/bulk_upload/sales_log_to_csv.rb
  8. 4
      app/services/bulk_upload/lettings/year2026/csv_parser.rb
  9. 4
      app/services/bulk_upload/sales/year2026/csv_parser.rb
  10. 1058
      app/services/bulk_upload/sales/year2026/row_parser.rb
  11. 32
      spec/fixtures/files/2026_27_sales_bulk_upload.csv
  12. 2
      spec/fixtures/files/sales_logs_csv_export_codes_26.csv
  13. 2
      spec/fixtures/files/sales_logs_csv_export_labels_26.csv
  14. 1
      spec/fixtures/variable_definitions/sales_download_26_27.csv
  15. 2
      spec/lib/tasks/log_variable_definitions_spec.rb
  16. 2
      spec/services/bulk_upload/sales/validator_spec.rb
  17. 2
      spec/services/bulk_upload/sales/year2026/csv_parser_spec.rb
  18. 504
      spec/services/bulk_upload/sales/year2026/row_parser_spec.rb

2
.github/workflows/manual_review_code_pipeline.yml

@ -1,4 +1,4 @@
name: Manual review app code pipeline
name: "Review App: Manual Code Redeploy"
concurrency:
group: review-${{ inputs.review_app_key }}

1
.github/workflows/production_pipeline.yml

@ -3,7 +3,6 @@ name: Production CI/CD Pipeline
on:
release:
types: [released]
workflow_dispatch:
defaults:
run:

4
.github/workflows/review_app_hint.yml

@ -1,4 +1,4 @@
name: Review app hint
name: "Review App: PR Hint Comment"
on:
pull_request:
@ -19,5 +19,5 @@ jobs:
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: 'To deploy a review app for this PR, add the `deploy-review` label.',
body: 'To deploy a review app for this PR, add the `review-app` label.',
});

8
.github/workflows/review_pipeline.yml

@ -1,4 +1,4 @@
name: Review app pipeline
name: "Review App: Deploy"
concurrency:
group: review-${{ github.event.pull_request.number }}
@ -18,7 +18,7 @@ defaults:
jobs:
infra:
name: Deploy review app infrastructure
if: contains(github.event.pull_request.labels.*.name, 'deploy-review')
if: contains(github.event.pull_request.labels.*.name, 'review-app')
uses: communitiesuk/submit-social-housing-lettings-and-sales-data-infrastructure/.github/workflows/create_review_app_infra.yml@main
with:
key: ${{ github.event.pull_request.number }}
@ -28,7 +28,7 @@ jobs:
code:
name: Deploy review app code
if: contains(github.event.pull_request.labels.*.name, 'deploy-review')
if: contains(github.event.pull_request.labels.*.name, 'review-app')
needs: [infra]
uses: ./.github/workflows/aws_deploy.yml
with:
@ -42,7 +42,7 @@ jobs:
comment:
name: Add link to PR
if: contains(github.event.pull_request.labels.*.name, 'deploy-review')
if: contains(github.event.pull_request.labels.*.name, 'review-app')
needs: [code]
runs-on: ubuntu-latest
permissions:

3
.github/workflows/review_teardown_pipeline.yml

@ -1,4 +1,4 @@
name: Review app teardown pipeline
name: "Review App: Teardown"
concurrency:
group: review-${{ github.event.pull_request.number }}
@ -7,7 +7,6 @@ on:
pull_request:
types:
- closed
workflow_dispatch:
env:
app_repo_role: arn:aws:iam::815624722760:role/core-application-repo

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