Class: Spree::Admin::Orders::ShippingAddressController

Inherits:
BaseController
  • Object
show all
Includes:
Spree::Admin::OrderConcern
Defined in:
app/controllers/spree/admin/orders/shipping_address_controller.rb

Instance Method Summary collapse

Methods included from BreadcrumbConcern

#add_breadcrumb_icon_instance_var

Instance Method Details

#createObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/controllers/spree/admin/orders/shipping_address_controller.rb', line 18

def create
  @order.ship_address_attributes = address_params
  @address = @order.ship_address

  if @order.save
    @order.shipments.update_all(address_id: @order.ship_address.id, updated_at: Time.current)
    if !@order.completed? && @order.line_items.any?
      @order.ensure_updated_shipments
      advance_to_payment_result = Spree.checkout_advance_service.call(order: @order, state: 'payment')

      unless advance_to_payment_result.success?
        flash[:error] = advance_to_payment_result.error.value.full_messages.to_sentence
        @order.ensure_updated_shipments
        return redirect_to spree.edit_admin_order_path(@order)
      end
    end

    flash[:success] = Spree.t(:successfully_created, resource: Spree.t(:shipping_address))

    redirect_to spree.edit_admin_order_path(@order)
  else
    render :create, status: :unprocessable_content
  end
end

#editObject



43
44
45
# File 'app/controllers/spree/admin/orders/shipping_address_controller.rb', line 43

def edit
  @address = @order.ship_address
end

#newObject



9
10
11
12
13
14
15
16
# File 'app/controllers/spree/admin/orders/shipping_address_controller.rb', line 9

def new
  @address = @order.build_ship_address
  if @order.user.present?
    @address.first_name = @order.user.first_name
    @address.last_name = @order.user.last_name
    @address.phone = @order.user.phone
  end
end

#updateObject



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'app/controllers/spree/admin/orders/shipping_address_controller.rb', line 47

def update
  if params[:shipping_address_id].present?
    @address = Spree::Address.accessible_by(current_ability, :manage).find_by_prefix_id!(params[:shipping_address_id])
    @order.ship_address_id = @address.id
  else
    @order.ship_address_attributes = address_params
    @address = @order.ship_address
  end

  if @order.save
    @order.shipments.update_all(address_id: @order.ship_address.id, updated_at: Time.current)
    if !@order.completed? && @order.line_items.any?
      @order.ensure_updated_shipments
      advance_to_payment_result = Spree.checkout_advance_service.call(order: @order, state: 'payment')

      unless advance_to_payment_result.success?
        flash[:error] = advance_to_payment_result.error.value.full_messages.to_sentence
        @order.ensure_updated_shipments
        return redirect_to spree.edit_admin_order_path(@order)
      end
    end

    flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:shipping_address))

    redirect_to spree.edit_admin_order_path(@order)
  else
    render :update, status: :unprocessable_content
  end
end