Class: SpreeCmCommissioner::Imports::Orders::Cancel

Inherits:
Base
  • Object
show all
Defined in:
app/services/spree_cm_commissioner/imports/orders/cancel.rb

Constant Summary collapse

BATCH_SIZE =
ENV.fetch('CANCEL_IMPORT_ORDERS_BATCH_SIZE', '50').to_i

Instance Attribute Summary collapse

Attributes inherited from Base

#fail_row_numbers, #import_order_id

Instance Method Summary collapse

Methods inherited from Base

#cleaned_value, #fetch_content, #import_order, #record_failure, #save_fail_rows, #update_import_status_when_finish, #update_import_status_when_start

Constructor Details

#initialize(import_order_id:, canceled_by_user_id:, cancellation_reason: nil) ⇒ Cancel

Returns a new instance of Cancel.



9
10
11
12
13
# File 'app/services/spree_cm_commissioner/imports/orders/cancel.rb', line 9

def initialize(import_order_id:, canceled_by_user_id:, cancellation_reason: nil)
  super(import_order_id: import_order_id)
  @canceled_by_user_id = canceled_by_user_id
  @cancellation_reason = cancellation_reason
end

Instance Attribute Details

#canceled_by_user_idObject (readonly)

Returns the value of attribute canceled_by_user_id.



7
8
9
# File 'app/services/spree_cm_commissioner/imports/orders/cancel.rb', line 7

def canceled_by_user_id
  @canceled_by_user_id
end

#cancellation_reasonObject (readonly)

Returns the value of attribute cancellation_reason.



7
8
9
# File 'app/services/spree_cm_commissioner/imports/orders/cancel.rb', line 7

def cancellation_reason
  @cancellation_reason
end

Instance Method Details

#callObject



15
16
17
18
19
20
21
# File 'app/services/spree_cm_commissioner/imports/orders/cancel.rb', line 15

def call
  return if import_order.canceled?

  mark_canceling!
  cancel_orders
  mark_canceled!
end

#cancel_ordersObject



23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/services/spree_cm_commissioner/imports/orders/cancel.rb', line 23

def cancel_orders
  import_order.orders.includes(:imported_order).where.not(state: 'canceled').find_in_batches(batch_size: BATCH_SIZE) do |batch|
    batch.each do |order|
      order.canceled_by(canceled_by_user, cancellation_reason: cancellation_reason)
    rescue StandardError => e
      CmAppLogger.error(
        label: "#{self.class.name}#cancel_orders",
        data: { message: e.message, order_id: order.id, order_number: order.number }
      )
    end
  end
end