Class: Workarea::CopyOrder

Inherits:
Object
  • Object
show all
Defined in:
app/services/workarea/copy_order.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(order, params = {}) ⇒ CopyOrder

Returns a new instance of CopyOrder.



5
6
7
8
# File 'app/services/workarea/copy_order.rb', line 5

def initialize(order, params = {})
  @order = order
  @params = params || {}
end

Instance Attribute Details

#orderObject (readonly)

Returns the value of attribute order.



3
4
5
# File 'app/services/workarea/copy_order.rb', line 3

def order
  @order
end

#paramsObject (readonly)

Returns the value of attribute params.



3
4
5
# File 'app/services/workarea/copy_order.rb', line 3

def params
  @params
end

Instance Method Details

#anonymize!Object



37
38
39
40
41
# File 'app/services/workarea/copy_order.rb', line 37

def anonymize!
  new_order.update!(user_id: nil, email: nil)
  new_payment.destroy!
  new_shippings.each(&:destroy!)
end

#cancel_originalObject



66
67
68
69
70
71
72
73
74
75
76
77
# File 'app/services/workarea/copy_order.rb', line 66

def cancel_original
  return if order.canceled? || !order.placed?

  cancel = CancelOrder.new(
    order,
    restock: true,
    refund: true,
    fulfillment: true
  )

  cancel.perform
end

#cancel_original?Boolean

Returns:

  • (Boolean)


62
63
64
# File 'app/services/workarea/copy_order.rb', line 62

def cancel_original?
  params[:cancel_original].to_s =~ /true/
end

#new_orderObject



18
19
20
# File 'app/services/workarea/copy_order.rb', line 18

def new_order
  @new_order ||= order.dup
end

#new_paymentObject



22
23
24
# File 'app/services/workarea/copy_order.rb', line 22

def new_payment
  @new_payment ||= payment.try(:dup)
end

#new_shippingsObject



26
27
28
# File 'app/services/workarea/copy_order.rb', line 26

def new_shippings
  @new_shippings ||= shippings.map(&:dup)
end

#paymentObject



10
11
12
# File 'app/services/workarea/copy_order.rb', line 10

def payment
  @payment ||= Payment.find(order.id) rescue nil
end

#performObject



30
31
32
33
34
35
# File 'app/services/workarea/copy_order.rb', line 30

def perform
  save_new_order
  save_new_payment if new_payment.present?
  save_new_shippings if new_shippings.present?
  cancel_original if cancel_original?
end

#save_new_orderObject



43
44
45
46
47
48
49
# File 'app/services/workarea/copy_order.rb', line 43

def save_new_order
  Workarea.config.copy_order_ignored_fields.each do |field|
    new_order.send("#{field}=", nil)
  end
  new_order.copied_from = order
  new_order.save!
end

#save_new_paymentObject



51
52
53
54
# File 'app/services/workarea/copy_order.rb', line 51

def save_new_payment
  new_payment.id = new_order.id
  new_payment.save!
end

#save_new_shippingsObject



56
57
58
59
60
# File 'app/services/workarea/copy_order.rb', line 56

def save_new_shippings
  new_shippings
    .each { |s| s.order_id = new_order.id }
    .each(&:save!)
end

#shippingsObject



14
15
16
# File 'app/services/workarea/copy_order.rb', line 14

def shippings
  @shippings ||= Shipping.where(order_id: order.id).to_a
end