* feat: mvp commit with address selector from address line 1 and postcode using OS places find endpoint
* feat: build out alternative routes through the address lookup flow
* refactor: lint
* refactor: remove commented lines
* feat: make nil safe
* feat: test address client
* feat: store address input separately
* feat: add migration
* feat: display inputs in answer label
* feat: update data presenter and test
* feat: revert precicions schema update
* feat: revert precision schema update
* feat: migrate new fields to sales logs
* feat: update shared log examples tests
* feat: use -1 for not listed address for extensibility
* feat: add service error to address_selection
* feat: handle case when no addresses are found
* feat: allow re-entering different uprns
* feat: improve error handling and don't accept "no match" precisions
* feat: add page tests
* feat: confirm uprn on address update
* feat: add question tests
* feat: don't set minimum match for initial search
* feat: mvp commit with address selector from address line 1 and postcode using OS places find endpoint
* feat: build out alternative routes through the address lookup flow
* refactor: lint
* refactor: remove commented lines
* feat: make nil safe
* feat: test address client
* feat: store address input separately
* feat: add migration
* feat: display inputs in answer label
* feat: update data presenter and test
* feat: revert precision schema update
* feat: migrate new fields to sales logs
* feat: update shared log examples tests
* feat: use -1 for not listed address for extensibility
* feat: add service error to address_selection
* feat: handle case when no addresses are found
* feat: allow re-entering different uprns
* feat: improve error handling and don't accept "no match" precisions
* feat: add page tests
* feat: confirm uprn on address update
* feat: add question tests
* feat: don't set minimum match for initial search
* feat: add no address found page
* feat: allow uprn known to be skipped, and set 0.4 min precision
* feat: accept best "good" match in bulk upload
* feat: update validations and test
* refactor: avoid stubbing using any_instance_of
* refactor: use change_table in migrations
* feat: add lettings behaviour to sales logs
* feat: update sales tests
* feat: xit test that is xited in lettings
* feat: stub os api in sales row parser
* feat: stub os api in sales row parser
* feat: add address line 1 to required attributes
* feat: update matching details and fix row parser validation
* refactor: improve readability
* feat: set uprns as option IDs to avoid multiple lookups
* feat: add sales uprn_selection
* feat: update schema
* feat: update tests
* feat: remove redundant methods
* feat: update error message and fix tests
* feat: update tests
* feat: update tests and error behaviour
* feat: update tests
* CLDC-3278: Restructure tenancy length validations to only error on relevant fields
* Update error messages to reflect when length is allowed to be blank correctly
* Don't depend on the rent_type for supported housing
* Rename functions for clarity
* Pluralise buyer in household characteristics/setup
* Pluralise buyer in sales information sections
* Pluralise buyer in savings
* Pluralise other buyers, update privacy notice test
* Pluralise buyer in validations and translations
* Route to pages when joint purchase is not answered
* Fix apostrophes
* Update translations
* More updates
* CLDC-3227: Add soft validation for reason other when it's likely a standard category
* CLDC-3227: Add hard validation for homeless indicators in other reason for leaving last settled home
* CLDC-3227: Update hard validation regex to ignore all non alphabet characters surrounding a match
* CLDC-3227: Add unit tests
* Refactor household validations spec to remove dependancy on fake 2021 form
* Add card number to question
* Move informative text to translations as well
* CLDC-3227: Allow neighbouring non-alphabet characters in soft validation check
* Remove debug lines
* Remove blank line
* Remove bonus whitespace
* Deal with appearance in csv export
* Only do regexp.union once
* Fix informative text in value check
* Remove soft grant validation for 2024 onwards
* Validate grant amount for 24/25 onwards
* Only run the hard validation for Social HomeBuy and RTA
* Fix soft validation
* Copy 23 BU files to 24
* Renumber bulk upload fields for 2024
* Add prepare your file
* Update max columns
* Update fields in first_record_start_date
* Update managing org
* Rebase changes
* CLDC-3110: Update hard max income for ecstat 8 to 2000
* CLDC-3110: Update hard max income for ecstat 10 to match new highest max
* CLDC-3110: Base income validations on all tenants for lettings logs
* CLDC-3110: Tweak validation messages
* CLDC-3110: Use prefer not to say values when tenant ecstat is not specified
* create helper module to find all logs for a given user that have duplicates
write associated tests
update methods on user model to retrieve logs related to a given user
create a scope on logs to retrieve logs created by a given user
* check for duplicates and display notification banner on the index page where appropriate
tests to cover the desired behaviour
* alter duplicate logs helper to return duplicates in a format that can be passed through the params
update associated tests
* create user journey to view duplicate sets adn navigate to a given set
create a new route and add it to the link from the logs index page
create controller method and related view file
* update path for duplicate logs in routes, update factories, refactor duplicates scope to eliminate raw sql
* write tests for the duplicate logs index page
* correct linting errors
* minor amendments from code review.
* temp
* Refactor
* Create a scope for duplicate groups
* fixes
* lint
* Update controller specs
* Put duplicate sets count behind a feature flag
* refactor index
* Update duplicate_sets_count
* Update scopes
* tests
* pass in original log id
* tests
* Add duplicate index page content
---------
Co-authored-by: Kat <katrina@kosiak.co.uk>
* Update check answers to use the correct logs
* Display different link when correcting duplicates
* allow deduplicating logs by changing the answers
* Route back to the initial log if it still has duplicates
* Update back to log button
* Add banner
* Update success banner
* Fix a flaky test
* Rename param and update conditionals
* Add owning organisation to deduplication fields, only return back to the original log if it still belongs to the org
* Add start date validations for merging orgs
* Add errors for merged orgs
* tests
* don't run validations unless the date exists
* Adjust the dates in validations
* Send notification to old email address when changing it
* send email changed notification to old email
* Add specs
* send both emails
* Only send required confirmation emails
* Show flash notice
* Use reconfirmable template only if not confirmed
* Don't commit .env.development
* new email flow also when updating own email
* CLDC-2494: WIP
* CLDC-2494: wip
* CLDC-2494: page work in progress
* cleanup
* Add a path for duplicate logs
* Display all duplicate logs
* Move a test
* Display duplicate check answers for logs
* Add buttons to delete duplicates
* Add a route for sales logs duplicates
* Update duplicated page to work for sales logs
* lint
* Add auth
* Rebase updates
* Update displayed questions
* Add delete duplicates page
* Update page content for when there are multiple duplicates
* Add auth to the path
* Update delete button to use delete controller
* Update page for sales logs
* Update styling
* Update success banner for deleting duplicates
* Typo
* Render not found if there are no duplicate logs
* rebase changes
* Rebase changes
* Update back and cancel links
* Update the duplicate journey after deleting logs
* Update change button routing
* Refactor tests
* Add content for no duplicates
* Update params
* Refactor tests and paths
* Update params to include original_log_id from the beginning
* Rename file
* lint
* Add full stop after deletion messages
* Add caption and update duplicate log IDs in the banner
* lint
* Styling
---------
Co-authored-by: Aaron Spencer <aaron.spencer@softwire.com>