diff --git a/ai/sop/update_company_status_rake.md b/ai/sop/update_company_status_rake.md deleted file mode 100644 index 821754b72..000000000 --- a/ai/sop/update_company_status_rake.md +++ /dev/null @@ -1,17 +0,0 @@ -# Steps to Update company_status.rake - -- [x] Modify the CSV output to include the contact type (role) information -- [x] Filter the output to include only Estonian organization type contacts -- [ ] Ensure only registrant contacts are included in the output -- [ ] Remove duplicate entries for the same organization -- [ ] Add a column to indicate if the contact is deleted due to an overdue annual statement -- [ ] Create a separate CSV file for invalid registrant contacts -- [ ] Update the existing CSV output to include only contacts that fail validation against the business registry and whitelist -- [ ] Add error handling and logging for better debugging -- [ ] Update the task description and comments to reflect the new functionality -- [ ] Add a new rake task or option to generate the separate registrant-only CSV file -- [ ] Implement validation against the business registry for Estonian organization contacts -- [ ] Implement validation against the whitelist for Estonian organization contacts -- [ ] Optimize the code for better performance, especially when dealing with large datasets -- [ ] Add unit tests for the new functionality -- [ ] Update the documentation to reflect the changes and new output format diff --git a/app/interactions/domains/force_delete/notify_registrar.rb b/app/interactions/domains/force_delete/notify_registrar.rb index 9cb91277d..279fac584 100644 --- a/app/interactions/domains/force_delete/notify_registrar.rb +++ b/app/interactions/domains/force_delete/notify_registrar.rb @@ -6,10 +6,18 @@ module Domains end def notify_without_email - template = I18n.t('force_delete_set_on_domain', - domain_name: domain.name, - outzone_date: domain.outzone_date, - purge_date: domain.purge_date) + template = if reason == 'invalid_company' + I18n.t('invalid_ident', + ident: domain.registrant.ident, + domain_name: domain.name, + outzone_date: domain.outzone_date, + purge_date: domain.purge_date) + else + I18n.t('force_delete_set_on_domain', + domain_name: domain.name, + outzone_date: domain.outzone_date, + purge_date: domain.purge_date) + end return if domain.registrar&.notifications&.last&.text&.include? template @@ -17,11 +25,19 @@ module Domains end def notify_with_email - template = I18n.t('force_delete_auto_email', - domain_name: domain.name, - outzone_date: domain.outzone_date, - purge_date: domain.purge_date, - email: email) + template = if reason == 'invalid_company' + I18n.t('invalid_ident', + ident: domain.registrant.ident, + domain_name: domain.name, + outzone_date: domain.outzone_date, + purge_date: domain.purge_date) + else + I18n.t('force_delete_auto_email', + domain_name: domain.name, + outzone_date: domain.outzone_date, + purge_date: domain.purge_date, + email: email) + end return if domain.registrar&.notifications&.last&.text&.include? template diff --git a/app/interactions/domains/force_delete/post_set_process.rb b/app/interactions/domains/force_delete/post_set_process.rb index a4b24eb81..0c7ae061c 100644 --- a/app/interactions/domains/force_delete/post_set_process.rb +++ b/app/interactions/domains/force_delete/post_set_process.rb @@ -12,7 +12,6 @@ module Domains # Allow deletion statuses.delete(DomainStatus::CLIENT_DELETE_PROHIBITED) - puts "Try to save domain: #{domain.name} with statuses: #{statuses}" domain.save(validate: false) end end diff --git a/config/locales/en.yml b/config/locales/en.yml index d3d6ec670..2f9ba4b15 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -675,6 +675,7 @@ en: actions: Actions contact_has_been_archived: 'Contact with code %{contact_code} has been archieved because it has been orphaned for longer than %{orphan_months} months.' dns_policy_violation: "Data management policy violation: DNSKEY does not match or not found in the authoritative nameservers" + invalid_ident: 'Force delete set on domain %{domain_name}. Outzone date: %{outzone_date}. Purge date: %{purge_date}. Invalid ident %{ident}' number: currency: diff --git a/config/locales/et.yml b/config/locales/et.yml index 651f5ff83..f0a9eba83 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -40,3 +40,5 @@ et: taken: 'on juba lisatud' ipv6: taken: 'on juba lisatud' + + invalid_ident: 'Jõustatud kustutamine määratud domainile %{domain_name}. Väljaandmise kuupäev: %{outzone_date}. Kustutamise kuupäev: %{purge_date}. Vigane ident %{ident}' diff --git a/lib/tasks/company_status.rake b/lib/tasks/company_status.rake index 2ee90c544..f36f9829b 100644 --- a/lib/tasks/company_status.rake +++ b/lib/tasks/company_status.rake @@ -39,7 +39,7 @@ namespace :company_status do puts "*** Run 3 step. I process companies, update their information, and sort them into different files based on whether the companies are missing or removed from the business registry ***" - whitelisted_companies = JSON.parse(ENV['whitelist_companies']) # ["12345678", "87654321"] + whitelisted_companies = ENV['whitelist_companies'].present? ? JSON.parse(ENV['whitelist_companies']) : [] contacts_query = Contact.where(ident_type: 'org', ident_country_code: 'EE') diff --git a/test/jobs/company_register_status_job_test.rb b/test/jobs/company_register_status_job_test.rb index fc5d8783f..aff3785f9 100644 --- a/test/jobs/company_register_status_job_test.rb +++ b/test/jobs/company_register_status_job_test.rb @@ -154,6 +154,42 @@ class CompanyRegisterStatusJobTest < ActiveSupport::TestCase CompanyRegister::Client.define_singleton_method(:new, original_new_method) end + def test_companies_with_invalid_ident_should_receive_invalid_ident_notification + original_new_method = CompanyRegister::Client.method(:new) + CompanyRegister::Client.define_singleton_method(:new) do + object = original_new_method.call + def object.simple_data(registration_number:) + [Company.new('16752073', 'ACME Ltd', DELETED)] + end + object + end + + @registrant_acme.update!( + company_register_status: Contact::DELETED, + checked_company_at: nil, + ident_type: 'org', + ident_country_code: 'EE', + ident: '16752073' + ) + + @registrant_acme.reload + + CompanyRegisterStatusJob.perform_now(14, 0, 100) + + @registrant_acme.reload + + assert_equal Contact::DELETED, @registrant_acme.company_register_status + + template = I18n.t('invalid_ident', + ident: @registrant_acme.ident, + domain_name: @registrant_acme.registrant_domains.first.name, + outzone_date: @registrant_acme.registrant_domains.first.outzone_date, + purge_date: @registrant_acme.registrant_domains.first.purge_date) + assert_equal @registrant_acme.registrant_domains.first.registrar.notifications.last.text, template + + CompanyRegister::Client.define_singleton_method(:new, original_new_method) + end + def test_companies_with_force_delete_and_status_R_should_be_lifted original_new_method = CompanyRegister::Client.method(:new) CompanyRegister::Client.define_singleton_method(:new) do diff --git a/test_data 2.csv b/test_data 2.csv deleted file mode 100644 index 25728e63d..000000000 --- a/test_data 2.csv +++ /dev/null @@ -1,2 +0,0 @@ -company_code,company_name,status -12345678,Test Company,active diff --git a/test_data.csv b/test_data.csv deleted file mode 100644 index 25728e63d..000000000 --- a/test_data.csv +++ /dev/null @@ -1,2 +0,0 @@ -company_code,company_name,status -12345678,Test Company,active