From 7033d912272565ea1c4fe57f84126f9cf2741bd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Erik=20=C3=95unapuu?= Date: Thu, 30 Jan 2020 18:31:39 +0200 Subject: [PATCH] EveryPay/BankLink: Select specific Invoice to mark as paid --- app/models/bank_transaction.rb | 15 ++++++++++----- app/models/payment_orders/bank_link.rb | 3 ++- app/models/payment_orders/every_pay.rb | 4 +++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/app/models/bank_transaction.rb b/app/models/bank_transaction.rb index 6612a4dbd..174aae06c 100644 --- a/app/models/bank_transaction.rb +++ b/app/models/bank_transaction.rb @@ -24,15 +24,20 @@ class BankTransaction < ApplicationRecord @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 + def autobind_invoice(invoice_no: nil) return if binded? return unless registrar - return unless invoice - return unless invoice.payable? - create_activity(registrar, invoice) + inv = if invoice_no.nil? + invoice + else + Invoice.find_by(number: invoice_no) + end + return unless inv + return unless inv.payable? + + create_activity(registrar, inv) end def bind_invoice(invoice_no) diff --git a/app/models/payment_orders/bank_link.rb b/app/models/payment_orders/bank_link.rb index 0cdedbd85..be78973ed 100644 --- a/app/models/payment_orders/bank_link.rb +++ b/app/models/payment_orders/bank_link.rb @@ -51,6 +51,7 @@ module PaymentOrders def complete_transaction return unless valid_response_from_intermediary? && settled_payment? + self.status = 'paid' transaction = BankTransaction.where(description: invoice.order).first_or_initialize( description: invoice.order, reference_no: invoice.reference_no, @@ -66,7 +67,7 @@ module PaymentOrders transaction.paid_at = Time.parse(response['VK_T_DATETIME']) transaction.save! - transaction.autobind_invoice + transaction.autobind_invoice(invoice_no: invoice.number) end def settled_payment? diff --git a/app/models/payment_orders/every_pay.rb b/app/models/payment_orders/every_pay.rb index ae84aacca..66c34c3fa 100644 --- a/app/models/payment_orders/every_pay.rb +++ b/app/models/payment_orders/every_pay.rb @@ -36,6 +36,7 @@ module PaymentOrders def complete_transaction return unless valid_response_from_intermediary? && settled_payment? + self.status = 'paid' transaction = BankTransaction.where(description: invoice.order).first_or_initialize( description: invoice.order, @@ -48,7 +49,8 @@ module PaymentOrders transaction.paid_at = Date.strptime(response['timestamp'], '%s') transaction.buyer_name = response['cc_holder_name'] - transaction.autobind_invoice + transaction.save! + transaction.autobind_invoice(invoice_no: invoice.number) end def base_params