# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
class Refund < ActiveRecord::Base

	Reasons = [:duplicate, :fraudulent, :requested_by_customer]

	attr_accessible \
		:amount, # int
		:comment, # text
		:reason, # str ('duplicate', 'fraudulent', or 'requested_by_customer')
		:stripe_refund_id,
		:disbursed, # boolean (whether this refund has been counted in a payout)
		:failure_message, # str (accessor for storing the Stripe error message)
		:user_id, :user, # user who made this refund
		:payment_id, :payment, # negative payment that records this refund
		:charge_id, :charge

	attr_accessor :failure_message

	belongs_to :charge
	belongs_to :payment

	scope :not_disbursed, ->{where(disbursed: [nil, false])}
	scope :disbursed, ->{where(disbursed: [true])}

end