Class: Killbill::Plugin::ActiveMerchant::ActiveRecord::Transaction

Inherits:
ActiveRecord::Base
  • Object
show all
Extended by:
Helpers
Defined in:
lib/killbill/helpers/active_merchant/active_record/models/transaction.rb

Constant Summary collapse

@@quotes_cache =
build_quotes_cache

Class Method Summary collapse

Methods included from Helpers

build_quotes_cache, extract, shared_activerecord_options, with_connection, with_connection_and_transaction

Class Method Details

.find_candidate_transaction_for_refund(kb_payment_id, kb_tenant_id, transaction_type = nil) ⇒ Object



56
57
58
59
60
61
62
# File 'lib/killbill/helpers/active_merchant/active_record/models/transaction.rb', line 56

def find_candidate_transaction_for_refund(kb_payment_id, kb_tenant_id, transaction_type = nil)
  if transaction_type.nil?
    find_candidate_transaction_for_refund(kb_payment_id, kb_tenant_id, :AUTHORIZE) || find_candidate_transaction_for_refund(kb_payment_id, kb_tenant_id, :PURCHASE)
  else
    do_find_candidate_transaction_for_refund(transaction_type, kb_payment_id, kb_tenant_id)
  end
end

.find_candidate_transaction_for_void(kb_payment_id, kb_tenant_id, linked_transaction_type = nil) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/killbill/helpers/active_merchant/active_record/models/transaction.rb', line 36

def find_candidate_transaction_for_void(kb_payment_id, kb_tenant_id, linked_transaction_type = nil)
  # Default behavior to search for the last voidable transaction
  # If an authorization is being voided, we're performing an 'auth_reversal', otherwise,
  # we're voiding an unsettled capture or purchase (which often needs to happen within 24 hours).
  transactions = transaction_from_kb_payment_id(nil, kb_payment_id, kb_tenant_id, :multiple).to_a
  tx_to_void = 0
  transactions.reverse.each do |t|
    if t.transaction_type == 'VOID'
      tx_to_void += 1
    else
      if tx_to_void > 0
        tx_to_void -= 1
      elsif linked_transaction_type.nil? || t.transaction_type.downcase == linked_transaction_type.to_s.downcase
        return t
      end
    end
  end
  nil
end

.from_kb_payment_transaction_id(kb_payment_transaction_id, kb_tenant_id) ⇒ Object



32
33
34
# File 'lib/killbill/helpers/active_merchant/active_record/models/transaction.rb', line 32

def from_kb_payment_transaction_id(kb_payment_transaction_id, kb_tenant_id)
  transaction_from_kb_payment_transaction_id(nil, kb_payment_transaction_id, kb_tenant_id, :single)
end

.transactions_from_kb_payment_id(kb_payment_id, kb_tenant_id) ⇒ Object



19
20
21
# File 'lib/killbill/helpers/active_merchant/active_record/models/transaction.rb', line 19

def transactions_from_kb_payment_id(kb_payment_id, kb_tenant_id)
  where(:kb_payment_id => kb_payment_id, :kb_tenant_id => kb_tenant_id).order(:created_at)
end