Class: Spree::Admin::OrdersController

Inherits:
BaseController show all
Defined in:
app/controllers/spree/admin/orders_controller.rb

Instance Method Summary collapse

Instance Method Details

#approveObject



99
100
101
102
103
# File 'app/controllers/spree/admin/orders_controller.rb', line 99

def approve
  @order.approved_by(try_spree_current_user)
  flash[:success] = Spree.t(:order_approved)
  redirect_to :back
end

#cancelObject



87
88
89
90
91
# File 'app/controllers/spree/admin/orders_controller.rb', line 87

def cancel
  @order.canceled_by(try_spree_current_user)
  flash[:success] = Spree.t(:order_canceled)
  redirect_to :back
end

#cartObject



64
65
66
67
68
69
70
71
# File 'app/controllers/spree/admin/orders_controller.rb', line 64

def cart
  unless @order.completed?
    @order.refresh_shipment_rates
  end
  if @order.shipments.shipped.count > 0
    redirect_to edit_admin_order_url(@order)
  end
end

#close_adjustmentsObject



120
121
122
123
124
125
126
# File 'app/controllers/spree/admin/orders_controller.rb', line 120

def close_adjustments
  adjustments = @order.all_adjustments.open
  adjustments.update_all(state: 'closed')
  flash[:success] = Spree.t(:all_adjustments_closed)

  respond_with(@order) { |format| format.html { redirect_to :back } }
end

#editObject



56
57
58
59
60
61
62
# File 'app/controllers/spree/admin/orders_controller.rb', line 56

def edit
  can_not_transition_without_customer_info

  unless @order.completed?
    @order.refresh_shipment_rates(ShippingMethod::DISPLAY_ON_FRONT_AND_BACK_END)
  end
end

#indexObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'app/controllers/spree/admin/orders_controller.rb', line 9

def index
  params[:q] ||= {}
  params[:q][:completed_at_not_null] ||= '1' if Spree::Config[:show_only_complete_orders_by_default]
  @show_only_completed = params[:q][:completed_at_not_null] == '1'
  params[:q][:s] ||= @show_only_completed ? 'completed_at desc' : 'created_at desc'
  params[:q][:completed_at_not_null] = '' unless @show_only_completed

  # As date params are deleted if @show_only_completed, store
  # the original date so we can restore them into the params
  # after the search
  created_at_gt = params[:q][:created_at_gt]
  created_at_lt = params[:q][:created_at_lt]

  params[:q].delete(:inventory_units_shipment_id_null) if params[:q][:inventory_units_shipment_id_null] == "0"

  if params[:q][:created_at_gt].present?
    params[:q][:created_at_gt] = Time.zone.parse(params[:q][:created_at_gt]).beginning_of_day rescue ""
  end

  if params[:q][:created_at_lt].present?
    params[:q][:created_at_lt] = Time.zone.parse(params[:q][:created_at_lt]).end_of_day rescue ""
  end

  if @show_only_completed
    params[:q][:completed_at_gt] = params[:q].delete(:created_at_gt)
    params[:q][:completed_at_lt] = params[:q].delete(:created_at_lt)
  end

  @search = Order.preload(:user).accessible_by(current_ability, :index).ransack(params[:q])

  # lazy loading other models here (via includes) may result in an invalid query
  # e.g. SELECT  DISTINCT DISTINCT "spree_orders".id, "spree_orders"."created_at" AS alias_0 FROM "spree_orders"
  # see https://github.com/spree/spree/pull/3919
  @orders = @search.result(distinct: true).
    page(params[:page]).
    per(params[:per_page] || Spree::Config[:orders_per_page])

  # Restore dates
  params[:q][:created_at_gt] = created_at_gt
  params[:q][:created_at_lt] = created_at_lt
end

#newObject



51
52
53
54
# File 'app/controllers/spree/admin/orders_controller.rb', line 51

def new
  @order = Order.create(order_params)
  redirect_to cart_admin_order_url(@order)
end

#open_adjustmentsObject



112
113
114
115
116
117
118
# File 'app/controllers/spree/admin/orders_controller.rb', line 112

def open_adjustments
  adjustments = @order.all_adjustments.closed
  adjustments.update_all(state: 'open')
  flash[:success] = Spree.t(:all_adjustments_opened)

  respond_with(@order) { |format| format.html { redirect_to :back } }
end

#resendObject



105
106
107
108
109
110
# File 'app/controllers/spree/admin/orders_controller.rb', line 105

def resend
  OrderMailer.confirm_email(@order.id, true).deliver_later
  flash[:success] = Spree.t(:order_email_resent)

  redirect_to :back
end

#resumeObject



93
94
95
96
97
# File 'app/controllers/spree/admin/orders_controller.rb', line 93

def resume
  @order.resume!
  flash[:success] = Spree.t(:order_resumed)
  redirect_to :back
end

#updateObject



73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'app/controllers/spree/admin/orders_controller.rb', line 73

def update
  if @order.update_attributes(params[:order]) && @order.line_items.present?
    @order.update_with_updater!
    unless @order.completed?
      # Jump to next step if order is not completed.
      redirect_to admin_order_customer_path(@order) and return
    end
  else
    @order.errors.add(:line_items, Spree.t('errors.messages.blank')) if @order.line_items.empty?
  end

  render action: :edit
end