diff --git a/app/controllers/admin/campaigns_controller.rb b/app/controllers/admin/campaigns_controller.rb index c6360d74..dfb5d8c0 100644 --- a/app/controllers/admin/campaigns_controller.rb +++ b/app/controllers/admin/campaigns_controller.rb @@ -285,17 +285,17 @@ def payments if payment @payments = [payment] else - @payments = @campaign.payments_completed.order("created_at ASC") + @payments = @campaign.payments.completed.order("created_at ASC") flash.now[:error] = "Contributor not found for " + params[:payment_id] end elsif params.has_key?(:email) && !params[:email].blank? - @payments = @campaign.payments_completed.where("lower(email) = ?", params[:email].downcase) + @payments = @campaign.payments.completed.where("lower(email) = ?", params[:email].downcase) if @payments.blank? - @payments = @campaign.payments_completed.order("created_at ASC") + @payments = @campaign.payments.completed.order("created_at ASC") flash.now[:error] = "Contributor not found for " + params[:email] end else - @payments = @campaign.payments_completed.order("created_at ASC") + @payments = @campaign.payments.completed.order("created_at ASC") end create_breadcrumb(['Payments', admin_campaigns_payments_path(@campaign)]) diff --git a/app/models/campaign.rb b/app/models/campaign.rb index e9c3e13b..5f310f48 100644 --- a/app/models/campaign.rb +++ b/app/models/campaign.rb @@ -65,32 +65,19 @@ def orders end def rewards? - (self.payment_type != 'fixed' && self.rewards.length > 0) + (self.payment_type != 'fixed' && self.rewards.count > 0) end def rewards_claimed - @sum = 0 - self.rewards.each do |reward| - @sum += reward.payments.length - end - return @sum + self.payments.joins(:reward).successful.count end - - def payments_completed - self.payments.where(:status => %w(authorized charged released rejected refunded offline)) - end - - def payments_successful - # 'rejected' is a post-tilt state, so they are included in successful payments. - self.payments.where(:status => %w(authorized charged released rejected offline)) - end def raised_amount - self.payments_successful.sum(:amount)/100.0 + self.payments.successful.sum(:amount)/100.0 end def number_of_contributions - self.payments_successful.count + self.payments.successful.count end def tilt_percent diff --git a/app/models/payment.rb b/app/models/payment.rb index 0470200e..7cec8d77 100644 --- a/app/models/payment.rb +++ b/app/models/payment.rb @@ -13,6 +13,9 @@ class Payment < ActiveRecord::Base belongs_to :campaign belongs_to :reward + scope :successful, where(status: %w(authorized charged released rejected offline)) + scope :completed, where(status: %w(authorized charged released rejected refunded offline)) + def self.to_csv(options={}) #db_columns = %w{fullname email quantity amount user_fee_amount created_at status ct_payment_id} csv_columns = ['Name', 'Email', 'Quantity', 'Amount', 'User Fee', 'Date', 'Reward', diff --git a/app/models/reward.rb b/app/models/reward.rb index e3550213..97b87bab 100644 --- a/app/models/reward.rb +++ b/app/models/reward.rb @@ -9,13 +9,17 @@ class Reward < ActiveRecord::Base has_many :payments def sold_out? - !self.unlimited? && number_of_payments >= self.number + !self.unlimited? && self.number_of_successful_payments >= self.number end def number_of_payments self.payments.count end + def number_of_successful_payments + self.payments.successful.count + end + def unlimited? self.number.nil? || self.number == 0 end diff --git a/app/serializers/reward_serializer.rb b/app/serializers/reward_serializer.rb index b2373498..2ce03b08 100644 --- a/app/serializers/reward_serializer.rb +++ b/app/serializers/reward_serializer.rb @@ -1,3 +1,3 @@ class RewardSerializer < ActiveModel::Serializer - attributes :id, :title, :description, :price, :delivery_date, :number, :campaign_id, :number_of_payments, :image_url, :collect_shipping_flag -end \ No newline at end of file + attributes :id, :title, :description, :price, :delivery_date, :number, :campaign_id, :number_of_successful_payments, :image_url, :collect_shipping_flag +end diff --git a/app/views/admin/campaigns/_form.html.erb b/app/views/admin/campaigns/_form.html.erb index 446f7516..1ed210e0 100644 --- a/app/views/admin/campaigns/_form.html.erb +++ b/app/views/admin/campaigns/_form.html.erb @@ -150,9 +150,9 @@ <% end %> - <%= reward.payments.length %> + <%= reward.payments.successful.count %> - <% if reward.payments.length > 0 %> + <% if reward.payments.successful.count > 0 %> N/A <% else %> diff --git a/app/views/campaigns/checkout_amount.html.erb b/app/views/campaigns/checkout_amount.html.erb index 0bc20173..913e2c5c 100644 --- a/app/views/campaigns/checkout_amount.html.erb +++ b/app/views/campaigns/checkout_amount.html.erb @@ -67,7 +67,7 @@

<%= reward.title %>

- <%= reward.payments.length %> <%= "of #{reward.number}" unless reward.unlimited? %> claimed + <%= reward.payments.successful.count %> <%= "of #{reward.number}" unless reward.unlimited? %> claimed <% if reward.sold_out? %> (All gone!) <% end %>

<%= reward.description %>

diff --git a/app/views/theme/views/campaign.html.erb b/app/views/theme/views/campaign.html.erb index 355a1c53..b0df2b5e 100644 --- a/app/views/theme/views/campaign.html.erb +++ b/app/views/theme/views/campaign.html.erb @@ -168,12 +168,12 @@ <% if @campaign.expired? %> <% if reward.include_claimed? %>

- <%= reward.payments.length %> <%= "of #{reward.number}" unless reward.unlimited? %> claimed <%= '(All gone!)' if reward.sold_out? %> + <%= reward.payments.successful.count %> <%= "of #{reward.number}" unless reward.unlimited? %> claimed <%= '(All gone!)' if reward.sold_out? %>

<% end %> <% else %>

- <%= reward.payments.length %> <%= "of #{reward.number}" unless reward.unlimited? %> claimed <%= '(All gone!)' if reward.sold_out? %> + <%= reward.payments.successful.count %> <%= "of #{reward.number}" unless reward.unlimited? %> claimed <%= '(All gone!)' if reward.sold_out? %>

<% end %>