From a7b4b0d19ba5e83d6522e5741ecb4eccea04fdc3 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Mon, 20 Jan 2020 17:06:37 +0500 Subject: [PATCH 1/8] Add condition on not having clientHold status for force-delete job See #1480 --- app/models/concerns/domain/force_delete.rb | 3 ++- app/models/concerns/job/force_delete.rb | 5 ++++- app/models/concerns/job/force_delete_logging.rb | 6 ++++++ test/models/domain_cron_test.rb | 14 ++++++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/app/models/concerns/domain/force_delete.rb b/app/models/concerns/domain/force_delete.rb index c335fcfd0..0c131f43c 100644 --- a/app/models/concerns/domain/force_delete.rb +++ b/app/models/concerns/domain/force_delete.rb @@ -25,7 +25,8 @@ module Concerns::Domain::ForceDelete # rubocop:disable Metrics/ModuleLength def should_notify_on_soft_force_delete? force_delete_scheduled? && contact_notification_sent_date.blank? && - force_delete_start.to_date <= Time.zone.now.to_date && force_delete_type.to_sym == :soft + force_delete_start.to_date <= Time.zone.now.to_date && force_delete_type.to_sym == :soft && + !statuses.include?(DomainStatus::CLIENT_HOLD) end def client_holdable? diff --git a/app/models/concerns/job/force_delete.rb b/app/models/concerns/job/force_delete.rb index 727ddaa3b..2c3cdfdb5 100644 --- a/app/models/concerns/job/force_delete.rb +++ b/app/models/concerns/job/force_delete.rb @@ -11,8 +11,9 @@ module Concerns ::Domain.force_delete_scheduled.each do |domain| proceed_client_hold(domain: domain) - log_end_end_client_hold(domain) end + + log_end_end_force_delete_job end def proceed_client_hold(domain:) @@ -24,6 +25,8 @@ module Concerns domain.save(validate: false) notify_client_hold(domain) + + log_end_end_client_hold(domain) end end end diff --git a/app/models/concerns/job/force_delete_logging.rb b/app/models/concerns/job/force_delete_logging.rb index 072c5b98f..8f6ee227c 100644 --- a/app/models/concerns/job/force_delete_logging.rb +++ b/app/models/concerns/job/force_delete_logging.rb @@ -22,6 +22,12 @@ module Concerns STDOUT << "#{Time.zone.now.utc} - Successfully set client_hold on (#{domain.name})" end + + def log_end_end_force_delete_job + return if Rails.env.test? + + STDOUT << "#{Time.zone.now.utc} - All client_hold setting are done\n" + end end end end diff --git a/test/models/domain_cron_test.rb b/test/models/domain_cron_test.rb index f0a0bbc9d..5b3b0120e 100644 --- a/test/models/domain_cron_test.rb +++ b/test/models/domain_cron_test.rb @@ -38,4 +38,18 @@ class DomainCronTest < ActiveSupport::TestCase assert_emails 1 end + + def test_does_not_sets_hold_if_already_set + Setting.redemption_grace_period = 30 + + @domain.update(valid_to: Time.zone.parse('2012-08-05')) + travel_to Time.zone.parse('2010-07-05') + @domain.schedule_force_delete(type: :soft) + @domain.reload + @domain.update(template_name: 'legal_person', statuses: [DomainStatus::CLIENT_HOLD]) + travel_to Time.zone.parse('2010-08-06') + DomainCron.start_client_hold + + assert_emails 0 + end end From 83a214b88890908324c738fb479cc5967ae1fefc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Erik=20=C3=95unapuu?= Date: Mon, 27 Jan 2020 17:57:49 +0200 Subject: [PATCH 2/8] Registrar/Domains: Allow :s as search parameter --- app/controllers/registrar/domains_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/registrar/domains_controller.rb b/app/controllers/registrar/domains_controller.rb index 5c82ba675..f533a874c 100644 --- a/app/controllers/registrar/domains_controller.rb +++ b/app/controllers/registrar/domains_controller.rb @@ -184,7 +184,8 @@ class Registrar :contacts_ident_eq, :nameservers_hostname_eq, :valid_to_gteq, - :valid_to_lteq) + :valid_to_lteq, + :s) end end end From 2c2bdc5a43b922b066ebcf9bf71d5f8f28d86d83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20V=C3=B5hmar?= Date: Tue, 28 Jan 2020 17:51:03 +0200 Subject: [PATCH 3/8] Update CHANGELOG.md [ci skip] --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b56984d2e..234b37bf1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +28.01.2020 +* clientHold status is now set once instead of resetting it every time the job is run [#1480](https://github.com/internetee/registry/issues/1480) + 27.01.2020 * Admin: fixed history view for domains with legacy id [#1489](https://github.com/internetee/registry/issues/1489) From 25a21225e0e98c1ec0487d062602ce2e0f335897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20V=C3=B5hmar?= Date: Tue, 28 Jan 2020 19:05:38 +0200 Subject: [PATCH 4/8] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 234b37bf1..615bf62d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ 28.01.2020 +* Registrar: fixed sorting of domain view [#1461](https://github.com/internetee/registry/issues/1461) * clientHold status is now set once instead of resetting it every time the job is run [#1480](https://github.com/internetee/registry/issues/1480) 27.01.2020 From 3821c76d3677b12a2bb5436399d47daee7af847d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20V=C3=B5hmar?= Date: Tue, 28 Jan 2020 19:56:17 +0200 Subject: [PATCH 5/8] Update CHANGELOG.md [ci skip] --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 615bf62d2..71b8a8ac9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,6 +60,9 @@ * Set not null constraint on contact.name db column [#1417](https://github.com/internetee/registry/pull/1417) * Removed domain name from registrant_verifications table [#1431](https://github.com/internetee/registry/pull/1431) +19.11.2019 +* Updated Rails to 5.0.7 [#377](https://github.com/internetee/registry/issues/377) + 15.11.2019 * Restored EPP exception logging to syslog [#1371](https://github.com/internetee/registry/issues/1371) From 19cd5ecd95d3665e6b82d0ce772b14897eef1b4d Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Wed, 29 Jan 2020 20:19:00 +0500 Subject: [PATCH 6/8] Add autobind fix if invoice with this sum is already present --- app/models/bank_transaction.rb | 2 +- test/models/bank_transaction_test.rb | 51 ++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/app/models/bank_transaction.rb b/app/models/bank_transaction.rb index 6612a4dbd..c04a98e90 100644 --- a/app/models/bank_transaction.rb +++ b/app/models/bank_transaction.rb @@ -17,7 +17,7 @@ class BankTransaction < ApplicationRecord end def invoice - @invoice ||= registrar.invoices.find_by(total: sum) if registrar + @invoice ||= registrar.invoices.order(created_at: :asc).unpaid.find_by(total: sum) if registrar end def registrar diff --git a/test/models/bank_transaction_test.rb b/test/models/bank_transaction_test.rb index 37ff4041a..e4cce2487 100644 --- a/test/models/bank_transaction_test.rb +++ b/test/models/bank_transaction_test.rb @@ -15,6 +15,57 @@ class BankTransactionTest < ActiveSupport::TestCase end end + def test_binds_if_this_sum_invoice_already_present + create_payable_invoice(number: '2222', total: 10, reference_no: '1234567') + another_invoice = @invoice.dup + another_invoice.save(validate: false) + another_invoice.update(reference_no: '7654321', number: '2221') + + another_item = @invoice.items.first.dup + another_item.invoice = another_invoice + another_item.save + another_invoice.reload + + first_transaction = BankTransaction.new(description: 'invoice #2221', + sum: 10, + description: 'Order nr 1 from registrar 1234567 second number 2345678') + + first_transaction.create_activity(another_invoice.buyer, another_invoice) + + transaction = BankTransaction.new(description: 'invoice #2222', + sum: 10, + description: 'Order nr 1 from registrar 1234567 second number 2345678') + + assert_difference 'AccountActivity.count' do + transaction.autobind_invoice + end + end + + def test_marks_the_first_one_as_paid_if_same_sum + create_payable_invoice(number: '2222', total: 10, reference_no: '1234567') + another_invoice = @invoice.dup + another_invoice.save(validate: false) + another_invoice.update(reference_no: '7654321', number: '2221') + + another_item = @invoice.items.first.dup + another_item.invoice = another_invoice + another_item.save + another_invoice.reload + + transaction = BankTransaction.new(description: 'invoice #2222', + sum: 10, + description: 'Order nr 1 from registrar 1234567 second number 2345678') + + assert_difference 'AccountActivity.count' do + transaction.autobind_invoice + end + + @invoice.reload + another_invoice.reload + assert(@invoice.paid?) + assert_not(another_invoice.paid?) + end + def test_matches_against_invoice_nubmber_and_reference_number_in_description create_payable_invoice(number: '2222', total: 10, reference_no: '1234567') transaction = BankTransaction.new(description: 'invoice #2222', From dbbe6b07ae0b661c55cfbc19d748992d0f8b6195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20V=C3=B5hmar?= Date: Wed, 29 Jan 2020 18:16:57 +0200 Subject: [PATCH 7/8] Update CHANGELOG.md [ci skip] --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71b8a8ac9..701678596 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +29.01.2020 +* Fixed the invoice binding bug where process failed if registrar tried to load a sum that they have used before [#1496](https://github.com/internetee/registry/issues/1496) + 28.01.2020 * Registrar: fixed sorting of domain view [#1461](https://github.com/internetee/registry/issues/1461) * clientHold status is now set once instead of resetting it every time the job is run [#1480](https://github.com/internetee/registry/issues/1480) From 5c59119c2c7885a1214c79a0ab53a3805b56f301 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Wed, 29 Jan 2020 22:47:01 +0500 Subject: [PATCH 8/8] Add non_cancelled scope to autobind invoices See https://github.com/internetee/registry/issues/1496#issuecomment-579870465 --- app/models/bank_transaction.rb | 8 +++++++- test/models/bank_transaction_test.rb | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/app/models/bank_transaction.rb b/app/models/bank_transaction.rb index c04a98e90..d2f8bb66b 100644 --- a/app/models/bank_transaction.rb +++ b/app/models/bank_transaction.rb @@ -17,7 +17,13 @@ class BankTransaction < ApplicationRecord end def invoice - @invoice ||= registrar.invoices.order(created_at: :asc).unpaid.find_by(total: sum) if registrar + return unless registrar + + @invoice ||= registrar.invoices + .order(created_at: :asc) + .unpaid + .non_cancelled + .find_by(total: sum) end def registrar diff --git a/test/models/bank_transaction_test.rb b/test/models/bank_transaction_test.rb index e4cce2487..b8b0f65f7 100644 --- a/test/models/bank_transaction_test.rb +++ b/test/models/bank_transaction_test.rb @@ -41,6 +41,28 @@ class BankTransactionTest < ActiveSupport::TestCase end end + def test_binds_if_this_sum_cancelled_invoice_already_present + create_payable_invoice(number: '2222', total: 10, reference_no: '1234567') + another_invoice = @invoice.dup + another_invoice.save(validate: false) + + + another_item = @invoice.items.first.dup + another_item.invoice = another_invoice + + another_item.save + another_invoice.reload + another_invoice.update(reference_no: '1234567', number: '2221', cancelled_at: Time.zone.now) + + transaction = BankTransaction.new(description: 'invoice #2222', + sum: 10, + description: 'Order nr 1 from registrar 1234567 second number 2345678') + + assert_difference 'AccountActivity.count' do + transaction.autobind_invoice + end + end + def test_marks_the_first_one_as_paid_if_same_sum create_payable_invoice(number: '2222', total: 10, reference_no: '1234567') another_invoice = @invoice.dup