From 5c59119c2c7885a1214c79a0ab53a3805b56f301 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Wed, 29 Jan 2020 22:47:01 +0500 Subject: [PATCH] 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