Skip to content

Commit

Permalink
Merge pull request #1450 from internetee/1415-improve-bank-proceeeds-…
Browse files Browse the repository at this point in the history
…autocheck

Add autocheck by reference number in field or in description
  • Loading branch information
vohmar authored Jan 23, 2020
2 parents 02d0646 + effedcf commit 704c331
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 22 deletions.
24 changes: 10 additions & 14 deletions app/models/bank_transaction.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,34 +16,22 @@ def binded_invoice
account_activity.invoice
end


def invoice_num
return @invoice_no if defined?(@invoice_no)

match = description.match(/^[^\d]*(\d+)/)
return unless match

@invoice_no = match[1].try(:to_i)
end

def invoice
@invoice ||= registrar.invoices.find_by(number: invoice_num) if registrar
@invoice ||= registrar.invoices.find_by(total: sum) if registrar
end

def registrar
@registrar ||= Invoice.find_by(reference_no: reference_no)&.buyer
@registrar ||= Invoice.find_by(reference_no: parsed_ref_number)&.buyer
end


# For successful binding, reference number, invoice id and sum must match with the invoice
def autobind_invoice
return if binded?
return unless registrar
return unless invoice_num
return unless invoice
return unless invoice.payable?

return if invoice.total != sum
create_activity(registrar, invoice)
end

Expand Down Expand Up @@ -98,4 +86,12 @@ def reset_pending_registrar_balance_reload
registrar.settings['balance_auto_reload'].delete('pending')
registrar.save!
end

def parsed_ref_number
reference_no || ref_number_from_description
end

def ref_number_from_description
/(\d{7})/.match(description)[0]
end
end
4 changes: 2 additions & 2 deletions test/fixtures/bank_transactions.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
one:
sum: 1
currency: EUR
description: Order nr. 1
iban: US75512108001245126199
description: Order nr 1 from registrar 1234567 second number 2345678
iban: US75512108001245126199
3 changes: 2 additions & 1 deletion test/fixtures/invoices.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@ one:
vat_rate: 0.1
total: 16.50
reference_no: 13
number: 1
number: 1
description: Order nr 1 from registrar 1234567 second number 2345678
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def payable_invoice

def assert_matching_bank_transaction_exists(invoice)
assert BankTransaction.find_by(
description: invoice.order,
description: invoice.description,
currency: invoice.currency,
iban: invoice.seller_iban
), 'Matching bank transaction should exist'
Expand Down Expand Up @@ -56,4 +56,4 @@ def every_pay_request_params
payment_method: "every_pay"
}
end
end
end
17 changes: 14 additions & 3 deletions test/models/bank_transaction_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,20 @@ class BankTransactionTest < ActiveSupport::TestCase
@invoice = invoices(:one)
end

def test_matches_against_invoice_number_and_reference_number
create_payable_invoice(number: '2222', total: 10, reference_no: '1111')
transaction = BankTransaction.new(description: 'invoice #2222', sum: 10, reference_no: '1111')
def test_matches_against_invoice_nubmber_and_reference_number
create_payable_invoice(number: '2222', total: 10, reference_no: '1234567')
transaction = BankTransaction.new(description: 'invoice #2222', sum: 10, reference_no: '1234567')

assert_difference 'AccountActivity.count' do
transaction.autobind_invoice
end
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',
sum: 10,
description: 'Order nr 1 from registrar 1234567 second number 2345678')

assert_difference 'AccountActivity.count' do
transaction.autobind_invoice
Expand Down

0 comments on commit 704c331

Please sign in to comment.