Module: RailsTrade::Ordering::Refund

Included in:
RailsTrade::Order
Defined in:
app/models/rails_trade/ordering/refund.rb

Instance Method Summary collapse

Instance Method Details

#apply_for_refund(payment_id = nil) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/models/rails_trade/ordering/refund.rb', line 3

def apply_for_refund(payment_id = nil)
  if ['unpaid', 'refunding', 'refunded'].include? self.payment_status
    return
  end

  if payment_id
    payments = self.payments.where(id: payment_id)
  else
    payments = self.payments
  end

  payments.each do |payment|
    refund = self.refunds.build(payment_id: payment.id)
    refund.type = payment.type.sub(/Payment/, '') + 'Refund'
    refund.total_amount = payment.total_amount
    refund.currency = payment.currency
    self.received_amount -= payment.total_amount
  end

  self.payment_status = 'refunding'

  self.class.transaction do
    self.confirm_refund!
    self.save!
  end
end

#confirm_refund!Object



30
31
32
# File 'app/models/rails_trade/ordering/refund.rb', line 30

def confirm_refund!
  self.trade_items.each(&:confirm_refund!)
end