Class: KitConsolidationWorker

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Job
Defined in:
app/workers/kit_consolidation_worker.rb

Overview

Sidekiq worker: kit consolidation.

Re-rolls kit-level qty / COGS for one or more kit items in a store. Accepts a
single item id (legacy callers such as KitConsolidationAllWorker) or an array
of ids — the coalesced batch that ItemLedgerEntry#consolidate_kits enqueues so
a kit-RMA receive fans out to one job instead of hundreds. Each kit is
consolidated independently: a per-kit rescue keeps one bad/stale kit from
failing the whole batch, and non-kit / missing ids are skipped.

Instance Method Summary collapse

Instance Method Details

#perform(item_ids, store_id = nil) ⇒ void

This method returns an undefined value.

Parameters:

  • item_ids (Integer, Array<Integer>)

    kit item id(s) to reconsolidate

  • store_id (Integer, nil) (defaults to: nil)

    limit to one store, or all stores when nil



19
20
21
22
23
24
25
26
27
28
# File 'app/workers/kit_consolidation_worker.rb', line 19

def perform(item_ids, store_id = nil)
  Array(item_ids).each do |item_id|
    item = Item.find_by(id: item_id)
    next unless item&.is_kit?

    Item::KitConsolidator.new(item, store_id: store_id).populate_components.consolidate_qty.consolidate_unit_cogs.commit
  rescue StandardError => e
    Rails.logger.error("KitConsolidationWorker: kit #{item_id} (store #{store_id || 'all'}) failed: #{e.class}: #{e.message}")
  end
end