Class: Spree::Billing::ReportsController

Inherits:
BaseController
  • Object
show all
Includes:
SpreeCmCommissioner::Billing::MonthlyOrdersHelper
Defined in:
app/controllers/spree/billing/reports_controller.rb

Instance Method Summary collapse

Methods included from SpreeCmCommissioner::Billing::MonthlyOrdersHelper

#initialize_monthly_order_hashes, #load_orders_by_month

Methods inherited from BaseController

#collection_url, #current_vendor, #default_url_options, #edit_object_url, #handle_unauthorized_vendor, #page, #per_page, #required_vendor_user!, #set_locale, #switch_vendor, #vendors

Methods included from SpreeCmCommissioner::Billing::RoleAuthorization

#auth_action, #auth_entry, #auth_user, #authorize!, #authorize?, #authorize_admin, #authorize_role!, #redirect_unauthorized_access

Instance Method Details

#active_subscribersObject

GET /billing/reports/active_subscribers



54
55
56
57
58
59
# File 'app/controllers/spree/billing/reports_controller.rb', line 54

def active_subscribers
  load_bussinesses

  @search = customers_scope.ransack(params[:q])
  @customers = @search.result.includes(:subscriptions, :taxons).page(page).per(per_page)
end

#balance_dueObject

GET /billing/reports/balance_due



28
29
30
31
32
33
34
35
36
# File 'app/controllers/spree/billing/reports_controller.rb', line 28

def balance_due
  @search = orders_scope.ransack(SpreeCmCommissioner::OrderParamsChecker.process_balance_due_params(params))
  @orders = @search.result.includes(:line_items).where(payment_state: 'balance_due').page(page).per(per_page)

  respond_to do |format|
    format.html
    format.js
  end
end

#exportObject



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'app/controllers/spree/billing/reports_controller.rb', line 70

def export
  @year = params[:year].presence || Time.zone.today.year
  search = orders_scope.where(payment_state: %w[paid balance_due failed]).joins(:invoice)
                       .where('EXTRACT(YEAR FROM cm_invoices.date) = ?', @year).ransack(params[:q]).result

  order_hashes = load_orders_by_month(search, @year)
  @orders = order_hashes[:orders]

  @total = order_hashes[:total]
  @current_month_total = order_hashes[:current_month_total]
  @previous_month_carried_forward = order_hashes[:previous_month_carried_forward]
  @paid = order_hashes[:paid]
  @balance_due = order_hashes[:balance_due]
  @voided = order_hashes[:voided]

  return unless request.format == :csv

  csv_data = SpreeCmCommissioner::Exports::ExportOrderCsvService.new(@orders[params[:month].to_i], params[:place_id]).call

  respond_to do |format|
    format.csv do
      send_data csv_data, filename: "#{@year}_#{Date::MONTHNAMES[params[:month].to_i]}_Invoices.csv", type: 'text/csv; charset=utf-8'
    end
  end
end

#failed_ordersObject

GET /billing/reports/failed_orders



47
48
49
50
51
# File 'app/controllers/spree/billing/reports_controller.rb', line 47

def failed_orders
  @search = orders_scope.joins(:line_items).where(payment_state: 'failed')
                        .ransack(params[:q])
  @orders = @search.result.includes(:line_items).page(page).per(per_page)
end

#indexObject



14
15
16
17
18
19
# File 'app/controllers/spree/billing/reports_controller.rb', line 14

def index
  (from_date, to_date) = date_range_for_month
  @revenue_totals = revenue_report_query(from_date, to_date).reports_with_overdues
  @search = searcher(from_date, to_date).ransack(params[:q])
  @orders = @search.result.includes(:line_items).page(page).per(per_page)
end

#overdueObject

GET /billing/reports/overdue



39
40
41
42
43
44
# File 'app/controllers/spree/billing/reports_controller.rb', line 39

def overdue
  @search = orders_scope.joins(:line_items).where.not(payment_state: %w[paid failed])
                        .where('spree_line_items.due_date < ?', Time.zone.today)
                        .ransack(params[:q])
  @orders = @search.result.includes(:line_items).page(page).per(per_page)
end

GET /billing/reports/paid



22
23
24
25
# File 'app/controllers/spree/billing/reports_controller.rb', line 22

def paid
  @search = orders_scope.ransack(SpreeCmCommissioner::OrderParamsChecker.process_paid_params(params))
  @orders = @search.result.includes(:line_items).where(payment_state: 'paid').page(page).per(per_page)
end

POST /billing/reports/print_all_invoices



62
63
64
65
66
67
68
# File 'app/controllers/spree/billing/reports_controller.rb', line 62

def print_all_invoices
  @orders = orders_scope.joins(:invoice).where(payment_state: 'balance_due').where(cm_invoices: { vendor_id: current_vendor.id })

  @orders.each do |order|
    order.invoice.update(invoice_issued_date: Time.zone.today) if order.invoice.invoice_issued_date.blank?
  end
end