From 91c471049a16d8be4c97f022311445fa52217d98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergei=20Ts=C3=B5ganov?= Date: Thu, 11 Aug 2022 10:34:34 +0300 Subject: [PATCH 1/2] Troubleshoot invoice not paid in billing system --- .../lhv_connect_transactions_controller.rb | 38 ++--- app/models/bank_transaction.rb | 17 ++- .../lhv_connect_transactions_test.rb | 50 +++---- test/models/bank_transaction_test.rb | 122 +++++++-------- test/tasks/invoices/process_payments_test.rb | 141 ++++++++++-------- 5 files changed, 196 insertions(+), 172 deletions(-) diff --git a/app/controllers/eis_billing/lhv_connect_transactions_controller.rb b/app/controllers/eis_billing/lhv_connect_transactions_controller.rb index 09688e68f..3c914bd27 100644 --- a/app/controllers/eis_billing/lhv_connect_transactions_controller.rb +++ b/app/controllers/eis_billing/lhv_connect_transactions_controller.rb @@ -1,8 +1,16 @@ module EisBilling class LhvConnectTransactionsController < EisBilling::BaseController def create + if params['_json'].nil? || params['_json'].empty? + render json: { message: 'MISSING PARAMS' }, status: :unprocessable_entity + return + end + + bank_statement = BankStatement.create(bank_code: Setting.registry_bank_code, + iban: Setting.registry_iban) + params['_json'].each do |incoming_transaction| - process_transactions(incoming_transaction) + process_transactions(incoming_transaction, bank_statement) end render status: :ok, json: { message: 'RECEIVED', params: params } @@ -10,19 +18,13 @@ module EisBilling private - def process_transactions(incoming_transaction) + def process_transactions(incoming_transaction, bank_statement) logger.info 'Got incoming transactions' logger.info incoming_transaction - bank_statement = BankStatement.new(bank_code: Setting.registry_bank_code, - iban: Setting.registry_iban) - bank_statement_transaction(bank_statement: bank_statement, incoming_transaction: incoming_transaction) - end - - def bank_statement_transaction(bank_statement:, incoming_transaction:) ActiveRecord::Base.transaction do - bank_statement.save! - transaction = create_transaction(incoming_transaction: incoming_transaction, bank_statement: bank_statement) + transaction = bank_statement.bank_transactions + .create!(transaction_attributes(incoming_transaction)) next if transaction.registrar.blank? @@ -35,14 +37,14 @@ module EisBilling transaction.autobind_invoice end - def create_transaction(incoming_transaction:, bank_statement:) - transaction_attributes = { sum: incoming_transaction['amount'], - currency: incoming_transaction['currency'], - paid_at: incoming_transaction['date'], - reference_no: incoming_transaction['payment_reference_number'], - description: incoming_transaction['payment_description'] } - - bank_statement.bank_transactions.create!(transaction_attributes) + def transaction_attributes(incoming_transaction) + { + sum: incoming_transaction['amount'], + currency: incoming_transaction['currency'], + paid_at: incoming_transaction['date'], + reference_no: incoming_transaction['payment_reference_number'], + description: incoming_transaction['payment_description'], + } end end end diff --git a/app/models/bank_transaction.rb b/app/models/bank_transaction.rb index 68b48995f..46d597e61 100644 --- a/app/models/bank_transaction.rb +++ b/app/models/bank_transaction.rb @@ -33,10 +33,10 @@ class BankTransaction < ApplicationRecord return unless autobindable? channel = manual ? 'admin_payment' : 'system_payment' - create_internal_payment_record(channel: channel, invoice: invoice, registrar: registrar) + create_internal_payment_record(invoice: invoice, registrar: registrar, channel: channel) end - def create_internal_payment_record(channel: nil, invoice:, registrar:) + def create_internal_payment_record(invoice:, registrar:, channel: nil) if channel.nil? create_activity(invoice.buyer, invoice) return @@ -46,10 +46,17 @@ class BankTransaction < ApplicationRecord payment_order.save! if create_activity(registrar, invoice) + status = 'paid' payment_order.paid! else - payment_order.update(notes: 'Failed to create activity', status: 'failed') + status = 'failed' + payment_order.update(notes: 'Failed to create activity', status: status) end + + return unless Feature.billing_system_integrated? + + EisBilling::SendInvoiceStatus.send_info(invoice_number: invoice.number, + status: status) end def bind_invoice(invoice_no, manual: false) @@ -62,8 +69,8 @@ class BankTransaction < ApplicationRecord validate_invoice_data(invoice) return if errors.any? - create_internal_payment_record(channel: (manual ? 'admin_payment' : nil), invoice: invoice, - registrar: invoice.buyer) + create_internal_payment_record(invoice: invoice, registrar: invoice.buyer, + channel: (manual ? 'admin_payment' : nil)) end def validate_invoice_data(invoice) diff --git a/test/integration/eis_billing/lhv_connect_transactions_test.rb b/test/integration/eis_billing/lhv_connect_transactions_test.rb index f6d0f59d0..14f7bccd7 100644 --- a/test/integration/eis_billing/lhv_connect_transactions_test.rb +++ b/test/integration/eis_billing/lhv_connect_transactions_test.rb @@ -8,35 +8,35 @@ class LhvConnectTransactionsIntegrationTest < ApplicationIntegrationTest end def test_should_saved_transaction_data - if Feature.billing_system_integrated? - test_transaction_1 = OpenStruct.new(amount: 0.1, - currency: 'EUR', - date: Time.zone.today, - payment_reference_number: '2199812', - payment_description: "description 2199812") + return unless Feature.billing_system_integrated? - test_transaction_2 = OpenStruct.new(amount: 0.1, - currency: 'EUR', - date: Time.zone.today, - payment_reference_number: '2199813', - payment_description: "description 2199813") + test_transaction_1 = OpenStruct.new(amount: 0.1, + currency: 'EUR', + date: Time.zone.today, + payment_reference_number: '2199812', + payment_description: 'description 2199812') - test_transaction_3 = OpenStruct.new(amount: 0.1, - currency: 'EUR', - date: Time.zone.today, - payment_reference_number: '2199814', - payment_description: "description 2199814") + test_transaction_2 = OpenStruct.new(amount: 0.1, + currency: 'EUR', + date: Time.zone.today, + payment_reference_number: '2199813', + payment_description: 'description 2199813') - lhv_transactions = [] - lhv_transactions << test_transaction_1 - lhv_transactions << test_transaction_2 - lhv_transactions << test_transaction_3 + test_transaction_3 = OpenStruct.new(amount: 0.1, + currency: 'EUR', + date: Time.zone.today, + payment_reference_number: '2199814', + payment_description: 'description 2199814') - assert_difference 'BankStatement.count', 3 do - assert_difference 'BankTransaction.count', 3 do - post eis_billing_lhv_connect_transactions_path, params: { "_json" => JSON.parse(lhv_transactions.to_json) }, - headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } - end + lhv_transactions = [] + lhv_transactions << test_transaction_1 + lhv_transactions << test_transaction_2 + lhv_transactions << test_transaction_3 + + assert_difference 'BankStatement.count', 1 do + assert_difference 'BankTransaction.count', 3 do + post eis_billing_lhv_connect_transactions_path, params: { '_json' => JSON.parse(lhv_transactions.to_json) }, + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } end end end diff --git a/test/models/bank_transaction_test.rb b/test/models/bank_transaction_test.rb index 8a3a664b5..5f2503cb1 100644 --- a/test/models/bank_transaction_test.rb +++ b/test/models/bank_transaction_test.rb @@ -4,6 +4,10 @@ class BankTransactionTest < ActiveSupport::TestCase setup do @registrar = registrars(:bestnames) @invoice = invoices(:one) + if Feature.billing_system_integrated? + stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_status') + .to_return(status: 200, body: '', headers: {}) + end end def test_matches_against_invoice_nubmber_and_reference_number @@ -16,87 +20,86 @@ class BankTransactionTest < ActiveSupport::TestCase end def test_binds_if_this_sum_invoice_already_present - if Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - 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') + return unless Feature.billing_system_integrated? - another_item = @invoice.items.first.dup - another_item.invoice = another_invoice - another_item.save - another_invoice.reload + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator') + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + 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') - first_transaction = BankTransaction.new(sum: 10, - description: 'Order nr 1 from registrar 1234567 second number 2345678') + another_item = @invoice.items.first.dup + another_item.invoice = another_invoice + another_item.save + another_invoice.reload - first_transaction.create_activity(another_invoice.buyer, another_invoice) + first_transaction = BankTransaction.new(sum: 10, + description: 'Order nr 1 from registrar 1234567 second number 2345678') - transaction = BankTransaction.new(sum: 10, - description: 'Order nr 1 from registrar 1234567 second number 2345678') + first_transaction.create_activity(another_invoice.buyer, another_invoice) - assert_difference 'AccountActivity.count' do - transaction.autobind_invoice - end + transaction = BankTransaction.new(sum: 10, + description: 'Order nr 1 from registrar 1234567 second number 2345678') + + assert_difference 'AccountActivity.count' do + transaction.autobind_invoice end end def test_binds_if_this_sum_cancelled_invoice_already_present - if Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - create_payable_invoice(number: '2222', total: 10, reference_no: '1234567') - another_invoice = @invoice.dup - another_invoice.save(validate: false) + return unless Feature.billing_system_integrated? + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator') + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + 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 = @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) + another_item.save + another_invoice.reload + another_invoice.update(reference_no: '1234567', number: '2221', cancelled_at: Time.zone.now) - transaction = BankTransaction.new(sum: 10, - description: 'Order nr 1 from registrar 1234567 second number 2345678') + transaction = BankTransaction.new(sum: 10, + description: 'Order nr 1 from registrar 1234567 second number 2345678') - assert_difference 'AccountActivity.count' do - transaction.autobind_invoice - end + assert_difference 'AccountActivity.count' do + transaction.autobind_invoice end end def test_marks_the_first_one_as_paid_if_same_sum - if Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - 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') + return unless Feature.billing_system_integrated? - another_item = @invoice.items.first.dup - another_item.invoice = another_invoice - another_item.save - another_invoice.reload + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator') + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + 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') - transaction = BankTransaction.new(sum: 10, - description: 'Order nr 1 from registrar 1234567 second number 2345678') + another_item = @invoice.items.first.dup + another_item.invoice = another_invoice + another_item.save + another_invoice.reload - assert_difference 'AccountActivity.count' do - transaction.autobind_invoice - end + transaction = BankTransaction.new(sum: 10, + description: 'Order nr 1 from registrar 1234567 second number 2345678') - @invoice.reload - another_invoice.reload - assert(@invoice.paid?) - assert_not(another_invoice.paid?) + 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 @@ -192,7 +195,7 @@ class BankTransactionTest < ActiveSupport::TestCase def test_parsed_ref_no_returns_nil_if_ref_not_found statement = BankTransaction.new - statement.description = "all invalid 12 123 55 77777 --" + statement.description = 'all invalid 12 123 55 77777 --' assert_nil statement.parsed_ref_number end @@ -208,6 +211,7 @@ class BankTransactionTest < ActiveSupport::TestCase transaction.bind_invoice('2222') end end + private def create_payable_invoice(attributes) diff --git a/test/tasks/invoices/process_payments_test.rb b/test/tasks/invoices/process_payments_test.rb index e368c5369..e080bd9fa 100644 --- a/test/tasks/invoices/process_payments_test.rb +++ b/test/tasks/invoices/process_payments_test.rb @@ -30,6 +30,11 @@ class ProcessPaymentsTaskTest < ActiveJob::TestCase [message] end end + + if Feature.billing_system_integrated? + stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_status') + .to_return(status: 200, body: '', headers: {}) + end end def test_not_raises_error_if_bad_reference @@ -63,7 +68,8 @@ class ProcessPaymentsTaskTest < ActiveJob::TestCase def test_cannot_create_new_invoice_if_transaction_binded_to_paid_invoice assert_not @invoice.paid? - @account_activity.update(activity_type: "add_credit", bank_transaction: nil, created_at: Time.zone.today - 1.day, creator_str: 'AdminUser') + @account_activity.update(activity_type: 'add_credit', bank_transaction: nil, + created_at: Time.zone.today - 1.day, creator_str: 'AdminUser') @invoice.update(account_activity: @account_activity, total: @payment_amount) assert @invoice.paid? @@ -77,33 +83,34 @@ class ProcessPaymentsTaskTest < ActiveJob::TestCase end def test_if_invoice_is_overdue_than_48_hours - if Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number + return unless Feature.billing_system_integrated? - Spy.on_instance_method(SendEInvoiceTwoJob, :perform_now).and_return(true) + invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). - to_return(status: 200, body: "", headers: {}) + Spy.on_instance_method(SendEInvoiceTwoJob, :perform_now).and_return(true) - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + stub_request(:post, 'https://eis_billing_system:3000/api/v1/e_invoice/e_invoice') + .to_return(status: 200, body: '', headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + stub_request(:put, 'https://registry:3000/eis_billing/e_invoice_response') + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator') + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - assert_not @invoice.paid? + stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator') + .to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - @account_activity.update(activity_type: "add_credit", bank_transaction: nil, created_at: Time.zone.today - 3.days, creator_str: 'AdminUser') - @invoice.update(account_activity: @account_activity, total: @payment_amount) - assert @invoice.paid? + assert_not @invoice.paid? - assert_difference 'AccountActivity.count' do - assert_difference 'Invoice.count' do - capture_io { run_task } - end + @account_activity.update(activity_type: 'add_credit', bank_transaction: nil, + created_at: Time.zone.today - 3.days, creator_str: 'AdminUser') + @invoice.update(account_activity: @account_activity, total: @payment_amount) + assert @invoice.paid? + + assert_difference 'AccountActivity.count' do + assert_difference 'Invoice.count' do + capture_io { run_task } end end end @@ -162,31 +169,33 @@ class ProcessPaymentsTaskTest < ActiveJob::TestCase end def test_credits_registrar_athout_invoice_beforehand - if Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}") + return unless Feature.billing_system_integrated? - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator') + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}") - Spy.on_instance_method(SendEInvoiceTwoJob, :perform_now).and_return(true) + stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator') + .to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). - to_return(status: 200, body: "", headers: {}) + Spy.on_instance_method(SendEInvoiceTwoJob, :perform_now).and_return(true) - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + stub_request(:post, 'https://eis_billing_system:3000/api/v1/e_invoice/e_invoice') + .to_return(status: 200, body: '', headers: {}) - registrar = registrars(:bestnames) + stub_request(:put, 'https://registry:3000/eis_billing/e_invoice_response') + .to_return(status: 200, + body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", + headers: {}) - assert_changes -> { registrar.accounts.first.balance } do - run_task - end + registrar = registrars(:bestnames) - assert_changes -> { registrar.invoices.count } do - run_task - end + assert_changes -> { registrar.accounts.first.balance } do + run_task + end + + assert_changes -> { registrar.invoices.count } do + run_task end end @@ -198,40 +207,42 @@ class ProcessPaymentsTaskTest < ActiveJob::TestCase end def test_topup_creates_invoice_and_send_it_as_paid - if Feature.billing_system_integrated? - stub_request(:post, "https://eis_billing_system:3000/api/v1/e_invoice/e_invoice"). - to_return(status: 200, body: "", headers: {}) + return unless Feature.billing_system_integrated? - invoice_n = Invoice.order(number: :desc).last.number - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) + stub_request(:post, 'https://eis_billing_system:3000/api/v1/e_invoice/e_invoice') + .to_return(status: 200, body: '', headers: {}) - stub_request(:post, "https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator"). - to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) + invoice_n = Invoice.order(number: :desc).last.number + stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_number_generator') + .to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}", headers: {}) - stub_request(:put, "https://registry:3000/eis_billing/e_invoice_response"). - to_return(status: 200, body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now-10.minutes}\"}", headers: {}) + stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_generator') + .to_return(status: 200, body: "{\"everypay_link\":\"http://link.test\"}", headers: {}) - registrar = registrars(:bestnames) - @invoice.payment_orders.destroy_all - @invoice.destroy + stub_request(:put, 'https://registry:3000/eis_billing/e_invoice_response') + .to_return(status: 200, + body: "{\"invoice_number\":\"#{invoice_n + 3}\"}, {\"date\":\"#{Time.zone.now - 10.minutes}\"}", + headers: {}) - perform_enqueued_jobs do - run_task - end + registrar = registrars(:bestnames) + @invoice.payment_orders.destroy_all + @invoice.destroy - invoice = Invoice.last - assert invoice.paid? - assert_not invoice.e_invoice_sent_at.blank? - - pdf_source = Invoice::PdfGenerator.new(invoice) - pdf_source.send(:invoice_html).include?('Receipt date') - - email= ActionMailer::Base.deliveries.last - assert email.subject.include?('already paid') - - assert_equal 0.1, registrar.invoices.last.total + perform_enqueued_jobs do + run_task end + + invoice = Invoice.last + assert invoice.paid? + assert_not invoice.e_invoice_sent_at.blank? + + pdf_source = Invoice::PdfGenerator.new(invoice) + pdf_source.send(:invoice_html).include?('Receipt date') + + email = ActionMailer::Base.deliveries.last + assert email.subject.include?('already paid') + + assert_equal 0.1, registrar.invoices.last.total end def test_output From 4d5203096e08493e7bf9fd7c8badba1e25aaae6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergei=20Ts=C3=B5ganov?= Date: Thu, 11 Aug 2022 11:11:52 +0300 Subject: [PATCH 2/2] Modified lhv connect controller --- .../eis_billing/lhv_connect_transactions_controller.rb | 6 +++++- app/models/bank_transaction.rb | 10 ++-------- test/models/bank_transaction_test.rb | 4 ---- test/tasks/invoices/process_payments_test.rb | 5 ----- 4 files changed, 7 insertions(+), 18 deletions(-) diff --git a/app/controllers/eis_billing/lhv_connect_transactions_controller.rb b/app/controllers/eis_billing/lhv_connect_transactions_controller.rb index 3c914bd27..2e5996881 100644 --- a/app/controllers/eis_billing/lhv_connect_transactions_controller.rb +++ b/app/controllers/eis_billing/lhv_connect_transactions_controller.rb @@ -34,7 +34,11 @@ module EisBilling def create_invoice_if_missing(transaction) Invoice.create_from_transaction!(transaction) unless transaction.autobindable? - transaction.autobind_invoice + invoice = transaction.autobind_invoice + return unless invoice.paid? + + EisBilling::SendInvoiceStatus.send_info(invoice_number: invoice.number, + status: 'paid') end def transaction_attributes(incoming_transaction) diff --git a/app/models/bank_transaction.rb b/app/models/bank_transaction.rb index 46d597e61..b8bf3eb77 100644 --- a/app/models/bank_transaction.rb +++ b/app/models/bank_transaction.rb @@ -46,17 +46,11 @@ class BankTransaction < ApplicationRecord payment_order.save! if create_activity(registrar, invoice) - status = 'paid' payment_order.paid! else - status = 'failed' - payment_order.update(notes: 'Failed to create activity', status: status) + payment_order.update(notes: 'Failed to create activity', status: 'failed') end - - return unless Feature.billing_system_integrated? - - EisBilling::SendInvoiceStatus.send_info(invoice_number: invoice.number, - status: status) + invoice end def bind_invoice(invoice_no, manual: false) diff --git a/test/models/bank_transaction_test.rb b/test/models/bank_transaction_test.rb index 5f2503cb1..8cb62ab48 100644 --- a/test/models/bank_transaction_test.rb +++ b/test/models/bank_transaction_test.rb @@ -4,10 +4,6 @@ class BankTransactionTest < ActiveSupport::TestCase setup do @registrar = registrars(:bestnames) @invoice = invoices(:one) - if Feature.billing_system_integrated? - stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_status') - .to_return(status: 200, body: '', headers: {}) - end end def test_matches_against_invoice_nubmber_and_reference_number diff --git a/test/tasks/invoices/process_payments_test.rb b/test/tasks/invoices/process_payments_test.rb index e080bd9fa..60ef3d8d8 100644 --- a/test/tasks/invoices/process_payments_test.rb +++ b/test/tasks/invoices/process_payments_test.rb @@ -30,11 +30,6 @@ class ProcessPaymentsTaskTest < ActiveJob::TestCase [message] end end - - if Feature.billing_system_integrated? - stub_request(:post, 'https://eis_billing_system:3000/api/v1/invoice_generator/invoice_status') - .to_return(status: 200, body: '', headers: {}) - end end def test_not_raises_error_if_bad_reference