# frozen_string_literal: true # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later # A Charge represents a potential debit to a nonprofit's account on a credit card donation action. class Charge < ApplicationRecord # TODO # attr_accessible \ # :amount, # :fee, # :stripe_charge_id, # :status has_one :campaign, through: :donation has_one :recurring_donation, through: :donation has_many :tickets has_many :events, through: :tickets has_many :refunds has_many :disputes belongs_to :supporter belongs_to :card belongs_to :direct_debit_detail belongs_to :nonprofit belongs_to :donation belongs_to :payment scope :paid, -> { where(status: %w[available pending disbursed]) } scope :not_paid, -> { where(status: [nil, 'failed']) } scope :available, -> { where(status: 'available') } scope :pending, -> { where(status: 'pending') } scope :disbursed, -> { where(status: 'disbursed') } def paid? status.in?(%w[available pending disbursed]) end end