Class: Workarea::CopyOrder
- Inherits:
-
Object
- Object
- Workarea::CopyOrder
- Defined in:
- app/services/workarea/copy_order.rb
Instance Attribute Summary collapse
-
#order ⇒ Object
readonly
Returns the value of attribute order.
-
#params ⇒ Object
readonly
Returns the value of attribute params.
Instance Method Summary collapse
- #anonymize! ⇒ Object
- #cancel_original ⇒ Object
- #cancel_original? ⇒ Boolean
-
#initialize(order, params = {}) ⇒ CopyOrder
constructor
A new instance of CopyOrder.
- #new_order ⇒ Object
- #new_payment ⇒ Object
- #new_shippings ⇒ Object
- #payment ⇒ Object
- #perform ⇒ Object
- #save_new_order ⇒ Object
- #save_new_payment ⇒ Object
- #save_new_shippings ⇒ Object
- #shippings ⇒ Object
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
#order ⇒ Object (readonly)
Returns the value of attribute order.
3 4 5 |
# File 'app/services/workarea/copy_order.rb', line 3 def order @order end |
#params ⇒ Object (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_original ⇒ Object
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
62 63 64 |
# File 'app/services/workarea/copy_order.rb', line 62 def cancel_original? params[:cancel_original].to_s =~ /true/ end |
#new_order ⇒ Object
18 19 20 |
# File 'app/services/workarea/copy_order.rb', line 18 def new_order @new_order ||= order.dup end |
#new_payment ⇒ Object
22 23 24 |
# File 'app/services/workarea/copy_order.rb', line 22 def new_payment @new_payment ||= payment.try(:dup) end |
#new_shippings ⇒ Object
26 27 28 |
# File 'app/services/workarea/copy_order.rb', line 26 def new_shippings @new_shippings ||= shippings.map(&:dup) end |
#payment ⇒ Object
10 11 12 |
# File 'app/services/workarea/copy_order.rb', line 10 def payment @payment ||= Payment.find(order.id) rescue nil end |
#perform ⇒ Object
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_order ⇒ Object
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_payment ⇒ Object
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_shippings ⇒ Object
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 |
#shippings ⇒ Object
14 15 16 |
# File 'app/services/workarea/copy_order.rb', line 14 def shippings @shippings ||= Shipping.where(order_id: order.id).to_a end |