diff --git a/ai/sop/update_company_status_rake.md b/ai/sop/update_company_status_rake.md deleted file mode 100644 index 821754b72f..0000000000 --- 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 9cb91277d3..5611b1c423 100644 --- a/app/interactions/domains/force_delete/notify_registrar.rb +++ b/app/interactions/domains/force_delete/notify_registrar.rb @@ -6,10 +6,14 @@ def execute 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) + 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 +21,15 @@ def notify_without_email 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) + 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 a4b24eb817..0c7ae061c4 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 @@ def execute # 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 d3d6ec6707..b60caeec71 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: 'Invalid ident %{ident}' number: currency: diff --git a/config/locales/et.yml b/config/locales/et.yml index 651f5ff833..b3fe1dc708 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: 'Vigane ident %{ident}' \ No newline at end of file diff --git a/test/jobs/company_register_status_job_test.rb b/test/jobs/company_register_status_job_test.rb index fc5d8783f7..df8c046776 100644 --- a/test/jobs/company_register_status_job_test.rb +++ b/test/jobs/company_register_status_job_test.rb @@ -154,6 +154,36 @@ def object.simple_data(registration_number:) 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 + assert_equal @registrant_acme.registrant_domains.first.registrar.notifications.last.text, I18n.t('invalid_ident', ident: @registrant_acme.ident) + + 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 25728e63df..0000000000 --- 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 25728e63df..0000000000 --- a/test_data.csv +++ /dev/null @@ -1,2 +0,0 @@ -company_code,company_name,status -12345678,Test Company,active