PageRenderTime 1356ms CodeModel.GetById 1ms RepoModel.GetById 1ms app.codeStats 0ms

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

https://gitlab.com/adamlwalker/spree
Ruby | 65 lines | 51 code | 14 blank | 0 comment | 4 complexity | 100c23bd59bef996101f7ac926f9b6ea MD5 | raw file
  1. module Spree
  2. module Admin
  3. class ReportsController < Spree::Admin::BaseController
  4. respond_to :html
  5. class << self
  6. def available_reports
  7. @@available_reports
  8. end
  9. def add_available_report!(report_key, report_description_key = nil)
  10. if report_description_key.nil?
  11. report_description_key = "#{report_key}_description"
  12. end
  13. @@available_reports[report_key] = {name: Spree.t(report_key), description: Spree.t(report_description_key)}
  14. end
  15. end
  16. def initialize
  17. super
  18. ReportsController.add_available_report!(:sales_total)
  19. end
  20. def index
  21. @reports = ReportsController.available_reports
  22. end
  23. def sales_total
  24. params[:q] = {} unless params[:q]
  25. if params[:q][:completed_at_gt].blank?
  26. params[:q][:completed_at_gt] = Time.zone.now.beginning_of_month
  27. else
  28. params[:q][:completed_at_gt] = Time.zone.parse(params[:q][:completed_at_gt]).beginning_of_day rescue Time.zone.now.beginning_of_month
  29. end
  30. if params[:q] && !params[:q][:completed_at_lt].blank?
  31. params[:q][:completed_at_lt] = Time.zone.parse(params[:q][:completed_at_lt]).end_of_day rescue ""
  32. end
  33. params[:q][:s] ||= "completed_at desc"
  34. @search = Order.complete.ransack(params[:q])
  35. @orders = @search.result
  36. @totals = {}
  37. @orders.each do |order|
  38. @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]
  39. @totals[order.currency][:item_total] += order.display_item_total.money
  40. @totals[order.currency][:adjustment_total] += order.display_adjustment_total.money
  41. @totals[order.currency][:sales_total] += order.display_total.money
  42. end
  43. end
  44. private
  45. def model_class
  46. Spree::Admin::ReportsController
  47. end
  48. @@available_reports = {}
  49. end
  50. end
  51. end