/backend/app/controllers/spree/admin/reports_controller.rb

https://github.com/joshnuss/spree-1 · Ruby · 55 lines · 43 code · 12 blank · 0 comment · 5 complexity · f08551b26175e04dc8cb9de5a730fa25 MD5 · raw file

  1. module Spree
  2. module Admin
  3. class ReportsController < Spree::Admin::BaseController
  4. respond_to :html
  5. AVAILABLE_REPORTS = {
  6. :sales_total => { :name => Spree.t(:sales_total), :description => Spree.t(:sales_total_description) }
  7. }
  8. def index
  9. @reports = AVAILABLE_REPORTS
  10. end
  11. def sales_total
  12. params[:q] = {} unless params[:q]
  13. if params[:q][:created_at_gt].blank?
  14. params[:q][:created_at_gt] = Time.zone.now.beginning_of_month
  15. else
  16. params[:q][:created_at_gt] = Time.zone.parse(params[:q][:created_at_gt]).beginning_of_day rescue Time.zone.now.beginning_of_month
  17. end
  18. if params[:q] && !params[:q][:created_at_lt].blank?
  19. params[:q][:created_at_lt] = Time.zone.parse(params[:q][:created_at_lt]).end_of_day rescue ""
  20. end
  21. if params[:q].delete(:completed_at_not_null) == "1"
  22. params[:q][:completed_at_not_null] = true
  23. else
  24. params[:q][:completed_at_not_null] = false
  25. end
  26. params[:q][:s] ||= "created_at desc"
  27. @search = Order.complete.ransack(params[:q])
  28. @orders = @search.result
  29. @totals = {}
  30. @orders.each do |order|
  31. @totals[order.currency] = { :item_total => ::Money.new(0, order.currency), :adjustment_total => ::Money.new(0, order.currency), :sales_total => ::Money.new(0, order.currency) } unless @totals[order.currency]
  32. @totals[order.currency][:item_total] += order.display_item_total.money
  33. @totals[order.currency][:adjustment_total] += order.display_adjustment_total.money
  34. @totals[order.currency][:sales_total] += order.display_total.money
  35. end
  36. end
  37. private
  38. def model_class
  39. Spree::Admin::ReportsController
  40. end
  41. end
  42. end
  43. end