Class: Spree::Refund

Inherits:
Base
  • Object
show all
Defined in:
app/models/spree/refund.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

display_includes, page, preference, #preferences

Methods included from Core::Permalinks

#generate_permalink, #save_permalink

Instance Attribute Details

#perform_after_createObject

Returns the value of attribute perform_after_create.



18
19
20
# File 'app/models/spree/refund.rb', line 18

def perform_after_create
  @perform_after_create
end

#perform_responseObject (readonly)

Returns the value of attribute perform_response.



17
18
19
# File 'app/models/spree/refund.rb', line 17

def perform_response
  @perform_response
end

Class Method Details

.total_amount_reimbursed_for(reimbursement) ⇒ Object



34
35
36
# File 'app/models/spree/refund.rb', line 34

def total_amount_reimbursed_for(reimbursement)
  reimbursement.refunds.to_a.sum(&:amount)
end

Instance Method Details

#descriptionObject



39
40
41
# File 'app/models/spree/refund.rb', line 39

def description
  payment.payment_method.name
end

#moneyObject Also known as: display_amount



28
29
30
# File 'app/models/spree/refund.rb', line 28

def money
  Spree::Money.new(amount, { currency: currency })
end

#perform!Object

Must be called for the refund transaction to be processed.

Attempts to perform the refund, raises an error if the refund fails.



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'app/models/spree/refund.rb', line 47

def perform!
  return true if perform_after_create == false
  return true if transaction_id.present?

  credit_cents = money.cents

  @perform_response = process!(credit_cents)

  @response = Spree::DeprecatedInstanceVariableProxy.new(
    self,
    :perform_response,
    :@response,
    Spree::Deprecation,
    "Please, do not use Spree::Refund @response anymore, use Spree::Refund#perform_response"
  )

  log_entries.build(details: perform_response.to_yaml)

  self.transaction_id = perform_response.authorization
  # This is needed otherwise set_perform_after_create_default callback
  # will print a deprecation warning when save! creates a record.
  self.perform_after_create = false unless persisted?
  save!

  update_order
end