Class: SpreeCmCommissioner::RedisStock::Unstock

Inherits:
Base
  • Object
show all
Defined in:
app/services/spree_cm_commissioner/redis_stock/unstock.rb

Instance Method Summary collapse

Methods inherited from Base

#line_items, #schedule_sync_inventory, #warm_redis_keys!

Methods included from ServiceModuleThrowable

#call!

Instance Method Details

#call(line_item_ids:) ⇒ Object

override



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'app/services/spree_cm_commissioner/redis_stock/unstock.rb', line 5

def call(line_item_ids:)
  @line_item_ids = line_item_ids

  keys = []
  quantities = []
  inventory_ids = []
  inventory_items = []

  line_items.each do |li|
    li.inventory_items.each do |item|
      keys << item.redis_key
      quantities << li.quantity
      inventory_ids << item.id
      inventory_items << item
    end
  end

  warm_redis_keys!(inventory_items)

  return failure(nil, :unable_to_unstock) unless unstock(keys, quantities)

  inventory_id_and_quantities = inventory_ids.map.with_index do |inventory_id, i|
    { inventory_id: inventory_id, quantity: -quantities[i] }
  end

  schedule_sync_inventory(inventory_id_and_quantities)
  success(nil)
end